単語分散表現のクラスタリング
語彙空間のクラスタリングの参考になるものがないかと探して以下の記事に遭遇しました。
Pythonで単語分散表現のクラスタリング - Ahogrammer
現象
作成済みモデルをダウンロードしてクラスタリングを実行するという優れもの記事でしたが、クラスタリングをする際にgensimのエラーが出たのでその解決法をメモ。
AttributeError: 'Word2Vec' object has no attribute 'trainables'
どうやらこれはgensimのバージョン相違に伴うエラーでした。
モデル作成時のgensimとモデル読み込み時のgensimのバージョンが異なる。
'Word2Vec' object has no attribute 'trainables' · Issue #2000 · RaRe-Technologies/gensim
対応策
ありがたいことにこの作者の方はモデル作成のソースをgithubに公開してくれていました。
$ git submodule init $ git submodule update $ python -m venv .env $ . .env/bin/activate $ pip install -r requirements.txt
これを使って環境を構築し、クラスタリングを実行したところうまくいきました。多謝!
以下が実行結果の一部です。
... ['年末', '11月下旬', '5月上旬', '3月下旬', '6月中旬', '10月中旬', '8月下旬', '9月中旬', '3月上旬', '秋期'] ['大洋', '近鉄バファローズ', '南海', 'プロ野球', '近鉄', '球団', '日本ハム', '藤井寺球場', 'オリックス', '東北楽天ゴールデンイーグルス'] ['ヒール', 'ギミック', 'プロレスラー', 'ベビーフェイス', 'ルチャリブレ', 'ルード', 'テクニコ', 'レスラー', 'ハンス・シュミット', 'フリッツ・フォン・エリック'] ...
実は、Mecabのビルド時にエラーが発生したのですが、実行ときにはグローバルにインストールしているMecabモジュールを使うので問題なく動作しました。
MeCab_wrap.cxx:2987:10: fatal error: 'stdexcept' file not found
こちらは、XcodeのCommandLineToolsのバージョン問題のようです。