[groonga-dev,01802] Re: mecabトークナイザでのtoo long sentenceの回避方法について

Back to archive index

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




groonga-dev メーリングリストの案内
Back to archive index