LoginSignup
3
2

More than 5 years have passed since last update.

幻想再帰のアリュージョニストでword2vec

Posted at

さて環境ができたのでいろいろ遊んでみる。
ここは膨大なボキャブラリを誇る幻想再帰のアリュージョニストで単語ベクトルしてみましょう。

mecab のインストール

mecab, mecab-ipadic, mecab-ipadic-NEologd を導入する。

% yaourt -S mecab mecab-ipadic

途中PKGBUILDを編集するか聞かれるので Y で編集に入り、UTF8用にカスタマイズする。

PKGBUILD(mecab)
./configure --with-charset=utf8 --enable-utf8-only
PKGBUILD(mecab-ipadic)
./configure --with-charset=utf8

最新の新語辞典である mecab-ipadic-NEologd を導入する。導入時に /usr/libexec がないよと怒られるので事前にリンクを張る。

% sudo ln -s /usr/lib /usr/libexec

github から最新の辞書を取得して導入する。ちなみにメモリ 2G 無いとエラーになるらしい。

% git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
% cd mecab-ipadic-neologd
% ./bin/install-mecab-ipadic-neologd -n

使うときには辞書を指定する。

% mecab
惑星のさみだれ
惑星    名詞,一般,*,*,*,*,惑星,ワクセイ,ワクセイ
の      助詞,連体化,*,*,*,*,の,ノ,ノ
さみだれ        名詞,一般,*,*,*,*,さみだれ,サミダレ,サミダレ
EOS

% mecab -d /usr/lib/mecab/dic/mecab-ipadic-neologd
惑星のさみだれ
惑星のさみだれ  名詞,固有名詞,一般,*,*,*,惑星のさみだれ,ホシノサミダレ,ホシノサミダレ
EOS

すごいですね。

word2vec インストール

pip で gensim, cython, word2vec を導入する。

% pip install gensim
% pip install cython
% pip install word2vec

コーパスモデル作成して近似を求める。

まずは mecab で分かち書きファイルを作成する。

mecab -d /usr/lib/mecab/dic/mecab-ipadic-neologd -Owakati original.txt -o data.txt 

続いて python でコーパスモデル作成。

from gensim.models import word2vec

sentences = word2vec.Text8Corpus("data.txt")
model = word2vec.Word2Vec(sentences, size=100)
model.save("data.model")

このモデルを使って近似を求めてみる。

from gensim.models import word2vec

model = word2vec.Word2Vec.load("data.model")
out   = model.most_similar(positive=[u'アキラ'], topn=3)
print(out)
[('セスカ', 0.7233824133872986), ('みんな', 0.6344067454338074), ('私たち', 0.6305500864982605)]

ほう? トリシューラ負けてるぞ。

>>> out   = model.most_similar(positive=[u'アキラ'], topn=10)
>>> print(out)
[
 ('セスカ', 0.7233824133872986),
 ('みんな', 0.6344067454338074),
 ('私たち', 0.6305500864982605),
 ('くん', 0.6283941268920898),
 ('アズーリア', 0.6272101998329163),
 ('お姉様', 0.626919150352478),
 ('私', 0.5991101264953613),
 ('お願い', 0.5972921252250671),
 ('貴方', 0.5968158841133118),
 ('てろ', 0.5852774381637573)
]
>>> out   = model.most_similar(positive=[u'セリアック'], topn=10)
>>> print(out)
[
 ('ニア', 0.9699307680130005),
 ('イヴロス', 0.9016405344009399),
 ('=', 0.8912437558174133),
 ('ヴィヴィ', 0.8854511380195618),
 ('ベフォニス', 0.8579694032669067),
 ('ラウス', 0.8542773127555847),
 ('ライニンサル', 0.7912667989730835),
 ('アーニスタ', 0.7889609336853027),
 ('マラコーダ', 0.7593907713890076),
 ('イヴァ', 0.738694429397583)
]
>>> out   = model.most_similar(positive=[u'再帰'], topn=10)
>>> print(out)
[
 ('根源', 0.9172159433364868),
 ('遡及', 0.9000077843666077),
 ('枠組み', 0.895927369594574),
 ('人工', 0.8953160643577576),
 ('飛躍', 0.8908029198646545),
 ('受動', 0.8826395273208618),
 ('典型', 0.8811641931533813),
 ('疑似', 0.8803087472915649),
 ('向上', 0.8802028298377991),
 ('合理', 0.8798677921295166)
]


3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2