Spaces:
Runtime error
Runtime error
File size: 2,574 Bytes
12c8869 aae2559 a35d9e4 12c8869 be4280c 8038f86 be4280c 12c8869 be4280c 12c8869 be4280c 12c8869 be4280c 12c8869 be4280c 12c8869 5aa25da 12c8869 5aa25da be4280c 5aa25da be4280c 12c8869 5aa25da 12c8869 be4280c 7f8f27b 12c8869 5aa25da 12c8869 be4280c 7f8f27b be4280c |
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 65 66 67 68 69 70 71 72 73 74 75 76 77 |
import gradio as gr
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
from deep_translator import GoogleTranslator
# 1. ๋ชจ๋ธ ๋ฐ ํ ํฌ๋์ด์ ๋ก๋
model_name = "SAVSNET/PetBERT_ICD"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
# 2. ๋ผ๋ฒจ ๋ชฉ๋ก (ICD 0~19 โ ํ๊ธ ๋ฒ์ญ)
LABELS = {
0: "๊ท ๋๋ ์ ์๋๊ธฐ ์งํ",
1: "์ ์ , ํ๋ ๋๋ ์ ๊ฒฝ๋ฐ๋ฌ ์ฅ์ ",
2: "ํ์ก ๋๋ ์กฐํ๊ธฐ๊ด ์งํ",
3: "์ํ๊ธฐ๊ณ ์งํ",
4: "์น๊ณผ ์งํ",
5: "๋ฐ๋ฌ ์ด์",
6: "์ํ๊ธฐ๊ณ ์งํ",
7: "๋ด๋ถ๋น, ์์ ๋๋ ๋์ฌ ์งํ",
8: "๋ฉด์ญ๊ณ ์งํ",
9: "ํน์ ๊ฐ์ผ์ฑ ๋๋ ๊ธฐ์์ถฉ ์งํ",
10: "ํผ๋ถ ์งํ",
11: "๊ทผ๊ณจ๊ฒฉ๊ณ ๋๋ ๊ฒฐํฉ์กฐ์ง ์งํ",
12: "์ ์๋ฌผ(์ข
์)",
13: "์ ๊ฒฝ๊ณ ์งํ",
14: "์๊ฐ๊ณ ์งํ",
15: "์ฃผ์ฐ๊ธฐ ๊ธฐ์์ ํน์ ์ํ",
16: "์์ , ์ถ์ฐ ๋๋ ์ฐํ๊ธฐ ์ํ",
17: "ํธํก๊ธฐ๊ณ ์งํ",
18: "์ธ์, ์ค๋
๋๋ ์ธ๋ถ ์์ธ ๊ฒฐ๊ณผ",
19: "๋น๋จ์์๊ธฐ๊ณ ์งํ"
}
# 3. ์์ธก ํจ์ ์ ์
def predict(text):
try:
# ๋ฒ์ญ (ํ๊ธ -> ์์ด)
translated = GoogleTranslator(source='auto', target='en').translate(text)
# ํ ํฐํ ๋ฐ ๋ชจ๋ธ ์์ธก
inputs = tokenizer(translated, return_tensors="pt", truncation=True, padding=True)
with torch.no_grad():
outputs = model(**inputs)
logits = outputs.logits
probs = torch.softmax(logits, dim=1).squeeze()
# ์์ธก ๊ฒฐ๊ณผ ์์ 3๊ฐ ์ถ์ถ
topk = torch.topk(probs, 3)
results = [
f"{LABELS.get(int(idx), f'Label {idx}')} ({prob:.1%})"
for idx, prob in zip(topk.indices, topk.values)
if float(prob) > 0.1
]
if results:
summary_text = "์์ธก๋ ์ง๋ณ:\n" + "\n".join(results)
else:
summary_text = "์์ธก๋ ์ง๋ณ ์์ ๐ซฅ"
return summary_text
except Exception as e:
return f"์ค๋ฅ ๋ฐ์: {str(e)}"
# 4. Gradio UI ๊ตฌ์ฑ
demo = gr.Interface(
fn=predict,
inputs=gr.Textbox(label="๋ฐ๋ ค๋๋ฌผ ์ฆ์ ์
๋ ฅ", placeholder="์: ๊ฐ์์ง๊ฐ ์์ฃผ ๊ธฐ์นจํด"),
outputs=gr.Textbox(label="์์ธก ๊ฒฐ๊ณผ"),
title="๐พ PetBERT ICD ์์์ฌ ์์ธก๊ธฐ",
description="๋ฐ๋ ค๋๋ฌผ์ ์ฆ์ ๋ฌธ์ฅ์ ์
๋ ฅํ๋ฉด AI๊ฐ ์ง๋ณ ๊ฐ๋ฅ์ฑ์ ์์ธกํด๋๋ฆฝ๋๋ค."
)
# 5. ์ฑ ์คํ
demo.launch()
|