シノニムで類語を呼び出した後、再び形態素解析される

お世話になります。

検索エンジンとして、ElasticsSearchの活用を検討しています。

検索ワードに対して、形態素解析を使用したのち、synonymで類語を検索ワードとして呼び出したいと考えています。しかし、現状ですとシノニムで呼び出された類語が再び形態素解析されるため、予期せぬ形に品詞分解されることがあります。
類語に対してのみ形態素解析をなしにすることは可能でしょうか。

具体例としては以下のようになります。
検索ワード「ゴーヤ豆腐」
シノニム「ゴーヤ、にがうり」の際、
ニガウリが形態素解析でばらばらになるため、実際の検索ワードは
「ゴーヤ、に、が、うり、豆腐」
となります。

求めている結果は、「ゴーヤ、にがうり、豆腐」で、シノニムで呼び出された類語は形態素解析されないようにしたいです。

現在利用している環境は以下です。
・AWS Elasticsearch Service, Kibana ともに6.4.2

・search_analyzerの設定
"my_kuromoji_analyzer": {
"filter": [
"cjk_width",
"my_synonym",
"stop_posfilter"
],
"type": "custom",
"tokenizer": "ja-normal-tokenizer"
}

解決策ご教示いただけますと幸いです。

こんにちはー

ユーザ辞書として登録するのが手っ取り早いと思いますが、
AWS Elasticsearch Serviceの場合、ユーザ辞書の扱いができなかったと覚えてます。

形態素解析を行っているAnalyzerの中でsynonymで変換されたんだから、ということで
Tokenizeされないというのは処理の順番的に難しい気がしますね。

こんにちわ

現在、「検討している」という段階ということですので、1つだけ付け加えておきたいです。

「ゴーヤ、にがうり、豆腐」で「にがうり」を「にがうり」という1単語として認識させるのであれば、
@r4-keisuke さんが言うようにユーザ辞書として登録するのが良いかと思います。

しかし、AWSのElasticsearch Serviceでは、現時点ではユーザ辞書の登録ができないのですが、
Elastic社が提供しているElasticsearch Serviceでは、ユーザ辞書や独自のプラグインが使えます。

https://www.elastic.co/guide/en/cloud/current/ec-custom-bundles.html

ユーザ辞書を入れることで、「にがうり」が分割されなくなり、
「ゴーヤ、にがうり、豆腐」で同義語展開したあとも期待する結果が得らるようになるかと思います。

1 Like