욤미의 개발일지

불용어(Stopword) 본문

NLP

불용어(Stopword)

욤미 2023. 8. 23. 08:33
728x90
반응형
반응형

불용어(stopword)란, 분석에 큰 의미가 없는 단어 토큰을 의미

갖고 있는 데이터에서 유의미한 단어 토큰만을 선별하기 위해서는 큰 의미가 없는 단어 토큰을 제거하는 작업이 필요하다. 이러한 작업을 불용어 제거라고 한다. 여기서 큰 의미가 없다라는 것은 자주 등장하지만 분석을 하는 것에 있어서는 큰 도움이 되지 않는 단어들을 말합니다. 불용어는 텍스트에 빈번하게 등장하기 때문에 중요한 단어로 보일 수 있지만 문맥적으로는 큰 의미가 없는 단어이므로 사전에 제거해줘야한다.

영어

영어에서 a, the, I, my, me, over, 조사, 접미사 같은 단어들은 문장에서 자주 등장하지만 실제 의미 분석에 거의 기여하는 바가 없는 경우가 많다.

NLTK에서는 위와 같은 100여개 이상의 영어 단어들을 불용어로 패키지 내에서 미리 정의하고 있다.

NLTK download

NLTK를 사용하기 위해서는 NLTK Data가 필요하므로 nltk.download() 커맨드를 통해 필요한 데이터를 다운로드 한다.

import nltk
nltk.download('stopwords')

NLTK로 영어 불용어 확인하기

stopwords.words("english")는 NLTK가 정의한 영어 불용어 리스트를 리턴한다.

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

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

NLTK로 영어 불용어 제거하기

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', '.']

한국어

NLTK의 stopwords에서는 한국어 불용어를 지원하지 않기 때문에 별도로 처리해줘야한다.

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

한국어에서 불용어를 제거하는 방법으로는 간단하게는 토큰화 후에 조사, 접속사 등을 제거하는 방법이 있습니다. 하지만 불용어를 제거하려고 하다보면 조사나 접속사와 같은 단어들뿐만 아니라 명사, 형용사와 같은 단어들 중에서 불용어로서 제거하고 싶은 단어들이 생기기도 합니다. 결국에는 사용자가 직접 불용어 사전을 만들게 되는 경우가 많습니다. 이번에는 직접 불용어를 정의해보고, 주어진 문장으로부터 사용자가 정의한 불용어 사전으로부터 불용어를 제거해보겠습니다. 아래의 불용어는 임의 선정한 것으로 실제 의미있는 선정 기준이 아닙니다.

보편적인 한국어 불용어 리스트

Korean Stopwords

일반적으로 사용되는 한국어 불용어 리스트를 볼 수 있습니다. 한국어에서 불용어는 불용어 사전을 구축해서 사용하는 것이 좋다. 주로 조사, 접속사가 해당되지만 때에 따라 명사나 형용사가 되기도 한다.

불용어는 사람이 판단하여, 불용어 리스트에 원하는 단어를 추가 혹은 제거하며 사용할 수 있다. 불용어가 많은 경우에는 코드 내에서 직접 정의하지 않고 txt나 csv 파일에 불용어를 직접 정리해놓고, 이를 불러와서 사용하기도 한다.

Reference

https://wikidocs.net/22530

 

02-04 불용어(Stopword)

갖고 있는 데이터에서 유의미한 단어 토큰만을 선별하기 위해서는 큰 의미가 없는 단어 토큰을 제거하는 작업이 필요합니다. 여기서 큰 의미가 없다라는 것은 자주 등장하지만 분석을 하…

wikidocs.net

 

 

 

728x90
반응형

'NLP' 카테고리의 다른 글

GPT의 발전 과정: GPT-1부터 GPT-4까지  (0) 2023.07.25
Comments