前回考えた処理の流れ

  1. word2vec でモデル(学習済みデータ)を用意する
  2. 形態素解析で映画のあらすじの文章を単語レベルに分割する
  3. 一つの文章ごとに、単語レベルでベクトル化
  4. 一つの文章内の全単語ベクトルの平均を算出し、文章ベクトルとする
  5. 文章ベクトル同士の cos 類似度を計算し、比較
  6. 最も類似度の高い文章を出力する

参考記事と使ったモデル

困ったこと

出来上がっている学習済みデータで今回の映画をやろうとすると、

word2vec not in vocabulary

が発生してしまう 例: ヒルディッチ、ディミトリアス

そのため、例外処理を行い単語が無い場合は、ベクトル生成から除外する。

実際のコード

SearchSimilarWords.py

ベクトルを平均してしまうことの問題点

  • 文字数が増えてしまうと特徴がぼやけてしまう