1. ホーム
  2. python

[解決済み] gensimのword2vecモデルを用いた文の類似度計算の方法(Pythonによる

2022-05-24 15:06:33

質問

によると Gensim Word2Vec によると、gensim パッケージの word2vec モデルを使って、2つの単語の類似度を計算することができる。

trained_model.similarity('woman', 'man') 
0.73723527

しかし、word2vecモデルは文の類似度を予測することができません。gensimで文の類似度を表すLSIモデルを探しましたが、word2vecモデルと組み合わせられるようには思えません。手持ちのコーパスの長さは、10単語以下と短い。 そこで、目標を達成するための簡単な方法はないでしょうか?

どのように解決するのですか?

これは実際に質問されているかなり難しい問題です。文の類似性を計算するには、文の文法モデルを構築し、同等の構造 ("he walked to the store yesterday" と "yesterday, he walked to the store") を理解し、代名詞と動詞だけでなく固有名詞にも類似性を見出し、多くの実際のテキスト例で統計的共起関係/関係を見つけ出すことなどが必要となります。

試せる最も簡単なことは -- これがどの程度うまく機能するかはわかりませんし、最適な結果を得られないことは確かですが -- まずすべての "stop" 単語 ("the", "an" など、文にあまり意味を付加しない単語) を削除してから、両方の文の単語に word2vec を実行し、一方の文のベクトルの合計、もう一方の文のベクトルの合計、そして合計同士の差分を見つけることでしょう。単語単位での差分ではなく、合計することで、少なくとも語順に左右されずに済みます。とはいえ、これは多くの点で失敗するでしょうし、決して良い解決策ではありません(この問題に対する良い解決策は、ほとんどの場合、ある程度のNLP、機械学習、その他の巧妙さを伴いますが)。

つまり、簡単に言えば、これを行う簡単な方法はないのです(少なくともうまく行うことはできません)。