[groonga-dev,04399] Re: 日本語、英語、仏語のまざった文章で複数形や過去形をフォローできますでしょうか

Back to archive index

Susumu Yata susum****@gmail*****
2017年 7月 18日 (火) 15:35:02 JST


内山さん

未来検索ブラジルの矢田です.

英語やフランス語の活用による変化を検索で無視する方法としては,
ステミングを使うことが多いかと思います.
PGroonga, Groonga のドキュメントにおいては,以下のページに記述が見つかりました.

- CREATE INDEX USING pgroonga | PGroonga
  - https://pgroonga.github.io/ja/reference/create-index-using-pgroonga.html#custom-token-filters
- 7.9. トークンフィルター — Groonga v7.0.4ドキュメント
  - http://groonga.org/ja/docs/reference/token_filters.html

ただ,実装を見る限りでは,英語用のステミングとなっているようです.

 groonga/plugins/token_filters/stem.c
  54: const char *algorithm = "english";
  55: const char *encoding = "UTF_8";
  56: token_filter->stemmer = sb_stemmer_new(algorithm, encoding);

これを真似して "english" のところを "french" にすれば,
フランス語用のステミングプラグインを用意できそうな気はしますが,
フランス語について無知なので断言できません.

後は,もし同じカラムに日本語,英語,フランス語が格納されているのであれば,
どれを適用するかが問題になると思います.

解決方法としては,以下のような選択肢が思い浮かびました.

- 言語によってカラムを分割する.
  - あらかじめデータを言語別に分けなければならない.
- 英語用とフランス語用のステミングを両方とも適用する.
  - 副作用で検索の精度が下がる恐れがある.

参考になりましたら幸いです.


2017年7月17日 6:58  <toshio_uchiy****@mirro*****>:
> メーリングリストの皆様
>
>
>
>  お世話になります。内山と申します。
>
>  日本語、英語、フランス語の短いセンテンスが
>
> たくさんあります。これに、PGroonga で索引をつけ
>
> PostgreSQL で全文検索しています。 トークナイザーは
>
> TokenMecab です。
>
> 検索を実行するサイトでは、日本語、英語、フランス語
>
> で検索できます。と謳うつもりです。
>
>  この時、英語を例にとると、dependency と dependencies
>
> は別々に検索しないとヒットしないようです。以前より気に
>
> なってました。
>
>  Google では、単数形で検索すれば複数形もヒットするように
>
> 見えました。
>
>  仕組みとしては、単数形と複数形の辞書、過去形や過去分詞と
>
> 現在系の辞書を持てば何とかなりそうな気がしてしまいます。
>
>  今回、日本語と英語に加えて、フランス語の文章も全文検索
>
> の対象に加えたので、男性、中性、女性などの型も気になり、
>
> 少しここを調べようと思いググってみました。しかし、groonga
>
> full text search で検索しても、これだという情報を見つける
>
> ことができませんでした。
>
> 今回の疑問について参考となるサイトなどありましたら、
>
> 教えていただけますでしょうか。
>
>  よろしくお願いします。
>
>
>
>
> _______________________________________________
> groonga-dev mailing list
> groon****@lists*****
> http://lists.osdn.me/mailman/listinfo/groonga-dev
>



-- 
Susumu Yata <susum****@gmail*****>



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