CJKTokenizer2 で最後の1文字の切り出し

37 views
Skip to first unread message

Shinya Kasatani

unread,
Aug 18, 2009, 3:53:47 AM8/18/09
to cmecab-java-users
こんにちは、かさたにと申します。

cmecab-java に含まれる CJKTokenizer2 を試させていただいております。
bigram で CJK 文字列を切り出すときに最後の1文字も検索にマッチさせるために
切り出したいと思い、変更履歴を見ると r44 でそのような対応が
なされているようなのですが、r61 では前の挙動に戻されているようです。
これは何か問題があって戻されたのでしょうか?

Kohei TAKETA

unread,
Aug 18, 2009, 8:29:34 AM8/18/09
to cmecab-j...@googlegroups.com
こんばんは、武田と申します。

最後の1文字を独立して切り出さないようにしたのは、
特定の状況下で文書がヒットしない問題が発生するためです。

たとえば、「かきつばた」というテキストに対して、「かき」という検索語で
検索してもヒットしません。

テキストおよび検索語は、それぞれ以下のようにトークナイズされますが、

・検索対象テキスト
テキスト: かきつばた
トークン: かき(0,2) きつ(1,3) つば(2,4) ばた(3,5) た(4,5)

・検索語
テキスト: かき
トークン: かき(0,2) き(1,2)

検索語のトークン列(かき、き)は検索対象テキストのトークン列中に現れないため、
ヒットしないのです。

この問題は、インデックス時には、末尾の1文字を切り出すトークナイザを利用し、
検索時には切り出さないトークナイザを利用することで回避できる…ように思うのですが、
本当にそうなのか考えるのが面倒だったので、元の動作に戻してしまいました。

何かいいアイデアをお持ちであれば、ぜひご教示ください。

2009/08/18 16:53 に Shinya Kasatani<kasa...@gmail.com> さんは書きました:

Shinya Kasatani

unread,
Aug 18, 2009, 9:10:53 AM8/18/09
to cmecab-j...@googlegroups.com
武田さん

早速のお返事ありがとうございます。
なるほど、確かにそのような問題がありますね・・
おっしゃるように検索時とインデックス時にトークナイザを変えれば
なんとかなりそうな気はしますね。
いま Solr に組み込んで使おうとしているのですが、どういう風に
するのがいいのか少し考えてみます。

2009/8/18 Kohei TAKETA <taks...@gmail.com>:
>
> こんばんは、武田と申します。
>
> 最後の1文字を独立して切り出さないようにしたのは、
> 特定の状況下で文書がヒットしない問題が発生するためです。
>
> たとえば、「かきつばた」というテキストに対して、「かき」という検索語で
> 検索してもヒットしません。
>
> テキストおよび検索語は、それぞれ以下のようにトークナイズされますが、
>
> ・検索対象テキスト
> テキスト: かきつばた
> トークン: かき(0,2) きつ(1,3) つば(2,4) ばた(3,5) た(4,5)
>
> ・検索語
> テキスト: かき
> トークン: かき(0,2) き(1,2)
>
> 検索語のトークン列(かき、き)は検索対象テキストのトークン列中に現れないため、
> ヒットしないのです。
>
> この問題は、インデックス時には、末尾の1文字を切り出すトークナイザを利用し、
> 検索時には切り出さないトークナイザを利用することで回避できる...ように思うのですが、

takscape

unread,
Aug 18, 2009, 9:46:39 PM8/18/09
to cmecab-java-users
武田です。

トークナイザを変えるだけでは駄目のような気もしてきました。

例えば、「かきつばたfoo」というテキストを、「ばたfoo」という検索語で
検索できなくなります。

・検索対象テキスト
テキスト: かきつばたfoo
トークン: かき きつ つば ばた た foo

・検索語
テキスト: ばたfoo
トークン: ばた foo

ということで、ヒットしません。なかなか難しいですね。

Shinya Kasatani

unread,
Aug 19, 2009, 6:15:43 AM8/19/09
to cmecab-j...@googlegroups.com
武田さん

こんにちは、かさたにです。

検索時はテキストの末尾の CJK 文字だけは切り出さないように
してはだめでしょうか?
思いつきなのでまだ何か抜けているかもしれませんが・・

検索語 -> トークン
か -> か
かき -> かき
かきつ -> かき きつ
かきfoo -> かき き foo
かきfooつ -> かき き foo つ
かきfooつば -> かき き foo つば
かきfooつばた -> かき き foo つば ばた

2009/8/19 takscape <taks...@gmail.com>:

Kohei TAKETA

unread,
Aug 20, 2009, 7:13:36 AM8/20/09
to cmecab-j...@googlegroups.com
かさたにさん

こんばんは、武田です。

なるほど!よさそうな気がしますね!
ちょっと土日にでも試験的に実装してみましょうか。

2009/08/19 19:15 に Shinya Kasatani<kasa...@gmail.com> さんは書きました:
Reply all
Reply to author
Forward
0 new messages