반응형

목차

1. Analyzer 기본 설정 (standard)

2. 추천 Nori_tokenizer

3. decompound_mode 옵션 3가지 (Nori_tokenizer)

4. N-GRAM

5. N-GRAM 종류

6. N-GRAM 장단점

 

 

 

 

 

1. Analyzer 기본 설정 (standard)

아무런 설정을 하지 않으면 Standard Analyzer가 사용되며 한글 타입은 단순 토큰화만되고 형태소 분석 등은 이루어지지 않음

 

 

 

 

 

2. 추천 Nori_tokenizer

PUT /library_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "custom_korean_analyzer": {
          "type": "custom",
          "tokenizer": "nori_tokenizer",
          "filter": ["nori_readingform", "lowercase", "nori_part_of_speech"]
        }
      }
    }
  }
}

사용된 필터

nori_tokenizer: 기본 형태소 분석기로 한글 텍스트를 형태소 단위로 분석

nori_readingform: 한자가 포함된 텍스트를 한글 읽기 형태로 변환. 이는 한자를 사용하는 책 제목이 한글로도 검색될 수 있도록 설정

lowercase: 영어 책 제목에 포함된 대문자를 소문자로 변환하여, 대소문자 구분 없이 검색할 수 있도록 설정

nori_part_of_speech: 불필요한 품사를 제거하여 인덱싱을 더 효율적으로 생성

 

 

 

 

사진) nori_part_of_speech 품사코드 정보 (출처 : 꼬꼬마 한국어 형태소 분석기)

 

 

 

 

stoptags 기본값

"stoptags": [
  "E", "IC", "J", "MAG", "MAJ",
  "MM", "SP", "SSC", "SSO", "SC",
  "SE", "XPN", "XSA", "XSN", "XSV",
  "UNA", "NA", "VSV"
]

 

 

 

 

커스텀 설정 예시

"filter": {
  "my_pos_filter": {
    "type": "nori_part_of_speech",
    "stoptags": ["E", "IC", "J", "MAG", "MM", "SP", "SSC", "SSO", "SC", "SE"]
    }
}

 

 

3. decompound_mode 옵션 3가지 (Nori_tokenizer)

: 합성어의 저장 방식을 결정

 

none : 어근을 분리하지 않고 완성된 합성어만 저장

ex) 백두산이 -> 백두산,

 

discard (기본값) : 합성어를 분리하여 각 어근만 저장

ex) 백두산이 -> 백두, ,

 

mixed : 어근과 합성어를 모두 저장

ex) 백두산이 -> 백두산, 백두, ,

 

 

 

 

4. N-GRAM

: N-gram은 텍스트를 고정된 크기의 조각(gram)으로 나누는 방법으로, 이러한 조각들을 사용하여 텍스트 분석을 수행

 

ex)

PUT my_ngram
{
  "settings": {
    "analysis": {
      "filter": {
        "my_ngram_f": {
          "type": "nGram",
          "min_gram": 2,
          "max_gram": 3
        }
      },
      "analyzer": {
        "my_ngram_analyzer": {
          "type": "custom",
          "tokenizer": "keyword",
          "filter": ["my_ngram_f"]
        }
      }
    }
  }
}

GET my_ngram/_analyze
{
  "analyzer": "my_ngram_analyzer",
  "text": "한글테스트"
}

분석 결과: "한글", "한글테", "글테", "글테스", "테스", "테스트", "스티", "

 

 

5. N-GRAM 종류

: N-gram은 문장을 몇 개의 단어 개수에 따라 나눌지에 따라 종류가 결정. 문장 부호 전처리 가정 하에 종류별 예시.

 

문장

-> "오늘 점심 추천 메뉴: 파스타, 피자"

  모델명 구현 결과
1 Unigram(N=1) 오늘, 점심, 추천, 메뉴, 파스타, 피자
2 Bigram(N=2) 오늘 점심, 점심 추천, 추천 메뉴, 메뉴 파스타, 파스타 피자
3 Trigram(N=3) 오늘 점심 추천, 점심 추천 메뉴, 추천 메뉴 파스타, 메뉴 파스타 피자
4 4-gram(N=4) 오늘 점심 추천 메뉴, 점심 추천 메뉴 파스타추천 메뉴 파스타 피자

 

 

 

 

 

6. N-GRAM 장단점

 

장점

단순하고 유연한 구현: N-gram 모델은 구현이 비교적 간단하며, 다양한 크기의 N을 선택함으로써 분석의 정밀도와 커버리지를 조절할 수 있는 유연성을 제공.

 

부분 문자열 검색에 유리: 텍스트를 부분적인 시퀀스로 분해하기 때문에, 완전히 일치하지 않는 검색어에 대해서도 유연한 검색이 가능. 이는 오타가 있거나 부분적으로만 일치하는 검색어에 대해서도 좋은 성능을 보임.

 

문맥 파악 가능성: 특히 큰 N값을 사용할 경우, 인접한 요소 간의 관계를 반영하여 문맥을 일정 부분 파악 가능. 문서 분류 작업에 유용하게 활용될 수 있음

 

단점

인덱스 크기와 리소스 사용의 증가: N의 값이 크면 생성되는 N-gram의 수가 기하급수적으로 증가하므로, 데이터 저장과 처리에 필요한 리소스가 상당히 증가.

 

경계 처리 문제: 텍스트의 시작과 끝에서 N-gram이 제대로 형성되지 않거나, 어절의 경계가 모호해질 수 있음. 특히, 언어에 따라 어절의 경계를 정확히 반영하지 못하는 문제가 발생할 수 있음.

 

반응형

+ Recent posts