株式関連の話が続きましたが、今日は気分転換に別のお話です。
少し前には、文章を意味のある単語に区切り、辞書を利用して品詞や内容を判別する「形態素解析」の仕組みである「 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 へ導入する場合のおまじないです。 ※文字コードも環境に合わせてください。
1
2
3
4
5
6
7
$ 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 時に以下のようなエラーが発生しました。
1
2
3
4
5
6
7
8
9
collect2: ld returned 1 exit status
Makefile:369: recipe for target
</span>libmecab.la<span class="s1">' failed</span>
</span><span class='line'><span class="s1">make[2]: *** [libmecab.la] Error 1</span>
</span><span class='line'><span class="s1">make[2]: ディレクトリ
/usr/src/mecab-0.993/src' から出ます
Makefile:404: recipe for target </span>all-recursive<span class="s1">' failed</span>
</span><span class='line'><span class="s1">make[1]: *** [all-recursive] Error 1</span>
</span><span class='line'><span class="s1">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 をインストールしました。
1
2
3
4
5
6
7
$ 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.動作確認
以下のように動作確認をします。
1
2
3
4
5
6
7
8
9
10
$ mecab
これはMeCabの動作テストです
これ 名詞,代名詞,一般,,,,これ,コレ,コレ
は 助詞,係助詞,,,,,は,ハ,ワ
MeCab 名詞,固有名詞,組織,,,,
の 助詞,連体化,,,,,の,ノ,ノ
動作 名詞,サ変接続,,,,,動作,ドウサ,ドーサ
テスト 名詞,サ変接続,,,,,テスト,テスト,テスト
です 助動詞,,,,特殊・デス,基本形,です,デス,デス
EOS
テキストファイルを読み込ませて、結果を別のテキストファイルへ出力するなら、以下のようにします。 ※今回の環境は UTF-8 なので、infile も UTF-8 にする必要があります。
1
$ mecab infile -o outfile
※出力フォーマットは以下の通り。
1
2
表層形\t品詞,品詞細分類1,品詞細分類2,品詞細分類3,
活用形,活用型,原形,読み,発音
以上です。