我有一些文件,我想找到与所选文件最相似的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)。
答案 0 :(得分:-1)
如果您想要的是doc_match
中得分最高的索引,您可以这样做:
sorted_indices = np.argsort(doc_match)
doc_match_vals_sorted = doc_match[sorted_indices]