[랭체인] 텍스트 감성 분류 체인 만들기steemCreated with Sketch.

in #kr7 days ago (edited)

안녕하세요, 여러분! 오늘은 LangChain을 사용하여 간단한 텍스트 감성 분류 체인을 만드는 방법에 대해 알아보겠습니다. 이 튜토리얼을 통해 여러분은 LangChain의 기본 개념을 이해하고, 실제로 작동하는 텍스트 분류 모델을 만들 수 있게 될 거예요.

준비하기

먼저, 필요한 라이브러리를 설치해야 합니다. Google Colab을 사용한다면, 다음 명령어로 필요한 패키지를 설치할 수 있습니다:

!pip install -Uq langchain_core langchain_openai langchain

그 다음, 필요한 모듈을 임포트합니다:

from langchain_core.prompts import ChatPromptTemplate
from langchain.output_parsers.enum import EnumOutputParser
from langchain_openai import ChatOpenAI
from enum import Enum

OpenAI API 키 설정

OpenAI의 API를 사용하기 위해서는 API 키가 필요합니다. Google Colab에서는 다음과 같이 설정할 수 있습니다:

import os
from google.colab import userdata
os.environ["OPENAI_API_KEY"] = userdata.get('OPENAI_API_KEY')

주의: 실제 프로덕션 환경에서는 API 키를 더 안전하게 관리해야 합니다.

감성 분류 체인 만들기

이제 본격적으로 감성 분류 체인을 만들어 보겠습니다.

  1. 먼저, 감성을 나타내는 열거형(Enum)을 정의합니다:
class Sentiment(Enum):
    POSITIVE = 'positive'
    NEGATIVE = 'negative'
  1. 다음으로, 프롬프트 템플릿을 만듭니다:
prompt_template = ChatPromptTemplate.from_template("Classify '{input_text}' as 'positive' or 'negative' only.")
  1. 마지막으로, 체인을 구성합니다:
chain = prompt_template | ChatOpenAI() | EnumOutputParser(enum=Sentiment)

이 체인은 다음과 같이 작동합니다:

  • prompt_template이 입력 텍스트를 포함한 프롬프트를 생성합니다.
  • ChatOpenAI()가 이 프롬프트를 처리하여 응답을 생성합니다.
  • EnumOutputParser가 ChatGPT의 응답을 Sentiment 열거형으로 파싱합니다.

체인 사용하기

이제 만든 체인을 사용해 봅시다:

result = chain.invoke({'input_text':'I love LLM.'})
print(result)  # 출력: <Sentiment.POSITIVE: 'positive'>

result = chain.invoke({'input_text':'I hate LLM.'})
print(result)  # 출력: <Sentiment.NEGATIVE: 'negative'>

결과 분석

우리의 체인은 간단한 문장에 대해 잘 작동하는 것 같습니다. 하지만 복잡한 감정이 섞인 문장에 대해서는 어떨까요?

result = chain.invoke({'input_text':'I love and hate LLM.'})
print(result)  # 출력: <Sentiment.NEGATIVE: 'negative'>

result = chain.invoke({'input_text':'I hate and love LLM.'})
print(result)  # 출력: <Sentiment.NEGATIVE: 'negative'>

흥미롭게도, 모델은 이런 복잡한 감정이 섞인 문장을 주로 부정적으로 분류하는 것 같습니다. 이는 모델이 문장에서 부정적인 요소에 더 민감하게 반응하는 것으로 보입니다.

마치며

이렇게 LangChain을 사용하여 간단한 텍스트 감성 분류 체인을 만들어 보았습니다. 이 예제를 통해 LangChain의 기본적인 사용법과 체인 구성 방법을 배웠습니다.

이 모델은 매우 기본적이지만, 더 복잡한 감성 분석이나 다른 종류의 텍스트 분류 작업으로 확장할 수 있습니다. 예를 들어, 더 많은 감성 카테고리를 추가하거나, 더 정교한 프롬프트를 사용하거나, fine-tuning된 모델을 사용할 수 있습니다.

LangChain의 강력함은 이런 식으로 다양한 컴포넌트를 쉽게 조합하고 확장할 수 있다는 점입니다. 여러분도 이를 기반으로 자신만의 흥미로운 NLP 프로젝트를 만들어 보시는 건 어떨까요?

행운을 빕니다! 🚀

#LangChain

Posted using Obsidian Steemit plugin

Sort:  

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Congratulations, your post has been upvoted by @upex with a 0.22% upvote. We invite you to continue producing quality content and join our Discord community here. Keep up the good work! #upex

Coin Marketplace

STEEM 0.17
TRX 0.13
JST 0.030
BTC 56355.98
ETH 2973.83
USDT 1.00
SBD 2.14