본문 바로가기

[NLP]

[NLP] 표제어 추출 and 어간 추출

정규화 기법 중 코퍼스에 있는 단어의 개수를 줄일 수 잇는 기법인

표제어 추출(lemmatization)과 어간 추출(stemming)

 

이 두 작업이 갖고 있는 의미는 눈으로 봤을 때는 서로 다른 단어들이지만,

하나의 단어로 일반화 시킬 수 있다면 하나의 단어로 일반화 시켜서 문서 내의 단어 수를 줄이겠다는 것입니다.

이러한 자연어처리의 지향점은 언제나 갖고 있는 코퍼스로부터 복잡성을 줄이는 일입니다.

 

1. 표제어 추출(Lemmatization)

 

표제어는 한글로는 표제어, 기본 사전형 단어 정도의 의미를 갖습니다.

 

표제어추출은 단어들로부터 표제어를 찾아가는 과정이며,

그 뿌리 단어를 찾아가서 단어의 개수를 줄일 수 있는지 판단합니다.

 

am, are, is는 서로 다른 스펠링이지만 그 뿌리 단어는 be라고 볼 수 있습니다. 
이때, 이 단어들의 표제어는 be라고 합니다.

 

형태소란 '의미를 가진 가장 작은 단위'를 뜻합니다.

형태소의 종류로 어간(stem)과 접사(affix)가 존재합니다.

 

1) 어간(stem)

단어의 의미를 담고 있는 단어의 핵심 부분

 

2) 접사(affix)

단어에 추가적인 의미를 주는 부분

 

형태학적 파싱은 이 두가지 구성 요소를 분리하는 작업을 말합니다.

cats라는 단어에 대해 형태학적 파싱을 수행한다면, 
형태학적 파싱은 결과로 cat(어간)와 -s(접사)를 분리합니다. 
꼭 두 가지로 분리되지 않는 경우도 있습니다.

 

NLTK에서는 표제어 추출을 위한 도구인 WordNetLemmatizer를 지원합니다.

from nltk.stem import WordNetLemmatizer

import nltk
nltk.download('wordnet')

 

표제어 추출은 어간추출과는 달리 단어의 형태가 적절히 보존되는 양상을 보이는 특징이 있습니다.

하지만 그럼에도 의미를 알 수 없는 적절하지 못한 단어를 추출하기 때문에

입력으로 단어가 동사 품사라는 사실을 알려줄 수 있습니다.

 

2. 어간 추출(Stemming)

 

어간을 추출하는 작업을 어간 추출이라고 합니다.

 

어간 추출은 정해진 규칙만 보고 단어의 어미를 자르는 어림짐작의 작업이라고 볼 수도 있습니다.

이 작업은 섬세한 작업이 아니기 때문에 결과 단어는 사전에 존재하지 않는 단어일 수도 있습니다.

 

from nltk.stem import PorterStemmer
from nltk.tokenize import word_tokenize

 

포터 알고리즘

ALIZE → AL
ANCE → 제거
ICAL → IC             이러한 규칙을 준다면

formalize → formal
allowance → allow
electricical → electric    이러한 결과가 나오도록 

 

어간 추출 속도는 표제어 추출보다 일반적으로 빠른데,

포터 어간 추출기는 정밀하게 설계되어 정확도가 높으므로 

영어 자연어 처리에서 어간 추출을 하고자 한다면 가장 준수한 선택입니다.

 

NLTK에서는 포터 알고리즘 외에도 랭커스터 스태머(Lancaster Stemmer)알고리즘을 지원합니다.

 

from nltk.stem import PorterStemmer
from nltk.stem import LancasterStemmer

 

랭커스터 스태머를 사용할지 포터 알고리즘을 사용할지는 정해진 답이 없으며,

사용하고자 하는 코퍼스에 적용해본뒤 어떤 스태머가 적합한지를 판단한 후에 사용해야합니다.

 

이런 규칙에 기반한 알고리즘은 종종 제대로 된 일반화를 수행하지 못 할 수 있습니다. 
어간 추출을 하고나서 일반화가 지나치게 되거나, 또는 덜 되거나 하는 경우입니다. 

 

3. 한국어에서의 어간 추출

 

한국어는 아래와 같이 5언 9품사의 구조를 가지고 있습니다.

언 / 품사
체언 / 명사, 대명사, 수사
수식언 / 관형사, 부사
관계언 / 조사
독립언 / 감탄사
용언 / 동사, 형용사

 

이 중 용언에 해당되는 동사와 형용사는 어간과 어미의 결합으로 구성됩니다.

 

(1) 활용(conjugation)

용언의 어간(stem)이 어미(ending)를 가지는 일을 말합니다.

어간(stem) : 용언(동사, 형용사)을 활용할 때, 원칙적으로 모양이 변하지 않는 부분. 
             활용에서 어미에 선행하는 부분. 
             때론 어간의 모양도 바뀔 수 있음(예: 긋다, 긋고, 그어서, 그어라).

어미(ending): 용언의 어간 뒤에 붙어서 활용하면서 변하는 부분이며, 여러 문법적 기능을 수행

활용은 어간이 어미를 취할 때, 
어간의 모습이 일정하다면 규칙 활용, 
어간이나 어미의 모습이 변하는 불규칙 활용으로 나뉩니다.

 

(2) 규칙 활용

규칙 촬용은 어간이 어미를 취할 때 어간의 모습이 일정합니다.

 

(3) 불규칙 활용

불규칙 활용은 어간이 어미를 췰할 때 어간의 모습이 바뀌거나 취하는 어미가 특수한 어미일 경우

 

 

'[NLP]' 카테고리의 다른 글

[NLP] 정수 인코딩  (0) 2023.03.27
[NLP] 정규 표현식(Regular Expression)  (0) 2023.03.27
[NLP] 불용어(Stopword)  (0) 2023.03.27
[NLP] 정제 및 정규화  (0) 2023.03.27
[NLP] Tokenization 토큰화  (0) 2023.03.27