Python
[Python 프로젝트] 맛집 리뷰 자동화 만들기 #4 미니
creato
2024. 12. 12. 23:10
728x90
반응형
SMALL
[Python 프로젝트] 맛집 리뷰 자동화 만들기 #3 AI 연동하기
[Python 프로젝트] 맛집 리뷰 자동화 만들기 #2 GUI 만들기[Python 프로젝트] 맛집 리뷰 자동화 만들기 #1 함수 맛보기예전에 내 맛집 포스팅을 보고는 내용이 비슷비슷하여사진만 넣으면 알아서 써주
creatolog.tistory.com
기초도 중요하기는 한데 가끔은 환기도 시켜줘야 합니다.
지난번에 연결했던 AI는 너무 느린 친구여서
이번에는 AI까지 직접 만드는 방향으로 가보기로 했는데.
AI를 직접 만드는 건 너무 머나먼 이야기이니,
구조만 파악해 보는 방법으로 미니 버전 만들어봅니다.
맛집 리뷰 자동화 만들기 미니
1. 프로그램 구조 설명
1. GUI
- 화면 구성, 입력값 받기
- 가게명/메뉴 입력창
- 키워드 체크박스
- 리뷰 생성 버튼
- 결과 출력창
2. 키워드 관리
- 키워드 딕셔너리 관리
3. AI 템플릿
- 스타일 적용
- 시그니처 문구 생성
2. GUI
from simple_ai import create_review
from review_keywords import keywords
import tkinter as tk
checkbox_vars = {}
# 메인 창 생성
window = tk.Tk()
window.title("리뷰메이커 3.1 미니")
window.geometry("500x500")
# 가게이름 입력
label1 = tk.Label(window, text="가게 이름:")
label1.grid(row=0, column=0, padx=10, pady=10)
store_entry = tk.Entry(window)
store_entry.grid(row=0, column=1, padx=10)
# 메뉴 입력
label2 = tk.Label(window, text="메뉴:")
label2.grid(row=1, column=0, padx=10, pady=10)
menu_entry = tk.Entry(window)
menu_entry.grid(row=1, column=1, padx=10)
# 리뷰 결과창
result_label = tk.Label(window, text="생성된 리뷰:")
result_label.grid(row=0, column=2, padx=10)
result_text = tk.Text(window, height=8, width=30)
result_text.grid(row=1, column=2, rowspan=2, padx=10)
keyword_frame = tk.Frame(window)
keyword_frame.grid(row=4, column=0, columnspan=2, padx=10, pady=10)
for category, words in keywords.items():
frame = tk.LabelFrame(keyword_frame, text=category)
frame.pack()
for word in words:
var = tk.BooleanVar()
checkbox_vars[word] = var
tk.Checkbutton(frame, text=word, variable=var).pack()
def generate_review():
store = store_entry.get()
menu = menu_entry.get()
selected_keywords = []
for word, var in checkbox_vars.items():
if var.get():
selected_keywords.append(word)
result = create_review(store, menu, selected_keywords)
result_text.delete(1.0, tk.END) # 기존 내용 지우기
result_text.insert(tk.END, result) # 새 리뷰 추가
# 버튼 생성
button = tk.Button(window, text="리뷰 생성", command=generate_review)
button.grid(row=2, column=0, columnspan=2, pady=20)
window.mainloop()
- 화면 구성 및 입력값 받아 처리
2. 키워드 관리
keywords = {
'맛': ['맛있다', '존맛', '특제소스 맛집'],
'분위기': ['깔끔하다', '인테리어 예쁘다'],
'서비스': ['친절하다', '대기시간 적당']
}
- 키워드 딕셔너리만 관리하는 심플한 파일
- GUI에서 이 키워드들로 체크박스 생성
- AI가 이 키워드들로 리뷰 생성
3. AI 템플릿
def add_review_points(keywords):
points = []
if '분위기' in keywords:
points.append('인테리어가 너무 예뻐서 사진 찍기 좋았어요')
if '가성비' in keywords:
points.append('가격도 착해서 자주 올 것 같아요')
if '고기질' in keywords:
points.append('고기가 너무 부드럽고 맛있었어요')
return '\n'.join(points)
def add_signature_points(keywords):
points = []
if '맛있다' in keywords:
points.append('입맛당당이 인정한 맛집이에요!')
if '분위기' in keywords:
points.append('인스타감성 뿜뿜! 사진찍기 너무 좋았어요')
if '특별메뉴' in keywords:
points.append('시그니처 메뉴는 꼭 드셔보세요!')
return '\n'.join(points)
def add_signature_greeting():
return """안녕하세요!
오늘도 맛있는 리뷰 들고 왔어요!
"""
def create_review(store, menu, selected_keywords):
review = add_signature_greeting()
review += f"\n{store}에서 {menu} 먹고 왔어요!\n"
review += "\n오늘의 리뷰 포인트\n"
review += add_review_points(selected_keywords)
review += add_signature_points(selected_keywords)
return review
- 뤼튼은 항상 오락가락하셔서 본인이 집어넣은 키워드를 기억 못 하십니다.
- 딕셔너리에 넣은 키워드와 리뷰로 생성한 키워드가 매우 다릅니다.
- 그래서 다 체크하고 생성하여도 맛있다 하나만 생성됨.
그래서 오늘 나뉘어 있는 파일 만들어보고 깨달은 점.
파이썬은 파일끼리 임포트 하는 것도 정말 간편하고 좋네요.
728x90
반응형
LIST