这是我的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得分。
答案 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()从高到低排名,以获得更可读的切片语法。