読者です 読者をやめる 読者になる 読者になる

NeverBlog::Likk::Unexistable;

見なかったことにして下さい

MeCab.pm 入ったー!

本体と、辞書をユーザ領域にインスコするところまでは下記URL参照
http://d.hatena.ne.jp/abdulkarim/20070427/1177656328

Text::MeCabCpanからインスコしようとしたが、
PREFIXをサポートしてないらしくてmakeの途中で止まる。

仕方なく、本家からバインディング用のmecab-perlをダウンロード。
http://downloads.sourceforge.net/mecab/mecab-perl-0.94.tar.gz
が、やはりPREFIXをサポートしてないらしく、makeの途中で止まる。

gccC++もxsもmakeも良く分からんが、とりあえずMakefile弄りって無理やりmakeを通らせる。
→make test,make install ができた物の、test.plを実行すると
Can't call method "parse" without a package or object reference at ./test.pl line 14 と表示されて動かない orz

→再度Makefile弄り、make test,make install,perl -I"ユーザlib領域" ./test.pl
を30分ほどtry&errorを繰り返してたら。

$ perl -I"ユーザlib領域" ./test.pl
0.95
太郎    名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー
は      助詞,係助詞,*,*,*,*,は,ハ,ワ
この    連体詞,*,*,*,*,*,この,コノ,コノ
本      名詞,一般,*,*,*,*,本,ホン,ホン
を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
二郎    名詞,固有名詞,一般,*,*,*,二郎,ニロウ,ニロー
を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
見      動詞,自立,*,*,一段,連用形,見る,ミ,ミ
た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
女性    名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ
に      助詞,格助詞,一般,*,*,*,に,ニ,ニ
渡し    動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ
た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。      記号,句点,*,*,*,*,。,。,。
EOS
        BOS/EOS,*,*,*,*,*,*,*,*
太郎    名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー
は      助詞,係助詞,*,*,*,*,は,ハ,ワ
この    連体詞,*,*,*,*,*,この,コノ,コノ
本      名詞,一般,*,*,*,*,本,ホン,ホン
を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
二郎    名詞,固有名詞,一般,*,*,*,二郎,ニロウ,ニロー
を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
見      動詞,自立,*,*,一段,連用形,見る,ミ,ミ
た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
女性    名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ
に      助詞,格助詞,一般,*,*,*,に,ニ,ニ
渡し    動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ
た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。      記号,句点,*,*,*,*,。,。,。
        BOS/EOS,*,*,*,*,*,*,*,*
