Cygwin - 形態素解析 MeCab をインストール!
Updated:
株式関連の話が続きましたが、今日は気分転換に別のお話です。
少し前には、文章を意味のある単語に区切り、辞書を利用して品詞や内容を判別する「形態素解析」の仕組みである「 MeCab 」を Windows マシンに導入しました。
今回は、Cygwin 上に「 MeCab 」インストールしてみました。 いずれ、Cygwin + Ruby で形態素解析を行うための準備です。
以下が、導入記録です。
記録
MeCab: Yet Another Part-of-Speech and Morphological Analyzer では、当記事執筆時点では MeCab 0.993 が最新でした。 しかし、0.99x 系は Cygwin では make でエラーとなるので、今回は 0.98 をインストールしました。
1.事前準備
Cygwin 上に MeCab をインストールするには、ソースを取得してビルド&インストールします。 Cygwin に以下のパッケージが導入されていなければ、Cygwin の setup.exe 等でインストールしておく。
- gcc-g++
- make
- expat
- gettext
- gettext-devel
- libiconv
- libtool
2.MeCab 本体の導入
以下の要領でアーカイブのタウンロード・展開、そして configure, make, make install します。 ※configure のオプション “CPPFLAGS=-DNOMINMAX LIBS=-liconv” は Cygwin へ導入する場合のおまじないです。 ※文字コードも環境に合わせてください。
$ cd /usr/src
$ wget http://mecab.googlecode.com/files/mecab-0.98.tar.gz
$ tar zxvf mecab-0.98.tar.gz
$ cd mecab-0.98
$ ./configure --with-charset=utf-8 CPPFLAGS=-DNOMINMAX LIBS=-liconv
$ make
$ make install
ちなみに 0.99x では make 時に以下のようなエラーが発生しました。
collect2: ld returned 1 exit status
Makefile:369: recipe for target `libmecab.la' failed
make[2]: *** [libmecab.la] Error 1
make[2]: ディレクトリ `/usr/src/mecab-0.993/src' から出ます
Makefile:404: recipe for target `all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: ディレクトリ `/usr/src/mecab-0.993' から出ます
Makefile:271: recipe for target `all' failed
make: *** [all] Error 2
また、configure 時に “CPPFLAGS=-DNOMINMAX LIBS=-liconv” のオプションを付加しない方法もありますすが、当方の場合、インストールできても文字コードの部分でバランスが取れませんでした。(入力文字列とMeCab側の文字で文字コードが一致しない!)
3.MeCab 辞書の導入
MeCab の辞書には IPA, Juman, Unidic がありますが、推奨の IPA をインストールしました。
$ cd /usr/src
$ 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
4.動作確認
以下のように動作確認をします。
$ mecab
これはMeCabの動作テストです
これ 名詞,代名詞,一般,*,*,*,これ,コレ,コレ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
MeCab 名詞,固有名詞,組織,*,*,*,*
の 助詞,連体化,*,*,*,*,の,ノ,ノ
動作 名詞,サ変接続,*,*,*,*,動作,ドウサ,ドーサ
テスト 名詞,サ変接続,*,*,*,*,テスト,テスト,テスト
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
EOS
テキストファイルを読み込ませて、結果を別のテキストファイルへ出力するなら、以下のようにします。 ※今回の環境は UTF-8 なので、infile も UTF-8 にする必要があります。
$ mecab infile -o outfile
※出力フォーマットは以下の通り。
表層形\t品詞,品詞細分類1,品詞細分類2,品詞細分類3,
活用形,活用型,原形,読み,発音
以上です。
Comments