私はいくつかのドキュメントを持っており、選択したドキュメントに最もよく似た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']
は、その後、私は私がやりたいことは以下であると考えているとしましょう。 (私は多分、後で私がTfの-IDFおよびハッシュ・ベクトル化を使用したいと思いますにもかかわらず、透明性とシンプルさのためCountVectorizer
を使用しています。)
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 =完全マッチ)。しかし、乗算を行うためには、(要素的な乗算に苦しんで)貧弱な行列に変換されたので、今私はtodense()メンバーを持たないこのCSRフォーマットの行列を持っています。私の小さな事例を超えて拡大するものではない)。
私が今思っていること(しかしこれまでには分かっていない)は、「doc_matchのトップk要素のインデックスは何ですか? (kが1でなくても)。
は 'ft.dot(one_doc_code.T)' 'と等価doc_match'ですか? – Jarad