슬기로운 연구생활

Classification - [3] 품사 태깅 본문

슬기로운 NLP 생활

Classification - [3] 품사 태깅

vhrehfdl 2020. 8. 22. 17:04

이전 글

[1] 자연어처리란?

[2] Classification Task

 

들어가며

이전 글에서는 자연어처리 Classification의 전체 흐름과 구현 코드를 알아보았습니다.

Classification은 Load Data > Pre Processing > Text To Vector > Build Model > Evaluation의 흐름으로 진행됩니다. 이번 글에서는 Pre Processing 방법 중 하나인 POS Tagging에 대해 살펴보겠습니다.

 

POS Tagging

품사 태깅은 문장을 형태소 단위로 분리 한 후, 해당 형태소의 품사를 태깅하는 것을 의미합니다.

품사는 명사, 대명사, 수사, 조사, 동사, 형용사, 관형사, 부사, 감탄사와 같이 공통된 성질을 지닌 낱말끼리 모아 놓은 낱말의 갈래를 의미합니다 [네이버 지식백과].

예를 들어 "정말 재미없는 영화다"를 품사 태깅하면 [('정말', '일반부사'), ('재미없다', '형용사'), ('영화', '보통 명사'), ('이다', '긍정 지정사')]라는 결과가 나오게 됩니다.

 

품사 태깅을 적용한 후, 명사만 추출하거나 주요 품사만 추출해 데이터로 사용할 수 있습니다.

영화 리뷰의 긍/부정을 파악하는데 '이다'라는 단어는 분류에 직접적으로 영향을 미치지 않을 것이라는 가정하에 주요 품사만 추출해 데이터로 사용을 합니다.

위의 예시 중 주요 품사만 추출하면 '정말', '재미없다', '영화'라는 단어가 데이터로 사용됩니다.

 

아래 (그림1)과 같이 영어는 주로 NLTK를 사용해 품사태깅을 합니다.

NLTK(Natural Language Toolkit)는 자연어 처리 및 문서 분석용 파이썬 패키지 입니다. 다양한 기능 및 예제를 가지고 있으며 실무 및 연구에서도 많이 사용됩니다.

(그림1) NLTK POS Tagging 예시

 

한국어는 Konlpy를 사용해 형태소 분석과 품사 태깅을 진행합니다.

형태소는 의미를 가지는 요소로서는 더 이상 분석할 수 없는 가장 작은 말의 단위를 의미합니다.

(그림2) Konlpy 예시

품사 태깅이 항상 좋은 결과를 만들어내는 것은 아닙니다.

특히, 최근 주목 받고 있는 ELMo와 BERT 같은 Contextualized Word Embedding 방법에서는 단어 주변의 문맥 정보를 전체적으로 사용하기 때문에, 주요 품사만 사용하는 방법은 효과가 안 좋을 수 있습니다.

그래서 POS Tagging을 사용해 주요 품사만 사용한 결과 값과 적용하지 않은 결과 값을 비교하는 작업이 필요합니다.

 

전체 코드는 Github에 공개되어 있습니다.

https://github.com/vhrehfdl/Blog_code/blob/master/%EC%8A%AC%EA%B8%B0%EB%A1%9C%EC%9A%B4%20%EC%9E%90%EC%97%B0%EC%96%B4%EC%B2%98%EB%A6%AC/%EC%8A%AC%EA%B8%B0%EB%A1%9C%EC%9A%B4_%EC%9E%90%EC%97%B0%EC%96%B4%EC%B2%98%EB%A6%AC_%5B3%5D_POS_Tagging.ipynb

 

vhrehfdl/Blog_code

Contribute to vhrehfdl/Blog_code development by creating an account on GitHub.

github.com

 

마무리

이번 포스팅에서는 품사 태깅에 대해서 알아보았습니다.

품사 태깅은 학습 모델의 성능이 낮은 경우 성능 향상을 위해 사용되는 전처리 방법 중 하나입니다.

다음 포스팅에서는 Pre Processing 방법 중 하나인 Stemming, Lemmatizing에 대해서 학습해보도록 하겠습니다.

 

 

Comments