• 締切済み

WindowsでMeCab

以前、ここで質問をした時に教えて貰った、MeCabをWindowsで動かそうと一時がんばっていましたがどうも上手くいきませんでした。 しかし、PCを変えて同じように「ナマズのブログ」さんのPPM http://namazu.asablo.jp/blog/cat/mecab/ でインストールして設定をしたら、なんと動いたんです。 しかし、これがコマンドライン上でだけなんです。 CGIに組み込んでApache上のページで動かそうとするとエラーが出ます。お決まりのInternal Server Errorです。 「Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, tsujimura@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log.」 コマンドラインで出来てサーバーソフト上で出来ない理由が分かりません。悔しくて頭がおかしくないそうです。すいません、疲れてます。 以下が動作させたスクリプトです。とあるHPに載っていたものを使用したので文法に間違いはないと思います。 use strict; use MeCab; my $str = "この文を形態素解析して下さい。"; my $mecab = MeCab::Tagger->new(); my $node = $mecab->parseToNode($str); for( ; $node; $node = $node->{next} ) { next unless defined $node->{surface}; my $midasi = $node->{surface}; my( $hinsi, $yomi ) = (split( /,/, $node->{feature} ))[0,7]; print $midasi, "\t", $yomi, "\t", $hinsi, "\n"; }

みんなの回答

回答No.4

すいません、先間違いました。これです。 http://gh33-it.blogspot.com/2010/05/ruby.html

すると、全ての回答が全文表示されます。
回答No.3

全角文字を含む文字列を切る すいませんか、日本語苦手です。資料があります。http://gh33-it.blogspot.com/

参考URL:
http://gh33-it.blogspot.com/
すると、全ての回答が全文表示されます。
  • vsba23895
  • ベストアンサー率58% (18/31)
回答No.2

>my $node = $mecab->parseToNode($str); >で処理が止まっている事は確認出来てきます。 その状態で Internal Server Error ということは、httpd のログに何か出ている筈ですが、何と出ていますか。

すると、全ての回答が全文表示されます。
  • vsba23895
  • ベストアンサー率58% (18/31)
回答No.1

mecab 以前で止まっている可能性があります。 use strict; use MeCab; の2行だけの cgi にしても Internal Server Error になるようなら、恐らく httpd のアカウントでの実行権限がない、Mecab のモジュールの読み出し権限がない、モジュールのディレクトリが見付からない、などが原因です。いずれも httpd のログに書かれると思いますが。 又、www サーバに出力するには、まず MIME ヘッダ Content-type: text/plain とか Content-type: text/html とか が必要ですが、それが欠けているようです。この場合、ブラウザからは真っ白ページと見え、httpd のログには inapropriate header from scirptとか書かれるかと思います。 なお、my $mecab= MeCab::Tagger->new(); の直後で、本当に $mecab オブジェクトが生成できたか ($mecab が undef ではないか)を確かめるのが安全です。

jukimoto
質問者

補足

すいません、説明が足らず。 mecabは動いてます。 MIMEヘッダは付けてると真っ白になります。 オブジェクトは出来てきます。 その次の行の my $node = $mecab->parseToNode($str); で処理が止まっている事は確認出来てきます。

すると、全ての回答が全文表示されます。

関連するQ&A