6주 동안 실전 프로젝트를 진행하면서 학습한 내용을 기록하고, 팀의 리더로서 프로젝트 매니징 경험을 기록하는 시리즈입니다.
PUT japan-test-nori
{
"settings": {
"index": { //1️⃣샤드 수는 클러스터 설계가 완료된 후 변경할 계획입니다.
"number_of_shards": 1,
"number_of_replicas": 1
},
"analysis": {
"analyzer": { // 2️⃣애널라이저
"kuromoji_analyzer": {
"char_filter": [
"icu_normalizer"
],
"tokenizer": "kuromoji_tokenizer",
"filter": [
"kuromoji_baseform",
"kuromoji_part_of_speech",
"cjk_width",
"ja_stop",
"kuromoji_stemmer",
"lowercase"
]
},
"number_analyzer" : {
"type" : "pattern",
"pattern" :"[.]"
},
"nori_analyzer": {
"type": "custom",
"tokenizer": "korean_nori_tokenizer",
"filter" : ["nori_posfilter"]
},
"country_analyzer": {
"tokenizer": "standard",
"filter": ["synonym"]
}
},
"tokenizer": { // 3️⃣ 토크나이저
"korean_nori_tokenizer": {
"type": "nori_tokenizer",
"decompound_mode": "mixed"
}
},
"filter": { // 4️⃣ 토큰 필터
"nori_posfilter": {
"type": "nori_part_of_speech",
"stoptags": ["J","E","NNB","MAJ","MM","XSV","XSA","VCP","SE","XSN","VCN","SP","NA","UNA","VSV","XPN","IC"]
},
"synonym": {
"type": "synonym",
"synonyms": [ "JP => 일본" ]
}
}
}
},
"mappings": {
"properties": { //5️⃣ 필드에 데이터 타입 매핑
"CPC분류": {
"type": "text"
},
"IPC분류": {
"type": "text"
},
"event": {
"properties": {
"original": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
},
"log": {
"properties": {
"file": {
"properties": {
"path": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
},
"공개번호": {
"type": "keyword"
},
"공고번호": {
"type": "keyword"
},
"등록번호": {
"type": "keyword"
},
"발명의명칭": {
"type": "text",
"analyzer": "nori_analyzer",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"국가": {
"type": "text",
"analyzer": "country_analyzer"
},
"요약": {
"type": "text",
"analyzer": "kuromoji_analyzer"
},
"출원번호": {
"type": "keyword"
},
"출원인": {
"type": "text",
"analyzer": "kuromoji_analyzer",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"출원일자": {
"type": "text",
"analyzer": "number_analyzer",
"fields": {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
}
}
}
}
[발명의명칭], [출원인], [요약] 필드의 데이터에 kuromoji analyzer를 적용하였습니다.
kuromoji_tokenizer
토크나이저는 MeCab-IPADIC 사전의 문자를 사용하여 텍스트를 토큰으로 분할한다 . 사전에는 ‘o’나 ‘f’와 같은 일부 전각 문자가 포함되어 있다. 텍스트에 전각 문자가 포함된 경우 토크나이저는 예기치 않은 토큰을 생성할 수 있다.kuromoji_tokenizer
토크나이저는 텍스트 ’Culture of Japan’을 [ culture, of, japan ]
대신 [ culture, o, f, japan ]
토큰으로 변환한다.[icu_normalizer]
캐릭터 필터를 추가한다.lucene-analyzer-kuromoji.jar
에 포함된 stoptags.txt
파일에 있는 품사 태그 집합과 일치하는 토큰을 제거[출원일자] 필드의 데이터는 ‘2022.09.21’의 형태를 가집니다.
그 중에서 연도(2022)만 추출하기 위해 패턴 “[.]”을 기준으로 텍스트를 분리하는 패턴 애널라이저를 적용했습니다.
[발명의명칭] 필드의 데이터에 한국어와 영어가 있어서 한글 형태소 분석기(Nori)를 적용하였습니다.
[국가] 필드의 데이터는 국가코드 ‘JP’ 입니다.
한국어로 검색할 수 있도록 하기 위해 국가 코드를 한국어로 치환하였습니다.
nori_tokenizer가 제공하는 옵션은 다음과 같습니다.
파라미터명 | 파라미터값 | 설명 |
---|---|---|
decompound_mode | none | 복합 명사로 분리하지 않는다 |
decompound_mode | discard(default) | 복합 명사로 분리하고 원본 데이터는 삭제한다. |
decompound_mode | mixed | 복합 명사로 분리하고 원본 데이터도 유지한다. |
⇒ 분리된 복합 명사와 원본 데이터 모두 유지하기 위해 mixed로 설정하였습니다.
nori_part_of_speech 토큰 필터를 이용해서 제거할 품사(POS - Part Of Speech) 코드입니다.
태그 | 설명 | 태그 | 설명 | 태그 | 설명 |
---|---|---|---|---|---|
E | 어미 | IC | 감탄사 | J | 조사 |
MAJ | 접속 부사 | MM | 한정사 | NA | 알 수 없음 |
NNB | 의존명사 | SE | 줄임표 | SP | 공백 |
UNA | 알 수 없음 | VCN | 부정 지정사 | VCP | 긍정 지정사 |
VSV | 알 수 없음 | XPN | 접두사 | XSA | 형용사 파생 접미사 |
XSN | 명사 파생 접미사 | XSV | 동사 파생 접미사 |
따로 동의어 사전 파일을 만들지 않고, synonyms 항목에서 직접 동의어 목록을 입력하여(“JP ⇒ 일본”
) 국가코드를 한국어로 치환합니다.