본문 바로가기

[NLP]

[NLP] 불용어(Stopword)

불용어란 갖고 있는 데이터에서 유의미한 단어 토큰만을 선별하기 위해

큰 의미가 없는 단어 토큰을 제거하는 작업입니다.

 

개발자가 직접 정의할 수도 있지만, 영어 문장에서 NLTK가 정의한 영어 불용어를 제거할 수 있습니다.

from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize 
from konlpy.tag import Okt

import nltk
nltk.download('stopwords')

 

1. NLTK에서 불용어 확인하기

 

stop_words_list = stopwords.words('english')
print('불용어 개수 :', len(stop_words_list))
print('불용어 10개 출력 :',stop_words_list[:10])
불용어 개수 : 179
불용어 10개 출력 : ['i', 'me', 'my', 'myself', 'we', 'our', 'ours', 'ourselves', 'you', "you're"]

 

2. NLTK를 통해 불용어 제거하기

 

example = "Family is not an important thing. It's everything."
stop_words = set(stopwords.words('english')) 

word_tokens = word_tokenize(example)

result = []
for word in word_tokens: 
    if word not in stop_words: 
        result.append(word) 

 

위 코드는

임의의 문장을 정의하고, word_tokenize를 통해 단어 토큰화를 수행합니다.

 

불용어를 제외한 결과를 출력하며, 불용어사전에 등록된 단어를 제거해 줍니다.

 

3. 한국어에서 불용어 제거하기

 

한국어에서 불용어를 제거하는 방법으로는 토큰화 후에 조사, 접속사 등을 제거하는 방법이 있습니다.

하지만, 명사, 형용사와 같은 단어들도 불용어로서 제거하고 싶은 단어들이 생기는데

 

결국 사용자가 직접 불용어 사전을 만들게 되는 경우가 많습니다.

 

코드 내에서 직접 정의할 수도 있지만 csv파일, txt파일로 정리해놓고 불러와 사용하기도 합니다.

한국어 불용어 링크 : https://www.ranks.nl/stopwords/korean

 

 

 

 

'[NLP]' 카테고리의 다른 글

[NLP] 정수 인코딩  (0) 2023.03.27
[NLP] 정규 표현식(Regular Expression)  (0) 2023.03.27
[NLP] 표제어 추출 and 어간 추출  (0) 2023.03.27
[NLP] 정제 및 정규화  (0) 2023.03.27
[NLP] Tokenization 토큰화  (0) 2023.03.27