B[0] 太郎       名詞,固有名詞,地域,一般,*,*,太郎,タロウ,タロー
B[0] 太郎       名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー
B[0] 太 動詞,自立,*,*,五段・ラ行,体言接続特殊2,太る,フト,フト
B[0] 太 名詞,固有名詞,地域,一般,*,*,太,タイ,タイ
B[0] 太 名詞,固有名詞,人名,名,*,*,太,フトシ,フトシ
B[0] 太 形容詞,自立,*,*,形容詞・アウオ段,ガル接続,太い,フト,フト
E[0]    BOS/EOS,*,*,*,*,*,*,*,*
B[2] 郎 名詞,一般,*,*,*,*,郎,ロウ,ロー
E[2] 太 形容詞,自立,*,*,形容詞・アウオ段,ガル接続,太い,フト,フト
E[2] 太 名詞,固有名詞,人名,名,*,*,太,フトシ,フトシ
E[2] 太 名詞,固有名詞,地域,一般,*,*,太,タイ,タイ
E[2] 太 動詞,自立,*,*,五段・ラ行,体言接続特殊2,太る,フト,フト
B[4] はこ       動詞,自立,*,*,五段・カ行イ音便,未然ウ接続,はく,ハコ,ハコ
B[4] は 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,はる,ハ,ハ
B[4] は 助詞,係助詞,*,*,*,*,は,ハ,ワ
B[4] は 動詞,自立,*,*,五段・ラ行,体言接続特殊2,はる,ハ,ハ
E[4] 郎 名詞,一般,*,*,*,*,郎,ロウ,ロー
E[4] 太郎       名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー
E[4] 太郎       名詞,固有名詞,地域,一般,*,*,太郎,タロウ,タロー
B[6] この       連体詞,*,*,*,*,*,この,コノ,コノ
B[6] こ 動詞,非自立,*,*,カ変・クル,未然形,くる,コ,コ
B[6] こ 動詞,自立,*,*,カ変・クル,未然形,くる,コ,コ
B[6] こ 動詞,自立,*,*,五段・ラ行,体言接続特殊2,こる,コ,コ
B[6] こ 動詞,非自立,*,*,五段・カ行促音便,未然ウ接続,く,コ,コ
B[6] こ 名詞,一般,*,*,*,*,こ,コ,コ
B[6] こ 形容詞,自立,*,*,形容詞・アウオ段,ガル接続,こい,コ,コ
E[6] は 動詞,自立,*,*,五段・ラ行,体言接続特殊2,はる,ハ,ハ
E[6] は 助詞,係助詞,*,*,*,*,は,ハ,ワ
E[6] は 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,はる,ハ,ハ
B[8] の 助詞,終助詞,*,*,*,*,の,ノ,ノ
B[8] の 助詞,連体化,*,*,*,*,の,ノ,ノ
B[8] の 助詞,格助詞,一般,*,*,*,の,ノ,ノ
B[8] の 名詞,非自立,一般,*,*,*,の,ノ,ノ
B[8] の 動詞,自立,*,*,五段・ラ行,体言接続特殊2,のる,ノ,ノ
E[8] こ 形容詞,自立,*,*,形容詞・アウオ段,ガル接続,こい,コ,コ
E[8] こ 名詞,一般,*,*,*,*,こ,コ,コ
E[8] こ 動詞,非自立,*,*,五段・カ行促音便,未然ウ接続,く,コ,コ
E[8] こ 動詞,自立,*,*,五段・ラ行,体言接続特殊2,こる,コ,コ
E[8] こ 動詞,自立,*,*,カ変・クル,未然形,くる,コ,コ
E[8] こ 動詞,非自立,*,*,カ変・クル,未然形,くる,コ,コ
E[8] はこ       動詞,自立,*,*,五段・カ行イ音便,未然ウ接続,はく,ハコ,ハコ
B[10] 本        名詞,接尾,助数詞,*,*,*,本,ホン,ホン
B[10] 本        接頭詞,名詞接続,*,*,*,*,本,ホン,ホン
B[10] 本        名詞,固有名詞,地域,一般,*,*,本,ホン,ホン
B[10] 本        名詞,固有名詞,人名,姓,*,*,本,モト,モト
B[10] 本        名詞,一般,*,*,*,*,本,ホン,ホン
E[10] の        動詞,自立,*,*,五段・ラ行,体言接続特殊2,のる,ノ,ノ
E[10] の        名詞,非自立,一般,*,*,*,の,ノ,ノ
E[10] の        助詞,格助詞,一般,*,*,*,の,ノ,ノ
E[10] の        助詞,連体化,*,*,*,*,の,ノ,ノ
E[10] の        助詞,終助詞,*,*,*,*,の,ノ,ノ
E[10] この      連体詞,*,*,*,*,*,この,コノ,コノ
B[12] を        助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
E[12] 本        名詞,一般,*,*,*,*,本,ホン,ホン
E[12] 本        名詞,固有名詞,人名,姓,*,*,本,モト,モト
E[12] 本        名詞,固有名詞,地域,一般,*,*,本,ホン,ホン
E[12] 本        接頭詞,名詞接続,*,*,*,*,本,ホン,ホン
E[12] 本        名詞,接尾,助数詞,*,*,*,本,ホン,ホン
B[14] 二郎      名詞,数,*,*,*,*,*
B[14] 二郎      名詞,固有名詞,一般,*,*,*,二郎,ニロウ,ニロー
B[14] 二郎      名詞,固有名詞,人名,名,*,*,二郎,ジロウ,ジロー
B[14] 二        名詞,固有名詞,地域,一般,*,*,二,フタ,フタ
B[14] 二        名詞,数,*,*,*,*,二,ニ,ニ
E[14] を        助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
B[16] 郎        名詞,一般,*,*,*,*,郎,ロウ,ロー
E[16] 二        名詞,数,*,*,*,*,二,ニ,ニ
E[16] 二        名詞,固有名詞,地域,一般,*,*,二,フタ,フタ
B[18] を        助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
E[18] 郎        名詞,一般,*,*,*,*,郎,ロウ,ロー
E[18] 二郎      名詞,固有名詞,人名,名,*,*,二郎,ジロウ,ジロー
E[18] 二郎      名詞,固有名詞,一般,*,*,*,二郎,ニロウ,ニロー
E[18] 二郎      名詞,数,*,*,*,*,*
B[20] 見        動詞,自立,*,*,一段,連用形,見る,ミ,ミ
B[20] 見        動詞,自立,*,*,一段,未然形,見る,ミ,ミ
B[20] 見        名詞,固有名詞,地域,一般,*,*,見,ミル,ミル
E[20] を        助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
B[22] た        動詞,非自立,*,*,五段・ラ行,体言接続特殊2,たる,タ,タ
B[22] た        動詞,自立,*,*,五段・ラ行,体言接続特殊2,たる,タ,タ
B[22] た        助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
B[22] た        助動詞,*,*,*,特殊・タイ,ガル接続,たい,タ,タ
E[22] 見        名詞,固有名詞,地域,一般,*,*,見,ミル,ミル
E[22] 見        動詞,自立,*,*,一段,未然形,見る,ミ,ミ
E[22] 見        動詞,自立,*,*,一段,連用形,見る,ミ,ミ
B[24] 女性      名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ
B[24] 女        名詞,接尾,助数詞,*,*,*,女,ジョ,ジョ
B[24] 女        接頭詞,名詞接続,*,*,*,*,女,ジョ,ジョ
B[24] 女        名詞,一般,*,*,*,*,女,オンナ,オンナ
E[24] た        助動詞,*,*,*,特殊・タイ,ガル接続,たい,タ,タ
E[24] た        助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
E[24] た        動詞,自立,*,*,五段・ラ行,体言接続特殊2,たる,タ,タ
E[24] た        動詞,非自立,*,*,五段・ラ行,体言接続特殊2,たる,タ,タ
B[26] 性        名詞,接尾,一般,*,*,*,性,セイ,セイ
B[26] 性        名詞,一般,*,*,*,*,性,セイ,セイ
E[26] 女        名詞,一般,*,*,*,*,女,オンナ,オンナ
E[26] 女        接頭詞,名詞接続,*,*,*,*,女,ジョ,ジョ
E[26] 女        名詞,接尾,助数詞,*,*,*,女,ジョ,ジョ
B[28] に        動詞,自立,*,*,一段,連用形,にる,ニ,ニ
B[28] に        動詞,自立,*,*,一段,未然形,にる,ニ,ニ
B[28] に        助詞,副詞化,*,*,*,*,に,ニ,ニ
B[28] に        助詞,特殊,*,*,*,*,に,ニ,ニ
B[28] に        助詞,格助詞,一般,*,*,*,に,ニ,ニ
E[28] 性        名詞,一般,*,*,*,*,性,セイ,セイ
E[28] 性        名詞,接尾,一般,*,*,*,性,セイ,セイ
E[28] 女性      名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ
B[30] 渡し      動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ
B[30] 渡し      名詞,一般,*,*,*,*,渡し,ワタシ,ワタシ
B[30] 渡        動詞,自立,*,*,五段・ラ行,体言接続特殊2,渡る,ワタ,ワタ
B[30] 渡        名詞,固有名詞,地域,一般,*,*,渡,ド,ド
B[30] 渡        名詞,固有名詞,人名,姓,*,*,渡,ワタリ,ワタリ
B[30] 渡        名詞,固有名詞,人名,名,*,*,渡,ワタル,ワタル
E[30] に        助詞,格助詞,一般,*,*,*,に,ニ,ニ
E[30] に        助詞,特殊,*,*,*,*,に,ニ,ニ
E[30] に        助詞,副詞化,*,*,*,*,に,ニ,ニ
E[30] に        動詞,自立,*,*,一段,未然形,にる,ニ,ニ
E[30] に        動詞,自立,*,*,一段,連用形,にる,ニ,ニ
B[32] した      名詞,一般,*,*,*,*,した,シタ,シタ
B[32] し        動詞,接尾,*,*,五段・サ行,連用形,す,シ,シ
B[32] し        助詞,接続助詞,*,*,*,*,し,シ,シ
B[32] し        動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
B[32] し        動詞,自立,*,*,サ変・スル,未然形,する,シ,シ
B[32] し        動詞,自立,*,*,五段・ラ行,体言接続特殊2,しる,シ,シ
B[32] し        助動詞,*,*,*,文語・キ,体言接続,き,シ,シ
E[32] 渡        名詞,固有名詞,人名,名,*,*,渡,ワタル,ワタル
E[32] 渡        名詞,固有名詞,人名,姓,*,*,渡,ワタリ,ワタリ
E[32] 渡        名詞,固有名詞,地域,一般,*,*,渡,ド,ド
E[32] 渡        動詞,自立,*,*,五段・ラ行,体言接続特殊2,渡る,ワタ,ワタ
B[34] た        動詞,非自立,*,*,五段・ラ行,体言接続特殊2,たる,タ,タ
B[34] た        動詞,自立,*,*,五段・ラ行,体言接続特殊2,たる,タ,タ
B[34] た        助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
B[34] た        助動詞,*,*,*,特殊・タイ,ガル接続,たい,タ,タ
E[34] し        助動詞,*,*,*,文語・キ,体言接続,き,シ,シ
E[34] し        動詞,自立,*,*,五段・ラ行,体言接続特殊2,しる,シ,シ
E[34] し        動詞,自立,*,*,サ変・スル,未然形,する,シ,シ
E[34] し        動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
E[34] し        助詞,接続助詞,*,*,*,*,し,シ,シ
E[34] し        動詞,接尾,*,*,五段・サ行,連用形,す,シ,シ
E[34] 渡し      名詞,一般,*,*,*,*,渡し,ワタシ,ワタシ
E[34] 渡し      動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ
B[36] 。        名詞,サ変接続,*,*,*,*,*
B[36] 。        記号,句点,*,*,*,*,。,。,。
E[36] た        助動詞,*,*,*,特殊・タイ,ガル接続,たい,タ,タ
E[36] た        助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
E[36] た        動詞,自立,*,*,五段・ラ行,体言接続特殊2,たる,タ,タ
E[36] た        動詞,非自立,*,*,五段・ラ行,体言接続特殊2,たる,タ,タ
E[36] した      名詞,一般,*,*,*,*,した,シタ,シタ
B[38]   BOS/EOS,*,*,*,*,*,*,*,*
E[38]   BOS/EOS,*,*,*,*,*,*,*,*
E[38] 。        記号,句点,*,*,*,*,。,。,。
E[38] 。        名詞,サ変接続,*,*,*,*,*
filename: /home/ユーザ名/local/lib/mecab/dic/ipadic/sys.dic
charset: euc-jp
size: 378914
type: 0
lsize: 1316
rsize: 1316
version: 102

