hogehoge foobar Blog Style Beta

Web,Mac,Linux,JavaScript,Perl,PHP,RegExp,Git,Vim,Redmineなど技術的なことのメモや、ちょっと便利そうなものの紹介をしています。

MeCab を Perl から使えるようにする (Mecabインストール〜test.pl実行まで)

MeCab(和布蕪/めかぶ) は 京都大学情報学研究科-日本電信電話株式会社コミュニケーション科学基礎研究所 共同研究ユニットプロジェクトを通じて開発されたオープンソース形態素解析エンジンです。

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

今回は、Mecab本体のインストール 〜 Perlから利用可能にする(バインディング) までをやってみました。

環境としては、

になります。

Mecab + 辞書 のインストール

最初に Mecab本体 と 解析で必要になる辞書をインストールします。

Mecab本体 の インストール

Mecab」について、yum パッケージが無いので、ファイルをダウンロードして、make でインストールします。
configure で「--with-charset=utf8」というオプションを付けて、UTF-8 で使用する指定をします。
「--with-charset」を指定しない場合は、デフォルトで EUC が使用される形になります。

$ wget http://sourceforge.net/projects/mecab/files/mecab/0.98/mecab-0.98.tar.gz/download
$ tar xfv mecab-0.98.tar.gz 
$ cd mecab-0.98
$ ./configure --with-charset=utf8
$ make
$ make check
$ su - root
# make install
〜 (省略) 〜
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib
〜 (省略) 〜
辞書(IPA) の インストール

次に「辞書」をインストールします。
これも、先程のMecab本体と同じように、ファイルをダウンロードして、make でインストールします。

$ wget http://sourceforge.net/projects/mecab/files/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz/download
$ tar xfv mecab-ipadic-2.7.0-20070801.tar.gz 
$ cd mecab-ipadic-2.7.0-20070801
$ ./configure --with-charset=utf8
$ make
$ su - root
# make install
Mecab を 実行してみる

ここまでで、 Mecab + 辞書 のインストールが完了したので、試しにコマンドラインから Mecab を実行してみます。

「mecab」コマンドを実行すると、解析したい文字列の入力が出来るようになります。
文字列を入力後「Enterキー」で、解析が実行されます。

下記のサンプルは「昨日はいい天気だった」という文章を解析した結果になります。

$ mecab
昨日はいい天気だった

昨日	名詞,副詞可能,*,*,*,*,昨日,キノウ,キノー
は	助詞,係助詞,*,*,*,*,は,ハ,ワ
いい	形容詞,自立,*,*,形容詞・イイ,基本形,いい,イイ,イイ
天気	名詞,一般,*,*,*,*,天気,テンキ,テンキ
だっ	助動詞,*,*,*,特殊・ダ,連用タ接続,だ,ダッ,ダッ
た	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
EOS
( Ctrl + D で終了)

テキストファイル等を内容を解析したい場合は、「mecab」コマンドのパラメタとしてファイル名を渡します。
また、解析結果をファイルに出力する場合は、「-o 出力ファイル名」を指定します。

$ cat hoge.txt
一昨日は雪でした。
昨日は大雨でした。
$
$ mecab hoge.txt -o Analysis.txt
$
$ cat Analysis.txt
一昨日  名詞,副詞可能,*,*,*,*,一昨日,オトトイ,オトトイ
は      助詞,係助詞,*,*,*,*,は,ハ,ワ
雪      名詞,一般,*,*,*,*,雪,ユキ,ユキ
でし    助動詞,*,*,*,特殊・デス,連用形,です,デシ,デシ
た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。      記号,句点,*,*,*,*,。,。,。
EOS
昨日    名詞,副詞可能,*,*,*,*,昨日,キノウ,キノー
は      助詞,係助詞,*,*,*,*,は,ハ,ワ
大雨    名詞,一般,*,*,*,*,大雨,オオアメ,オーアメ
でし    助動詞,*,*,*,特殊・デス,連用形,です,デシ,デシ
た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。      記号,句点,*,*,*,*,。,。,。
EOS

Perl から Mecab を実行する

Mecab が正常に動作するところまで確認出来たので、次に プログラム言語 から Mecab を使えるようにします。

Mecab では Perl / Ruby / Python / Javaバインディングが提供されています。
それぞれの言語に対応する バインディング をインストールすることで、プログラムから Mecab を使用することが出来るようになります。

今回は、Perl を使ってやってみました。

Perlバインディング の インストール

まずは、必要となる「Perlバインディング」をインストールします。
Mecab本体等と同じように、ファイルをダウンロードして、make でインストールします。

$ wget http://sourceforge.net/projects/mecab/files/mecab-perl/0.98/mecab-perl-0.98.tar.gz/download
$ tar xfv mecab-perl-0.98.tar.gz
$ cd mecab-perl-0.98
$ perl ./Makefile.PL
$ make
$ su - root
# make install

