Python

[파이썬] 허깅 페이스 모델을 활용한 텍스트 감정 분석

weweGH 2025. 3. 18. 17:00
반응형

허깅페이스를 활용한 텍스트 감정 분석
허깅페이스를 활용한 텍스트 감정 분석


허깅 페이스 모델을 활용한 텍스트 감정 분석


들어가며


허깅 페이스는 머신러닝 라이브러리를 제공하는 인공지능 플랫폼입니다. 자연어 처리 기술이 발전하며 '감정 분석'은 고객 리뷰 분석, SNS 모니터링 등 다양한 분야에서 활용이 가능합니다. 특히, 허깅 페이스의 사전 학습된 모델을 활용하면 모델 학습 과정 없이 간단한 코드만으로 감정 분석을 할 수 있습니다.

이 글에서는 허깅 페이스 파이프라인을 활용한 기본 감정 분석, 특정 모델을 활용한 감정 분석과 한국어 감정 분석 모델을 활용하는 방법에 대해 소개합니다.


필요한 패키지인 transformers와 torch를 설치합니다.

pip install transformers torch

  • 허깅 페이스 파이프라인을 활용한 감정 분석
  • 허깅 페이스의 특정 모델을 활용한 감정 분석
  • 허깅페이스의 한국어 모델을 활용한 한국어 감정 분석

허깅 페이스 파이프라인을 활용한 감정 분석


허깅 페이스의 사전 학습된 모델을 활용하면 간단하게 텍스트 감정 분석을 할 수 있습니다.

파이프라인은 pipeline('sentiment-analysis')를 호출하면, 자동으로 가장 적절한 감정 분석 모델을 불러옵니다. 현재는 기본적으로 distilbert-base-uncased-finetuned-sst-2-english 모델을 사용합니다.

파이프라인을 활용한 "I love python" 문장의 감정 분석 결과는 다음과 같습니다. 감정 결과는 긍정/부정을 나타내는 label과 확률 점수인 score로 출력됩니다.

from transformers import pipeline

# 감정 분석 파이프라인 로드
classifier = pipeline("sentiment-analysis")

# 감정 분석 수행
text = "I love python"
result = classifier(text)

print(result)

감정 분석 결과
감정 분석 결과


감정 분석에 활용한 모델을 활용하는 방법은 다음과 같습니다. 해당 문장에 활용한 모델은 디폴트 모델인 distilbert-base-uncased-finetuned-sst-2-english입니다.

from transformers import pipeline

classifier = pipeline("sentiment-analysis")
print(classifier.model.name_or_path)

감정 분석 모델 확인
감정 분석 모델 확인

반응형

허깅 페이스의 특정 모델을 활용한 감정 분석


파이프라인의 기본 모델이 아닌 특정 모델을 활용하는 방법은 다음과 같습니다. pipeline 내에 특정 모델을 지정하여 사용할 수 있습니다.

bert-base-multilingual-uncased-sentiment는 다국어 감정 분석을 위한 BERT 기반 모델로, 영어뿐만 아니라 한국어를 포함한 여러 언어의 텍스트 감정 분석이 가능합니다.

위와 동일한 문장에 대한 감정 분석 결과는 다음과 같습니다.

label은 감정을 별점 1~5로 분류하여 결과를 출력합니다. 즉, "I love python"의 감정 분석 결과는 5 stars로 '가장 긍정적인 감정'을 의미합니다. score는 모델이 해당 감정(5 starts)에 대해 얼마나 확신하는지를 확률로 나타냅니다. 결과는 0.85이므로 꽤 높은 확신을 가지고 있음을 뜻합니다.

from transformers import pipeline

classifier = pipeline(
    "sentiment-analysis",
    model="nlptown/bert-base-multilingual-uncased-sentiment")

result = classifier("I love python")

print(result)

nlptown 감정 분석 결과_긍정
nlptown 감정 분석 결과_긍정


"This is the worst experience ever."에 대한 감정 분석 결과는 다음과 같습니다. 1 star이므로 매우 부정적인 문장으로 판단했음을 나타냅니다.

from transformers import pipeline

classifier = pipeline(
    "sentiment-analysis",
    model="nlptown/bert-base-multilingual-uncased-sentiment")

result = classifier("This is the worst experience ever.")

print(result)

nlptown 감정 분석 결과_부정
nlptown 감정 분석 결과_부정


허깅페이스의 한국어 모델을 활용한 한국어 감정 분석


한국어 문장에 대한 감정 분석은 한국어 전용 모델을 사용해야 합니다. sangrimlee/bert-base-multilingual-cased-nsmc를 활용하는 방법은 다음과 같습니다.

sangrimlee/bert-base-multilingual-cased-nsmc 모델은 네이버 영화 리뷰 데이터셋(NSMC)을 활용하여 학습된 BERT 기반의 감정 분석 모델로, 한국어 텍스트의 긍정/부정을 분류합니다.

"이 영화는 정말 최고였어요!"에 대한 감정 분석 결과는 다음과 같습니다. label은 '긍정'으로 이에 대한 score는 99.44%입니다.

from transformers import pipeline

classifier = pipeline(
    'sentiment-analysis',
    model='sangrimlee/bert-base-multilingual-cased-nsmc'
    )

result = classifier("이 영화는 정말 최고였어요!")

print(result)

한국어 감정 분석 결과_긍정
한국어 감정 분석 결과_긍정


"이 영화는 시간 낭비였어요."에 대한 감정 분석 결과는 다음과 같습니다. label은 '부정'으로 이에 대한 score는 99.58%입니다.

from transformers import pipeline

classifier = pipeline(
    'sentiment-analysis',
    model='sangrimlee/bert-base-multilingual-cased-nsmc'
    )

result = classifier("이 영화는 시간 낭비였어요.")

print(result)

한국어 감정 분석 결과_부정
한국어 감정 분석 결과_부정


반응형