这是我的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名(基于他们的tfidf)术语的名称和每个文档的tfidf得分。
在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()从高到低排序,以获得更可读的切片语法。