おぉ、何かうごいたっぽい。
というか、これで大丈夫だよな?入ってるんだよな?

イマイチ不安だったので適当にsampleファイル作る。

#!/usr/bin/perl
use MeCab;
my $m = new MeCab::Tagger ("");
my $n = $m->parseToNode ("すもももももももものうち");
while ($n = $n->{next}) {
   printf("%s\t%s\t%d\n",
          $n->{surface},
          $n->{feature},
          $n->{cost}
         );
}

実行結果

すもも  名詞,一般,*,*,*,*,すもも,スモモ,スモモ  7082
も      助詞,係助詞,*,*,*,*,も,モ,モ    7389
もも    名詞,一般,*,*,*,*,もも,モモ,モモ        14283
も      助詞,係助詞,*,*,*,*,も,モ,モ    14590
もも    名詞,一般,*,*,*,*,もも,モモ,モモ        21484
の      助詞,連体化,*,*,*,*,の,ノ,ノ    21909
うち    名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ       22010
        BOS/EOS,*,*,*,*,*,*,*,* 19271

ちゃんと入ったっぽい。よかった。

弄ったMakefileと本来生成されるMakefileのdiffはそのうちUPする。
(というより、見たい人なんて居るのか?)

あ、あとmecab.pmが入らなくて、perl

`echo "形態素解析したい文字列" | "/path/to/mecab"`;

なモジュールを途中まで作っていたのは秘密。