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