귀퉁이 서재

NLP - 3. 불용어(Stop word) 제거 본문

자연어 처리 (NLP)

NLP - 3. 불용어(Stop word) 제거

Baek Kyun Shin 2020. 2. 11. 22:24

텍스트 전처리 두 번째 주제는 불용어(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: 파이썬 머신러닝 완벽 가이드 (권철민 저)

Reference2: 딥 러닝을 활용한 자연어 처리 입문 (불용어)

Reference3: RANKS NL Korean Stopwords

Comments