ChatGPT로 코딩하는 방법

ChatGPT로 코딩하는 방법

오늘은 ChatGPT를 활용해서 코딩하는 방법을 알아보겠습니다.

ChatGPT 활용 코딩하기

ChatGPT가 다른 부분은 몰라도 코딩에서는 강력한 성능을 보이는데요. 기본적으로가장 큰 오픈 소스 커뮤니티인 GitHub의 코드를 가지고 만들었기 때문입니다.

그래서 Stackoverflow가 아니라 GPT에게 물어보면서 코딩을 할 수 있는데요.

예를 들어 뉴스기사의 제목과 내용을 가지고 긍정, 부정을 나눠주는 코드를 작성해줘라는 프롬프트를 입력하면 아래와 같이 코드를 짜줍니다.

코딩 짜기

ChatGPT는 뉴스 기사의 제목과 내용을 결합하여 감정 분석을 수행하고, 그 결과를 “긍정” 또는 “부정”으로 나누는 코드를 작성해보겠습니다. 여기서는 사전 학습된 KR-FinBERT-SC 모델을 사용하여 감정 분석을 수행하는 코드를 작성해줬는데요.

import requests
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch

# 감정 분석 모델 로드
tokenizer = AutoTokenizer.from_pretrained('snunlp/KR-FinBERT-SC')
model = AutoModelForSequenceClassification.from_pretrained('snunlp/KR-FinBERT-SC')

# 감정 분석 함수
def analyze_sentiment(text):
    inputs = tokenizer(text, return_tensors='pt', truncation=True, padding=True)
    outputs = model(**inputs)
    logits = outputs.logits
    sentiment = torch.argmax(logits, dim=1).item()
    
    if sentiment == 0:
        return "부정"
    elif sentiment == 1:
        return "중"
    elif sentiment == 2:
        return "긍정"

# 뉴스 기사 감정 분석 함수
def analyze_news_article(title, content):
    combined_text = f"{title} {content}"
    sentiment = analyze_sentiment(combined_text)
    return sentiment

# 예시 뉴스 기사 데이터
news_articles = [
    {
        "title": "주식 시장 대폭락, 투자자들 패닉 상태",
        "content": "오늘 주식 시장이 대폭락하여 많은 투자자들이 큰 손실을 입었습니다."
    },
    {
        "title": "혁신적인 신제품 출시, 소비자들 호평",
        "content": "새롭게 출시된 제품이 소비자들 사이에서 큰 인기를 끌고 있습니다."
    }
]

# 뉴스 기사 감정 분석 및 결과 출력
for article in news_articles:
    title = article["title"]
    content = article["content"]
    sentiment = analyze_news_article(title, content)
    print(f"제목: {title}\n내용: {content}\n감정 분석 결과: {sentiment}\n")


주요 부분 설명
감정 분석 모델 로드:

AutoTokenizer와 AutoModelForSequenceClassification을 사용하여 사전 학습된 KR-FinBERT-SC 모델을 로드합니다.
감정 분석 함수 (analyze_sentiment):

입력된 텍스트를 토크나이저로 변환하고, 모델을 통해 감정 분석을 수행합니다.
감정 분석 결과로 logits를 얻고, 가장 높은 값의 인덱스를 sentiment로 설정합니다.
sentiment가 0이면 "부정", 1이면 "긍정"으로 반환합니다.
뉴스 기사 감정 분석 함수 (analyze_news_article):

뉴스 기사의 제목과 내용을 결합하여 감정 분석을 수행합니다.
결합된 텍스트를 analyze_sentiment 함수에 전달하여 감정 분석 결과를 반환합니다.
예시 뉴스 기사 데이터:

예시 뉴스 기사 데이터를 사용하여 제목과 내용을 분석하고, 그 결과를 출력합니다.
이 코드를 사용하여 뉴스 기사의 제목과 내용을 결합한 후 감정 분석을 수행하고, 그 결과를 "긍정" 또는 "부정"으로 나눌 수 있습니다. KR-FinBERT-SC 모델은 한국어 감정 분석에 적합한 사전 학습된 모델입니다.

이 후 이 코드의 정확도를 높이기 위해서 아래의 프롬프트를 추가했는데요.

형태소 및 불용어를 제거하는 데이터를 전처리하는 내용도 추가해줘

ChatGPT가 불용어를 빼고, 형태소 분석을 한 다음 분석을 하게 됩니다.

import requests
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
from konlpy.tag import Okt

# 감정 분석 모델 로드
tokenizer = AutoTokenizer.from_pretrained('snunlp/KR-FinBERT-SC')
model = AutoModelForSequenceClassification.from_pretrained('snunlp/KR-FinBERT-SC')

# 불용어 리스트
stopwords = set(['이', '그', '저', '것', '수', '들', '등', '및', '그', '더', '그러나', '하지만', '그리고', '만약', '그렇다면', '그래서'])

# 형태소 분석 및 불용어 제거 함수
def preprocess_text(text):
    okt = Okt()
    tokens = okt.morphs(text)
    tokens = [word for word in tokens if word not in stopwords]
    return ' '.join(tokens)

# 감정 분석 함수
def analyze_sentiment(text):
    text = preprocess_text(text)  # 텍스트 전처리
    inputs = tokenizer(text, return_tensors='pt', truncation=True, padding=True, max_length=512)  # max_length 설정
    outputs = model(**inputs)
    logits = outputs.logits
    sentiment = torch.argmax(logits, dim=1).item()
    
    # sentiment 값에 따른 해석
    if sentiment == 0:
        return "부정"
    elif sentiment == 1:
        return "중립"
    elif sentiment == 2:
        return "긍정"

# 뉴스 기사 감정 분석 함수
def analyze_news_article(title, content):
    combined_text = f"{title} {content}"
    sentiment = analyze_sentiment(combined_text)
    return sentiment

# 예시 뉴스 기사 데이터
news_articles = [
    {
        "title": "주식 시장 대폭락, 투자자들 패닉 상태",
        "content": "오늘 주식 시장이 대폭락하여 많은 투자자들이 큰 손실을 입었습니다."
    },
    {
        "title": "혁신적인 신제품 출시, 소비자들 호평",
        "content": "새롭게 출시된 제품이 소비자들 사이에서 큰 인기를 끌고 있습니다."
    }
]

# 뉴스 기사 감정 분석 및 결과 출력
for article in news_articles:
    title = article["title"]
    content = article["content"]
    sentiment = analyze_news_article(title, content)
    print(f"제목: {title}\n내용: {content}\n감정 분석 결과: {sentiment}\n")

그리고 에러가 발생하면 바로 그 코드를 넣으면 되는데요.

별다른 설명없이 에러 코드만 넣어도 알아서 답변을 해줍니다. 좀 더 상세한 설명을 원하면 설명을 더 자세히 해달라고 요청하면 됩니다.

다만 코딩 중 주의할 점이 있는데요. 코드를 자기 맘데로 바꾸는 경우가 있어서, 2개를 복사 붙여넣고 무엇이 달라졌는지 물어볼 필요가 있습니다. 그리고 간혹 잘못된 코드를 알려주는 경우도 종종 있는데요. 그래서 돌려보고 에러가 발생하면 그 에러를 해결하라고 알려줄 필요가 있습니다.

이렇게 사용해보니 정말 ChatGPT가 편리합니다. 모르는 부분은 바로바로 알려주는 과외를 받는 느낌이랄까요?

다만 원리적인 부분에 대해서는 개인적으로 추가 공부가 필요할 것 같습니다.

Similar Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다