이 글은 Wikidocks의 딥 러닝을 이용한 자연어 치리 입문을 공부한 내용을 정리 한 글입니다.
✔️ 어간 추출(Stemming), 표제어 추출(Lemmatization) 둘의 목적은 눈으로 보았을 때는 서로 다른 단어이지만, 하나의 단어로 일반화시킬 수 있으면 하나의 단어로 일반화시켜 문서 내의 단어 수를 줄이는데 목적이 있다.
✔️ 단어들로부터 표제어를 찾아가는 과정
✔️ 단어들이 다른 형태를 가지더라고 그 뿌리 단어를 찾아가서 단어의 개수를 줄일 수 있는지 판단
가령, am, are, is의 뿌리 단어는 be이다.
✔️ 표제어 추출을 하는 가장 섬세한 방법은 단어의 형태학적 파싱을 먼저 진행하는 것이다.
이때, 형태소란 의미를 가진 가장 작은 단위를 뜻하고 형태학(morphology)이란, 형태소로부터 단어들을 만들어가는 학문을 말한다.
형태소의 두 가지 종류
1️⃣ 어간(stem)
단어의 의미를 담고 있는 단어의 핵심 부분
2️⃣ 접사(suffix)
단어에 추가적인 의미를 주는 부분
⭐️ 형태학적 파싱은 이 두가지 구성 요소를 분리하는 작업을 말한다.
예시
dogs -> dog + s
from nltk.stem import WordNetLemmatizer
n=WordNetLemmatizer()
words=['dog', 'dogs','has']
print([n.lemmatize(w) for w in words])
['dog', 'dog', 'have', 'ha']
어간 추출(Stemming)에 비해 표제우 추출은 단어의 형태가 적절히 보존되지만 'ha'같은 경우 의미를 알 수 없는 단어 출력을 하는 이유는 표제어 추출기(lemmatizer)가 본래 단어의 품사 정보를 알아야만 정확한 결과를 얻을 수 있어서 위와 같은 결과가 나오게 되는 것이다. => 품사를 알려주는 기능 또한 있으며 품사를 알려주게 되면 정확안 단어를 내놓게 된다.
n.lemmatize('has', 'v')
'have'
❗️ 어간 추출과의 차이는 표제어 추출은 결과에 품사 정보가 보존되지만 어간 추출을 수행한 결과는 품사 정보가 보존되지 않는다.
✔️ 어간(Stem)을 추출하는 작접이고 형태학적 분석을 단순화한 버전으로 볼 수도 있고 정해진 규칙만 보고 단어의 어미를 자르는 작업으로도볼 수 있음으로 어간 추출 후에 나오는 결과 단어는 사전에 존재하지 않는 단어일 수도 있다.
✔️ 예시
from nltk.stem import PorterStemmer
from nltk.tokenize import word_tokenize
s = PorterStemmer()
text="I can fly"
words=word_tokenize(text)
print(words)
['I', 'can', 'fly']
print([s.stem(w) for w in words])
['I', 'can', 'fli']
위의 어간은 porter알고리즘을 사용한 어간 추출의 결과로써 단순 규칙에 의해 나눠진 것이므로 단어 사전에 없는 단어가 나올 수도 있다.
랭커스터 스태머(Lancaster Stemmer) 알고리즘을 사용하여 어간 추출(Stemming)을 수행하였을 시에는 다른 결과를 정해진 규칙이 달라 다른 결과를 내놓는 것을 볼 수 있다.
from nltk.stem import LancasterStemmer
l=LancasterStemmer()
print([l.stem(w) for w in words])
['i', 'can', 'fly']
✔️ 한국어는 5언 9품사의 구조를 가지고 있다.
이 중 용언에 해당하는 동사와 형용사는 어간(stem)과 어미(ending)의 결합으로 구성ㄷ괸다.
✔️ 활용이란 용언의 어간(stem)이 어미(ending)를 가지는 일을 말한다.
어간(stem) : 용언을 활용할 깨, 원칙적으로 모양이 변하지 않는 부분으로써 활용에서 어미에 선행하는 부분, 상황에 따라 어간의 모양이 바뀔 수도 있음
어미(ending) : 용언의 어간 뒤에 붙어서 활용하면서 변하는 부분으로써, 여러 문법적 기능을 수행
✔️ 규칙 활용은 어간이 어미를 취할 때, 어간의 모습이 일정한 경우이다.
예시)
잡(어간) + 다(어미)
✔️ 불규칙 활용은 어간이 어미를 취할 때 어간의 모습이 바뀌거나 취하는 어미가 특수한 어미일 경우이다. => 복잡한 규칙이 필요