반응형

불용어 처리

I. 불용어

불용어란 데이터 셋에 자주 등장하지만 분석에 큰 의미는 갖지 않는 단어를 말합니다. 불용어가 다수 포함되어 있을수록 효율 감소, 처리시간 증가 등 악영향이 발생합니다.

불용어 처리를 위해 영문의 경우 대표적인 불용어를 nltk모듈에서 제공하고 있으며, 한국어의 경우 따로 제공되는 리스트는 없으나 아래 링크를 활용할 수 있습니다.

대체적으로 불용어는 데이터를 분석하는 연구진에 의해 임의로 설정하는 경우가 많습니다.

한국어 불용어 리스트 100개 : https://bab2min.tistory.com/544

II. 기초 불용어 처리

from nltk.corpus import stopwords 
from nltk.tokenize import word_tokenize

word = "
불용어란 자주 등장하지만 데이터를 분석하는데 있어 큰 의미를 갖지 않는 단어들을 뜻합니다. 
불용어는 임의로 설정할 수 도 있고, 영문의 불용어 리스트의 경우 NTLK 라이브러리에서 정의한 불용어 리스트를 사용할 수 있습니다. 
다만 한국어의 경우 조사와 접속사의 사용이 다양하며, 언어의 변형이 많기 때문에 직접 정의하는게 좋습니다.
"
stop ="자주,종종,가끔,많이"

stop_list = stop.split(',')
tok = word_tokenize(word)

def stopword(word_tokenize):
    result = []

    for w in word_tokenize:
        if w not in stop_list:
            result.append(w)

    return result

print('토큰화한 문장은'+ str(tok) + '입니다.')
print('불용어를 제거하면' + str(stopword(tok)) + '입니다')

> 토큰화한 문장은['불용어란', '자주', '등장하지만', '데이터를', '분석하는데', '있어', '큰', '의미를', '갖지', '않는', '단어들을', '뜻합니다', '.', 
            '불용어는', '임의로', '설정할', '수', '도', '있고', ',', '영문의', '불용어', '리스트의', '경우', 'NTLK', '라이브러리에서', '정의한', 
            '불용어', '리스트를', '사용할', '수', '있습니다', '.', '다만', '한국어의', '경우', '조사와', '접속사의', '사용이', '다양하며', ',', 
            '언어의', '변형이', '많기', '때문에', '직접', '정의하는게', '좋습니다', '.']입니다.     

> 불용어를 제거하면['불용어란', '등장하지만', '데이터를', '분석하는데', '있어', '큰', '의미를', '갖지', '않는', '단어들을', '뜻합니다', '.', 
            '불용어는', '임의로', '설정할', '수', '도', '있고', ',', '영문의', '불용어', '리스트의', '경우', 'NTLK', '라이브러리에서', '정의한', 
            '불용어', '리스트를', '사용할', '수', '있습니다', '.', '다만', '한국어의', '경우', '조사와', '접속사의', '사용이', '다양하며', ',', 
            '언어의', '변형이', '많기', '때문에', '직접', '정의하는게', '좋습니다', '.']입니다
반응형
복사했습니다!