Pytorch로 시작하는 딥러닝 입문(09-02. 불용어)

2024. 3. 27. 18:09딥러닝 모델: 파이토치

갖고 있는 데이터에서 유의미한 단어 토큰만을 선별하기 위해서는 큰 의미가 없는 단어 토큰을 제거하는 작업이 필요하다. 큰 의미가 없는 단어 토큰이란 자주 등장하지만 분석을 함에 있어서는 큰 도움이 되지 않는 단어들을 의미한다. 예를 들면 I, my, me, over, 조사, 접미사 같은 단어들은 문장에서는 자주 등장하지만 실제 의미 분석을 하는 데는 거의 기여하는 바가 없다. 이런 단어들을 불용어(stopword)라고 하며, NLTK에서는 위와 같은 100여개 이상의 영어 단어들을 패키지 내에서 불용어로 미리 정의한다. 

 

불용어를 개발자가 직접 정의할 수도 있다. 영어 문장에서 NLTK가 정의한 영어 불용어를 제거하는 실습을 해보자. 

 

♣ NLTK에서 불용어 확인하기

 

 

♣ NLTK를 통해서 불용어 제거하기

 

NLTK가 정의하는 불용어를 제외하면 is, not, an과 같은 단어들이 문장에서 제거된다. 

 

 

♣ 한국어에서 불용어 제거하기

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

 

아래 링크는 보편적으로 선택할 수 있는 한국어 불용어 리스트이다. 하지만 절대적인 기준은 아니다. 

https://www.ranks.nl/stopwords/korean

 

Korean Stopwords

 

www.ranks.nl