Bazı belgelerim var ve seçilen belgeye en çok benzeyen k belgelerini bulmak istiyorum. Bir tekrarlanabilir Örnekte, en k 1 ve belgelerim buEn benzer belgeleri bulma
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']
Sonra ne yapmak istediğinizi aşağıda olduğunu düşünüyorum olduğunuzu varsayalım. (Ben belki daha sonra ben Tf-IDF ve karma vectorizer kullanmak isteyeceğinizi rağmen, şeffaflık ve basitlik için CountVectorizer
kullanıyorum.)
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())
ve şimdi doc_match
yakınlığını gösterir ağırlıklarla bir sütun vektörüdür maç (0 = kötü eşleşme, 1 = mükemmel eşleşme). Ama çarpma yapmak için, ben (çaresizlik, çarpma-çarpma çarpma karşısında), bir numpy matrisine dönüştürülmüş, şimdi bir todense() üyesi olmayan bu CSR format matrisine sahibim (sadece bak, bu benim küçük örneğimin ötesine geçemezdi.
Şimdi ne istediğimi düşünüyorum (ancak şu ana kadar çözemedim), "doc_match öğesinin üst k öğelerinin endeksleri nedir?" (k 1 olmasa bile). İstediğin en yüksek puanı var doc_match
yılında endeksleri ise
'doc_match' ft.dot (one_doc_code.T)' 'eşdeğer midir? – Jarad