어간 추출 & 표제어 추출
- 서로 다른 단어라도 하나의 단어로 일반화
표제어 추출(lemmatization)
- 표제어 : 기본 사전형 단어
- 다른 형태의 단어 -> 같은 뿌리면 하나의 단어로 바꿈
- 형태학적 파싱을 먼저 진행
형태학
- 형태소 : 의미를 가지는 가장 작은 단위
- 형태학 : 형태소로부터 단어를 만들어나가는 학문
형태소의 종류
- 어간(stem) : 단어의 의미를 담고 있는 부분
- 접사(affix) : 단어에 추가적인 의미를 주는 부분
형태학적 파싱
- 단어를 어간과 접사로 분리하는 작업
표제어 추출 예제 코드
from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()
out = [lemmatizer.lemmatize(word) for word in words]
- 표제어 추출을 했을 경우 단어의 형태가 적절히 보존됨
- 표제어 추출기가 본래 단어의 품사를 모를 경우 정확한 결과가 안나옴
어간 추출(stemming)
- 어간(stem)을 추출하는 작업
- 어간 추출 후 나오는 단어는 사전에 존재하지 않는 단어일 수 있음
- 이 작업은 어미를 어림짐작해 자르는 과정일 수 있기 때문
- 어간추출은 표제어추출보다 일반적으로 빠름
- 이미 알려진 알고리즘(Poreter, Lancaster)을 사용하는 경우 코퍼스에 대해 어떤 것이 의도와 잘 맞는지 확인해야함
- 이런 이미 알려진 규칙 기반 알고리즘은 결과가 제대로 안나올 수 있음
한국어에서 어간 추출
한국어는 용언(동사, 형용사)만 어간 + 어미의 구조로 되어있음
- 활용 : 어간이 어미를 가지는 일
- 어간 : 원칙적으로 형태가 변하지 않음. 때로는 모양이 바뀌는 경우도 있음
- 어미 : 어간 뒤에 붙어서 활용됨. 형태가 변함. 문법적 기능 수행
- 규칙 활용 : 어간 + 어미에서 어간의 모습이 일정
- 어미를 단순히 분리해주면 스테밍이 됨
- 불규칙 활용 : 어간 + 어미에서 어간의 형태가 변함 or 어미가 특수한 어미인 경우
- 특수한 알고리즘이 필요