

PHPからMeCabへ文字列を渡す際、短いテキストだと問題ないのですが、長い文章だとフリーズする場合があります。とりあえずaddslashesをかけてみたのですが、エスケープ等、何か事前に済ませておいた方が良い処理はあるでしょうか？

MeCabを使用するに辺り、言語間の違いはあるでしょうか？ PHPではなく他言語を使用すれば(例えばPython？)少しは早くなる？
それともあまり変わらない？

当初は、下記のような流れを想定していたのですが、思っていたよりも時間がかかることに気が付きました  
・ユーザアクセス → PHP → MeCab経由で処理を返す

形態素解析はそもそもどういう使い方をするものなのでしょうか？  
・cron処理して、結果をDBに格納して、そこへアクセスするもの？  
・それともやり方によっては、ユーザアクセスの都度、MeCab処理することは可能なのでしょうか？


CC BY-SA 3.0
2015-03-15T11:17:09.003
7938
2015-04-15T01:59:11.947
7886
question
php
PHPからMeCabへ文字列を渡す際、事前にどのようなエスケープ処理をすればよいでしょうか？


>
> PHPからMeCabへ文字列を渡す際、短いテキストだと問題ないのですが、長い文章だとフリーズする場合があります。とりあえずaddslashesをかけてみたのですが、エスケープ等、何か事前に済ませておいた方が良い処理はあるでしょうか？

「長い文章」のサイズにもよるのですが、正常に動作しないのであれば適当な長さで文章を分割する必要があるかもしれません。エスケープは不要ですが、文字コードは辞書と一致させる必要があります。

この例に限らず、「とりあえずaddslashes」という考え方はまず間違いなく失敗しかしませんのでやめましょう。

> MeCabを使用するに辺り、言語間の違いはあるでしょうか？ PHPではなく他言語を使用すれば(例えばPython？)少しは早くなる？
> それともあまり変わらない？

速度は変わらないでしょうが、公式の言語バインディングはperl、ruby、python、javaしか用意されていないことは注意する必要があるかもしれません。

> 形態素解析はそもそもどういう使い方をするものなのでしょうか？

リアルタイム処理に使われている例は多々ありますが、極端に長大な文章を処理する必要がある場合にはリアルタイム処理はできないかもしれません。サーバ環境と要求されるレスポンス次第です。「形態素解析」に特別な使い方があるわけではなく、一般論です。


CC BY-SA 3.0
2015-03-16T01:10:10.830
7948
2015-03-16T01:10:10.830
5793
7938
answer