2005~2013
そもそも形態素解析ってなんぞやという話ですが、
文章の形態を解析するというのは、文章の中で、どこからどこまでがその単語であり、
その単語が名詞なのか動詞なのか・・・ということを調べるということです。
といっても単語が名詞か動詞かなんていちいちプログラム判断させるのはアホらしいので
判断には普通、辞書という物を使います。
辞書にはその単語が名詞なのか動詞なのか、複数の意味を持つのか・・・
と言ったいろんな情報が記述されていて、単語で検索をかけることで単語の品詞を検索できます。
例えば、英語だったら
I lost my card key.
このように単語ごとにスペースで区切られていますので、単語のパースは簡単です。
スペースごとに1単語としてみれば何の問題もありません。
あとはこの単語ごとに辞書にぶっこめば単語の品詞が出てくるので、
単語に対して文法に合う品詞を出力すれば完了です。
しかし日本語の場合はどうでしょう。
私は私のカードキーを失った。翻訳 by Google先生
我々日本人ならともかく、コンピュータにとってはどこが単語の区切りなのかがわかりません。
なので形態素解析には文章内でどの部分を一単語として認識すれば正しい文章として成り立つかを調べながら
単語の区切りを見つける解析エンジンが存在します。
今回はその形態素解析エンジンを動かしてみようという話になります。(長い)
今回はMecabというエンジンを使用します。
Google日本語入力の中の人が開発したエンジンで日本語の形態素解析エンジンでは一般的なものです。
今回はこれを、サーバー構築日誌(嘘)で構築したサーバー上で動かしてみます。
WindowsであればexeをDLするだけで終わる簡単な作業なのですが、
うちのサーバーはあの有名なCentOS。とても面倒でしたね。
まずlibiconvとか言うのをインストールしないといけないらしく、インストールを行います。
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.11.tar.gz
tar zxvf libiconv-1.11.tar.gz
cd libiconv-1.11
./configure
make
make install
最新版があったらそっちのほうがいいかもしれませんが、
互換性の関係もあるので出来る限りこのバージョンのほうがいいと思います。
普通にwgetで落として解凍してmakeでインストールします。
この子には起動していて欲しいのでviか何かを起動してld.so.confに追加します。
vi /etc/ld.so.conf
/usr/local/lib を末尾に追加 viの操作方法はサーバー構築日誌にあるはず。
ldconfig -v | less
次にめかぶをインストールします。
今のところ最新版は0.998ですが、0.99XシリーズはCentOSやCygwinでは総じてインストールが出来ません。
という訳で今回は0.98インストールします。
wget http://mecab.googlecode.com/files/mecab-0.98.tar.gz
tar zxvf mecab-0.98.tar.gz
cd mecab-0.98
./configure
make
make check
make install
どっちにしてもmakeでエラーを吐きますが、macabと打ってコマンドが無いよって言われなければインストールはできています。
公式によると、どうやらこのエラーは仕様のようです。
g++(gccのC++版)コンパイラがないとインストール出来ないようですが
普通にLinuxをインストーすれば標準で入っているので問題ないかと思います。
g++関連のエラーを吐いた場合はg++をインストールすれば大丈夫です。
次に辞書のインストールです。辞書も色々なものがありますが、
ここでは推奨されているIPAの辞書を使います。
wget http://mecab.googlecode.com/files/mecab-ipadic-2.7.0-20070801.tar.gz
tar zxvf mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801
./configure --with-charset=utf-8
make
make install
こんなかんじです。
先にめかぶをインストールしないとエラー吐くっぽいですがそれ以外ではここではトラブル無し。
どうやっても動かないって場合はlibiconvが動いてないかもしれません。
ここまででめかぶのインストールは終了です。
コマンドライン上でmecabと入力したらめかぶが起動するので
適当に日本語の文章を打てばこのように結果を返してくれます。
[curo@curonet ~]$ mecab
私は私のカードキーを失った。
私 名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
私 名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
カード 名詞,一般,*,*,*,*,カード,カード,カード
キー 名詞,一般,*,*,*,*,キー,キー,キー
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
失っ 動詞,自立,*,*,五段・ワ行促音便,連用タ接続,失う,ウシナッ,ウシナッ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。 記号,句点,*,*,*,*,。,。,。
EOS
最後にpython用のバンディングを。なんかファイルの変更が必要とか書いてあって、
色々調べてみても何もわからず、結局何も変更しないでインストールしましたが問題なく動いています。
wget http://sourceforge.net/projects/mecab/files/mecab-python/0.98/mecab-python-0.98.tar.gz/download
tar xvzf mecab-python-0.98.tar.gz
cd mecab-python-0.98
python setup.py build
python setup.py install
めかぶについてはこんなかんじです。
mecab-python-0.98ディレクトリにtest.pyというものがあって、動作確認を行うことが出来ますが、
出力形式等違うのでpython3では動作しません。
(^・ω・)ノ RadiumProduction at curonet