어간 추출, 표제어 추출


어간 추출 & 표제어 추출

  • 서로 다른 단어라도 하나의 단어로 일반화

표제어 추출(lemmatization)

  • 표제어 : 기본 사전형 단어
  • 다른 형태의 단어 -> 같은 뿌리면 하나의 단어로 바꿈
  • 형태학적 파싱을 먼저 진행

형태학

  • 형태소 : 의미를 가지는 가장 작은 단위
  • 형태학 : 형태소로부터 단어를 만들어나가는 학문

형태소의 종류

  • 어간(stem) : 단어의 의미를 담고 있는 부분
  • 접사(affix) : 단어에 추가적인 의미를 주는 부분

형태학적 파싱

  • 단어를 어간과 접사로 분리하는 작업

표제어 추출 예제 코드

from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()
out = [lemmatizer.lemmatize(word) for word in words]
  • 표제어 추출을 했을 경우 단어의 형태가 적절히 보존됨
  • 표제어 추출기가 본래 단어의 품사를 모를 경우 정확한 결과가 안나옴

어간 추출(stemming)

  • 어간(stem)을 추출하는 작업
  • 어간 추출 후 나오는 단어는 사전에 존재하지 않는 단어일 수 있음
    • 이 작업은 어미를 어림짐작해 자르는 과정일 수 있기 때문
  • 어간추출은 표제어추출보다 일반적으로 빠름
  • 이미 알려진 알고리즘(Poreter, Lancaster)을 사용하는 경우 코퍼스에 대해 어떤 것이 의도와 잘 맞는지 확인해야함
    • 이런 이미 알려진 규칙 기반 알고리즘은 결과가 제대로 안나올 수 있음

한국어에서 어간 추출

한국어는 용언(동사, 형용사)만 어간 + 어미의 구조로 되어있음

  • 활용 : 어간이 어미를 가지는 일
    • 어간 : 원칙적으로 형태가 변하지 않음. 때로는 모양이 바뀌는 경우도 있음
    • 어미 : 어간 뒤에 붙어서 활용됨. 형태가 변함. 문법적 기능 수행
  • 규칙 활용 : 어간 + 어미에서 어간의 모습이 일정
    • 어미를 단순히 분리해주면 스테밍이 됨
  • 불규칙 활용 : 어간 + 어미에서 어간의 형태가 변함 or 어미가 특수한 어미인 경우
    • 특수한 알고리즘이 필요