Sentiment Analysis
감성 분석은 텍스트의 의견을 긍정, 부정 또는 중립으로 분류합니다. 어휘집 및 Transformer 방식, 측면 및 편향을 다룹니다.
의견 마이닝이라고도 하는 감성 분석은 텍스트가 표현하는 태도를 파악하는 자연어 처리(NLP) 작업입니다. 일반적으로 긍정, 부정, 중립으로 분류하며, 때로는 점수, 별점, 분노나 기쁨과 같은 감정으로 나타냅니다. 기업은 팀이 모두 읽기 어려울 만큼 많은 양의 상품 리뷰, 지원 티켓, 설문 응답, 소셜 미디어 게시물에 감성 분석을 수행해 제품이나 브랜드에 대한 고객의 감정을 측정합니다. 고객 지원 챗봇은 화난 고객을 먼저 상담 직원에게 연결하는 데 감성 분석을 사용합니다.
분석 수준#
문서 수준 분석은 리뷰 전체에 하나의 레이블을 지정하고, 문장 수준 분석은 문장마다 레이블을 지정합니다. 세부 특성 기반 감성 분석(ABSA)은 더 나아가 텍스트에 언급된 각 특성에 대한 의견을 찾습니다. "화면은 정말 멋지지만 배터리는 오전 내내 겨우 버틴다"는 화면에 대해서는 긍정적이고 배터리에 대해서는 부정적입니다. SemEval-2014 ABSA 공유 과제는 노트북 및 레스토랑 리뷰를 사용해 이 분석 방식을 표준화했습니다. 세부 특성 추출은 문장이 다루는 대상을 모두 찾는다는 점에서 개체명 인식(NER)과 겹치는 부분이 있습니다.
사전에서 트랜스포머까지#
감성 사전 기반 방법은 긍정적 또는 부정적 점수가 매겨진 단어 목록인 감성 사전의 단어 수를 세고, 부정 표현("좋지 않다")과 강조 표현("매우 좋다")에 대한 규칙을 추가합니다. Peter Turney의 비지도 방법(2002)은 웹에서 "훌륭하다" 또는 "형편없다"와 자주 함께 나타나는 정도를 기준으로 구문의 점수를 매겼습니다. VADER(2014)는 이모티콘, 대문자, 느낌표를 포함해 소셜 미디어에 맞도록 감성 사전과 규칙을 조정했습니다. 같은 해인 2002년에 Bo Pang, Lillian Lee, Shivakumar Vaithyanathan은 영화 리뷰로 나이브 베이즈, 최대 엔트로피, 서포트 벡터 머신(SVM) 분류기를 학습했습니다. 이들은 해당 분류기가 사람이 만든 키워드 목록보다 우수했지만, 주제 분류보다 감성 분류에서 성능이 낮다는 점을 확인했습니다.
스탠퍼드 감성 트리뱅크(2013)는 영화 리뷰 문장 11,855개에서 구문 215,154개에 레이블을 지정했습니다. 이를 통해 모델은 "not"과 "but" 같은 표현이 뒤에 이어지는 문장의 감성을 바꾸는 방식을 학습할 수 있었고, 이 데이터의 이진 분류 버전인 SST-2는 GLUE 벤치마크의 일부가 됐습니다. 오늘날 대부분의 분류기는 레이블이 지정된 예제를 사용해 BERT와 같은 사전 학습된 트랜스포머를 파인튜닝하고, 소프트맥스로 출력 점수를 클래스 확률로 변환합니다. SST-2로 파인튜닝한 DistilBERT는 검증 세트에서 정확도 91.3%를 기록합니다:
from transformers import pipeline
# DistilBERT fine-tuned on the Stanford Sentiment Treebank (SST-2)
classifier = pipeline("sentiment-analysis", model="distilbert/distilbert-base-uncased-finetuned-sst-2-english")
reviews = [
"The battery life is not bad at all.",
"Oh great, it crashed again five minutes after the update.",
"The screen is gorgeous, but the battery barely lasts a morning.",
]
for review, result in zip(reviews, classifier(reviews)):
print(f"{result['label']:<8} {result['score']:.3f} {review}")분류기는 "not bad at all"을 긍정(POSITIVE, 0.997)으로, 비꼬는 표현인 "Oh great" 리뷰를 부정(NEGATIVE, 0.998)으로 분류합니다. 세 번째 리뷰는 화면을 칭찬하고 배터리를 비판하지만, 문서 수준 모델은 부정(NEGATIVE, 0.966)이라는 레이블 하나만 반환할 수 있으므로 칭찬 내용이 결과에서 사라집니다. 대규모 언어 모델(LLM)도 프롬프트만으로 감성을 제로샷 분류할 수 있으며, 세부 특성마다 하나씩 레이블을 반환할 수도 있습니다. 다만 리뷰당 비용은 파라미터 6,600만 개를 가진 분류기보다 훨씬 높습니다.
멀티모달 감성 분석#
사람은 말뿐 아니라 목소리 톤과 표정으로도 의견을 표현하며, 풍자는 목소리 톤에서만 드러나는 경우가 많습니다. 공개 당시 이 작업에서 가장 큰 데이터셋이었던 CMU-MOSEI(2018)는 화자 1,000명의 동영상 구간 23,453개에 감성 레이블을 지정했습니다. 다중 모달 학습 모델은 감성을 예측하기 위해 대본, 오디오, 화자의 얼굴을 결합하며, 이는 감성 컴퓨팅과 같은 목표입니다. 얼굴 채널은 이미지 분류 작업입니다. 표정별로 나눈 폴더에 얼굴 크롭 이미지를 저장해 학습한 Ultralytics YOLO26 분류 모델은 result.probs에서 각 표정에 대한 확률을 반환합니다. 이는 위의 텍스트 분류기가 생성하는 것과 같은 종류의 소프트맥스 출력입니다.
과제#
풍자, 반어, 비교 표현("예전 것보다 낫지만, 그렇다고 대단한 건 아니다")은 여전히 처리하기 어렵습니다. 감성을 나타내는 단어는 도메인에 따라 의미가 달라집니다. "예측할 수 없는"이라는 표현은 영화 줄거리를 칭찬할 때는 긍정적이지만 자동차 조향을 비판할 때는 부정적입니다. 따라서 새로운 학습 데이터 없이 영화 리뷰로 학습한 모델을 상품 리뷰에 적용하면 정확도가 떨어집니다. 모델은 데이터에 내재된 편향도 물려받습니다. Svetlana Kiritchenko와 Saif Mohammad는 2018년에 이름이나 "he", "she"와 같은 성별 표현만 다른 문장으로 감성 시스템 219개를 테스트했습니다. 여러 시스템이 이름에서 유추되는 성별이나 인종에 따라 일관되게 더 높거나 낮은 점수를 부여했습니다.
감성 분석과 관련 용어 비교#
- 텍스트 분류: 주제나 스팸처럼 텍스트에 레이블을 할당하는 일반적인 작업입니다. 감성 분석은 의견 레이블을 사용하는 텍스트 분류입니다.
- 감정 인식: 텍스트, 얼굴, 음성 또는 생리 신호에서 구체적인 감정을 탐지합니다. 감성 분석은 일반적으로 의견을 극성으로 단순화합니다.
- 개체명 인식: 텍스트에 언급된 대상을 찾고, ABSA는 각 언급을 그에 표현된 의견과 연결합니다.










