ML 감성분석(Sentiment Analysis)
감성분석은 문서의 주관적인 의견/감정/기분등을 파악하기 위한 방법으로 소셜미디어, 여론조사, 온라인리뷰, 피드백 등 다양한 분야에서 활용되고 있다. 감성분석은 문서내 텍스트가 나타내는 여러가지 주관적인 단어와 문백을 기반으로 감성 수치를 계산 하는 방법을 이용한다. 감성지수는 긍정/부정으로 구성되며 이들을 합산해 긍정 감성 또는 부정 감성 을 결정한다.
감성분석은 머신러닝 관점에서 지도학습과 비지도 학습으로 나눌 수 있다.
-
지도학습
학습데이터와 타켓 레이블 값을 기반으로 감성분석 학습을 수행한뒤 이를 기반으로 다른 데이터의 감성 분석을 예측하는 방법으로 일반적인 텍스트 기반의 분류와 거의 동일함.CountVectorizer,TfidfVectorizer -
비지도학습
Lexicon이라는 일종의 감성 어휘 사전을 이용한다.Lexicon은 감성분석을 위한 용어와 문맥에 대한 다양한 정보를 가지고 있으며, 이를 이용해 문서의 긍정적 부정적 감성여부를 판단한다.
Lexicon
Lexicon은 Positive, Negative 감성의 정도를 의미하는 감성지수(Polarity score)를 가지고 있다.
감성지수는 주변단어, 문맥, Part of Speech 를 참고해 결정된다.
대표적인 감성사전은 다음과 같다.
-
WordNet
다양한 상황에서 같은 어휘라도 다르게 사용되는 어휘의 semantic 정보를 제공한다. 이를위해 품사로 구별된 단어를 Synset(Set of cognitive synonyms;동의어세트)이라는 개념을 이용해 표현한다. -
SentiWordNet
WordNet의 Synset 개념을 감성분석에 적용한 것이다.Process
- 문서를 문장 단위로 분해
- 문장을 단어로 분해 후 토큰화&품사태깅
- 품사가 붙여진 단어를 기반으로 synset객체와 senti_synset 객체 생성
- senti_synset에서 positive, negative 지수를 합산해 특정 threshold기준으로 긍정/부정 감성 판별
-
VADER
소셜미디어 텍스트에 대해 감성분석을 제공하기 위한 패키지다.
비교적 빠른 속도로 인해 다용량 텍스트 데이터에 이용된다. -
Pattern
예측성능측면에서 가장 주목받고 있는데 python 3 호환안됨…
Unsupervised Sentiment Analysis Tutorial
SentiWordNet을 이용한 감성분석
문장 - 단어토큰 - 품사 - 감성지수 계산을 진행한다.
1 | |
VADER를 이용한 감성분석
polarity_scores 함수 덕에 sentiwordNet 보다 쉽게 감성 분석을 할 수 있다.
neg : 부정 neu: 중립 pos : 긍정 compound 부정/중립/긍정을 조합해서 -1~ 1사이값으로 나타냄
1 | |
Practice
- Sentiment Analysis link
Reference
- 파이썬 머신러닝 완벽가이드 서적