[해외] 특허 인덱스 설정과 매핑-③

Ariul·2022년 9월 26일
0
post-thumbnail

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
          }
        }
      }
    }
  }
}

1. 샤드 설정은 클러스터 설계가 완료된 후 변경할 예정.

2. Analyzer

2.1. kuromoji_analyzer

[발명의명칭], [출원인], [요약] 필드의 데이터에 kuromoji analyzer를 적용하였습니다.

  • 캐릭터 필터
    • icu_normalizer
      • kuromoji_tokenizer토크나이저는 MeCab-IPADIC 사전의 문자를 사용하여 텍스트를 토큰으로 분할한다 . 사전에는 ‘o’나 ‘f’와 같은 일부 전각 문자가 포함되어 있다. 텍스트에 전각 문자가 포함된 경우 토크나이저는 예기치 않은 토큰을 생성할 수 있다.
      • 예를 들어 kuromoji_tokenizer토크나이저는 텍스트 ’Culture of Japan’을 [ culture, of, japan ] 대신 [ culture, o, f, japan ] 토큰으로 변환한다.
      • 이를 방지하기 위해 전각 문자를 일반 문자로 변환하는 [icu_normalizer] 캐릭터 필터를 추가한다.
  • 토크나이저
    • kuromoji_tokenizer
  • 토큰 필터
    • kuromoji_baseform: 용어를 BaseFormAttribute로 바꾸며, 동사와 형용사의 표제어 역할을 한다.
    • kuromoji_part_of_speech: lucene-analyzer-kuromoji.jar에 포함된 stoptags.txt 파일에 있는 품사 태그 집합과 일치하는 토큰을 제거
    • cjk_width
    • jastop: 미리 정의된 _japanese 불용어 목록을 지원한다.
    • kuromoji_stemmer: 긴 소리 문자로 끝나는 일반적인 가타카나 철자 변형을 정규화한다. 전각 가타카나 문자만 지원된다.
    • lowercase: 소문자화

2.2. number_analyzer

[출원일자] 필드의 데이터는 ‘2022.09.21’의 형태를 가집니다.

그 중에서 연도(2022)만 추출하기 위해 패턴 “[.]”을 기준으로 텍스트를 분리하는 패턴 애널라이저를 적용했습니다.

2.3. nori_analyzer

[발명의명칭] 필드의 데이터에 한국어와 영어가 있어서 한글 형태소 분석기(Nori)를 적용하였습니다.

2.4. country_analyzer

[국가] 필드의 데이터는 국가코드 ‘JP’ 입니다.

한국어로 검색할 수 있도록 하기 위해 국가 코드를 한국어로 치환하였습니다.

3. Tokenizer

3.1. Nori Tokenizer

nori_tokenizer가 제공하는 옵션은 다음과 같습니다.

  • user_dictionary : 사용자 정의 사전 ⇒ 특허 검색 서비스의 경우, 사용자 정의 사전은 설정하기 어렵다고 판단하여 배제하였습니다.
  • decompound_mode : 복합 명사를 토크나이저가 처리하는 방식을 결정
파라미터명파라미터값설명
decompound_modenone복합 명사로 분리하지 않는다
decompound_modediscard(default)복합 명사로 분리하고 원본 데이터는 삭제한다.
decompound_modemixed복합 명사로 분리하고 원본 데이터도 유지한다.

⇒ 분리된 복합 명사와 원본 데이터 모두 유지하기 위해 mixed로 설정하였습니다.

4. Token Filter

4.1. nori_part_of_speech

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동사 파생 접미사

4.2. synonym

따로 동의어 사전 파일을 만들지 않고, synonyms 항목에서 직접 동의어 목록을 입력하여(“JP ⇒ 일본”) 국가코드를 한국어로 치환합니다.

5. 필드에 데이터 타입 매핑

  • [출원번호] : keyword
  • [출원일자] : text, keyword
  • [발명의명칭] : text, keyword
  • [출원인] text, keyword
  • [IPC분류] text
  • [CPC분류] text
  • [공고번호] keyword
  • [공개번호] keyword
  • [등록번호] keyword
  • [국가] text
  • [요약] text
profile
정성과 진심을 담아 흔적을 기록하자💡

0개의 댓글