반응형

저번 시간의 Naive Bayes Classifier에 이어서 Doc2Vec에 대해 알아보겠습니다.

 

Doc2Vec은 벡터 공간 모형의 일종으로 간단한 신경망 모형을 통해 만들어지는 모델입니다.

Word2Vec과 유사하지만 단어가 아닌 문장, 문단, 문서를 통해 벡터를 만들기 때문에 단어간의 유사성 뿐만 아니라 문서의 구성요소간의 유사성을 정의하고 계산할 수 있습니다.

즉, 문맥을 고려한 분석이 가능하다는 것이 가장 큰 장점입니다.

 

Doc2Vec을 활용한 감성 분석을 하기 위해 먼저 gensim 외 필요한 패키지를 불러옵니다.

 

Doc2Vec 모델 생성을 위한 gensim 패키지!

 

Text preprocessing 을 위한 nltk패키지

 

Naive Bayes와 같은 방식을 통해 전처리와 train/test data셋을 생성합니다.

 

리뷰 리스트와 레이블 리스트를 합쳐서 LabeledLineSentence 객체를 생성합니다.

그 다음 Doc2Vec모델을 다음과 같이 학습시킵니다.

size 는 feature 벡터의 차원입니다.

window는 문서의 내에서의 예측을 위한 예측된 단어와 문맥의 단어들 사이의 최대 거리입니다.

dm은 트레이닝 알고리즘으로 distributed memory가 default 값입니다.

alpha값은 초기 학습률(learning rate)이고 min_alpha는 alpha값이 학습과정에서 선형으로 줄어들어서 도달하는 최소 값입니다.

min_count 이하의 total frequency를 가진 단어들은 모두 무시됩니다.

workers는 cpu의 코어 수에 따라 multi-threads를 지원해서 병렬처리하는 옵션입니다.

그 밖의 옵션에 대한 설명은 https://radimrehurek.com/gensim/models/doc2vec.html을 참고해 주세요.

 

 

이제 생성된 모델을 통해서 앞서 NBC와 같이 train 셋에 대해 감성 분석을 시행하겠습니다.

logistic regression classifier를 이용해서 긍, 부정으로 분류하였습니다.

 

test 셋에서 출력해본 결과 약 91.65%의 정확도를 보였습니다. NBC보다 높은 정확도를 보였지만 전체데이터(25000)를 대상으로 한 경우 정확도가 79%대로 떨어지는 모습을 보였습니다.

 

특정 분석법이 절대 우위에 있는 것이 아니라 다양한 분석방법을 시행해보고 결과를 비교해 보는 것이 좋은 방법 같습니다.

다음 시간에는 감성 분석의 마지막 시간으로 인공신경망(ANN)을 활용한 감성분석을 해보도록 하겠습니다.

반응형

+ Recent posts