• 締切済み

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 にあるものをコピペして設置しています。 いろいろと格闘したのですが、お手上げ状態です。 原因がわかる方いらっしゃれば教えていただきたいです。 よろしくお願いしいたします。

  • Perl
  • 回答数1
  • ありがとう数0

みんなの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.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に依存します。

hi_mawa
質問者

補足

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 を入れていたなごりでしょうか・・ もう少し格闘してみようと思います。 回答ありがとうございます!

関連するQ&A

  • MeCab(和布蕪)をPerlで使うには

    MeCabをPerlから使おうと思い、MeCab本体であるmecab-0.93.exeと mecab-perl-0.93.tar.gzをダウンロードしました。 mecab-perl-0.93ディレクトリにあるtest.plをWindowsのコマンドプロンプトにて実行してみたのですが、エラーがでてしまいます。プログラムとエラーは以下の通りです。どういったエラーなのか良く分かりません。アドバイスお願いします。 <プログラム> #!c:/perl/bin/perl use lib $ENV{PWD} . "/blib/lib"; use lib $ENV{PWD} . "/blib/arch"; use MeCab; print $MeCab::VERSION, "\n"; my $sentence = "太郎はこの本を二郎を見た女性に渡した。"; my $c = new MeCab::Tagger (join " ", @ARGV); print $c->parse($sentence); for (my $m = $c->parseToNode ($sentence); $m; $m = $m->{next}) { printf ("%s\t%s\n", $m->{surface}, $m->{feature}); } <エラー内容> % test.pl Can't locate loadable object for module MeCab in @INC (@INC contains: /blib/arch /blib/lib C:/Perl/lib C:/Perl/site/lib .) at MeCab.pm line 8 Compilation failed in require at C:\Program Files\MeCab\mecab-perl-0.93\test.pl line5 BEGIN failes--compilation aborted at C:\Program Files\MeCab\mecab-perl-0.93\test.pl line5 以上です。

  • Mod_perl2.0が導入出来ない (ARP.dllに欠陥があるのでは)

    1586の者ですが、そこで具体的な回答を戴ける見込みが難しくなり、でもどうしても Mod_perl2.0を導入しないと自分の仕事が凍結してしまいますので、くどいかも しれませんが改めてサポートお願いさせていただきます。 その後、Mod_perl2.0をインストールし直してPerlでextra.plを以下URLの通りの内容で http://perl.apache.org/docs/2.0/os/win32/config.html 実行した所、今度こそうまく行って欲しいと思う願いも空しく、今度は以下別のエラー につまづきました。アパッチで起動しても閉じてしまいます。 C:\Apache2\conf>perl extra.pl Can't load 'C:/usr/local/site/lib/auto/APR/APR.dll' for module APR: load_file:こ のアプリケーションの実行に必要なライブラリ ファイルの 1 つが見つかりません。 at C:/usr/local/lib/DynaLoader.pm line 230. at C:/usr/local/site/lib/APR/Const.pm line 18 Compilation failed in require at C:/usr/local/site/lib/APR/Const.pm line 18. BEGIN failed--compilation aborted at C:/usr/local/site/lib/APR/Const.pm line 18. Compilation failed in require at extra.pl line 10. BEGIN failed--compilation aborted at extra.pl line 10. C:/usr/local/site/lib/auto/APR/APR.dllは有るにも関わらずロード出来ないんです。 正直、APR.dllにどこか欠陥があるのではしか感じられない状態です。 どうして、マニュアル通りに行ってもMod_perl2.0のセッティングが滞ってしまうのでしょうか? この通りです、Mod_perl2.0は自分の仕事に必要不可欠です。これがなければ食って行けません! どうかご回答宜しくお願いします。

    • ベストアンサー
    • Perl
  • Net::SSH::Perlについて

    WindowsXPにActivePerlを導入し、Net::SSH::Perlを使用してLinuxサーバにssh接続をしたいのですが、どうもうまく動いてくれません。 ■ソース #!perl use Net::SSH::Perl; use strict; my $host = "192.168.1.250"; my $user = "test"; my $pass = "testtest"; my $cmd = "id"; my $ssh = Net::SSH::Perl->new($host); $ssh->login($user, $pass); my($stdout, $stderr, $exit) = $ssh->cmd($cmd); ■Windowsのコマンドプロンプトから実行すると Can't locate Math/Pari.pm in @INC (@INC contains: D:/add_program_files/perl/site/lib D:/add_program_files/perl/lib .) at D:/add_program_files/perl/lib/Net/SSH/Perl/Util/SSH2MP.pm line 6, <GEN0> line 1. BEGIN failed--compilation aborted at D:/add_program_files/perl/lib/Net/SSH/Perl/Util/SSH2MP.pm line 6, <GEN0> line 1. Compilation failed in require at D:/add_program_files/perl/lib/Net/SSH/Perl/Util.pm line 56, <GEN0> line 1. BEGIN failed--compilation aborted at D:/add_program_files/perl/lib/Net/SSH/Perl/Kex/DH1.pm line 10, <GEN0> line 1. Compilation failed in require at D:/add_program_files/perl/lib/Net/SSH/Perl/Kex.pm line 6, <GEN0> line 1. BEGIN failed--compilation aborted at D:/add_program_files/perl/lib/Net/SSH/Perl/Kex.pm line 6, <GEN0> line 1. Compilation failed in require at D:/add_program_files/perl/lib/Net/SSH/Perl/SSH2.pm line 6, <GEN0> line 1. BEGIN failed--compilation aborted at D:/add_program_files/perl/lib/Net/SSH/Perl/SSH2.pm line 6, <GEN0> line 1. Compilation failed in require at D:/add_program_files/perl/lib/Net/SSH/Perl.pm line 52, <GEN0> line 1. 上記を解決しようにも検索にHitせず、対処に困っています。 どなたか同じ境遇の人がいらっしゃったら教えてください。

  • DBDエラー

    いつも、参考にしております。 Oracleの接続で困ってます。 環境: Windows 2003 Sever DB     :Oracle 10g トライアル版 ActivePerl : V5.8.9 Webサーバ :IISv6.0 CGIのDBIを使って、接続しようとすると 構文チェックで、下記のエラーが発生しております。 Perl lib version (v5.8.3) doesn't match executable version (v5.8.9) at C:\oracle\product\10.2.0\db_1\perl\5.8.3\lib/MSWi n32-x86-multi-thread/Config.pm line 32. Compilation failed in require at C:\oracle\product\10.2.0\db_1\perl\5.8.3\lib/MSWin32-x86-multi-thread/DynaLoader.pm lin e 25. BEGIN failed--compilation aborted at C:\oracle\product\10.2.0\db_1\perl\5.8.3\lib/MSWin32-x86-multi-thread/DynaLoader.pm line 25. Compilation failed in require at C:\oracle\product\10.2.0\db_1\perl\site\5.8.3\lib/MSWin32-x86-multi-thread/DBI.pm line 156. BEGIN failed--compilation aborted at C:\oracle\product\10.2.0\db_1\perl\site\5.8.3\lib/MSWin32-x86-multi-thread/DBI.pm l ine 156. Compilation failed in require at CmFunc.pm line 13. BEGIN failed--compilation aborted at CmFunc.pm line 13. 以上です。ご教授お願い致します。

  • perl  TermExtract 動かない

    perl で TermExtract というものを使って専門用語抽出をしたいと思っています。 参考ページ http://gensen.dl.itc.u-tokyo.ac.jp/termextract.h … 形態素解析ソフトは「和布蕪」を使っています。 参考ページの 「和布蕪」の場合の、TermExtract::MeCab サンプルスクリプトを参考にして 動かしてみたんですがうまく動作しません。 <ソース> #! /usr/bin/perl use TermExtract::MeCab; my $data = new TermExtract::MeCab; my $InputFile = "./CGI/mecab_out.txt"; $SIG{INT} = $SIG{QUIT} = $SIG{TERM} = 'sigexit'; my $output_mode = 1; my @noun_list = $data->get_imp_word($InputFile); print "Content-type: text/html; charset=EUC-JP\n\n"; print <<"EOM"; <!DOCTYPE html> <HTML> <HEAD> <TITLE>mecab</TITLE> </HEAD> <BODY> EOM foreach (@noun_list) { # 結果表示 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; } sub sigexit { $data->unlock_db; } print <<"EOM"; </BODY> </HTML> EOM <---------------> mecab_out.txtには、和布蕪」を使って出食された形態素解析済みのデータ が入っています。 ブラウザでみると、真っ白のページが表示されます。 なにか使い方を間違えているのでしょうか? よろしくお願いいたします。

  • ワーニング? encoding.pm

    perlで以下のようなエラーが出るのですが、これを出ないようにするにはどうしたらよいのでしょうか? Constant subroutine DEBUG redefined at c:/usr/lib/encoding.pm line 8. Subroutine _exception redefined at c:/usr/lib/encoding.pm line 23. Subroutine in_locale redefined at c:/usr/lib/encoding.pm line 34. Subroutine _get_locale_encoding redefined at c:/usr/lib/encoding.pm line 36. Subroutine import redefined at c:/usr/lib/encoding.pm line 89. Subroutine unimport redefined at c:/usr/lib/encoding.pm line 156.

    • ベストアンサー
    • Perl
  • Perlからchasenの使い方

    windowsで茶筅を使って形態素解析を行いたいのですがエラーが出てうまくいきません。 ■プログラム(cha.pl) #!/usr/bin/perl -w use Text::ChaSen; $value = '私はとても学校が嫌い。'; $res = Text::ChaSen::getopt_argv('cha.pl','-j'); $str = Text::ChaSen::sparse_tostr($value); print "$str"; exit; ■エラー Can't locate loadable object for module Text::ChaSen in @INC (@INC contains: C:/Perl/lib C:/Perl/site/lib .) at cha.pl line 3 Compilation failed in require at cha.pl line 3. BEGIN failed--compilation aborted at cha.pl line 3. もし良かったらアドバイスお願いします。 Makefile.plのWriteMakefileには 'LD' => 'c++' を追加しました。

    • ベストアンサー
    • Perl
  • perlからpostgres連携時にエラー発生

    今まで問題なく動いていたperlモジュールが、停電でサーバダウンした影響で起動しなくなりました。 LOGには [notice] Accept mutex: sysvsem (Default: sysvsem) Can't load '/usr/lib/perl5/site_perl/5.8.2/i386-linux-thread-multi/auto/Pg/Pg.so' for module Pg: libpq.so.2: cannot open shared objec t file: No such file or directory at /usr/lib/perl5/5.8.2/i386-linux-thread-multi/DynaLoader.pm line 229. at /web/recruit.pl line 7 Compilation failed in require at /web/recruit.pl line 7. と出力されており、use Pg;の行でエラーになっているのですが、原因が分かりません・・・ 環境:  OS:vine linux  sql:postgres

    • ベストアンサー
    • Perl
  • perlを初めて使うのですが、ppmを使ってのインストールができません

    このたび初めてperlを使うのですが、コマンドプロンプトを起動し、ppmと打つと C:\Documents and Settings\自分の名前>ppm Fatal error: couldn't find or create config file targets.cfg: Cannot chdir back to C:/Documents and Settings/自分の名前: No such file or directory at C:/Perl/lib/ FindBin.pm line 182 BEGIN failed--compilation aborted at C:/Perl/lib/FindBin.pm line 188. Compilation failed in require at C:/Perl/site/lib/PPM/Config.pm line 444. BEGIN failed--compilation aborted at C:/Perl/site/lib/PPM/UI.pm line 1049. Compilation failed in require at C:\Perl\bin\ppm3-bin line 16. このような文章がでてきてしまい、インストールすることができませんでした。自分がインストールしようとしているのは install time-hires install io-zlib install win32-api install http-lite install getopt-long なのですが・・・ 自分なりにサイトを見てまわりましたが、確信にたどり着けず困り果てています。 どなたかご教授をお願いします。 PCの環境 OS: Windows XP Home Edition Perl: Active Perl 5.8.3.809 PPM : version 3.1

  • perl niftyについて。use CGI;

    画像アップロードのスクリプトを作ろうと思っているのですが、 use CGI; という記述をすると、ここでエラーに引っかかります。 下はperl checkerでのエラー表示です Can't locate CGI.pm in @INC (@INC contains: /usr/local/lib/perl5/5.00503/sun4-solaris /usr/local/lib/perl5/5.00503 /usr/local/lib/perl5/site_perl/5.005/sun4-solaris /usr/local/lib/perl5/site_perl/5.005 .) at a.cgi line 10. BEGIN failed--compilation aborted at a.cgi line 10. 参考URLはここ http://www.topstudio.co.jp/~kmuto/html/node38.html niftyでは使えないようになってしまっているのでしょうか? また、CGI.pmを使わないファイルアップロードの仕組みを解説しているサイトを知っている方がいたら、教えてくださいませ。

    • ベストアンサー
    • CGI

専門家に質問してみよう