今日は本当は別の話を書こうとして、その中でTelegramで日本語検索がうまく動作しないことを例として挙げようとしていました。
で、そのうまくいかないしくみについて、どなたか詳しい方の解説を引用しようとしたんですが、ネット上を探しても全然見つからない。
これ誰か書いておいた方がいいんじゃないかなと思ったので、たたき台としてでもここに書き残しておくことにします。
自分は専門家ではないので、「それまちがってるよ!」ということがあればコメント欄でご指摘いただければ幸いです。
Telegramで日本語検索がうまくいかない理由
世にある全文検索システムは、“pen"で検索したときに"penguin"や"open"までヒットしてしまわないように、スペースで区切られた単語単位で文字列を探すようなしくみになっていることがあります。
でも日本語の文章は単語と単語の間にスペースを基本入れないので、日本語に対応した全文検索システムでは、スペースに頼らず「形態素解析」というむずかしい処理をおこなって単語をばらします。
なので、単語単位で探すタイプの全文検索システムが日本語の形態素解析にまったく対応していない場合、
今日は天気がいい。
という文章があったら、「今日は天気がいい。」で1つの単語だとみなしてしまいます。すると「今日」や「天気」で検索してもヒットせず、「今日は天気がいい。」と検索したときだけヒットするという挙動になってしまいます。
Telegramで日本語を検索したときの挙動はほぼこれ。
かろうじて「、」や「。」なんかは区切り文字だという認識はあるようで、そこが「ほぼ」とした理由です。Telegramだと「。」なしの「今日は天気がいい」でもヒットします。
「、」や「。」は韓国語や中国語でも使うことがあるからその影響かな?
(Telegramの純正アプリは、言語設定の選択肢に日本語や中国語はまだないけれど、韓国語はあります。)
コメント