Elasticsearch Version: 5.6.14
Kuromojiを使って形態素解析を行っているのですが、ユーザー辞書に登録済みの単語で構成された複合語を定義した際に想定通りに文章の単語分割が行われませんでした。
実施したいこと
- 文章に
ホタテ
が含まれる場合は、ホタテを1つの単語として取り扱いたい - 文章に
ホタテのり
が含まれる場合は、ホタテのりを1つの単語として取り扱いたい
設定例
curl -X PUT "localhost:9200/sample_index?pretty" -H 'Content-Type: application/json' -d'
{
"settings": {
"index": {
"analysis": {
"tokenizer": {
"kuromoji_user_dict": {
"type": "kuromoji_tokenizer",
"mode": "search",
"user_dictionary": "sample.dict"
}
},
"analyzer": {
"my_kuromoji_analyzer": {
"type": "custom",
"tokenizer": "kuromoji_user_dict"
}
}
}
}
}
}
'
sample.dict
ホタテ,ホタテ,ホタテ,名詞
のり,のり,ノリ,名詞
ホタテのり,ホタテのり,ホタテノリ,名詞
唐辛子のり,唐辛子のり,トウガラシノリ,名詞
複合語の構成要素が全てユーザ辞書に登録されている場合のAnalyze結果
curl -XGET 'localhost:9200/sample_index/_analyze?pretty&analyzer=my_kuromoji_analyzer' -d 'ホタテのり'
実行結果
{
"tokens" : [
{
"token" : "ホタテ",
"start_offset" : 0,
"end_offset" : 3,
"type" : "word",
"position" : 0
},
{
"token" : "のり",
"start_offset" : 3,
"end_offset" : 5,
"type" : "word",
"position" : 1
}
]
}
複合語の構成要素の一部がユーザ辞書に登録されている場合のAnalyze結果
curl -XGET 'localhost:9200/sample_index/_analyze?pretty&analyzer=my_kuromoji_analyzer' -d '唐辛子のり'
実行結果
{
"tokens" : [
{
"token" : "唐辛子のり",
"start_offset" : 0,
"end_offset" : 5,
"type" : "word",
"position" : 0
}
]
}
書き方の誤りや、他に良い方法がありましたら、ご教示いただきたいです。
よろしくお願いいたします。