いっきのblog

技術とか色々

文章の単語分割を行うためにMeCabをインストールする

日本語の自然言語処理をやっていく上で、よく使われているであろうMeCabのインストールを行う。
そもそも前処理はなんぞやというと、いい例があったので引用させていただく。

f:id:kzkohashi:20180721212312p:plain 引用:自然言語処理における前処理の種類とその威力

初心者の自分にとってはこんなに前処理あったのか・・・と思いつつ、MeCabは「文章の単語分割」でよく使われている。
例えば以下のように、ある文章の内容を名詞/助詞/動詞などに分割してくれる。このようなことを「形態素解析」とも呼ぶ。

[~] mecab                                                                                                                                                                                                                                                                  
私は神になったかもしれない。
私 名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
神 名詞,一般,*,*,*,*,神,カミ,カミ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
なっ  動詞,自立,*,*,五段・ラ行,連用タ接続,なる,ナッ,ナッ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
かも  助詞,副助詞,*,*,*,*,かも,カモ,カモ
しれ  動詞,自立,*,*,一段,未然形,しれる,シレ,シレ
ない  助動詞,*,*,*,特殊・ナイ,基本形,ない,ナイ,ナイ
。 記号,句点,*,*,*,*,。,。,。
EOS

MeCabと辞書のインストール

以下のURLからソースのダウンロードをする。

MeCab: Yet Another Part-of-Speech and Morphological Analyzer

次に、ディレクトリの生成。

sudo mkdir /usr/local/mecab

MeCabのインストール。

cd $HOME/Downloads
tar xvfz mecab-0.996.tar.gz
cd mecab-0.996
./configure --enable-utf8-only --prefix=/usr/local/mecab
make
sudo make install

このままだと、名詞/助動詞などを判定するための「辞書」がないためそれもインストール。
MeCabと同じところにあるが、以下のURLから「IPA 辞書」をダウンロード。

MeCab: Yet Another Part-of-Speech and Morphological Analyzer

次にインストール。

cd $HOME/Downloads
tar xvfz mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801
./configure --prefix=/usr/local/mecab --with-mecab-config=/usr/local/mecab/bin/mecab-config --with-charset=utf8
make
sudo make install

パスを通す

export PATH=/usr/local/mecab/bin:$PATH

これでMeCabが使えるようになるのだが、シェルを再起動しなくてはいけない。毎回コマンド叩くのは面倒かと思うので、以下のようにエイリアスを貼っておくとパスを通すたびにすぐに行えるのでおすすめ。

alias relogin='exec $SHELL -l'

MeCabの実行と最新の辞書のインストール

インストールも終わったので、実際に実行してみる。

[~] relogin #もしまだやってなかったら
[~] mecab                                                                                                                                                                                                                                                                  
生まれ変わったらメロンパンになりたい。
生まれ変わっ  動詞,自立,*,*,五段・ラ行,連用タ接続,生まれ変わる,ウマレカワッ,ウマレカワッ
たら  助動詞,*,*,*,特殊・タ,仮定形,た,タラ,タラ
メロン   名詞,一般,*,*,*,*,メロン,メロン,メロン
パン  名詞,一般,*,*,*,*,パン,パン,パン
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
なり  動詞,自立,*,*,五段・ラ行,連用形,なる,ナリ,ナリ
たい  助動詞,*,*,*,特殊・タイ,基本形,たい,タイ,タイ
。 記号,句点,*,*,*,*,。,。,。
EOS

無事にできた・・・と思いたいが、よみると「メロンパン」が「メロン」と「パン」に分割されてしまっている。これは、「IPA辞書」は詳しくはわからないが昔からある辞書で、最新の言葉に対応していないっぽい。
なので、最新の言葉に対応した辞書をインストールする。

mecab-ipadic-NEologdのインストール。

github.com

git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
./bin/install-mecab-ipadic-neologd -n

MeCabでに利用。

[~] mecab -d /usr/local/mecab/lib/mecab/dic/mecab-ipadic-neologd/                                                                                                                                                                                                          
生まれ変わったらメロンパンになりたい。
生まれ変わっ  動詞,自立,*,*,五段・ラ行,連用タ接続,生まれ変わる,ウマレカワッ,ウマレカワッ
たら  助動詞,*,*,*,特殊・タ,仮定形,た,タラ,タラ
メロンパン 名詞,固有名詞,一般,*,*,*,メロンパン,メロンパン,メロンパン
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
なり  動詞,自立,*,*,五段・ラ行,連用形,なる,ナリ,ナリ
たい  助動詞,*,*,*,特殊・タイ,基本形,たい,タイ,タイ
。 記号,句点,*,*,*,*,。,。,。
EOS

無事「メロンパン」を正しく分割できたが、嬉しいことに更新頻度が半端ないので、ローカルと本番環境で扱う場合はバージョンの違いに気をつけないといけない。

f:id:kzkohashi:20180721215203p:plain

終わり

自然言語処理をするための一歩目として単語分割を行うためのMeCabをインスールした。次は元となるデータも手元においておいたほうがいいと思うので、Wikipediaの全文データを扱う方法について書こうと思う。