Spaces:
Runtime error
Runtime error
import streamlit as st | |
import torch | |
from transformers import AutoModelForQuestionAnswering, AutoTokenizer | |
def get_model(): | |
# Load fine-tuned MRC model by HuggingFace Model Hub | |
HUGGINGFACE_MODEL_PATH = "bespin-global/klue-bert-base-aihub-mrc" | |
tokenizer = AutoTokenizer.from_pretrained(HUGGINGFACE_MODEL_PATH ) | |
model = AutoModelForQuestionAnswering.from_pretrained(HUGGINGFACE_MODEL_PATH ) | |
return tokenizer, model | |
tokenizer, model = get_model() | |
## Title | |
st.title('โ๏ธ Bespin โ QuestionAnswering') | |
## Text | |
st.write('[โกbespin-global/klue-bert-base-aihub-mrc](https://huggingface.co./bespin-global/klue-bert-base-aihub-mrc) ๋ชจ๋ธ ์ฑ๋ฅ ํ ์คํธ ํ์ด์ง ์ ๋๋ค.') | |
context_option = st.selectbox(' ๐ Select Context Examples.', | |
( | |
'์คํฐ๋ธ ํด ์คํฐ๋ธ ์ก์ค(์์ด:ย Steven Paul "Steve" Jobs,ย 1955๋ ย 2์ 24์ผย ~ย 2011๋ ย 10์ 5์ผ)๋ย ๋ฏธ๊ตญ์ย ๊ธฐ์ ์ธ์ด์์ผ๋ฉฐย ์ ํ์ ์ CEO์ด์ ๊ณต๋ ์ฐฝ๋ฆฝ์์ด๋ค.ย 2011๋ ย 10์ 5์ผย ์ท์ฅ์์ผ๋ก ์ฌ๋งํ๋ค. 1976๋ ย ์คํฐ๋ธ ์์ฆ๋์ ,ย ๋ก๋๋ ์จ์ธ๊ณผ ํจ๊ปย ์ ํ์ ๊ณต๋ ์ฐฝ์ ํ๊ณ ,ย ์ ํ 2๋ฅผ ํตํดย ๊ฐ์ธ์ฉ ์ปดํจํฐ๋ฅผ ๋์คํํ๋ค. ๋ํ,ย GUI์ย ๋ง์ฐ์ค์ ๊ฐ๋ฅ์ฑ์ ์ฒ์์ผ๋ก ๋ด๋ค๋ณด๊ณ ย ์ ํ ๋ฆฌ์ฌ์ย ๋งคํจํ ์์์ ์ด ๊ธฐ์ ์ ๋์ ํ์๋ค.ย 1986๋ ย ๊ฒฝ์๋ถ์์ ์ํด ์ ํ์์ ๋์จ ์ดํย NeXTย ์ปดํจํฐ๋ฅผ ์ฐฝ์ ํ์ฌ ์๋ก์ด ๊ฐ๋ ์ ์ด์ ์ฒด์ ๋ฅผ ๊ฐ๋ฐํ๋ค.ย 1996๋ ย ์ ํ์ด NeXT๋ฅผ ์ธ์ํ๊ฒ ๋๋ฉด์ ๋ค์ ์ ํ๋ก ๋์์ค๊ฒ ๋์๊ณ 1997๋ ์๋ ์์ CEO๋ก ์ ํ์ ๋ค์ ์ด๋๊ฒ ๋์์ผ๋ฉฐ ์ดํ ๋ค์๊ธ ์ ํ์ ํ์ ํด ์์ฅ์์ ์ฑ๊ณต์ ๊ฑฐ๋๊ฒ ์ด๋์๋ค. 2001๋ ย ์์ดํ์ ์ถ์ํ์ฌ ์์ ์ฐ์ ์ ์ฒด๋ฅผ ๋ค๋ฐ๊พธ์ด ๋์๋ค. ๋ํ, 2007๋ ย ์์ดํฐ์ ์ถ์ํ๋ฉด์ ์ค๋งํธํฐ ์์ฅ์ ๋ฐ๊พธ์ด ๋์๊ณ 2010๋ ย ์์ดํจ๋๋ฅผ ์ถ์ํจ์ผ๋ก์จย ํฌ์คํธPC ์๋(Post-PC era)๋ฅผ ์ด์๋ค. ์คํฐ๋ธ ์ก์ค๋ ์ ๋๋ฉ์ด์ ์ํ ใ์ธํฌ๋ ๋๋ธใ๊ณผ ใํ ์ด ์คํ ๋ฆฌใ ๋ฑ์ ์ ์ํย ์ปดํจํฐ ์ ๋๋ฉ์ด์ ย ์ ์์ฌ์ธย ํฝ์ฌ์ ์์ ์ฃผ์ด์ย CEO์๋ค.ย ์ํธ ๋์ฆ๋ ํ์ฌ๋ 74์ต ๋ฌ๋ฌ์ด์น์ ์์ฌ ์ฃผ์์ผ๋ก ์ด ํ์ฌ๋ฅผ ๊ตฌ์ ํ์๋ค.ย 2006๋ ย 6์ ์ด ๊ฑฐ๋๊ฐ ์๋ฃ๋์ด ์ก์ค๋ ์ด ๊ฑฐ๋๋ฅผ ํตํด ๋์ฆ๋ ์ง๋ถ์ 7%๋ฅผ ์์ ํ, ์ต๋์ ๊ฐ์ธ ์ฃผ์ฃผ์ด์ ๋์ฆ๋ ์ด์ฌํ์ ์ด์ฌ๊ฐ ๋์๋ค. ํํธ ๊ทธ๋ย 2003๋ ย ๋ฌด๋ ต๋ถํฐย ์ท์ฅ์์ผ๋ก ํฌ๋ณ์ํ์ ์ด์ด์๋ค. ๊ทธ์ ์ ํ๋ ๊ฑด๊ฐ์ํ๋ก ์ธํ์ฌย 2011๋ ย 8์ 24์ผ ์ ํ์ ์คํฐ๋ธ ์ก์ค๊ฐ ์ต๊ณ ๊ฒฝ์์ฑ ์์(CEO)๋ฅผ ์ฌ์ํ๊ณ ์ต๊ณ ์ด์์ฑ ์์(COO)์ธย ํ ์ฟก์ด ์๋ก์ด CEO๋ฅผ ๋งก๋๋ค๊ณ ๋ฐํ๋ค. ์ก์ค๋ CEO์ง์์ ๋ฌผ๋ฌ๋์ง๋ง ์ด์ฌํ ์์ฅ์ง์ ์ ์ง์ํค๊ธฐ๋ก ํ์ผ๋, ๊ฑด๊ฐ์ํ๊ฐ ๋์ฑ ์ ํ๋์ด ์ฌ์ 2๊ฐ์๋ ์ง๋์ง ์์ย 2011๋ ย 10์ 5์ผย ํฅ๋ 56์ธ์ ๋์ด๋ก ์ฌ๋งํ๋ค.', | |
'๋นํธ์ฝ์ธ์ย 2009๋ ย ์ฌํ ์ ๋์นด๋ชจํ [6]๊ฐ ๋ง๋ ย ๊ฐ์ํํ๋ก, ํตํ๋ฅผ ๋ฐํํ๊ณ ๊ด๋ฆฌํ๋ ์ค์ ์ฅ์น๊ฐ ์กด์ฌํ์ง ์๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๋์ , ๋นํธ์ฝ์ธ์ ๊ฑฐ๋๋ย P2Pย ๊ธฐ๋ฐย ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํด ์ด๋ฃจ์ด์ง๋ฉฐ,ย ๊ณต๊ฐ ํค ์ํธ ๋ฐฉ์ย ๊ธฐ๋ฐ์ผ๋ก ๊ฑฐ๋๋ฅผ ์ํํ๋ค. ๋นํธ์ฝ์ธ์ ๊ณต๊ฐ์ฑ์ ๊ฐ์ง๊ณ ์๋ค. ๋นํธ์ฝ์ธ์ ์ง๊ฐ ํ์ผ์ ํํ๋ก ์ ์ฅ๋๋ฉฐ, ์ด ์ง๊ฐ์๋ ๊ฐ๊ฐ์ ๊ณ ์ ์ฃผ์๊ฐ ๋ถ์ฌ๋๋ฉฐ, ๊ทธ ์ฃผ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋นํธ์ฝ์ธ์ ๊ฑฐ๋๊ฐ ์ด๋ฃจ์ด์ง๋ค. ๋นํธ์ฝ์ธ์ 1998๋ ์จ์ด๋ฐ์ด๊ฐ ์ฌ์ด๋ฒํํฌ ๋ฉ์ผ๋ง ๋ฆฌ์คํธ์ ์ฌ๋ฆฐย ์ํธํตํ(cryptocurrency)๋ ๊ตฌ์์ ์ต์ด๋ก ๊ตฌํํ ๊ฒ ์ค์ ํ๋์ด๋ค.[7][8] ๋นํธ์ฝ์ธ์ย ๊ณต๊ฐ ํค ์ํธ ๋ฐฉ์์ ์ด์ฉํด ๊ณต๊ฐ๋ ๊ณ์ ๊ฐ์ ๊ฑฐ๋๋ฅผ ํ๋ค. ๋ชจ๋ ๊ฑฐ๋๋ ๋น๊ณต๊ฐ์ ์ด๋ ๊ฑฐ๋์ ๊ธฐ๋ก์ ๋จ์ผ๋ฉฐ,ย ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋๋ค.ย ๋ถ์ฐ๋ ์๊ฐ์๋ฒ๋ก ์ผ๋ จ์ย ์์ ์ฆ๋ช (proof-of-work)์ ํ์ฌ ์ค๋ณต์ง์ถ(double-spending)์ ๋ฐฉ์งํ๋ค. ๊ฑฐ๋ ๊ธฐ๋ก์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋์ด์ผ ํ๋ค. ์ ์ฅ์ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ธฐ ์ํดย ๋จธํด ํธ๋ฆฌ(Merkle tree)๊ฐ ์ฌ์ฉ๋๋ค.' | |
) | |
) | |
# Text Input | |
context = st.text_area("Context.", value=context_option, height=300, on_change=None) # placeholder="Please input some context..", | |
if '์คํฐ๋ธ ํด ์คํฐ๋ธ ์ก์ค' in context_option: | |
question_option = st.selectbox('๐ก Select Question Examples.', | |
( | |
'์คํฐ๋ธ ์ก์ค๊ฐ ๋๊ตฌ์ผ?', '์คํฐ๋ธ ์ก์ค๋ ์ ํ๋ก ๋์์์ ์ด๋ป๊ฒ ํ์ด?', '์ ์ ํ์ ๋์์ด?', '์คํฐ๋ธ ์ก์ค๋ ์ด๋ป๊ฒ ๋ค์ ์ ํ๋ก ๋์์ค๊ฒ ๋์์ด?', 'ํฝ์ฌ๋ ๋ญ ์ ์ํ์ด?', '์ ํ ์ฟก์ ์๋ก์ด CEO๋ก ๋งก์์ด?', '์คํฐ๋ธ ์ก์ค๋ ์ธ์ ์ฌ๋งํ์ด?' | |
) | |
) | |
elif '๋นํธ์ฝ์ธ' in context_option: | |
question_option = st.selectbox('๐ก Select Question Examples.', | |
( | |
'๋นํธ์ฝ์ธ์ ์ด๋ค ๊ตฌ์กฐ์ผ?', '๋นํธ์ฝ์ธ์ ์ด๋ป๊ฒ ๊ฑฐ๋๊ฐ ๋ผ?', '๋นํธ์ฝ์ธ ์ง๊ฐ์๋ ๋ญ๊ฐ ๋ถ์ฌ ๋ผ?', '๊ณต๊ฐ๋ ๊ณ์ ๊ฐ ๊ฑฐ๋ ์ ๋ญ ์ด์ฉํด?', '๋ชจ๋ ๊ฑฐ๋๋ ์ด๋ป๊ฒ ๋จ์?', '๋จธํด ํธ๋ฆฌ๊ฐ ์ ์ฌ์ฉ ๋ผ?' | |
) | |
) | |
# Text Area | |
question = st.text_area("Question.", value=question_option, on_change=None) # placeholder="Please input your question.." | |
if st.button("Submit", key='question'): | |
try: | |
# Progress spinner | |
with st.spinner('Wait for it...'): | |
# Encoding | |
encodings = tokenizer(context, question, | |
max_length=512, | |
truncation=True, | |
padding="max_length", | |
return_token_type_ids=False | |
) | |
encodings = {key: torch.tensor([val]) for key, val in encodings.items()} | |
input_ids = encodings["input_ids"] | |
attention_mask = encodings["attention_mask"] | |
# Predict | |
pred = model(input_ids, attention_mask=attention_mask) | |
start_logits, end_logits = pred.start_logits, pred.end_logits | |
token_start_index, token_end_index = start_logits.argmax(dim=-1), end_logits.argmax(dim=-1) | |
pred_ids = input_ids[0][token_start_index: token_end_index + 1] | |
# Decoding | |
prediction = tokenizer.decode(pred_ids) | |
# answer | |
st.success(prediction) | |
except Exception as e: | |
st.error(e) |