SoyNLP : 한국어 자연어 처리 패키지
SOYNLP : 형태소 분석, 품사 판별 등을 지원하는 파이썬 기반 한국어 자연어 처리 패키지
-
데이터 패턴을 스스로 학습하는 비지도 학습 접근법을 지향하기 때문에 하나의 문장 혹은 문서에서보다는 어느정도 규모가 있으면서 동질적인 문서 집합에서 잘 작동한다.
-
soynlp 패키지에 포함된 형태소 분석기는 데이터의 통계량을 확인해 만든 단어 점수 표로 작동한다.
- 단어 점수는 크기 응집 확률 (Cohesion Probability)과 브랜칭 엔트로피 (Branching Entropy)를 활용한다.
- 응집 확률이 높을 때 : 주어진 문자열이 유기적으로 연결돼 함께 자주 나타나는 것
- 브랜칭 엔트로피가 높을 때 : 그 단어 앞뒤로 다양한 조사, 어미 혹은 다른 단어가 등장하는 경우
- 단어 점수는 크기 응집 확률 (Cohesion Probability)과 브랜칭 엔트로피 (Branching Entropy)를 활용한다.
-
soynlp의 형태소 분석기는 우리가 가지고 있는 말뭉치의 통계량을 바탕으로 힘
- 말뭉치의 분포가 어떻게 돼 있는지 확인하고 단어별로 응집 확률과 브랜칭 엔트로피 점수표를 만드는 절차가 필요함
-
soynlp의 단어 점수를 학습하는 코드
from soynlp.word import WordExtractor corpus_fname = "/path/processed_ratings.txt" model_fname = "soyword.model" sentences = [sent.strip() for sent in open(corpus_fname, 'r').readlines()] word_extractor = WordExtractor(min_frequency = 100, min_cohesion_forward = 0.05 min_right_branching_entropy = 0.0) word_extractor.load(model_fname)- 해당 코드를 실행하면 단어 점수표가 model_fname 경로에 저장됨
- soynlp의 LTokenizer 클래스는 입력 문장의 왼쪽부터 문자 단위로 슬라이딩해 가면서 단어 점수가 높은 문자열을 우선으로 형태소로 취급하여 분리함
- 단, 띄어쓰기가 되어있다면 해당 어절을 단어로 인식
- 한국어는 명사에 조사가 붙거나 용언에 어미가 붙어 활용되는 교착어이기 때문에 왼쪽부터 슬라이딩해 가면서 분석해도 높은 품질을 기대할 수 있음
“애비는 종이었다”➡️[”애비”, “는”, “종”, “이었다”]
reference