Spaces:
Running
Running
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() |