如何获得基于tf-idf Python的顶级术语

时间:2015-02-20 00:20:46

标签: python tf-idf

这是我的python代码。

tfidf = TfidfVectorizer(tokenizer=tokenize, stop_words='english')
tfidf_matrix = tfidf.fit_transform(token_dict.values())
print tfidf_matrix

结果显示如下:

        (0, 210)    0.14152686101
        (0, 1)      0.0707634305049
        (0, 261)    0.212290291515
        (0, 11)     0.135603306032
              : :
        (3, 49)     0.0709465134358
        (3, 37)     0.315905243912
        (3, 374)    0.11487463415
        (3, 192)    0.057437317075

我想要返回的是每个文档的前10名(基于他们的tf idf)名称和tf idf得分。

1 个答案:

答案 0 :(得分:1)

在你的tfidf_matrix中,每一行对应一个文档。您可以取出每一行并使用argsort()它,它会为您提供具有最高(最低)值的术语列。这样你就可以提取它。然后你可以输入相同的索引到矩阵本身的行来获得分数。

#convert your matrix to an array to loop over it
mat_array = tfidf_matrix.toarray()

# get your feature names
fn = tfidf.get_feature_names()

for l in mat_array: 
print [(fn[x],l[x]) for x in (l*-1).argsort()][:10]

不知道你想如何输出这个,但显然你可以通过多种方式做到这一点,或者在循环过程中将所有内容保存在数据结构中并随后进行输出。乘以-1只是为了让argsort()从高到低排名,以获得更可读的切片语法。