2つ質問があります。
ドキュメントに各単語が何回出現するかを調べて、ドキュメントからベクトルを作成しました。これはベクトルを作成する正しい方法ですか? それとも、他にも何かしなければなりませんか?
上記の方法を使用して、サイズの異なる 16 個のドキュメントのベクトルを作成しました。ここで、コサイン類似度を適用して、各ドキュメントがどの程度類似しているかを調べたいと思います。私が抱えている問題は、サイズが異なるため、2 つのベクトルのドット積を取得することです。どうすればいいですか?
2つ質問があります。
ドキュメントに各単語が何回出現するかを調べて、ドキュメントからベクトルを作成しました。これはベクトルを作成する正しい方法ですか? それとも、他にも何かしなければなりませんか?
上記の方法を使用して、サイズの異なる 16 個のドキュメントのベクトルを作成しました。ここで、コサイン類似度を適用して、各ドキュメントがどの程度類似しているかを調べたいと思います。私が抱えている問題は、サイズが異なるため、2 つのベクトルのドット積を取得することです。どうすればいいですか?
(word, count)
ベクトル表現としてペアのリスト/マップ/辞書/ハッシュがあることを意味する限り、合理的に聞こえます。
これらのゼロをどこにも保存せずに、あるベクトルに出現しない単語の値がゼロであるふりをする必要があります。次に、次のアルゴリズムを使用して、これらのベクトルの内積を計算できます (疑似コード)。
algorithm dot_product(a : WordVector, b : WordVector):
dot = 0
for word, x in a do
y = lookup(word, b)
dot += x * y
return dot
lookup
部分は何でもかまいませんが、速度のために、ベクトル表現としてハッシュテーブルを使用します (例: Python の) dict
。