Tensorflow 2 NLP(자연어처리)/형태소 분석기

[2-4] soynlp 형태소 분석기 사용하기

Suhd 2021. 11. 12. 22:26

soynlp 형태소 분석기는 비지도학습 형태소 분석기이다.

즉, 다른 형태소 분석기(은전한닢,꼬꼬마 등)와는 달리 데이터의 패턴을 모델 스스로 학습을 한다.

오픈소스 패키지는 다음에서 사용하였다.

https://github.com/lovit/soynlp

 

GitHub - lovit/soynlp: 한국어 자연어처리를 위한 파이썬 라이브러리입니다. 단어 추출/ 토크나이저 /

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

github.com

soynlp를 사용하기에 앞서 전처리 된 데이터가 필요하다. 이 데이터는 네이버 영화 리뷰 말뭉치를 이용하였다.

준비가 완료되었다. 그런데 soynlp의 작동 원리는 무엇인가?

 

 

특징으로는,

데이터 패턴을 스스로 학습하기 때문에 하나의 문장 혹은 문서에서보다는 규모가 있으면서

동질적인 문서집합에서 잘 작동한다.

작동 원리는 데이터의 통계량을 확인해 점수표로 나타내고 그에 따라 작동한다.

이 단어 점수는 응집 확률(Cohesion Probability)브랜칭 엔트로피(Branching Entropy)에 따라 부여된다.

 

 

구체적으로 말하자면

1. 주어진 문자열이 유기적으로 연결 되어 자주 나타난다 (응집 확률 높다)

2. 특정 단어 앞뒤로 다양한 조사, 어미 혹은 다른 단어가 등장하는 경우가 많다. (브랜칭 엔트로피가 높다.)

=> 예를 들면 '꿀잼' 앞에 '영화','너무', '정말' 등 문자열이 나타나고 뒤에 'ㅋㅋ','ㅎㅎ','!!' 등이

많이 나타날수록 브랜칭 엔트로피가 높은 것이다.

 

 

이제 학습해 보겠다.

학습코드

다음 코드를 실행하면 단어 점수표가 model_fname 경로에 저장 될 것이다.

이제 점수표에 따라 형태소를 분석해보자

정상적으로 작동되는 것을 볼 수 있다.

+여기서 LTokenizer 클래스는 입력 문장의 왼쪽부터 문자 단위로 슬라이딩해 가면서 단어 점수가 높은 문자열을 우선으로 형태소로 취급해 분리한다.