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()