找到k个最相似的文件

时间:2016-03-21 08:07:49

标签: python scipy scikit-learn

我有一些文件,我想找到与所选文件最相似的k文件。为了一个可重复的例子,让我们说k是1,我的文件是这些

documents = ['Two roads diverged in a yellow wood,',
             'And sorry I could not travel both',
             'And be one traveler, long I stood',
             'And looked down one as far as I could',
             'To where it bent in the undergrowth']

然后我想我想要做的是下面的内容。 (我使用CountVectorizer来提高透明度和简洁性,即使以后我可能想要使用Tf-Idf和散列矢量图。)

from sklearn.feature_extraction.text import CountVectorizer
import numpy as np

vectorizer = CountVectorizer(analyzer='word')
ft = vectorizer.fit_transform(documents)
one_doc = documents[1]
one_doc_code = vectorizer.transform([one_doc])
doc_match = np.matrix(ft) * np.matrix(one_doc_code.transpose())

现在doc_match是一个列向量,其权重表示匹配的接近程度(0 =不匹配,1 =完全匹配)。但是为了进行乘法,我(在绝望中,面对元素乘法)转换为numpy矩阵,所以现在我有这个CSR格式矩阵没有todense()成员(所以我不能只看,而不是超出我的小例子。)

我认为我现在想要的是(但迄今为止尚无法解决)是如何说" doc_match的前k个元素的索引是什么?" (即使k不是1)。

1 个答案:

答案 0 :(得分:-1)

如果您想要的是doc_match中得分最高的索引,您可以这样做:

sorted_indices = np.argsort(doc_match)
doc_match_vals_sorted = doc_match[sorted_indices]