본문 바로가기
Study/NLP

형태소 분석기 (Kiwi와 Soynlp)

by GodKim 2020. 5. 7.

Kiwi 형태소 분석기


정의

Kiwipiepy는 한국어 형태소 분석기인 Kiwi(Korean Intelligent Word Identifier)의 Python 모듈입니다. C++로 작성되었고 다른 패키지에 의존성이 없으므로 C++ 컴파일이 가능한 환경이라면 어디에서나 Kiwipiepy를 사용 가능합니다.

출처: <https://bab2min.github.io/kiwipiepy/v0.8.0/kr/>

설치법

python pip install kiwipiepy

 

특징

  • 멀티스레딩 지원
    • 단순 analyze 단일 스레드를 지원하기에 코드를 직접 짜야한다.
  • 코퍼스로부터 미등록 단어 추출 가능
    • extract_word(reader, min_cnt= , max_word_len= , min_score= )
      • reader -> 호출 가능한(callable) 객체여야 한다?
      • min_cnt -> 추출할 단어가 입력 텍스트 내에서 최소 이상 등장할지
      • max_word_len -> 추출할 단어의 최대 길이
      • min_score -> 추출할 단어의 최소 점수
  • 사용자 사전 추가 기능
    • add_user_word(word, tag="NNP", score=0)
    • 사용자 정의 사전은 UTF-8 인코딩된 텍스트 파일이어야한다
      • 형식 -> 단어1 [탭문자] 품사태그 [탭문자] 단어점수
        • 단어점수는 생략시 0점이다
  • 형태소 분석
    • 점수제 방식으로 지원
      • 사용자 사전에서 단어별 태깅의 수를 크게주냐 적게 주냐의 차이로 우선순위 선정 가능

Soynlp


정의

한국어 분석을 위한 pure python code 입니다. 학습데이터를 이용하지 않으면서 데이터에 존재하는 단어를 찾거나, 문장을 단어열로 분해, 혹은 품사 판별을 할 수 있는 비지도학습 접근법을 지향합니다.

출처: <https://github.com/lovit/soynlp>

 

설치법

python pip install soynlp

 

특징

  • Noun Extracter
    • _compounds_components
      • 복합명사를 구성하는 단일명사 추출기
    • LRGraph
      • 명사의 양옆 정보를 get_l, get_r 형식으로 가지고 있다
  • Word Extracter
    • OOV(Out Of Vocabulary) 문제를 해결하기 위한 기능
      • https://github.com/lovit/soynlp/blob/master/tutorials/wordextractor_lecture.ipynb
      •  
    • Branching Entropy
      • 단어의 양 옆(한국어에서는 주로 오른쪽)의 정보를 통해 어떤 단어일지에 대한 불확실성을 줄여가는 것
    • Accesor Variety
      • 단어 다음에 나올 수 있는 가지 수를 계산
      • Branching Entropy의 하위 개념
    • Cohesion Score
      • open class(명사, 동사, 형용사, 부사)에서 새로운 단어가 생기기에 그 품사들을 바탕으로 분석을 진행하는 특징을 이용.
      • 위의 두 가지 기법을 이용해서 수식을 통해 계산해서 점수를 부여
  • Tokenizer
    • Ltokenizer
      • 한국어에선 왼쪽만 인식을 잘하면 오른쪽(ex. 조사)는 알아서 딸려온다
      • WordExtracter로 단어에 점수를 부여하여 계산
    • MaxScoreTokenizer
      • 띄어쓰기가 제대로 이루어지지 않은 문장에서 활용
    • RegexTokenizer
      • 규칙기반으로 토크나이징
      • 언어가 바뀌는 부분을 단어로 인식(영어, 숫자 혼합)
    • POS Tagger
      • 단어 사전을 통해 품사 태깅
    • Vectorizer
      • doc_to_bow, BOW 등으로 변환 가능
      • 단, vectorizer.vocabulary_에 들어있지 않은 단어는 벡터화 불가
    • Normalizer
      • 텍스트 정규화 가능
    • Point Wise Mutual Information(PMI)
 

lovit/soynlp

한국어 자연어처리를 위한 파이썬 라이브러리입니다. 단어 추출/ 토크나이저 / 품사판별/ 전처리의 기능을 제공합니다. - lovit/soynlp

github.com

 

반응형

댓글