- 스톱 워드(Stop word) : 분석에 큰 의미가 앖는 것을 없애기 위해 사용합니다.
import nltk
nltk.download('stopwords')
print('영어 stop words 갯수:',len(nltk.corpus.stopwords.words('english')))
print(nltk.corpus.stopwords.words('english')[:20])
- NLTK의 스톱워드를 확인하기 위해 다운로드를 합니다.
- word('english') : i, my, me, myself 등 인칭대명사를 포함하고 있습니다. 총 길이는 179 개를 가지고 있습니다.
import nltk
# word_tokens = 'The Matrix is everywhere its all around us, here even in this room. \
# You can see it out your window or on your television. \
# You feel it when you go to work, or go to church or pay your taxes.'
stopwords = nltk.corpus.stopwords.words('english')
all_tokens = []
for sentence in word_tokens:
filtered_words=[]
for word in sentence:
word = word.lower()
if word not in stopwords:
filtered_words.append(word)
all_tokens.append(filtered_words)
print(all_tokens)
- for 반목문을 통하여 문장에서 단어를 받고 단어에서 문장을 받아 비교하기 위해 lower()을 통하여 소문자로 변환합니다.
- if word not in stopwords : 스톱워드에 있는 값들에서 word가 없을 시에 filtered_words에 추가하게 됩니다. 결과적으로 all_tokens에는 스톱워드로 걸러진 단어들이 리스트 형태로 들어있게 됩니다.
- Stemming
from nltk.stem import LancasterStemmer
stemmer = LancasterStemmer()
print(stemmer.stem('working'),stemmer.stem('works'),stemmer.stem('worked'))
- NLTK의 LancasterStemmer 이용할 것입니다.
- stemmer.stem을 이용하여, 단어의 원형을 찾아 줄 수 있습니다.
- Lemmatization
from nltk.stem import WordNetLemmatizer
lemma = WordNetLemmatizer()
print(lemma.lemmatize('amusing','v'),lemma.lemmatize('amuses','v'),lemma.lemmatize('amused','v'))
- NLTK의 WordNetLemmatizer 를 활용하여 품사와 같은 문법적인 요소와 더 의미적인 부분을 감안해 정확합니다.
- lemmatize('단어','동사 v, 형용사 a') : 품사를 통해 원형을 출력합니다.
-출처 : 파이썬 머신러닝 완벽 가이드
'머신러닝 in Python' 카테고리의 다른 글
[Python]k-nearest neighbor (0) | 2019.08.26 |
---|---|
텍스트 분석_BOW (0) | 2019.08.14 |
텍스트 분석_텍스트 전처리1 (0) | 2019.08.13 |
텍스트 분석이란? (0) | 2019.08.13 |
[R] 네이버 크롤링 (0) | 2019.08.12 |