귀퉁이 서재
NLP - 3. 불용어(Stop word) 제거 본문
텍스트 전처리 두 번째 주제는 불용어(Stop word) 제거입니다.
불용어(Stop word)는 분석에 큰 의미가 없는 단어를 지칭합니다. 예를 들어 the, a, an, is, I, my 등과 같이 문장을 구성하는 필수 요소지만 문맥적으로 큰 의미가 없는 단어가 이에 속합니다. 이런 불용어는 텍스트에 빈번하게 나타나기 때문에 중요한 단어로 인지될 수 있습니다. 하지만 실질적으로는 중요한 단어가 아니므로 사전에 제거해줘야 합니다.
이전과 마찬가지로 파이썬 머신러닝 완벽 가이드 (권철민 저), 딥 러닝을 이용한 자연어 처리 입문 (유원주 저)을 요약정리했습니다.
불용어 확인하기
import nltk
nltk.download('stopwords')
print('영어 불용어 갯수:',len(nltk.corpus.stopwords.words('english')))
print(nltk.corpus.stopwords.words('english')[:40])
영어 불용어 갯수: 179
['i', 'me', 'my', 'myself', 'we', 'our', 'ours', 'ourselves', 'you', "you're", "you've", "you'll", "you'd", 'your', 'yours', 'yourself', 'yourselves', 'he', 'him', 'his', 'himself', 'she', "she's", 'her', 'hers', 'herself', 'it', "it's", 'its', 'itself', 'they', 'them', 'their', 'theirs', 'themselves', 'what', 'which', 'who', 'whom', 'this']
불용어 제거하기
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
example = "Family is not an important thing. It's everything."
stop_words = set(stopwords.words('english'))
word_tokens = word_tokenize(example)
result = []
for token in word_tokens:
if token not in stop_words:
result.append(token)
print(word_tokens)
print(result)
['Family', 'is', 'not', 'an', 'important', 'thing', '.', 'It', "'s", 'everything', '.']
['Family', 'important', 'thing', '.', 'It', "'s", 'everything', '.']
is, not, an과 같은 불용어가 제외된 것을 볼 수 있습니다.
한국어 불용어
nltk의 stopwords에서는 한국어 불용어를 지원하지 않기 때문에 별도로 처리해줘야 합니다.
(Reference3) 링크에서 일반적으로 사용되는 한국어 불용어 리스트를 볼 수 있습니다. 한국어 불용어를 처리하는 가장 좋은 방법은 txt나 csv 파일에 불용어를 직접 정리해놓고, 이를 불러와서 사용하는 것입니다.
References
Reference1: 파이썬 머신러닝 완벽 가이드 (권철민 저)
'자연어 처리 (NLP)' 카테고리의 다른 글
NLP - 6. 카운트 기반 벡터화(CountVectorizer)와 TF-IDF 벡터화 (2) | 2020.02.15 |
---|---|
NLP - 5. Bag of Words (BOW) (0) | 2020.02.13 |
NLP - 4. 어간 추출(Stemming)과 표제어 추출(Lemmatization) (0) | 2020.02.12 |
NLP - 2. 텍스트 토큰화(Text Tokenization) (0) | 2020.02.10 |
NLP - 1. 자연어 처리(Natural Language Processing)란 무엇인가? (0) | 2020.02.09 |
Comments