Upload 20231115_hf_space_app.py
Browse files- 20231115_hf_space_app.py +66 -0
20231115_hf_space_app.py
ADDED
@@ -0,0 +1,66 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# -*- coding: utf-8 -*-
|
2 |
+
"""20231115_hf_space์ ์ฌ๋ณธ
|
3 |
+
|
4 |
+
Automatically generated by Colaboratory.
|
5 |
+
|
6 |
+
Original file is located at
|
7 |
+
https://colab.research.google.com/drive/167WkIz-J7_z4FG65GkVPfkosxIXlKMQq
|
8 |
+
"""
|
9 |
+
|
10 |
+
# ๊ธฐ์ฌ ์์ฝํด์ฃผ๋ ๊ฐ์ ๊ฐ์ธ ์ฌ์ดํธ ๋ง๋ค๊ธฐ
|
11 |
+
# ์ฌ์ดํธ: github pages: huggingface space
|
12 |
+
|
13 |
+
!pip install gradio transformers sentencepiece transformers[sentencepiece] sacremoses
|
14 |
+
|
15 |
+
import gradio as gr
|
16 |
+
# Interface๋ผ๋ ํด๋์ค๋ก ์
์ถ๋ ฅ ์์๋ฅผ ์น ์๋ฆฌ๋จผํธ๋ก ์๋ ์์ฑํด์ค
|
17 |
+
from transformers import PreTrainedTokenizerFast,BartForConditionalGeneration
|
18 |
+
# PreTrainedTokenizerFast: ์ฌ์ ํ๋ จ๋ ํ ํฌ๋์ด์ ๋ก, ํ
์คํธ๋ฅผ ๋ชจ๋ธ์ด ์ดํดํ ์ ์๋ ํ์์ผ๋ก ๋ณํํฉ๋๋ค.
|
19 |
+
# BartForConditionalGeneration: BART ๋ชจ๋ธ์ ๋ณํ์ผ๋ก ์์ฝ, ๋ฒ์ญ, ํ
์คํธ ์์ฑ ๋ฑ์ ์ฌ์ฉ
|
20 |
+
|
21 |
+
# Bart๋ encorder-decoder ๋ชจ๋ธ์ ์์
|
22 |
+
|
23 |
+
# from transformers import๋ก ์์ํ๋ import๋ฌธ์ ๋ณด๋ฉด
|
24 |
+
# ๋ง์ ๊ฒฝ์ฐ AutoTokenizer, AutoModel
|
25 |
+
|
26 |
+
# tokenizer = AutoTokenizer.from_pretrained("model name")
|
27 |
+
|
28 |
+
# Load Model and Tokenize
|
29 |
+
tokenizer = PreTrainedTokenizerFast.from_pretrained("ainize/kobart-news")
|
30 |
+
model = BartForConditionalGeneration.from_pretrained("ainize/kobart-news")
|
31 |
+
# Encode Input Text
|
32 |
+
input_text = '๊ตญ๋ด ์ ๋ฐ์ ์ธ ๊ฒฝ๊ธฐ์นจ์ฒด๋ก ์๊ฐ ๊ฑด๋ฌผ์ฃผ์ ์์ต๋ ์ ๊ตญ์ ์ธ ๊ฐ์์ธ๋ฅผ ๋ณด์ด๊ณ ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ๋ค. ์์ตํ ๋ถ๋์ฐ ์ฐ๊ตฌ๊ฐ๋ฐ๊ธฐ์
์๊ฐ์ ๋ณด์ฐ๊ตฌ์๋ ํ๊ตญ๊ฐ์ ์ ํต๊ณ๋ฅผ ๋ถ์ํ ๊ฒฐ๊ณผ ์ ๊ตญ ์ค๋ํ ์๊ฐ ์์์
์๋(๋ถ๋์ฐ์์ ๋ฐ์ํ๋ ์๋์์
, ๊ธฐํ์์
์์ ์ ๋ฐ ๊ฒฝ๋น๋ฅผ ๊ณต์ ํ ์์๋)์ด 1๋ถ๊ธฐ ใก๋น 3๋ง4200์์์ 3๋ถ๊ธฐ 2๋ง5800์์ผ๋ก ๊ฐ์ํ๋ค๊ณ 17์ผ ๋ฐํ๋ค. ์๋๊ถ, ์ธ์ข
์, ์ง๋ฐฉ๊ด์ญ์์์ ์์์
์๋์ด ๊ฐ์ฅ ๋ง์ด ๊ฐ์ํ ์ง์ญ์ 3๋ถ๊ธฐ 1๋ง3100์์ ๊ธฐ๋กํ ์ธ์ฐ์ผ๋ก, 1๋ถ๊ธฐ 1๋ง9100์ ๋๋น 31.4% ๊ฐ์ํ๋ค. ์ด์ด ๋๊ตฌ(-27.7%), ์์ธ(-26.9%), ๊ด์ฃผ(-24.9%), ๋ถ์ฐ(-23.5%), ์ธ์ข
(-23.4%), ๋์ (-21%), ๊ฒฝ๊ธฐ(-19.2%), ์ธ์ฒ(-18.5%) ์์ผ๋ก ๊ฐ์ํ๋ค. ์ง๋ฐฉ ๋์์ ๊ฒฝ์ฐ๋ ๋น์ทํ๋ค. ๊ฒฝ๋จ์ 3๋ถ๊ธฐ ์์์
์๋์ 1๋ง2800์์ผ๋ก 1๋ถ๊ธฐ 1๋ง7400์ ๋๋น 26.4% ๊ฐ์ํ์ผ๋ฉฐ ์ ์ฃผ(-25.1%), ๊ฒฝ๋ถ(-24.1%), ์ถฉ๋จ(-20.9%), ๊ฐ์(-20.9%), ์ ๋จ(-20.1%), ์ ๋ถ(-17%), ์ถฉ๋ถ(-15.3%) ๋ฑ๋ ๊ฐ์์ธ๋ฅผ ๋ณด์๋ค. ์กฐํํ ์๊ฐ์ ๋ณด์ฐ๊ตฌ์ ์ฐ๊ตฌ์์ "์ฌํด ๋ด์ ๊ฒฝ๊ธฐ์ ์นจ์ฒด๋ ๋ถ์๊ธฐ๊ฐ ์ ์ง๋๋ฉฐ ์๊ฐ, ์คํผ์ค ๋ฑ์ ๋น๋กฏํ ์์ตํ ๋ถ๋์ฐ ์์ฅ์ ๋ถ์๊ธฐ๋ ๊ฒฝ์ง๋ ๋ชจ์ต์ ๋ณด์๊ณ ์คํผ์คํ
, ์ง์์ฐ์
์ผํฐ ๋ฑ์ ์์ตํ ๋ถ๋์ฐ ๊ณต๊ธ๋ ์ฆ๊ฐํด ๊ณต์ค์ ์ํ๋ ๋์๋ค"๋ฉฐ "์ค์ ์ฌ 3๋ถ๊ธฐ ์ ๊ตญ ์ค๋ํ ์๊ฐ ๊ณต์ค๋ฅ ์ 11.5%๋ฅผ ๊ธฐ๋กํ๋ฉฐ 1๋ถ๊ธฐ 11.3% ๋๋น 0.2% ํฌ์ธํธ ์ฆ๊ฐํ๋ค"๊ณ ๋งํ๋ค. ๊ทธ๋ "์ต๊ทผ ์์
์ปค๋จธ์ค(SNS๋ฅผ ํตํ ์ ์์๊ฑฐ๋), ์์ ๋ฐฐ๋ฌ ์ค๊ฐ ์ ํ๋ฆฌ์ผ์ด์
, ์ค๊ณ ๋ฌผํ ๊ฑฐ๋ ์ ํ๋ฆฌ์ผ์ด์
๋ฑ์ ์ฌ์ฉ ์ฆ๊ฐ๋ก ์คํ๋ผ์ธ ๋งค์ฅ์ ์ํฅ์ ๋ฏธ์ณค๋ค"๋ฉฐ "ํฅํ ์ง์ญ, ์ฝํ
์ธ ์ ๋ฐ๋ฅธ ์๊ถ ์๊ทนํ ํ์์ ์ฌํ๋ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค"๊ณ ๋ง๋ถ์๋ค.'
|
33 |
+
input_ids = tokenizer.encode(input_text, return_tensors="pt")
|
34 |
+
# ๊ฐ ํ ํฐ์ด ์ ์ ID๋ก ๋ฐ๋
|
35 |
+
# Generate Summary Text Ids
|
36 |
+
summary_text_ids = model.generate(
|
37 |
+
input_ids=input_ids,
|
38 |
+
bos_token_id=model.config.bos_token_id, # BOS๋ Beginning of Sentence
|
39 |
+
eos_token_id=model.config.eos_token_id, # EOS๋ End Of Sentence
|
40 |
+
length_penalty=2.0, # ์์ฝ์ ์ผ๋ง๋ ์งง๊ฒ ํ ์ง
|
41 |
+
max_length=142, #
|
42 |
+
min_length=56, #
|
43 |
+
num_beams=4, # beam search -> ๊ฐ์ง ์ ๋ผ๊ณ ์๊ฐํ๋ฉด ๋จ. ๊ฐ์ง 4๊ฐ๋ฅผ ํผ์น๊ณ ๊ทธ ๊ฐ๊ฐ์ง์์ 4๊ฐ๋ฅผ ํผ์น ํ ์ด 16๊ฐ์ค ๊ฐ์ฅ ์ ํฉํ 4๊ฐ๋ฅผ ๊ณ ๋ฅธ ๊ฐ์ง๋ฅผ ํผ์ณ ๋ฐ๋ณต ๊ณผ์
|
44 |
+
)
|
45 |
+
# Decoding Text
|
46 |
+
print(tokenizer.decode(summary_text_ids[0], skip_special_tokens=True))
|
47 |
+
|
48 |
+
# ์๋ฌธ์ ๋ฐ์์ ์์ฝ๋ฌธ์ ๋ฐํ
|
49 |
+
def summ(txt):
|
50 |
+
input_ids = tokenizer.encode(input_text, return_tensors="pt")
|
51 |
+
summary_text_ids = model.generate(
|
52 |
+
input_ids=input_ids,
|
53 |
+
bos_token_id=model.config.bos_token_id, # BOS๋ Beginning of Sentence
|
54 |
+
eos_token_id=model.config.eos_token_id, # EOS๋ End Of Sentence
|
55 |
+
length_penalty=2.0, # ์์ฝ์ ์ผ๋ง๋ ์งง๊ฒ ํ ์ง
|
56 |
+
max_length=142, #
|
57 |
+
min_length=56, #
|
58 |
+
num_beams=4) # beam search -> ๊ฐ์ง ์ ๋ผ๊ณ ์๊ฐํ๋ฉด ๋จ. ๊ฐ์ง 4๊ฐ๋ฅผ ํผ์น๊ณ ๊ทธ ๊ฐ๊ฐ์ง์์ 4๊ฐ๋ฅผ ํผ์น ํ ์ด 16๊ฐ์ค ๊ฐ์ฅ ์ ํฉํ 4๊ฐ๋ฅผ ๊ณ ๋ฅธ ๊ฐ์ง๋ฅผ ํผ์ณ ๋ฐ๋ณต ๊ณผ์
|
59 |
+
return tokenizer.decode(summary_text_ids[0], skip_special_tokens=True)
|
60 |
+
|
61 |
+
interface = gr.Interface(summ,
|
62 |
+
[gr.Textbox(label = "original text")],
|
63 |
+
[gr.Textbox(label = "summary")])
|
64 |
+
|
65 |
+
interface.launch(share = True)
|
66 |
+
|