Programming/Elasticsearch
elasticsearch : 일본어 형태소 분석기 kuromoji - analyzer (3)
byebyeblue
2019. 11. 1. 14:23
elasticsearch 6.4.3 version
5. kuromoji_readingform
token filter (공식문서)
kuromoji_readingform
토큰 필터는 가타카나 혹은 로마자 발음대로 결과를 리턴한다.
사전 정의된 kuromoji_readingform
필터를 사용할 때 use_romaji
항목을 true
로 사용한다.
반대로 커스텀 kuromoji_readingform
필터를 사용하거나 가타카나 발음 결과를 리턴하고 싶을 경우
use_romaji
항목을 false
로 사용하면 된다.
PUT kuromoji_sample
{
"settings": {
"index":{
"analysis":{
"analyzer" : {
"romaji_analyzer" : {
"tokenizer" : "kuromoji_tokenizer",
"filter" : ["romaji_readingform"]
},
"katakana_analyzer" : {
"tokenizer" : "kuromoji_tokenizer",
"filter" : ["katakana_readingform"]
}
},
"filter" : {
"romaji_readingform" : {
"type" : "kuromoji_readingform",
"use_romaji" : true
},
"katakana_readingform" : {
"type" : "kuromoji_readingform",
"use_romaji" : false
}
}
}
}
}
}
공식 예제에서는 romaji_analyzer
와 katakana_analyzer
를 설정하였다.
각각 필터는 romaji_readingform
과 katakana_readingform
을 설정하였다.
GET kuromoji_sample/_analyze
{
"analyzer": "katakana_analyzer",
"text": "寿司"
}
GET kuromoji_sample/_analyze
{
"analyzer": "romaji_analyzer",
"text": "寿司"
}
위와 같이 같은 텍스트를 katakana_analyzer
와 romaji_analyzer
에 각각 쿼리를 날리면
'スシ'와 'sushi'의 결과를 각각 리턴한다.
6. kuromoji_stemmer
token filter (공식문서)
kuromoji_stemmer
토큰 필터는 가타카나 단어에서 마지막에 장음처리되는 부분을 제거한다.
단어 하나가 전체적으로 모두 가타카나로 이루어진 경우에만 작동한다.
기본적으로 minimum_length
세팅을 사용하고, 디폴트 값은 4
이다.
가타카나 단어가 minimum_length
에 설정된 값보다 작을 경우 변환되지 않는다.
PUT kuromoji_sample
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "kuromoji_tokenizer",
"filter": [
"my_katakana_stemmer"
]
}
},
"filter": {
"my_katakana_stemmer": {
"type": "kuromoji_stemmer",
"minimum_length": 4
}
}
}
}
}
}
공식 예제에서는 위와 같이 설정한다.
GET kuromoji_sample/_analyze
{
"analyzer": "my_analyzer",
"text": "コピー"
}
GET kuromoji_sample/_analyze
{
"analyzer": "my_analyzer",
"text": "サーバー"
}
'コピー'는 그대로 'コピー'로 리턴되고, 'サーバー'는 'サーバ'로 리턴된다.