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



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

最新更新