LoginSignup
11
15

More than 3 years have passed since last update.

日本語のWikipediaの全文データを使ってWord2vecを訓練する

Last updated at Posted at 2019-03-19

日本語の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を動かす方法

11
15
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
11
15