I can do it!!

He can do! She can do! why cannot me? i can do it!

개발/IBM C:LOUDERs

[IBM C:LOUDERs] 비지도 Tokenizer -soynlp

gogoriver 2020. 11. 22. 21:45
  • TOKENIZER란 무엇인가?

자연어처리(NLP)를 하면서 많이 듣게 되는 용어 중 하나가 바로 '토큰화'이다. 딥러닝에 자연어처리를 하기 위해서는 우선 언어 RAWDATA 즉 CORPUS(코퍼스)를 데이터에 사용하고자 하는 용도에 맞게 토큰화, 정제, 정규화하는 작업을 거치게 된다. 여기서 토큰화란 토큰(token : 의미있는 단위)을 쪼개는 과정이다. 보통 영어에서는 NLTK 패키지를 이용하면 쉽게 사용할 수 있다.

그러나 문제점은 한국말 데이터를 이용하는 경우이다. 한국어의 경우 일반적으로 영어보다 토큰화하기 어렵다. 그 이유는 링크를 따라가면 확인할 수 있다. 한국어 토큰화할 때는 주로 KoNLPY를 사용해야하는데 이 KoNLPY가 jdk도 설치해야하고, 여러모로 까다로운 점이 많다. 그런데 이번에 프로젝트를 하면서 soynlp라는 것을 알게되었는데 KoNLPY보다 설치하기도 쉽고, 사용하기도 좋은 것 같아 소개하고자 한다.


  • soynlp란?

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

  • github markdown에서 소개하는 soynlp 내용이다. 설치는 pip을 통해 쉽게 할 수 있다.

pip install soynlp
  • soynlp의 특징 및 기술

  1. Noun Extractor

    • 비지도 학습을 지향하기 때문에 '복합명사'를 추출하는데 뛰어난 성능을 보인다.

    • v1, news, v2 세 가지 버전이 있는데 v2가 가장 성능이 좋다

  2. Word Extraction

    • 말뭉치를 기반으로 학습된 품사 판별기 / 형태소 분석기는 새로운 단어를 본 적 없기 때문에 OOV(out of vocabulry)가 발생한다. 그러나 soynlp는 WordExtracor을 통해 새로운 단어를 추출할 수 있다.

  3. Tokenizer

    • wordextractor로 단어 점수를 학습하였다면 이를 이용하여 단어의 경계를 따라 문장을 단어열로 분해한다.

      • LTokenizer : 띄어쓰기가 잘 되어있는 경우 L + R의 조합 (L : 명사, 형용사, 동사, 부사)

      • MaxScoreTokenizer : 띄어쓰기가 잘 안도어 있는 경우. scores를 만들거나 단어 사전을 사용하여 적용함

      • RegexTokenizer : 규칙기반 단어열 형성. 언어나 숫자 등 바뀌는 부분을 경계로 인식

  4. 아쉬운 점
    • 아무래도 비지도 학습을 이용하거나, 단어 사전을 직접 만들어서 주어야 하기 때문에 기존 mecab보다 시간이 배로 걸린다ㅠㅠ

 


참고자료

github.com/lovit/soynlp

lovit.github.io/