NOEMBLEM/エンブレムが設定されていません。

メールの詳細(メール表示)

件名:

JUTSplitter (Japanese Unicode Text Splitter)

差出人: "kf"さん
送信日時 2004/01/18 19:59
ML.NO [zope-memo:0552]
本文:

深町です。

MeCab を使った Splitter を作っているところなのですが(まだ、完成してない)、
興味のある方はどうぞ。
http://www.atransia.co.jp/download/JUTSplitter/index_html
http://www.atransia.co.jp/download/JUTSplitter/JUTSplitter-0.0.1a.tgz

Purloined http://www.atransia.co.jp/home/Purloined/
にいれたら、COREBlog でもちゃんと認識して動いてくれているようです。
記事がまだほとんどないので、なんですが。
(中神さんの ejSplitter を今日まで入れてたのですが、はずしちゃった裏切り
(笑)

なにせ一晩かけてのできたてのほやほやのところなので、
かなりいいかげんバグバグバグ
(Zope 2.7 がどうこうと騒いでいた人がいるから、ひきづられて
ちゃんと作ってる時間がなくなってしまった〜。もっともちゃんと
つくってもたいしたものになるわけではないが)

Pyhon 2.2.3 と Python 2.3.3 でしか動作確認していいの
Pythn 2.1.3 だと動かないかもしれないです。
速度も MeCab を使っているのに遅いです。理由は明確なんですが
とりあえず、あれこれ入れるだけ入れたあとにすっきりさせようかなと。

あと、これにまつわる話をダラダラと。

Chasen を使った Splitter のように分かち書きの結果からだけでなく、
一応、品詞を見て、単語を拾っています(活用形のある単語原型を登録)。
また、未知語に関しても、アルファベット未知語は、茶筌を単純に使って
いるものよりも、拾ってくれると思います(これは、MeCab未知語処理の
おかげ)。品詞ベタ文字でやっているので、効率が悪いですが、
まあ、仕様ちゃんと決めるまでは、この方が楽(笑)

ソースを見ると、妙な改行をつないだりと何してるんだというところが
あります。まあ、もう少しきれいにやれというところですが、

MeCab の場合は、「。」と改行を、文の末尾としてとらえるので
たとえば、こういうメールをそのまま食わせると、文が途中でぶった切られた
形になってしまうので、正確な形態素解析ができません。
当然、本来は取れるはずの漏れもでてしまいます。

これに加えて、MeCabデフォルトでは 8192 バイトまでの文章しか
解析してくれません。これは仕様です(Chasen も前はそうだった)。
そういうのは周辺の処理がやるべきものといスタンスだからです。

だから、MeCab を使った Splitter を作る場合には、8192 バイト未満
文字にあらかじめ切ってから渡すか、あるいは、バッファサイズ
引数で指定して拡張してあげないとなりません。理想的には、
一文ずつ、句点で終わる文字列を与えてやるのがいいと思います。
(ちゃんとラッパーくりゃいいんですね)

なんていうこともあるので、MeCab を使いたい人には、多少でも
参考になるかなと。まあ、ソースはぐちゃちゃコメントもないの
気分が悪くなるだけかもしれない(^^;; 肝心なことは、今説明して
しまったし(笑)

ついでなのでしつこく(^^;;、 茶筌だったら(MeCab も本来は同じですが)、
半角の英数字を全角の英数字に変換してから渡さなければ正確な
形態素解析はしてくれません。
たとえば、「2004年1月18日」と「2004年1月18日」で解析結果が
微妙に違うとか、細かく見ていくと、けっこういろいろな問題が見えて
きます。

だから、全角半角なんかも、けっこう気をつけて扱ってやると、精度が
変わってきたりします。ipadic は、IBMは辞書に登録されているけれど、
Microsoft (全角)も Microsoft (半角) も登録されていないとかあるの
で、

MeCab の場合、英数字は全部半角にまとめてしまうとよかったりします
(まだやってない)。そうすると未知語落ちて、まとめてひとくりにして
くれるので、「xxxx」「年」「xx」「月」みたいな検索もちゃんとひっかかってくれ
るんです。

「2 | 0 | 0 | 4 | 年」とやられてしまった場合、それぞれ1文字になり
文字インデックスに登録しないとかやると、もう、検索の対象にならなくなって
しまいます。これが、MeCab を使えば、「2004 | 年」となるので、検索対象になり
ます。
これは ejSplitter でも OK なところですが。単純に同じ分類の文字列をまとめてし
まう
というのは、意外な強さもあるわけ。

また、たとえば、そういう意味のある数字ではなくて、単に数字が延々と
並んでいるようなものをどういう基準で削除するか、これはもう、マジックナンバー

主観的に、このあたりできっちゃえとかやってしまうのでありました。



添付:

このメールには下記のメールが返信されています:

【PR】レシピ壁紙ブログ無料ホームページ辞書

更新順メールリスト