반응형
2.3 정규화
2.3.1 어간 추출
- 어형이 변형된 단어로부터 접사 등을 제거하고 그 단어의 어간을 분리해 내는 작업
- 어형: 단어의 형태
- 어간: 어형변화에서 변화하지 않는 부분
- 용언: 문장 안에서 서술하는 구실을 하는 동사와 형용사
- 영어에 대한 어간추출 알고리즘은 포터 스테머, 랭카스터 스테머 등이 있음
포터 스테머
from nltk.stem import PorterStemmer
stemmer = PorterStemmer()
print(stemmer.stem('cooking'), stemmer.stem('cookery'), stemmer.stem('cookbooks'))
## cook cookeri cookbook
# 토큰화와 결합해 어간 추출
from nltk.tokenize import word_tokenize
para = "Hello everyone. It's good to see you. Let's start our text mining class!"
tokens = word_tokenize(para) #토큰화 실행
print(tokens)
result = [stemmer.stem(token) for token in tokens] #모든 토큰에 대해 스테밍 실행
print(result)
"""
['Hello', 'everyone', '.', 'It', "'s", 'good', 'to', 'see', 'you', '.', 'Let', "'s", 'start', 'our', 'text', 'mining', 'class', '!']
['hello', 'everyon', '.', 'it', "'s", 'good', 'to', 'see', 'you', '.', 'let', "'s", 'start', 'our', 'text', 'mine', 'class', '!']
"""
랭카스터 스테머
from nltk.stem import LancasterStemmer
stemmer = LancasterStemmer()
print(stemmer.stem('cooking'), stemmer.stem('cookery'), stemmer.stem('cookbooks'))
## cook cookery cookbook
2.3.2 표제어 추출
- 주어진 단어를 기본형으로 변환하는 것
from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()
print(lemmatizer.lemmatize('cooking'))
print(lemmatizer.lemmatize('cooking', pos='v')) #품사를 지정
print(lemmatizer.lemmatize('cookery'))
print(lemmatizer.lemmatize('cookbooks'))
"""
cooking
cook
cookery
cookbook
"""
#comparison of lemmatizing and stemming
from nltk.stem import PorterStemmer
stemmer = PorterStemmer()
print('stemming result:', stemmer.stem('believes'))
print('lemmatizing result:', lemmatizer.lemmatize('believes'))
print('lemmatizing result:', lemmatizer.lemmatize('believes', pos='v'))
"""
stemming result: believ
lemmatizing result: belief
lemmatizing result: believe
"""
※ 해당 내용은 <파이썬 텍스트 마이닝 완벽 가이드>의 내용을 토대로 학습하며 정리한 내용입니다.
반응형
'텍스트 마이닝' 카테고리의 다른 글
그래프와 워드 클라우드 (1) (0) | 2023.06.22 |
---|---|
텍스트 전처리 (4) (0) | 2023.06.21 |
텍스트 전처리 (2) (0) | 2023.06.19 |
텍스트 전처리 (1) (0) | 2023.06.18 |
텍스트 마이닝 기초 (2) (0) | 2023.06.17 |