如何知道 NLP 模型中与特定 class 关联的词?
How to know the words associated with a specific class in NLP model?
我已经使用 Logistic 回归算法和 TF-IDF 向量化器为“消费者投诉 Class化”训练了一个 NLP 模型。我想知道我的模型与特定 class 关联的词。我正在寻找这样的东西 -
Class 1 = [“帮助我的模型识别输入文本属于此 class 的单词列表”]
我想你需要的是与一个 class 相关联的最重要的词(或更好的 标记 )。因为通常所有标记都将以一种或另一种方式与所有 classes“关联”。所以我会用以下方法回答你的问题:
让我们假设 TfidfVectorizer
生成的标记(或单词)存储在 X_train
中,标签存储在 y_train
中,并且您训练了一个模型,例如:
from sklearn.linear_model import LogisticRegression
from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer()
X_train = vectorizer.fit_transform(corpus)
clf = LogisticRegression()
clf.fit(X_train, y_train)
LogisticRegression
的 coef_
属性的形状为 (n_classes, n_features) for multiclass 问题并包含为每个标记和每个 class 计算的系数。这意味着,通过根据 classes 对其进行索引,可以访问用于该特定 class 的系数,例如coef_[0]
对应 class 0
,coef_[1]
对应 class 1
,依此类推。
只需将标记名称与系数重新关联起来,并根据它们的值对它们进行排序。然后你会得到每个 class 最重要的令牌。获取 class 0
:
最重要标记的示例
import pandas as pd
important_tokens = pd.DataFrame(
data=clf.coef_[0],
index=vectorizer.get_feature_names(),
columns=['coefficient']
).sort_values(ascending=False)
important_tokens
中的标记现在根据它们对 class 0
的重要性进行排序,并且可以通过索引值轻松提取。例如,要获取 n 最重要的特征列表:important_tokens.head(n).index.values
.
如果您想要其他 classes 的最重要标记,只需根据需要替换 coef_
属性的索引即可。
我已经使用 Logistic 回归算法和 TF-IDF 向量化器为“消费者投诉 Class化”训练了一个 NLP 模型。我想知道我的模型与特定 class 关联的词。我正在寻找这样的东西 -
Class 1 = [“帮助我的模型识别输入文本属于此 class 的单词列表”]
我想你需要的是与一个 class 相关联的最重要的词(或更好的 标记 )。因为通常所有标记都将以一种或另一种方式与所有 classes“关联”。所以我会用以下方法回答你的问题:
让我们假设 TfidfVectorizer
生成的标记(或单词)存储在 X_train
中,标签存储在 y_train
中,并且您训练了一个模型,例如:
from sklearn.linear_model import LogisticRegression
from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer()
X_train = vectorizer.fit_transform(corpus)
clf = LogisticRegression()
clf.fit(X_train, y_train)
LogisticRegression
的 coef_
属性的形状为 (n_classes, n_features) for multiclass 问题并包含为每个标记和每个 class 计算的系数。这意味着,通过根据 classes 对其进行索引,可以访问用于该特定 class 的系数,例如coef_[0]
对应 class 0
,coef_[1]
对应 class 1
,依此类推。
只需将标记名称与系数重新关联起来,并根据它们的值对它们进行排序。然后你会得到每个 class 最重要的令牌。获取 class 0
:
import pandas as pd
important_tokens = pd.DataFrame(
data=clf.coef_[0],
index=vectorizer.get_feature_names(),
columns=['coefficient']
).sort_values(ascending=False)
important_tokens
中的标记现在根据它们对 class 0
的重要性进行排序,并且可以通过索引值轻松提取。例如,要获取 n 最重要的特征列表:important_tokens.head(n).index.values
.
如果您想要其他 classes 的最重要标记,只需根据需要替换 coef_
属性的索引即可。