AWS Cloud9上にMecabでwikipediaコーパスを作る.


AWS Cloud9上にMecabでwikipediaコーパスを作る

  1. Wikipediaのデータセットをダウンロード
  2. Mecabのインストール
  3. Mecabで分かち書き

開発環境

AWS Cloud9を使って環境を作ります.
現時点ではOSがAmazon LinuxUbuntu16選べました.

m4.large vCPU:2 Mem:6.5 0.10USD/時間
$ cat /proc/version
Linux version 4.15.0-1037-aws (buildd@lcy01-amd64-006) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) 
#39-Ubuntu SMP Tue Apr 16 08:09:09 UTC 2019

$ uname -a
Linux ip-172-31-29-237 4.15.0-1037-aws 
#39-Ubuntu SMP Tue Apr 16 08:09:09 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

$ python -V
Python 2.7.15rc1

Wikipedia コーパスをダウンロード

curlを使ってダウンロードしてきます。

bz2で圧縮されたファイルがダウンロードできます。

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

$ ls -al
-rw-rw-r-- 1 ubuntu ubuntu 2.7G May 12 08:39 jawiki-latest-pages-articles.xml.bz2

2.7GBのファイルをダウンロードしました。

Mecabのセットアップ

mecabはapt-getでインストールできます

# mecabとその他必要そうなモジュールをインストールします
$ sudo apt-get install -y mecab libmecab-dev mecab-ipadic-utf8 git make curl xz-utils file

# mecab-ipadic-NEologd辞書をインストールします
$ git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
$ cd mecab-ipadic-neologd
$ ./bin/install-mecab-ipadic-neologd -n -a

# 辞書が格納されているディレクトリの場所を確認しておきます
$ echo `mecab-config --dicdir`"/mecab-ipadic-neologd"
/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/


# 辞書の場所は長いのでに環境変数に格納しておきます。(以下2行は同じ意味です)
$ export MECABPATH=`mecab-config --dicdir`"/mecab-ipadic-neologd"         
$ export MECABPATH=/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/

# mecabの実行
$ mecab -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/
$ echo "8月3日に放送された「中居正広の金曜日のスマイルたちへ」(TBS系)で、1日たった5分でぽっこりおなかを解消するというダイエット方法を紹介。キンタロー。のダイエットにも密着。" | mecab -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/

nfkもインストールしておきます Ubuntu16:nkfのインストール - 開発メモ

$ sudo apt install nkf
$ nkf --version
Network Kanji Filter Version 2.1.4 (2015-12-12) 

WikiExtractorのインストール

Python製のWikipedia整形ツールです

WikiExtractorをgithubからクローンします

$ git clone https://github.com/attardi/wikiextractor.git

クローンするとwikiextractorディレクトリの中にWikiExtractor.pyがありますので、
引数に先ほどダウンロードしたWikipedia圧縮ファイルをしていして回答します。

※ pythonは2系を使用しています。 READMEには3系でも大丈夫とありました。

$ python wikiextractor/WikiExtractor.py jawiki-latest-pages-articles.xml.bz2 --processes 2

 -- 省略 --

INFO: 17607     篆書体
INFO: 17608     制限酵素
INFO: 17609     桜島線
INFO: 17612     京阪鴨東線
INFO: 17613     光ケーブル
INFO: 17614     マウリッツ・エッシャー
INFO: 17618     測定
INFO: 17619     日光江戸村
INFO: 17620     ぜんまいばね
INFO: 17621     96
INFO: 17622     95
INFO: 17623     94
INFO: 17624     93
INFO: 17625     92
INFO: 17626     91
INFO: 17627     90
INFO: 17629     燃えろ!!プロ野球
INFO: 17630     ばね
INFO: 17631     HIDランプ
INFO: 17632     低圧放電灯
INFO: 17633     71
INFO: 17634     藤原町 (栃木県)
INFO: 17635     野岩鉄道会津鬼怒川線
INFO: 17636     野岩鉄道
INFO: 17637     縁日
INFO: 17638     73
INFO: 17639     薬師如来

 -- 省略 --

INFO: 3941074   五百淵公園
INFO: 3941075   ジャニーズ銀座
INFO: 3941076   植物に学ぶ生存戦略 話す人・山田孝之
INFO: 3941082   小山美姫
INFO: 3941083   ファンダメンタル・フィルムズ
INFO: 3941085   ヨエロスン
INFO: 3941089   平澤芽衣
INFO: 3941091   数学の未来
INFO: 3941098   ダンプリン
INFO: 3941099   アーサー・シャウクロス
INFO: 3941100   トムキャット・スクリーミング・アウトサイド
INFO: 3941104   Nesno 10th Anniversary Balance Music
INFO: 3941107   祖約

INFO: Finished 2-process extraction of 1149985 articles in 7261.8s (158.4 art/s)
INFO: total of page: 1654236, total of articl page: 1149985; total of used articl page: 1149985

(開始18:54 - 終了22:13)

wiki.txtにすべてまとめる

find text/ | grep wiki | awk '{system("cat "$0" >> wiki.txt")}'

mecabで分かち書きする

# デフォルト辞書を使用
mecab -Owakati wiki.txt -o wiki_wakati.txt -b 16384
nkf -w --overwrite wiki_wakati.txt

# Neo辞書を使用
mecab -d $MECABPATH -Owakati wiki.txt -o wiki_wakati_neo.txt -b 16384
nkf -w --overwrite wiki_wakati_neo.txt

以上

参考