▶텍스트 분류
앞의 포스팅에서도 작성했듯, 자연어 처리 기술을 활용해 글의 정보를 추출하고, 문제에 맞게 사람이 정한 범주(Class)로 분류하는 문제입니다. 이번 포스팅에서는 영어로 구성된 영화 감상평을 보고, 긍정인지 부정인지 분류하는 과정과, 모델 종류들을 설명하겠습니다.
▶사용할 데이터
Bag of Words Meets Bags of Popcorn데이터입니다. 이 데이터셋은 인터넷 영화 데이터베이스(IMDB)에서 나온 영화 평점 데이터를 활용한 캐글 문제입니다. 각 데이터는 영화 리뷰 텍스트와 평점에 따른 감정(긍정 혹은 부정) 값으로 구성되어있습니다.
▶데이터 처리 과정
첫 번째 과정은 데이터를 불러오고, 정제되지 않은 데이터를 활용하기 쉽게 전처리하는 과정입니다. 두 번째 과정은 데이터를 분석하는 과정이고, 마지막 과정은 실제 문제를 해결하기 위해 알고리즘을 모델링하는 과정입니다.
(1) 데이터 분석
먼저 데이터를 불러온 뒤, 데이터의 구조, 데이터의 개수, 문장 길이 히스토그램, 라벨의 분포 등을 통해 데이터를 파악합니다.
(2) 데이터 전처리
리뷰 데이터 속에 존재하는 "<br />", "\","..."같은 특수문자 혹은 HTML태그를 제거합니다. 이후에는 조사, 관사 등 불용어를 제거해줍니다. 또한 모델에 입력으로 넣어주기 위해서는 자연어로 표현된 데이터를 수치값으로 바꿔줘야합니다. 문장의 길이는 모두 다르기 때문에, 통일 시켜주기 위해서, 짧은 데이터의 경우 0 값으로 패딩하는 작업을 진행합니다.
※불용어도 문장의 일부가 아닌가요? 왜 제거하나요?
→경우에 따라 불용어가 포함된 데이터를 모델링하는 데 있어 노이즈를 줄일 수 있는 요인이 될 수 있기 때문에, 불용어를 제거해주는 것이 더 좋을 수 있습니다. 하지만, 데이터가 많고, 문장 구문에 대한 전체적인 패턴을 모델링하고자 한다면 불용어를 제거하지 않는 것이 좋습니다.
(3) 모델링
전처리된 데이터를 모델에 적용하고, 주어진 텍스트에 대해 감정이 긍정인지 부정인지 예측할 수 있는 모델을 만드는 것입니다. 모델은 선형 회귀, 랜덤 포레스트, 합성곱 신경망(CNN), 순환 신경망(RNN)모델에 대해 설명하겠습니다.
① 회귀 모델
선형 회귀 모델은 하나의 선형 방정식으로 표현해 예측할 데이터를 분류하는 모델입니다. 예를들어 <그림1>과 같은 데이터가 주어졌을때, 이 데이터를 2개의 범주로 분류해야합니다. 이때 하나의 직선으로 데이터를 구분하면 <그림2>와 같이 직선으로 표현할 수 있습니다.