Search

LG 질문별 인사이트_Gabe

상태
진행 중
담당자
사람

개요

LG 질문별 레포트 현재까지 버전을 공유드립니다.
현재 chat 타입만 인사이트를 전부 뽑은 상태입니다.

구글 Docs

데이터

data
202509_Curi_integrated Raw(SP.FR.UK).xlsx
5.2 MB
질문별 question_id 정리(국가별로 id가 달라서 정리했습니다)
question_info.xlsx
13.1 KB

코드

q_list에 문항 넣어서 결과 보면서 작업했습니다.
18번 문항만 토큰 초과 에러나서 sampling 해서 토큰 줄였습니다
gemini-2.5-pro가 입력 100만 토큰이라 모델 바꾸는 것도 좋을 것 같습니다(저는 제미나이랑 gpt 고민하다가 이전에 서던포스트 할 때 gpt가 결과가 좋았어서 gpt로 했습니다)
import pandas as pd from openai import OpenAI from tqdm import tqdm import json df = pd.read_excel("202509_Curi_integrated Raw(SP.FR.UK).xlsx") q_df = pd.read_excel("question_info.xlsx") client = OpenAI(api_key="") def gen_isight(user_info, survey_data): prompt = f""" 다음은 LG에서 진행한 가전 서비스 설문 결과임. [유저 정보] {user_info} [설문 결과] {survey_data} ## 작성 지침 1. 설문 결과를 바탕으로 **인사이트 리포트**를 2~3문단으로 작성. 2. 각 문단에는 **소제목(## 수준 헤딩)**을 붙일 것. 3. 반드시 설문 응답의 **원문 인용**을 포함할 것. 단, 각 문단마다 1~2개의 인용만 제시할 것. 인용은 "한글 번역" (원문) 형태로 병기할 것. 예: "저는 직접 보고 시험해 보고 싶습니다."(Parce que je veux voir et tester les appareils en personne) 4. 리포트는 반드시 **국가별 비교**를 포함할 것. 5. 문체는 **공식 보고서 양식**을 따를 것. (객관적, 간결한 서술형, '~함/~임' 체) 6. 출력은 **Markdown 형식**으로 줄 것. 7. **시사점은 작성하지 말 것.** 8. 마지막에 2~3문장으로 요약문을 작성할 것. 9. 리포트는 **한글로 작성**할 것. """ response = client.chat.completions.create( model="gpt-5", messages=[ {"role": "system", "content": "You are a professional market research analyst. Always answer in Markdown."}, {"role": "user", "content": prompt} ] ) result = response.choices[0].message.content.strip() print(result) # 디버깅용 try: return result except: return {"category": "기타", "status": "error"} # fallback # ----------------------------- # DataFrame 처리 # ----------------------------- result_list = [] # 결과 담을 리스트 user_df = df[df['question_type']=='single-choice'] user_info = str(user_df[['Country', 'useridx', 'question_text', 'answer_text']].values.tolist()) q_list = ["Q24"] for q in tqdm(q_list): temp = q_df[q_df['Q_no']==q][['question_id', 'question_text_ko']] q_ids = temp['question_id'].values.tolist() q_txt = temp['question_text_ko'].values[0] cand_df = df[df["question_id"].isin(q_ids)].copy() # cand_df = cand_df.sample(frac=0.85, random_state=42) #18번 문항만 토큰 초과 에러나서 샘플링 사용 survey_data = str(cand_df[['Country', 'useridx', 'question_text', 'answer_text']].values.tolist()) result = gen_isight(user_info, survey_data) result_dic = {"question_text_ko":"q_txt", "result":result} result_list.append(result_dic)
Python
복사