Kouhei Sutou
kou****@clear*****
2013年 9月 20日 (金) 21:43:46 JST
須藤です。 In <CANM+Hhe193qczdsfqF9_4MvKY****@mail*****> "[groonga-dev,01798] Re: mecabトークナイザでのtoo long sentenceの回避方法について" on Fri, 20 Sep 2013 20:01:39 +0900, Naoya Murakami <visio****@gmail*****> wrote: > C言語で、区切り文字でざくざく切るのは、大変で計算量が多そうだなぁという > イメージです(あまり、詳しくないのでたんなるイメージです。) あ、計算量的にはそうでもないですよ。大変というか面倒です が。。。 https://github.com/groonga/groonga/blob/master/lib/token.c#L173 のブロックのようにgrn_plugin_charlen()(grn_plugin_()のプラグ イン用API)で文字のバイト数を数えて、バイト数ずつ進めながら1 文字ずつ区切り文字かを確認します。区切り文字なら、その時点のバ イト位置から文字列の開始位置を引けば長さがわかるので、文字列 の開始位置と区切り文字までの文字列長をMeCabに渡してやればよ いです。 サブ文字列のためにメモリを割り当てる必要もないですし、1回文 字列全体をなめるだけなので計算量もそれほどではありません。 > 実際にMecabでトークナイズさせるのは、 > NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark > をベースにカタカナ、かな小文字化の正規化を抑制させたものを使おうとしてます。 > https://github.com/naoa/groonga-normalizer-customized おぉ!独自ノーマライザー! 11/29のgroonga勉強会でなにか話してみませんか!? http://atnd.org/events/43461 groonga/mroongaを使い込んでいる系の話もあるといいなぁと思っ ていたのです! -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270) groongaサポート: http://groonga.org/ja/support/ パッチ採用はじめました: http://www.clear-code.com/recruitment/ コミットへのコメントサービスはじめました: http://www.clear-code.com/services/commit-comment.html