본문 바로가기

텍스트 마이닝

텍스트 전처리 (3)

반응형

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