NLP - 의미 분석과 감정 분석
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
인공지능, 머신러닝
대상자
- 소프트웨어 개발자 및 데이터 과학자
- 중간~고급 수준 (벡터 연산, NLP 모델 이해 필요)
핵심 요약
- Word2vec은
CBOW
와skip-gram
두 방식으로 텍스트의 의미 유사도를 수치화하여 표현함. - spaCy의
en_core_web_lg
모델은 300차원 벡터를 제공하며,nlp().vector
로 문서 및 단어 벡터를 추출 가능. - VADER는 감정 분석에 특화된 도구로,
nltk
에서 제공하며 대소문자, 강조 기호를 고려해 감정 점수 계산.
섹션별 세부 요약
1. Word2vec의 기본 개념
CBOW
는 주변 문맥으로 중심 단어를 예측,skip-gram
은 중심 단어로 문맥을 예측하는 반대 방식.- 단어 벡터는
300차원
으로 표현되며,100~1000
차원 범위에서 훈련 가능. en_core_web_lg
모델은word2vec
벡터 포함,sm
모델은 포함하지 않음.
2. spaCy를 통한 벡터 활용
Doc
및Span
객체는 토큰 벡터의 평균으로 생성 가능 (예:nlp('The quick brown fox...').vector
).token.similarity()
는 코사인 유사도를 기반으로 단어 간 유사도 계산.nlp.vocab.vectors.shape
로 벡터 차원 확인 가능.
3. 벡터 연산 및 예제
king - man + woman = queen
과 같은 벡터 산술로 성별/직책 관련 관계 유추 가능.scipy.spatial.distance.cosine
을 이용한 유사도 계산 예제 제공.
4. VADER 감정 분석 도구
VADER
는 사전 기반 감정 분석으로,nltk
에서 제공.- 강한 감정 표현(
LOVE!!!
,WORST
)을 고려해 점수 계산. - 사기 언어는 감지 불가능 (예: "I love this movie, but it's the worst!").
결론
- Word2vec은
spaCy
의en_core_web_lg
모델을 활용해 빠르게 구현 가능. - 감정 분석은 VADER로 비지도 학습 기반으로 처리,
nltk
에서 직접 사용. - 대규모 텍스트 처리 시 사전 훈련된 벡터 모델 사용을 권장.