File size: 2,128 Bytes
7ce0b90
dae419d
 
 
 
 
 
 
 
 
 
 
 
 
05bd21b
7d5fd45
dae419d
 
 
ff525f5
dae419d
ff525f5
dae419d
 
 
 
 
 
 
 
 
 
 
 
 
7ce0b90
ff525f5
dae419d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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()