Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -1,55 +1,64 @@
|
|
1 |
-
|
2 |
import gradio as gr
|
3 |
-
from transformers import pipeline
|
4 |
-
import
|
5 |
-
|
6 |
-
#
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
# ๊ท์น ๊ธฐ๋ฐ ์์ฝ
|
18 |
-
def rule_based_summary(text):
|
19 |
-
key_phrases = re.findall(r"(ํญ์ผ|ํธ์ฐ|์ง์ง|๊ฐ์ผ๋ณ|๋ถ|ํ์ฌ|๋ํผ|์ฃผ์|ํต์ |์ฐฉ์ฉ|์์ |์ ๊ณ |ํผํด).*?(๋ฐ๋๋๋ค|ํ์ธ์|์ฃผ์)", text)
|
20 |
-
flat = [" ".join(kp) for kp in key_phrases]
|
21 |
-
if not flat:
|
22 |
-
# ์ค์ ๋ฌธ์ฅ์ด ์๋ค๋ฉด ๋ช
์ฌ ์์ฃผ ์ถ์ถ
|
23 |
-
fallback = re.findall(r"[๊ฐ-ํฃ]{2,}", text)
|
24 |
-
return ". ".join(fallback[:3]) if fallback else "์ค์ ๋ฌธ์ฅ ์์"
|
25 |
-
return ". ".join(flat[:3])
|
26 |
-
|
27 |
-
# ์ ์ฒด ์ฒ๋ฆฌ ํจ์
|
28 |
def summarize_and_translate(text, lang):
|
29 |
if not text.strip():
|
30 |
-
return "์
๋ ฅ๋
|
31 |
-
|
32 |
-
|
33 |
-
return summary, summary
|
34 |
try:
|
35 |
-
|
36 |
-
result = translator(summary, max_length=100)
|
37 |
-
return summary, result[0]["translation_text"]
|
38 |
except Exception as e:
|
39 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
|
41 |
# Gradio UI
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
gr.
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
)
|
54 |
-
|
55 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
import gradio as gr
|
2 |
+
from transformers import pipeline, AutoTokenizer, AutoModelForSeq2SeqLM
|
3 |
+
from googletrans import Translator
|
4 |
+
|
5 |
+
# ๋ชจ๋ธ ๋ก๋
|
6 |
+
model_name = "Aoi785/kobart-disaster-summary-v1"
|
7 |
+
tokenizer = AutoTokenizer.from_pretrained("digit82/kobart-summarization")
|
8 |
+
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
|
9 |
+
summarizer = pipeline("summarization", model=model, tokenizer=tokenizer)
|
10 |
+
|
11 |
+
# ๋ฒ์ญ๊ธฐ
|
12 |
+
translator = Translator()
|
13 |
+
|
14 |
+
# ์์ฝ + ๋ฒ์ญ ํจ์
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
def summarize_and_translate(text, lang):
|
16 |
if not text.strip():
|
17 |
+
return "์
๋ ฅ๋ ํ
์คํธ๊ฐ ์์ต๋๋ค.", ""
|
18 |
+
|
19 |
+
# ์์ฝ
|
|
|
20 |
try:
|
21 |
+
summary = summarizer(text, max_length=50, min_length=10, do_sample=False)[0]['summary_text']
|
|
|
|
|
22 |
except Exception as e:
|
23 |
+
summary = f"์์ฝ ์คํจ: {str(e)}"
|
24 |
+
return summary, ""
|
25 |
+
|
26 |
+
# ๋ฒ์ญ
|
27 |
+
try:
|
28 |
+
if lang == "ko":
|
29 |
+
translated = summary
|
30 |
+
else:
|
31 |
+
translated = translator.translate(summary, dest=lang).text
|
32 |
+
except Exception as e:
|
33 |
+
translated = f"๋ฒ์ญ ์คํจ: {str(e)}"
|
34 |
+
|
35 |
+
return summary, translated
|
36 |
|
37 |
# Gradio UI
|
38 |
+
with gr.Blocks() as demo:
|
39 |
+
gr.Markdown("## ๐ ์ฌ๋ ๋ฌธ์ ์์ฝ ๋ฐ ๋ฒ์ญ๊ธฐ")
|
40 |
+
|
41 |
+
with gr.Row():
|
42 |
+
with gr.Column():
|
43 |
+
input_text = gr.Textbox(label="์ฌ๋ ๋ฌธ์ ์
๋ ฅ", lines=5, placeholder="์: ๋ด์ผ๊น์ง ์ฅ๋ง์ ์ ์ํฅ์ผ๋ก ๋ง์ ๋น ์์...")
|
44 |
+
lang = gr.Dropdown(
|
45 |
+
choices=["ko(ํ๊ตญ์ด)", "en(English)", "zh(์ค๊ตญ์ด)", "vi(๋ฒ ํธ๋จ์ด)"],
|
46 |
+
value="ko(ํ๊ตญ์ด)",
|
47 |
+
label="๋ฒ์ญ ์ธ์ด ์ ํ"
|
48 |
+
)
|
49 |
+
run_button = gr.Button("์์ฝ ๋ฐ ๋ฒ์ญ ์คํ")
|
50 |
+
|
51 |
+
with gr.Column():
|
52 |
+
output_summary = gr.Textbox(label="โ
์์ฝ ๊ฒฐ๊ณผ")
|
53 |
+
output_trans = gr.Textbox(label="๐ ๋ฒ์ญ ๊ฒฐ๊ณผ")
|
54 |
+
|
55 |
+
def process_lang_code(lang_dropdown):
|
56 |
+
return lang_dropdown.split("(")[0]
|
57 |
+
|
58 |
+
run_button.click(
|
59 |
+
fn=lambda txt, ln: summarize_and_translate(txt, process_lang_code(ln)),
|
60 |
+
inputs=[input_text, lang],
|
61 |
+
outputs=[output_summary, output_trans]
|
62 |
+
)
|
63 |
+
|
64 |
+
demo.launch()
|