- 締切済み
perl MeCab 和布蕪 エラー
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/lib/Text/MeCab.pm の Source にあるものをコピペして設置しています。 いろいろと格闘したのですが、お手上げ状態です。 原因がわかる方いらっしゃれば教えていただきたいです。 よろしくお願いしいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- kmee
- ベストアンサー率55% (1857/3366)
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 を入れていたなごりでしょうか・・ もう少し格闘してみようと思います。 回答ありがとうございます!