【问题标题】:tf-idf results analysis with pythontf-idf结果分析用python
【发布时间】:2017-09-17 01:46:06
【问题描述】:

我正在尝试在大约 200k 令牌的普通语料库上生成 tf-idf。我首先制作了那个词频的向量计数器。然后我生成了 tf-idf 矩阵并得到了以下结果。我的代码是

from sklearn.feature_extraction.text import TfidfVectorizer
with open("D:\history.txt", encoding='utf8') as infile:
    contents = infile.readlines()
#define vectorizer parameters
tfidf_vectorizer = TfidfVectorizer(max_df=1.0, max_features=200000,
                                 min_df=0.0,
                                 use_idf=True, ngram_range=(1,3))
tfidf_matrix = tfidf_vectorizer.fit_transform(contents) #fit the vectorizer to contents

print(tfidf_matrix)

结果

  (0, 8371)     0.0296607326158
  (0, 27755)    0.159032195629
  (0, 59369)    0.0871403881289
   :    :
  (551, 64746)  0.0324104689629
  (551, 10118)  0.0324104689629
  (551, 9308)   0.0324104689629

虽然我想得到以下形式的结果

   (551, good ) 0.0324104689629

【问题讨论】:

  • 好吧,TfidfVectorizer 只是给你一个稀疏矩阵。之后如何处理它取决于您。 (551, good )的意思是你想做分类吗?那就看scikit-learn.org/stable/tutorial/text_analytics/…
  • 这个问题很不清楚。 “好”是什么意思? (551, 9308) 表示元素 (row_num, col_num) 的索引。你想做什么?
  • 我想用文档单词显示 tf-idf 值
  • 对不起。但我现在不想分类。我只想用文字显示结果。喜欢好的 0.9887766 喜欢 0.56744,其中所呈现的矩阵项用代码显示。
  • 谢谢我明白了你的意思并解决了我的问题。我如何获得该数据的图表?你能帮帮我吗

标签: python-3.x scikit-learn tf-idf


【解决方案1】:

您可以使用稀疏输出 tfidf_matrixTfidfVectorizer.get_feature_names() 中的索引来生成所需的输出:

features = tfidf_vectorizer.get_feature_names()
indices = zip(*tfidf_matrix.nonzero())
for row,column in indices:
    print('(%d, %s) %f' %(row, features[column], X[row, column])

【讨论】:

  • 你能帮我生成这些数据的图表吗
  • 我不明白。您要生成哪种类型的图表?
  • 我想以 2D 绘图的形状呈现 tf-idf 结果。结果可在我提出的问题中找到。
  • @user103987 这两个维度代表什么?
猜你喜欢
  • 2012-07-02
  • 1970-01-01
  • 2020-08-27
  • 2020-08-06
  • 2018-08-22
  • 2016-10-13
  • 1970-01-01
  • 2017-07-01
  • 1970-01-01
相关资源
最近更新 更多