0. 개요
IMDB 영화평 데이터
보통 label이 분류되어있지 않은 데이터에 활용
비지도 감성분석은 Lexicon 기반
대표 패키지 NLTK
WordNet 모듈 : semantic분석을 제공하는 영어 어휘 사전
semantic : 문맥상 의미
ex) present는 선물? 현재?
따라서, 개별 단어를 이러한 문맥상 의미를 담고 있는 'Synset' 이라는 개념으로 표현함
SentiWordNet
(0) ipynb :
(1) 개념 : NLTK의 WordNet과 유사하게 WordNet의 감성 단어 사전을 구현한 것
(2) WordNet 활용
(3) 감성지수와 객관성 지수
(4) SentiWordNet을 이용한 영화 감상평 감성 분석
(5) 한계
VADER
(0) ipynb :
(1) 개념
10명의 사람이 해당 단어에 매긴 감정점수를 기반
두 번째 컬럼이 평균
한 글자로 이루어진 단어는 제외
ex) i, a, ..
부정적 동사가 있으면 -0.74의 가중치를 곱함 ex) cannot, aren't
대문자는 강조의 의미로 positive일 경우 +0.733, nagative인 경우 -0.733
부사같은 단어들은 명사에 가중치를 부여. positive일 경우 +0.293, negative일 경우 -0.293
수식어의 위치에 따라 다른 가중치가 부여됨, 단어와 가까운 수식어가 더 높은 점수를 받음
but의 경우 내용의 반전이기 때문에 단어의 앞에 있을 경우 0.5를 곱하고 뒤에 있을경우 1.5를 곱함
이렇게 계산된 값을 -1~1 사이로 normalize함
(2) 활용
Sentiment Intensity Analyzer클래스로 감성분석하기
미세한 차이에 따른 강도 변화 확인
ex) 대문자와 소문자
emoji도 가능!
(3) Sentiwordnet과의 비교
3. Pattern
CountVectorizer
corpus = [
'한글도 되나요?',
'한글은 안 되는 거 같은데',
'안 되나요',
'영어는 되나요?',
'영어는 되네요'
]
vect = CountVectorizer()
vect.fit(corpus)
vect.vocabulary_
vect.transform(['한글도 되나요?']).toarray()
TF-IDF Vectorizer
$$ idf = log(n/(1+df)) $$
corpus = [
'한글도 되나요',
'한글은 안 되는 거 같은데',
'안 되나요',
'영어는 되나요',
'영어는 되네요'
]
tfvect = TfidfVectorizer()
tfvect.fit(corpus)
tfvect.transform(['한글도 되나요']).toarray()
IMDB 영화평 데이터
한글 데이터에도 적용해보기