モバイル&ワイヤレスブロードバンドでインターネットへ

gwaw.jp

Raspberry Pi 4 model B / 4GB の Raspbian で fastText v0.9.1 を利用して日本語版 Wikipedia ダンプデータから単語の分散表現モデルを構築する

Raspberry Pi 4 model B / 4GB の Raspbian 10 (buster) に fastText v0.9.1 をインストールして、日本語版 Wikipedia ダンプデータから単語の分散表現モデルを構築します。

https://github.com/facebookresearch/fastText

日本語版 Wikipedia ダンプデータを取得します。現時点でおよそ 3GB のファイルを取得することになりますので、通信環境や空き領域に注意です。



$ curl https://dumps.wikimedia.org/jawiki/latest/jawiki-latest-pages-articles.xml

 

取得したダンプデータから本文だけをテキストとして抽出します。WikiExtractor というツールを利用します。-b オプションは 200M ごとのファイルに分割して出力します。そして、分割されたファイルをひとつのファイルにまとめます。



$ git clone https://github.com/attardi/wikiextractor.git
$ python wikiextractor/WikiExtractor.py -b 200M -o extracted jawiki-latest-pages-articles.xml.bz2
$ cat extracted/*/* > jawiki.txt

 

分かち書き(わかちがき)のために Mecab を用意をします。分かち書きとは、文章中の語の区切りに空白を差し込むことです。



$ sudo apt install mecab libmecab-dev mecab-ipadic 

 

mecab-ipadic-NEologd は、分かち書きに使用する辞書で、新語などを収録しています。



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

 

分かち書きを実行します。



$ mecab -d /usr/lib/arm-linux-gnueabihf/mecab/dic/mecab-ipadic-neologd -O wakati -b 24576  jawiki.txt -o data.txt

 

fastText v0.9.1 をビルドします。



$ wget https://github.com/facebookresearch/fastText/archive/v0.9.1.zip
$ unzip v0.9.1.zip
$ cd fastText-0.9.1
$ make

 

fastText を実行します。出力ファイルは、model.vec と model.bin のふたつです。model.vec はテキスト形式、model.bin はバイナリ形式となります。なお、実行時間はおよそ 8.5時間でした。



$ ./fasttext skipgram -input data.txt -output model

 

Gensim ツールを利用します。Raspbian に Gensim をインストールするにあたっては、次のサイトを参照しました。

Raspberry Pi 人工知能ツールをインストール【Python3】 - Qiita



$ sudo apt install python3-scipy
$ sudo pip3 install gensim

 

Gensim でテキストファイルだけをロードする場合です。ちなみにバイナリファイルのロードはメモリエラーとなりました。そして、'日本' - '東京' + 'パリ' を試します。



$ python3
>>> from gensim.models import KeyedVectors
>>> model = KeyedVectors.load_word2vec_format('model.vec',binary=False)
>>> model.most_similar(['日本','パリ'],['東京'],10)

 

『Raspberry Pi 4 model B / 4GB の Raspbian で fastText 0.9.1 を利用して日本語版 Wikipedia ダンプデータから単語の分散表現モデルを構築する』を公開しました。