1_4_keyword / app.py
Kims12's picture
Update app.py
67d017e verified
raw
history blame
2.27 kB
import gradio as gr
import pandas as pd
import re
from collections import Counter
import os
from openpyxl import load_workbook
from openpyxl.drawing.image import Image
def process_excel(file):
# μ—‘μ…€ 파일 읽기
df = pd.read_excel(file.name)
# Dμ—΄μ˜ 데이터 μΆ”μΆœ
product_names = df.iloc[:, 3].dropna() # D열은 0λΆ€ν„° μ‹œμž‘ν•˜λ―€λ‘œ indexλŠ” 3
# ν‚€μ›Œλ“œ μΆ”μΆœ 및 λΉˆλ„ 계산
all_keywords = []
for name in product_names:
# 특수문자 제거 및 곡백 κΈ°μ€€μœΌλ‘œ λΆ„ν• 
words = re.sub(r'[^\w\s]', '', name).split()
# 쀑볡 제거
unique_words = set(words)
all_keywords.extend(unique_words)
# λΉˆλ„ 계산
keyword_counts = Counter(all_keywords)
# κ²°κ³Όλ₯Ό λ°μ΄ν„°ν”„λ ˆμž„μœΌλ‘œ 정리
result_df = pd.DataFrame(keyword_counts.items(), columns=['Keyword', 'Frequency'])
result_df = result_df.sort_values(by='Frequency', ascending=False).reset_index(drop=True)
# 디렉토리 생성 확인 및 파일 μ €μž₯
output_dir = "output"
if not os.path.exists(output_dir):
os.makedirs(output_dir)
output_file = os.path.join(output_dir, "keyword_counts.xlsx")
# μ—‘μ…€ νŒŒμΌμ— 데이터λ₯Ό A4, B4 μ…€λΆ€ν„° μ“°κΈ°
with pd.ExcelWriter(output_file, engine='openpyxl') as writer:
result_df.to_excel(writer, index=False, startrow=3) # startrow=3으둜 μ„€μ •ν•˜μ—¬ 4번째 ν–‰(A4, B4)λΆ€ν„° μ‹œμž‘
# 이미지λ₯Ό μ—‘μ…€ 파일의 A1 셀에 μ‚½μž…
wb = load_workbook(output_file)
ws = wb.active
# ssboost-logo.png νŒŒμΌμ„ A1 셀에 μ‚½μž…
img = Image("ssboost-logo.png")
ws.add_image(img, "A1")
# μˆ˜μ •λœ μ—‘μ…€ 파일 μ €μž₯
wb.save(output_file)
return output_file
# Gradio μΈν„°νŽ˜μ΄μŠ€ μ •μ˜
iface = gr.Interface(
fn=process_excel,
inputs=gr.File(file_types=[".xlsx"]), # μ—‘μ…€ 파일만 μ—…λ‘œλ“œν•  수 있게 μ„€μ •
outputs="file",
title="Excel Keyword Extractor with Image",
description="μ—‘μ…€ 파일의 Dμ—΄μ—μ„œ ν‚€μ›Œλ“œλ₯Ό μΆ”μΆœν•˜κ³  λΉˆλ„λ₯Ό κ³„μ‚°ν•œ ν›„, A1 셀에 이미지λ₯Ό μ‚½μž…ν•˜μ—¬ μƒˆλ‘œμš΄ μ—‘μ…€ 파일둜 좜λ ₯ν•©λ‹ˆλ‹€."
)
if __name__ == "__main__":
iface.launch()