こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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";
}

投稿日時 - 2006-08-09 16:10:34

QNo.2329525

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

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

投稿日時 - 2010-05-23 12:04:30

ANo.3

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

参考URL:http://gh33-it.blogspot.com/

投稿日時 - 2010-05-23 12:02:29

ANo.2

>my $node = $mecab->parseToNode($str);
>で処理が止まっている事は確認出来てきます。

その状態で Internal Server Error ということは、httpd のログに何か出ている筈ですが、何と出ていますか。

投稿日時 - 2006-08-11 16:09:41

ANo.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 ではないか)を確かめるのが安全です。

投稿日時 - 2006-08-11 07:54:31

補足

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

投稿日時 - 2006-08-11 10:12:18

あなたにオススメの質問