orgoflu commited on
Commit
cf85a3a
ยท
verified ยท
1 Parent(s): d5d47ef
Files changed (1) hide show
  1. app.py +55 -0
app.py ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from transformers import PreTrainedTokenizerFast, BartForConditionalGeneration
3
+
4
+ # 1. ๋ชจ๋ธ & ํ† ํฌ๋‚˜์ด์ € ๋กœ๋“œ
5
+ MODEL_NAME = "gangyeolkim/kobart-korean-summarizer-v2"
6
+ tokenizer = PreTrainedTokenizerFast.from_pretrained(MODEL_NAME)
7
+ model = BartForConditionalGeneration.from_pretrained(MODEL_NAME)
8
+
9
+ # 2. ์š”์•ฝ ํ•จ์ˆ˜
10
+ def summarize(text, min_len, max_len):
11
+ if not text.strip():
12
+ return "โš ๏ธ ์š”์•ฝํ•  ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”."
13
+
14
+ # ํ† ํฐํ™”
15
+ inputs = tokenizer(
16
+ [text],
17
+ max_length=1024,
18
+ truncation=True,
19
+ return_tensors="pt"
20
+ )
21
+
22
+ # ๋ชจ๋ธ ์ถ”๋ก 
23
+ summary_ids = model.generate(
24
+ inputs["input_ids"],
25
+ num_beams=4,
26
+ min_length=min_len,
27
+ max_length=max_len,
28
+ early_stopping=True
29
+ )
30
+
31
+ # ๋””์ฝ”๋”ฉ
32
+ summary = tokenizer.decode(summary_ids[0], skip_special_tokens=True)
33
+ return summary
34
+
35
+ # 3. Gradio UI
36
+ with gr.Blocks() as demo:
37
+ gr.Markdown("## ๐Ÿ“ KoBART ํ•œ๊ตญ์–ด ์š”์•ฝ๊ธฐ (CPU ์ตœ์ ํ™” ๊ฐ€๋Šฅ)")
38
+ with gr.Row():
39
+ with gr.Column():
40
+ input_text = gr.Textbox(
41
+ label="์›๋ฌธ ์ž…๋ ฅ (์ตœ๋Œ€ 2000์ž)",
42
+ lines=15,
43
+ placeholder="์—ฌ๊ธฐ์— ์š”์•ฝํ•  ํ•œ๊ตญ์–ด ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”."
44
+ )
45
+ min_len = gr.Slider(50, 500, value=100, step=10, label="์ตœ์†Œ ์š”์•ฝ ๊ธธ์ด")
46
+ max_len = gr.Slider(100, 1500, value=300, step=10, label="์ตœ๋Œ€ ์š”์•ฝ ๊ธธ์ด")
47
+ btn = gr.Button("์š”์•ฝ ์‹คํ–‰")
48
+ with gr.Column():
49
+ output_text = gr.Textbox(label="์š”์•ฝ ๊ฒฐ๊ณผ", lines=15)
50
+
51
+ btn.click(summarize, inputs=[input_text, min_len, max_len], outputs=output_text)
52
+
53
+ # 4. ์‹คํ–‰
54
+ if __name__ == "__main__":
55
+ demo.launch()