0
我有一些文件,我想找到與選定文件最相似的k個文件。對於重複的例子起見,假設k爲1和我的文檔是這些尋找k最相似的文件
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矩陣,所以現在我有了這個沒有todense()成員的CSR格式矩陣(所以我可以只是看,不會超出我的小例子)。
我想我現在想要的是什麼(但目前還沒有弄清楚)是如何說「doc_match的前k個元素的索引是什麼?」 (即使k不是1)。
是'doc_match'相當於'ft.dot(one_doc_code.T)'? – Jarad