アプリ版:「スタンプのみでお礼する」機能のリリースについて

perlで、テキストを形態素解析し、専門用語を抽出するコードを書いています。

Text::MeCab と TermExtract::MeCab; を利用しているのですが、
よくわからないエラーがでます。

以下 ソースとエラー文になります。

<ソース>
#! /usr/bin/perl
use Text::MeCab;
use TermExtract::MeCab;

my $text = "私はももが好きです。";
my $mtext = getMecabText($text);

sub getMecabText{
my ($text) = shift @_;
my @arg = ($0,"Ochasen");
my $mecab = new Text::MeCab::Tagger(\@arg);
my $exdata = new TermExtract::MeCab;

$text = $mecab->parse($text);
return $text;
}
printKeyWord($mtext);

sub printKeyWord{
my ($mtext) = shift @_;
my $data = new TermExtract::MeCab;
my $output_mode = 1;
$data->use_TF;
my @noun_list = $data->get_imp_word($mtext,'var');
foreach (@noun_list) {
next if $_->[0] =~ /^(昭和)*(平成)*(\d+年)*(\d+月)*(\d+日)*(午前)*(午後)*(\d+時)*(\d+分)*(\d+秒)*$/;
next if $_->[0] =~ /^\d+$/;
printf "%-60s %16.2f\n", $_->[0], $_->[1] if $output_mode == 1;
printf "%s\n", $_->[0] if $output_mode == 2;
printf "%s,", $_->[0] if $output_mode == 3;
}
}

<エラー文>
Can't locate loadable object for module Text::MeCab in @INC (@INC contains: C:/usr/site/lib C:/usr/lib .) at C:/usr/lib/DynaLoader.pm line 21
BEGIN failed--compilation aborted at C:/usr/lib/Text/MeCab.pm line 21.
Compilation failed in require at ./lab/a.cgi line 2.
BEGIN failed--compilation aborted at ./lab/a.cgi line 2.


C:/usr/site/lib と C:/usr/lib の中に MeCab.pmファイルを置いても同じエラーがでます。
DynaLoader.pm line 21 や MeCab.pm line 21 は改行のみでした。
MeCab.pm は http://search.cpan.org/~dmaki/Text-MeCab-0.20013 …
の Source にあるものをコピペして設置しています。

いろいろと格闘したのですが、お手上げ状態です。
原因がわかる方いらっしゃれば教えていただきたいです。
よろしくお願いしいたします。

A 回答 (1件)

MeCab.pmだけをダウンロードしたってことですか?それだと動かなくて当然です。


・MeCabそのものがインストールされている必要があります。Text::MeCabはそれとPerlを継ぐ役割りをしているだけです。
・その継ぐために一部Cで書かれている部分があります。それをコンパイルする必要があります。

そのページの左の上の方にDownloadにあるtar.gzが一式です。
通常は、これをいちいちダウンロード、などということはしないで、CPANモジュールを使ってインストールします。依存するモジュールも一気にインストールできます。詳しい使い方は「CPAN 使い方」とでも検索すればすぐにわかります。

ただ問題が一つ。以上のことはUnix系OS上での話です。C:とあることからWindowsだと思われます。それだと、必要なコンパイル環境が整っていない可能性があります。また、Perlの種類によってはCPANがうまく使えないケースもあります。
Strawberry Perl だとCPAN利用のための一式がセットなのでそのまま使えます。
ActivePerlだとPPMを利用することになるのですが、Text::MeCabがあるかどうか確認していません。無いかもしれません。
それ以外だと、そのPerlに依存します。

この回答への補足

MeCabそのものについて書き忘れていました。申し訳ございません。
MeCabそのものはCドライブ直下にインストールしてあります。バージョンは0.98です。

こちらWindowsなのでCpanは使えず、ActibePerlなのでPPMを利用しているのですが、
Text::Mecabがありませんでした。

以前、can'tlocate のエラーでつまずいたときには、提示された場所に、
ソースを探してpmファイルを置いてあげればうまく動いていたんですが・・・
今回はだめみたいです。


また、コマンドプロンプトカから
>cpan
>intall Text::MeCab
とすると

ログが流れて
最後に
<以下赤文字>
Warning: No success on command[C:\usr\bin\perl.exe Makefile.PL INSTALLDIRS=site]

DMAKI/Text-MeCab-0.20013.tar.gz
<以下緑文字>
Running make test
Make had some problems, won't test
Running make install
Make had some problems, won't install
Failed during this command:
DMAKI/Text-MeCab-0.20013.tar.gz : writemakefile NO 'C:\usr\bin\per
l.exe Makefile.PL INSTALLDIRS=site' returned status 512

となりました。
cpanが動くのは、以前Strawberry Perl を入れていたなごりでしょうか・・


もう少し格闘してみようと思います。
回答ありがとうございます!

補足日時:2011/11/27 13:43
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!