Aoi785's picture
Update app.py
dae419d verified
import gradio as gr
from transformers import pipeline, AutoTokenizer, AutoModelForSeq2SeqLM
from googletrans import Translator
# ๋ชจ๋ธ ๋กœ๋“œ
model_name = "Aoi785/kobart-disaster-summary-v1"
tokenizer = AutoTokenizer.from_pretrained("digit82/kobart-summarization")
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
summarizer = pipeline("summarization", model=model, tokenizer=tokenizer)
# ๋ฒˆ์—ญ๊ธฐ
translator = Translator()
# ์š”์•ฝ + ๋ฒˆ์—ญ ํ•จ์ˆ˜
def summarize_and_translate(text, lang):
if not text.strip():
return "์ž…๋ ฅ๋œ ํ…์ŠคํŠธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.", ""
# ์š”์•ฝ
try:
summary = summarizer(text, max_length=50, min_length=10, do_sample=False)[0]['summary_text']
except Exception as e:
summary = f"์š”์•ฝ ์‹คํŒจ: {str(e)}"
return summary, ""
# ๋ฒˆ์—ญ
try:
if lang == "ko":
translated = summary
else:
translated = translator.translate(summary, dest=lang).text
except Exception as e:
translated = f"๋ฒˆ์—ญ ์‹คํŒจ: {str(e)}"
return summary, translated
# Gradio UI
with gr.Blocks() as demo:
gr.Markdown("## ๐Ÿ†˜ ์žฌ๋‚œ ๋ฌธ์ž ์š”์•ฝ ๋ฐ ๋ฒˆ์—ญ๊ธฐ")
with gr.Row():
with gr.Column():
input_text = gr.Textbox(label="์žฌ๋‚œ ๋ฌธ์ž ์ž…๋ ฅ", lines=5, placeholder="์˜ˆ: ๋‚ด์ผ๊นŒ์ง€ ์žฅ๋งˆ์ „์„  ์˜ํ–ฅ์œผ๋กœ ๋งŽ์€ ๋น„ ์˜ˆ์ƒ...")
lang = gr.Dropdown(
choices=["ko(ํ•œ๊ตญ์–ด)", "en(English)", "zh(์ค‘๊ตญ์–ด)", "vi(๋ฒ ํŠธ๋‚จ์–ด)"],
value="ko(ํ•œ๊ตญ์–ด)",
label="๋ฒˆ์—ญ ์–ธ์–ด ์„ ํƒ"
)
run_button = gr.Button("์š”์•ฝ ๋ฐ ๋ฒˆ์—ญ ์‹คํ–‰")
with gr.Column():
output_summary = gr.Textbox(label="โœ… ์š”์•ฝ ๊ฒฐ๊ณผ")
output_trans = gr.Textbox(label="๐ŸŒ ๋ฒˆ์—ญ ๊ฒฐ๊ณผ")
def process_lang_code(lang_dropdown):
return lang_dropdown.split("(")[0]
run_button.click(
fn=lambda txt, ln: summarize_and_translate(txt, process_lang_code(ln)),
inputs=[input_text, lang],
outputs=[output_summary, output_trans]
)
demo.launch()