最近、日本語解析をしっかりやろうと思い、日本語分析環境を作り始めました。
Python3系を開発ツールと考えています。
環境
- MacBook Pro 15 2017
- macOS Mojave 10.14.4
- 2.8GHz Core i7
- Ram 16 GB
MeCabとNEologdをすでに入れてあります。
形態素解析と、SentencePieceを比べるが目的です
Wikipediaから日本語コンテンツをダウンロードする
コマンド wgetでも curlでも 最新版指定
curl https://dumps.wikimedia.org/jawiki/latest/jawiki-latest-pages-articles.xml.bz2 -o jawiki-latest-pages-articles.xml.bz2
結構時間がかかる1時間程度 3GB程度です
ダウンロード後タグ除去する WikiExtractor.py
WikiExtractor http://medialab.di.unipi.it/wiki/Wikipedia_Extractor
Gitから、 https://github.com/attardi/wikiextractor.git
ダウンロードしてもクローンしても良い
$ git clone https://github.com/attardi/wikiextractor.git
ホルダーの中のWikiExtractor.pyを使えば良い
注意:Gitのinstallセクションで python setup.py install と書いてあるが setup.pyが無いので無視
WikiExtractor.pyを使って文章のみを切り出す
optional arguments:
-h, --help help
-o OUTPUT, --output OUTPUT, output directory 出力ディレクトリー
-b n[KM], --bytes n[KM] defaultは1M 1つのCorpusサイズ
-B BASE, --base BASE base URL for the Wikipedia pages
-c, --compress compress output files using bzip
この程度分かれば使える
提供サイトのサンプルコードが分かり安い
extractedホルダーに、250Kで、Corpusを展開する
$ WikiExtractor.py -cb 250K -o extracted itwiki-latest-pages-articles.xml.bz2
それを一つのテキストにまとめる
$ find extracted -name '*bz2' -exec bzip2 -c {} \; > text.xml
sentencepieceのモデルを作成
$ pip install sentencepiece
モデルを作る
import sentencepiece as spm
spm.SentencePieceTrainer.Train('--input=wiki.txt, --model_prefix=m --character_coverage=1.0 --vocab_size=32000')
なかなか上手くゆかない、Jupyter notebookではカーネルが落ちてしまう
メモリーとの関係で学習サイズを分解して実行しないといけない。
$ split -l 行数 対象テキスト 接頭子
Wikiならば学習されたモデルが公開されている
https://yoheikikuta.github.io/bert-japanese/