论坛: POPFile 全般 (Thread #11344)

分かち書きに MeCab を使うパッチを更新しました (2006-06-04 15:16 by amatubu #22732)

分かち書きに MeCab を使うパッチを更新しました。
MeCab 0.91、POPFile 0.22.4 で動作するようになりました。
http://sourceforge.jp/tracker/index.php?func=detail&aid=6194&group_id=759&atid=2945

浅倉さんのkakasiなしで使うためのパッチ(#3719)
http://sourceforge.jp/tracker/index.php?func=detail&aid=3719&group_id=759&atid=2945
も若干修正(漢字は 2 文字単位で分割)を加えて取り込んでみました。

MeCab がインストールされていれば MeCab を使い、
Text::Kakasi がインストールされていれば Text::Kakasi を使い、
いずれもインストールされていない場合は、文字種ごとに分割
(ただし漢字は 2 文字ごとにさらに分割)します。

速度については、分かち書き処理のみで比較すると、MeCab の方が
Text::Kakasi よりも 2 倍くらい速く、文字種による分割は 5 倍くらい
速いという結果が出ましたが、POPFile のメール処理にかかる時間で
比較すると、MeCab は Text::Kakasi の 1.1 倍くらい速い、という
くらいに薄まってしまいました。

精度についてはまだあまり検証していませんが、日本語以外の文字で
書かれたメールを処理した場合、MeCab で処理するとどう見ても
日本語でないノイズ部分がきれいに除去される(未定義語は文字種
ごとに分割されるため?)ようで、若干「unclassified」になる率が
下がったように感じられます。

いずれにしましても、上記の速度の件も含めて、もう少しテストして
みたいと思っています。
(動作テストも含め、テストにご協力いただける方がいらっしゃい
ましたらお願いします)

また、分かち書きに MeCab を使う場合、そのままでは HTML タグ
などが分かち書きされてしまって精度に影響が出るという問題が
あります。
この問題の回避方法や、Windows における MeCab の導入方法に
ついては後ほど日記に書く予定ですので、ご興味のある方はどうぞ。

RE: 分かち書きに MeCab を使うパッチを更新しました (2006-07-14 11:45 by saiki #23723)

例外的な使い方になってしまい申し訳ないのですが、PopfileMgr
で MeCab が利用できないので、利用できるようにするパッチを作
成しました。

http://sourceforge.jp/tracker/index.php?func=detail&aid=8662&group_id=759&atid=2946

PopfileMgr に限らず、MeCab の rcfile や dicdir がデフォルト
とは別の場所にインストールされているような環境で動作するよう
になります。
回复到 #22732

RE: 分かち書きに MeCab を使うパッチを更新しました (2006-07-14 12:36 by amatubu #23726)

私の作成したパッチでは、mecabrc ファイルの場所が
デフォルトの場所ではない場合には、MECABRC 環境変数
を設定しておくことを前提としていました。

どちらがいいのか悩ましいところではありますが、
いろいろな環境への対応や、インストール時の設定などの
ことを考えると、環境変数が一番使いやすいかなと
思いまして。
回复到 #22732

RE: 分かち書きに MeCab を使うパッチを更新しました (2006-07-14 14:24 by saiki #23731)

まだ MeCab のソースは追っていないのですが、man
を見る限りでは MeCab は環境変数を解釈しない仕様のよ
うに思えるのですが…(解釈が間違っていたらすみませ
ん)。
# MeCab に環境変数を解釈させるというのは、こちらで
# MeCab 用のパッチを作成するという意味です。

確かに Bayes.pm にオプションを渡す方法は美しくないの
ですが、POPFile が環境変数を解釈するとドキュメント化
が難しいかもしれないと思い、先の仕様としました。将来
MeCab が環境変数を解釈できるようになるという希望のも
と、POPFile 側で先取りして MECABRC, MECABDICDIR を解
釈し、一時的にオプションを設定する方針の方が良いでし
ょうか?
回复到 #23726

RE: 分かち書きに MeCab を使うパッチを更新しました (2006-07-14 19:33 by amatubu #23741)

MeCab のドキュメントはまだ整備が追いついていないところが
多いようで、ドキュメントに書かれていない機能が存在する
ようです。
環境変数 MECAB もそのひとつでしょうかね。
私はこの機能をナマズのブログで知りました。
http://namazu.asablo.jp/blog/2006/04/04/315244

mecab 0.92 のソースを読むと、utils.cpp で環境変数
MECABRC の値を読み込んでいることがわかります。
(0.91 では、tagger.cpp ですね)

mecabrc ファイルで辞書ファイルの位置を指定することが
できますから、mecabrc ファイルの位置を示す MECABRC
環境変数さえ設定しておけば好きな場所に辞書ファイルを
置くことができます。

現在のところ、MeCab の機能や binding の使い方自体も
流動的なようなので、MeCab に対応するのは時期尚早なの
かも知れないですね。
回复到 #23731

RE: 分かち書きに MeCab を使うパッチを更新しました (2006-07-16 15:41 by saiki #23768)

説明いただきありがとうございます。
起動時、~/Library/Application Support/PopfileMgr 下に mecabrc を生成する方向で検討してみようと思います。
回复到 #23741