プログラム言語によって、インストール手順が若干異なります。
それぞれのインストール手順については、「README」に記載されています。

$ cat mecab-perl-0.98/README 

1. Installation% perl Makefile.PL
   % make
   % su
   # make install

2. How to use?

  See 'test.pl' as a sample program
~
テスト用スクリプトを実行(エラー発生!)

Perlバインディング の インストールが完了したら、早速 Perl から Mecab を使用してみます。
先程、make を行ったディレクトリ(mecab-perl-0.98)にテスト用スクリプト(test.pl)が用意されているので、それを実行します。

早速じっこうしてみると、・・・下記のようなエラーが発生しました。

$ cd mecab-perl-0.98
$ perl test.pl 
Can't load '/home/user/work/mecab/mecab-perl-0.98/blib/arch/auto/MeCab/MeCab.so' for module 
MeCab: libmecab.so.1: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません 
at /usr/lib/perl5/5.8.8/i386-linux-thread-multi/DynaLoader.pm line 230.
 at /home/user/work/mecab/mecab-perl-0.98/blib/lib/MeCab.pm line 11
Compilation failed in require at test.pl line 6.
BEGIN failed--compilation aborted at test.pl line 6.
Mecab ライブラリ を読み込む

色々と調べてみると、どうやら Mecab ライブラリが読み込まれていないのが原因のようです。

「ldconfig」コマンドでMecab ライブラリが読み込まれているかどうかを確認します。
「ldconfig」は root 権限が無いと実行できないので、su で root になって実行します。
現在、読み込まれているライブラリを確認するには「-p」オプションを指定します。

$ su - root
# ldconfig -p | grep mecab
#

確かに、読み込まれていませんでした。

ライブラリを読み込ませるために、設定ファイルを変更または追加します。
ldconfig の設定ファイルは「/etc/ld.so.conf」になります。
ファイルの中身を見てみると、「include ld.so.conf.d/*.conf」で「/etc/ld.so.conf.d」配下の conf ファイルを読み込む設定になっているので、「/etc/ld.so.conf.d/mecab.conf」を作成します。
「mecab.conf」には「/usr/local/lib」と記述し、Mecabライブラリ を読み込むように設定します。

$ su - root
# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
#
# vim /etc/ld.so.conf.d/mecab.conf
/usr/local/lib

設定ファイルを作成したら、ライブラリを再読込します。
ライブラリの再読込は、「ldconfig」コマンドを「オプション無し」で実行します。

$ su - root
# ldconfig
# ldconfig -p | grep mecab
	libmecab.so.1 (libc6) => /usr/local/lib/libmecab.so.1
	libmecab.so (libc6) => /usr/local/lib/libmecab.so

今度は、Mecabライブラリ が読み込まれているのを確認できました。

テスト用スクリプトを実行(成功)

ライブラリが読み込まれたので、もう一度テスト用スクリプト(test.pl)を実行してみます。

$ cd mecab-perl-0.98
$ perl test.pl 
0.98
太郎	名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー
は	助詞,係助詞,*,*,*,*,は,ハ,ワ
この	連体詞,*,*,*,*,*,この,コノ,コノ
本	名詞,一般,*,*,*,*,本,ホン,ホン
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
二	名詞,数,*,*,*,*,二,ニ,ニ
郎	名詞,一般,*,*,*,*,郎,ロウ,ロー
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
見	動詞,自立,*,*,一段,連用形,見る,ミ,ミ
た	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
女性	名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ
に	助詞,格助詞,一般,*,*,*,に,ニ,ニ
渡し	動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ
た	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。	記号,句点,*,*,*,*,。,。,。
EOS
〜 (省略) 〜

今度は成功しました。
これで、Perl から Mecab が使えるようになりました。

今回参考にしたページ

Ubuntu Linux 9.10 に MeCab をインストールする - hiratake55 の開発メモ
http://d.hatena.ne.jp/hiratake55/20091031/1257007502

MeCab Yet Another Part-of-Speech and Morphological Analyzer
http://mecab.sourceforge.net/#install-unix

Linux関連 環境変数_ライブラリの追加 - jun2065.net ネットワーク,php,oracle,mysql,postgresql,linux
http://www.jun2065.net/index.php?Linux%B4%D8%CF%A2%2F%B4%C4%B6%AD%CA%D1%BF%F4_%A5%E9%A5%A4%A5%D6%A5%E9%A5%EA%A4%CE%C4%C9%B2%C3

Linuxコマンド ldconfig 〜共有ライブラリを認識させる〜
http://ryusai-hp.web.infoseek.co.jp/linux_cmd_ldconfig.htm