Aoi785's picture
Update app.py
1d5ffd9 verified
import gradio as gr
from transformers import pipeline, MarianMTModel, MarianTokenizer
# โœ… ์š”์•ฝ ํŒŒ์ดํ”„๋ผ์ธ ์ดˆ๊ธฐํ™”
summarizer = pipeline("summarization", model="digit82/kobart-summarization")
# โœ… ๋ฒˆ์—ญ ๋ชจ๋ธ ์‚ฌ์ „ ์ •์˜
translation_models = {
"en": "Helsinki-NLP/opus-mt-ko-en",
"zh": "Helsinki-NLP/opus-mt-ko-zh",
"vi": "Helsinki-NLP/opus-mt-ko-vi"
}
# โœ… ๋ฒˆ์—ญ ํ•จ์ˆ˜
def translate(text, target_lang):
if target_lang == "ko":
return text
model_name = translation_models[target_lang]
tokenizer = MarianTokenizer.from_pretrained(model_name)
model = MarianMTModel.from_pretrained(model_name)
inputs = tokenizer.prepare_seq2seq_batch([text], return_tensors="pt", padding=True)
translated = model.generate(**inputs)
return tokenizer.decode(translated[0], skip_special_tokens=True)
# โœ… ๋ฉ”์ธ ํ•จ์ˆ˜
def summarize_and_translate(text, target_lang):
text = text[:300] # ์ž…๋ ฅ ์ œํ•œ
summary = summarizer(text, max_length=20, min_length=5, do_sample=False)[0]['summary_text']
translated = translate(summary, target_lang)
return summary, translated
# โœ… UI ๊ตฌ์„ฑ
lang_choices = [
("ko", "ํ•œ๊ตญ์–ด (ko)"),
("en", "English (en)"),
("zh", "ไธญๅ›ฝไบบ (zh)"),
("vi", "Tiแบฟng Viแป‡t (vi)")
]
with gr.Blocks() as demo:
gr.Markdown("## ๐Ÿ“ข ์žฌ๋‚œ๋ฌธ์ž ์ดˆ๊ฐ„๋‹จ ์š”์•ฝ & ๋ฒˆ์—ญ๊ธฐ")
with gr.Row():
textbox = gr.Textbox(lines=5, label="์žฌ๋‚œ ๋ฌธ์ž ์ž…๋ ฅ", placeholder="์—ฌ๊ธฐ์— ์žฌ๋‚œ ๋ฌธ์ž๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š” (์ตœ๋Œ€ 300์ž)")
with gr.Row():
lang = gr.Dropdown(
choices=[code for code, _ in lang_choices],
label="๋ฒˆ์—ญ ์–ธ์–ด ์„ ํƒ",
value="ko",
info="ko(ํ•œ๊ตญ์–ด), en(English), zh(์ค‘๊ตญ์–ด), vi(๋ฒ ํŠธ๋‚จ์–ด)"
)
with gr.Row():
summary_out = gr.Textbox(label="โœ… ์š”์•ฝ ๊ฒฐ๊ณผ", lines=2)
translate_out = gr.Textbox(label="๐ŸŒ ๋ฒˆ์—ญ ๊ฒฐ๊ณผ", lines=2)
btn = gr.Button("์š”์•ฝ ๋ฐ ๋ฒˆ์—ญ ์‹คํ–‰")
btn.click(fn=summarize_and_translate, inputs=[textbox, lang], outputs=[summary_out, translate_out])
demo.launch()