お仕事でSudachiを使って形態素解析を行っているのですが、それと互換した単語埋め込みモデルが必要になりました。
Sudachiの開発元であるワークスアプリケーションズさんから、Sudachiで分かち書き・学習したWord2Vecモデルが提供されています。
- コーパスとして国語研日本語ウェブコーパス (nwjc)が使われてます
- gensim以外にも、fastTextで学習したモデルも近々公開予定とのことです (2019/6/1 現在)
モデルのダウンロード
上のURLから学習済みモデルをダウンロードします。
- 20190314のバージョンで、語数3644628、次元数300となってます
- 圧縮ファイルで5GB、解凍後で12GBくらいありますので注意してください
$ wget https://object-storage.tyo2.conoha.io/v1/nc_2520839e1f9641b08211a5c85243124a/word_vector/nwjc.sudachi_full_abc_w2v.20190314.tar.gz $ tar -zxvf ./nwjc.sudachi_full_abc_w2v.20190314.tar.gz $ ls -l nwjc_sudachi_full_abc_w2v/ total 12229544 -rw-rw-r-- 1 1008 1008 11420 Mar 20 17:28 LICENSE -rw-rw-r-- 1 1008 1008 12523039651 Mar 20 12:49 nwjc.sudachi_full_abc_w2v.txt $ head -n2 nwjc_sudachi_full_abc_w2v/nwjc.sudachi_full_abc_w2v.txt 3644628 300 の -0.08509623 -0.02170456 -0.00595318 ...
gensimで操作しますので、こちらもインストールしておきます。
$ pip install gensim
モデルのロードと確認
sudachi_full_abc_w2v.txt (テキストフォーマット) はKeyedVectorsでロードできます。上のheadコマンドで見たように語数3644628, 次元数300となっていることも確認できます。
# モデルのロード from gensim.models import KeyedVectors from gensim.test.utils import datapath nwjc_model = KeyedVectors.load_word2vec_format( datapath('/tf/rest_natural_word_search/nwjc_sudachi_full_abc_w2v/nwjc.sudachi_full_abc_w2v.txt'), binary=False ) # 語数, 次元数 print(len(nwjc_model.vocab), nwjc_model.vector_size) # 3644628 300
こうなるとgensimの普通のモデルの同じように取り扱えますので、例えばmost_similarメソッドで類似した言葉を取り出すこともできます。
print(nwjc_model.most_similar('平成', topn=5)) # [('年度', 0.8092531561851501), # ('平成元年', 0.7409119009971619), # ('同年', 0.6042426824569702), # ('基本計画', 0.5917632579803467), # ('別紙', 0.590812087059021)] print(nwjc_model.most_similar(positive=['兄弟', '女'], negative=['男'], topn=5)) # [('姉妹', 0.7687463164329529), # ('兄妹', 0.7484474182128906), # ('姉弟', 0.715774416923523), # ('双子', 0.642593264579773), # ('妹', 0.6402267217636108)]