본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 15. 11:54

3. AI를 활용한 감성 분석 (Analyze Sentiment with AI)

요약

OpenAI API를 사용하여 텍스트의 감성(긍정, 부정, 중립)을 분석하는 Python 기반 감성 분석기 구축 실습 가이드입니다. 가상 환경 설정부터 API 연동, 스크립트 작성 및 실행까지의 전 과정을 단계별로 다룹니다.

핵심 포인트

  • OpenAI API를 활용한 Python 기반 감성 분석기 구현
  • 가상 환경(venv) 생성 및 환경 변수 관리 방법
  • 텍스트 데이터의 감정적 맥락 파악을 위한 프롬프트 활용
  • 실제 개발 환경에서의 디렉토리 및 스크립트 관리 실습

실습 정보 (Lab Information)

데이터센터 AI 엔지니어링 팀은 개발자 커뮤니케이션의 어조를 해석하는 도구를 개발하고 있습니다. 당신은 주어진 메시지나 피드백이 긍정적(Positive), 부정적(Negative), 또는 중립적(Neutral)인지 식별하여 팀이 감정적 맥락을 빠르게 파악할 수 있도록 돕는 Python 기반 AI 감성 분석기(Sentiment Analyzer)를 구축하는 과제를 맡았습니다.

OpenAI API를 사용하여 주어진 텍스트의 감성(Positive, Negative, 또는 Neutral)을 분석하는 /root/openaiproject/sentiment_analyzer.py라는 이름의 Python 프로그램을 생성하세요.

제공된 api_key와 base_url을 사용하여 OpenAI 클라이언트를 초기화합니다.

다음 기능을 수행하는 analyze_sentiment(text: str) -> str 함수를 정의합니다:
...

참고 사항 (Notes):

반드시 /root/openaiproject 디렉토리에서 작업해야 합니다.

API 자격 증명은 /root/.bash_profile에 제공됩니다.
...

python3 -m venv venv && source venv/bin/activate && pip install openai

출력은 AI의 응답에서 추출된 대소문자를 구분하는 단일 단어 및 짧은 이유여야 합니다.

최대 10번의 요청이 허용됩니다. 그 이후에는 속도 제한(rate limiter) 오류가 발생할 수 있습니다. 따라서 요청을 신중하게 사용하십시오.

실습 솔루션 (Lab Solutions)

파트 1: 실습 단계별 가이드라인 (Part 1: Lab Step-by-Step Guidelines)

1단계 — 프로젝트 디렉토리로 이동 (Step 1 — Navigate to the Project Directory)

cd /root/openaiproject

2단계 — 가상 환경 생성 및 활성화 (Step 2 — Create and Activate a Virtual Environment)

python3 -m venv venv
source venv/bin/activate

3단계 — 환경 변수 확인 (Step 3 — Verify Environment Variables)

이전 실습을 바탕으로 어떤 OpenAI 변수를 사용할 수 있는지 확인하세요:

printenv | grep OPENAI

아마 다음과 같이 보일 것입니다:

OPENAI_API_KEY=...
OPENAI_API_BASE=...

환경에 실제로 존재하는 변수 이름을 사용하세요.

4단계 — sentiment_analyzer.py 수정 (Step 4 — Edit sentiment_analyzer.py)

vi /root/openaiproject/sentiment_analyzer.py

내용을 다음과 같이 교체합니다:

import os
from openai import OpenAI

...

저장 및 종료:

5단계 — 스크립트 실행 (Step 5 — Run the Script)

python sentiment_analyzer.py

6단계 — 출력 확인 (Step 6 — Verify Output)

예상 형식:

~/openaiproject ➜  python sentiment_analyzer.py
Sentiment:Positive  
Reason: The text expresses happiness and satisfaction with the new update.

Part 2: 초보자를 위한 쉬운 설명 (Simple Beginner-Friendly Explanation)

  • 이 실습의 목적 (What This Lab Does)

이 실습에서 여러분은 간단한 AI 기반 감성 분석기 (sentiment analyzer)를 구축합니다.

AI는 텍스트를 읽고 감성이 다음 중 무엇인지 결정합니다:

긍정 (Positive)
부정 (Negative)
중립 (Neutral)

또한 왜 그런 결정을 내렸는지 이유를 설명합니다.

이는 팀이 메시지, 댓글 또는 피드백의 감정적 어조 (emotional tone)를 빠르게 이해하는 데 도움을 줍니다.

  • 프롬프트 (Prompt)를 만드는 이유 (Why We Create a Prompt)
prompt = f"""  
Analyze the sentiment of the following text...  
"""

프롬프트 (prompt)는 우리가 AI에게 보내는 지시 사항입니다.

프롬프트는 모델에게 다음을 알려줍니다:

수행할 작업 (task)
허용되는 감성 라벨 (sentiment labels)
응답이 따라야 할 형식 (format)

좋은 프롬프트는 일관된 결과를 생성하는 데 도움이 됩니다.

  • 사용자 메시지 (User Message)를 사용하는 이유 (Why We Use a User Message)
messages = [
{
"role": "user",
"content": prompt
}
]

사용자 메시지 (user message)에는 다음이 포함됩니다:

지시 사항 (instructions)
분석할 텍스트 (text)

다음과 같이 생각하면 쉽습니다:

프롬프트 (Prompt) = 작업 설명 (task description) + 데이터 (data)
사용자 메시지 (User message) = 모델로 전송되는 것

  • 온도 (Temperature)를 0으로 설정하는 이유 (Why Temperature is Zero)
temperature = 0.0

온도 (Temperature)는 무작위성 (randomness)을 제어합니다.

0.0이라는 값은 다음을 의미합니다:

매우 일관된 결과 (consistent results)
최소한의 창의성 (minimal creativity)
더 예측 가능한 분류 (predictable classifications)

감성 분석에서는 신뢰할 수 있는 답변을 원하기 때문에 이 설정이 유용합니다.

분석 작동 원리 (How the Analysis Works)

  1. 스크립트가 텍스트를 받습니다.
  2. 텍스트가 프롬프트에 삽입됩니다.
  3. 프롬프트가 AI 모델로 전송됩니다.
  4. 모델이 감성을 결정합니다.
  5. 모델이 짧은 이유를 제공합니다.
  6. 결과가 터미널 (terminal)에 출력됩니다.

입력 예시 (Example Input)
I am really happy with the new update!

다음 문구는:

really happy

만족감과 열정을 보여줍니다.

출력 예시 (Example Output)
Sentiment:Positive
Reason:Expresses happiness and satisfaction with the update.

감성과 이유만 출력되므로 결과를 읽고 처리하기 쉽습니다.

리소스 및 다음 단계 (Resources & Next Steps)
📦 전체 코드 저장소 (Full Code Repository): KodeKloud Learning Labs
💬 토론 참여하기 (Join Discussion): DEV Community - 여러분의 생각과 질문을 공유해 주세요
💼 네트워킹 (Let's Connect): LinkedIn - 여러분과 연결되기를 바랍니다
크레딧 (Credits)
• 모든 실습 자료 출처: KodeKloud
• 이러한 가치 있는 리소스를 제공해 주신 것에 대해 진심으로 감사드립니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0