日本語のWikipediaの全文データを使ってWord2vecを訓練する方法についてまとめます。
Udemy【TensorFlow・Keras・Python3で学ぶ】時系列データ処理入門(RNN/LSTM, Word2Vec)の内容です。
環境
Ubuntu18.04
データをダウンロード
https://dumps.wikimedia.org/jawiki/latest/ からjawiki-latest-pages-articles.xml.bz2
をダウンロードし、解凍する。
wp2txtを使って、xmlからテキストファイルを生成する
wp2txtはrubyのgemなので、rubyがインストールされているかを確認する。
$ ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu]
ruby-devをインストールしないとエラーが出るので、rubyのバージョンを確認し、ruby-devをインストールする。
$ sudo apt-get install ruby2.5-dev
wp2txtを使って、jawiki-latest-pages-articles.xml
をtxtファイルに変換する。少し時間がかかる。
$ wp2txt --input-file ./jawiki-latest-pages-articles.xml
生成された複数のテキストファイルをjawiki.txt
にまとめる。
$ cat jawiki-latest-pages-articles*.txt > jawiki.txt
MeCabで分かち書きファイルを生成
jawiki_wakachi.txt
という分かち書きファイルを生成する。これも時間がかかる。
mecab -b 100000 -Owakati jawiki.txt -o jawiki_wakachi.txt
'utf-8' codec can't decode bytes in position invalid continuation byte mecab
というようなエラーが出た場合は
mecab -d /var/lib/mecab/dic/ipadic-utf8 -b 100000 -Owakati jawiki.txt -o jawiki_wakachi.txt
として、UTF-8の辞書を指定する。
word2vecで訓練する
Word2vecにjawiki_wakachi.txt
を学習させる。
from gensim.models import word2vec
data = word2vec.Text8Corpus("jawiki_wakachi.txt")
model = word2vec.Word2Vec(data, size = 100)
このコードは実行に1日ほどかかる。
参考
Udemy【TensorFlow・Keras・Python3で学ぶ】時系列データ処理入門(RNN/LSTM, Word2Vec)
wp2txtでハマった話
Ubuntu 18.04 LTSのPythonでMeCabを動かす方法