Ubuntu + word2vecで日本語版wikipediaを自然言語処理してみた

Share on Facebook
Pocket
LINEで送る
Bookmark this on Google Bookmarks

前回に引き続き。

 

関連パッケージをインストール

前回と重複しているパッケージもあるけど、一応下記をインストール。
MeCabは品詞分解するときに利用。

apt-get install -y git autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev mecab mecab-naist-jdic 

 

rbenv環境を構築

wikipediaのデータを処理するのにrubyのライブラリのwp2txtを使うため、rbenvをインストールする。

cd 
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
vi ~/.bashrc
export PATH="$HOME/.rbenv/bin:$PATH"
source ~/.bashrc
rbenv install --list 
rbenv install 2.2.4
rbenv local 2.2.4
rbenv global 2.2.4
rbenv exec gem install wp2txt bundler
rbenv rehash

 

日本語wikipediaのデータをダウンロード

ここからwikipediaのデータがダウンロードできるので、wgetで

cd ~/trunk
mkdir wikipedia
cd wikipedia
curl https://dumps.wikimedia.org/jawiki/latest/jawiki-latest-pages-articles.xml.bz2 -o jawiki-latest-pages-articles.xml.bz2

 

wikipediaのデータをテキストに変換する

rbenv exec wp2txt --input-file jawiki-latest-pages-articles.xml.bz2 

 

テキストに変換したWikipediaのデータを品詞分解する

MeCabを使って、品詞分解をしてwakati.txtに出力する。ファイルが膨大な大きさになっているため、headコマンドで一応内容を確認する。

cat jawiki-latest-pages-articles.xml*.txt | mecab -Owakati -b 81920 > wakati.txt
ls -l wakati.txt 
    -rw-r--r-- 1 umentu umentu 6456527441 12月 19 06:37 wakati.txt
head wakati.txt 

[ [ アンパサンド ] ] 

アンパサンド ( ampersand , & ) と は 「 … と … 」 を 意味 する 記号 で ある 。 英語 の " and " に 相当 する ラテン語 の " e t " の 合 字 で 、 " etc . " ( e t cetera = and s o forth ) を "& c . " と 記述 する こと が ある の は その ため 。 Trebuchet M S フォント で は 、 1 0 px と 表示 さ れ " e t " の 合 字 で ある こと が 容易 に わかる 。 

= = 歴史 = = 

その 使用 は 1 世紀 に 遡る こと が でき ( 1 ) 、 5 世紀 中葉 ( 2 , 3 ) から 現代 ( 4 - 6 ) に 至る まで の 変遷 が わかる 。 

Z に 続く ラテン 文字 アルファベット の 2 7 字 目 と さ れ た 時 期 も ある 。 

 

word2vecに学習させる

wakati.txtの内容をword2vecに学習させる。PCのスペックによって膨大な時間がかかるので注意。3時間ほどかかった。

time ../word2vec -train wakati.txt .output wiki.bin -size 200 -window 5 -sample 1e-3 -negative 5 -hs 0 -binary 1

オプションは以下の通り。

-window: 指定した数値の分だけ、単語の前後にある単語を文脈として判断させる
-sample: ランダムに頻出単語を消去する。1e-3は「頻出度が高め」 の意味。
-negative: ランダムに間違った解答として判断させる
-hs: Use Hierarchical Softmax?word2vecの仕組みを理解してないとわからなかった。
-binary: 結果をバイナリとして保存する

 

試してみる

distanceを使って実行する。
「Enter word or sentence (EXIT to break):」が表示されたら、好きなワードを入力すると関連するワードが表示される。

 ../distance wiki.bin
 パソコン
    Word: パソコン  Position in vocabulary: 3608
    Word       Cosine distance
    ------------------------------------------------------------------------
    パーソナルコンピュータ		0.764240
    コンピューター		0.758330
    コンピュータ		0.750865
    電卓		0.701924
    PDA		0.699686
    タブレット		0.687180
    マイコン		0.681690
    アプリケーション		0.680706
    ノートブック		0.678845
    端末		0.675508
    ソフトウェア		0.674676
    メインフレーム		0.671590
    Macintosh		0.667261
    マイクロコンピュータ		0.663744
    ワークステーション		0.659894
    プリンター		0.658573
    インターネット		0.657802
    ソフト		0.654141
    デバイス		0.650028
    プリンタ		0.649079

学習させるファイルを変えるだけで学習する内容が変わるため、いろいろ試したいところ。

Follow me!

Ubuntu + word2vecで日本語版wikipediaを自然言語処理してみた” に対して1件のコメントがあります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です