如何解释TfidfVectorizer输出

时间:2019-04-20 14:23:34

标签: tfidfvectorizer natural-language-processing

我正在进行情感分析,并且为了从文本生成特征,我正在使用TF-IDF方法,但无法解释输出。

我使用了Sklearn的TfidfVectorizer函数。

我使用了以下代码:

从sklearn.feature_extraction.text导入TfidfVectorizer tfidf_vectorizer = TfidfVectorizer(max_df = 0.90,min_df = 2,max_features = 1000,stop_words ='english') tfidf = tfidf_vectorizer.fit_transform(combi ['tidy_tweet'])

输出如下:

(0,302)0.46871135687055143   (0,463)0.5896490179849546   (0,738)0.6577413621857342   (1,879)0.3938403468675415   (1,131)0.6145629375807904   (1,600)0.6835218920644196   (2,79)1.0   (3,557)0.7040384885805177   (3,518)0.44016705593507854   (3,888)0.5572995329862621   (4,566)1.0   (5,423)0.586120951905663   (5,858)0.4743403266916206   (5,69)0.4637175931713698   (5,485)0.4652198168550412   (6,121)0.809676118019697   (6,894)0.5868769751051355   (7,749)0.47546741144240784   (7,992)0.40382612331421974   (7,283)0.6221668428341786   (7,883)0.20713435439054187   (7,393)0.22953868678391207   (7,432)0.29836739781603

我可以理解,最后一列是TF-IDF值,但其他列是什么。

1 个答案:

答案 0 :(得分:0)

tfidfvectorizer用于将数据转换为术语文档矩阵。
在上面的输出中,第一列中的条目,例如(0,302)0代表提取的特征的索引,302是该特定特征的数字符号。 例如,考虑一个简单的数据框,如下所示:

  col1
0  cat
1  dog
2  egg
3  god
4  cat
5  man
6  dog

要从上述数据中提取特征,

vect = TfidfVectorizer(stop_words='english',  min_df=0, encoding = 'utf-8')
X = vect.fit_transform(df['col1'].values.astype('U'))

以上代码给出的输出为:

the document term matrix of data is
  (0, 0)    1.0
  (1, 1)    1.0
  (2, 2)    1.0
  (3, 3)    1.0
  (4, 0)    1.0
  (5, 4)    1.0
  (6, 1)    1.0

所有行的第一列中的第一个条目(即0,1,2 .... 6)不过是所提取特征的索引。第二个条目(即0,1,2,3) ,0,4,1)表示该功能的数字符号。您可以使用tfidfvectorizer的get_feature_names函数进行观察。

print(vect.get_feature_names()[0])
print(vect.get_feature_names()[1])
print(vect.get_feature_names()[2])
print(vect.get_feature_names()[4])
print(vect.get_feature_names()[3])

以上代码给出的输出如下:

cat
dog
egg
man
god

这意味着对应于值0的要素是cat,1是dog,4是man ...等等。