- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2019-04-17T15:45:45+00:00","default:masatomix","masatomix")
#author("2019-04-17T21:34:26+00:00","default:masatomix","masatomix")
#topicpath
----
#contents
** 日本語Wikipediaのデータを学習させる [#k01a7abc]
やってみます。
*** Rubyとツール準備 [#haac0f8f]
$ ruby --version
ruby 2.6.0p0 (2018-12-25 revision 66547) [x86_64-linux]
$ rbenv exec gem install wp2txt bundler
*** 日本語Wikipediaデータのダウンロードと変換 [#rf6cfc21]
日本語データはWikipediaのデータを使う事にします。
$ mkdir wikipedia && cd $_
$ curl https://dumps.wikimedia.org/jawiki/latest/jawiki-latest-pages-articles.xml.bz2 -o jawiki-latest-pages-articles.xml.bz2
2G以上あるのでご注意。
ダウンロードしたデータを wp2txt を使ってただのテキストファイルに変換します。
$ rbenv exec wp2txt --input-file jawiki-latest-pages-articles.xml.bz2
WP2TXT is spawming 2 threads to process data
Preparing ... This may take several minutes or more ca... Done.
jawiki-latest: 8% |oooooooooooooo
…
Processing finished
$
たくさんのファイルが出来るので、ファイルをMecabで分かち書きしながら、連結します
$ cat jawiki-latest-pages-articles.xml*.txt | mecab -Owakati -b 81920 > jawiki-latest-pages-articles-all_wakati.txt
$
*** 学習 [#xe270072]
$ python3 -m venv ~/venv/venv_ai
$ source ~/venv/venv_ai/bin/activate
(venv_ai) $
(venv_ai) $ mkdir ../python && cd $_
(venv_ai) $ cat save_model.py
from gensim.models import word2vec
import logging
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
sentences = word2vec.Text8Corpus('../wikipedia/jawiki-latest-pages-articles-all_wakati.txt')
model = word2vec.Word2Vec(sentences, size=200, min_count=20, window=15)
model.save("./wiki.model")
(venv_ai) $ pip install gensim
(venv_ai) $ python3 save_model.py
...めちゃくちゃ時間がかかる
(venv_ai) $
日本語の学習は以上です。
*** 動かしてみる。 [#n8b66f14]
やってみます。
(venv_ai) $ cat word2vec_test.py
from gensim.models import word2vec
model = word2vec.Word2Vec.load("./wiki.model")
results = model.wv.most_similar(positive=['ボルダリング'])
for result in results:
print(result)
(venv_ai) $ python3 word2vec_test.py
('クライミング', 0.7824140787124634)
('ロッククライミング', 0.720820963382721)
('スノーボード', 0.6274969577789307)
('アウトドア', 0.6219459772109985)
('パラグライダー', 0.6193433403968811)
('トレッキング', 0.6125744581222534)
('スキーヤー', 0.6124218106269836)
('サイクリング', 0.6103093028068542)
('エクストリームスポーツ', 0.6046898365020752)
('climbing', 0.5836126804351807)
(venv_ai) $
つぎに、沖縄県の県庁所在地を探してみます。
つぎに、沖縄県の県庁所在地を探してみます。「横浜市」から「神奈川県」を引いて、「沖縄県」を足すって操作です。
(venv_ai) $ cat word2vec_test2.py
from gensim.models import word2vec
model = word2vec.Word2Vec.load("./wiki.model")
results = model.wv.most_similar(positive=['沖縄県', '横浜市'], negative=["神奈川県"], topn=5)
results = model.wv.most_similar(positive=['横浜市','沖縄県'], negative=["神奈川県"], topn=5)
for result in results:
print(result)
print('------------------')
(venv_ai) $ python3 word2vec_test2.py
('那覇市', 0.7939830422401428)
('名護市', 0.7602319717407227)
('石垣市', 0.7390133142471313)
('浦添市', 0.721440315246582)
('宜野湾市', 0.7022244930267334)
------------------
(venv_ai) $
----
この記事は
#vote(おもしろかった,そうでもない)
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}