bookdabang commited on
Commit
a35d9e4
ยท
verified ยท
1 Parent(s): aae2559

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -36
app.py CHANGED
@@ -1,51 +1,42 @@
1
- import gradio as gr
2
- import torch
3
  from transformers import AutoTokenizer, AutoModelForSequenceClassification
 
 
4
 
5
- # โœ… ๋ชจ๋ธ ๋กœ๋”ฉ
6
- print("๐Ÿ“ฆ ๋ชจ๋ธ ๋กœ๋”ฉ ์‹œ์ž‘...")
 
 
7
  tokenizer = AutoTokenizer.from_pretrained("SAVSNET/PetBERT_ICD")
8
  model = AutoModelForSequenceClassification.from_pretrained("SAVSNET/PetBERT_ICD")
9
- print("โœ… ๋ชจ๋ธ ๋กœ๋”ฉ ์™„๋ฃŒ!")
10
-
11
- # โœ… ์˜ˆ์ธก ํ•จ์ˆ˜ ์ •์˜
12
- def predict(text):
13
- print("\n๐Ÿ“ฅ ์ž…๋ ฅ ํ…์ŠคํŠธ:", text)
14
 
15
- inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True)
16
- print("๐Ÿงช Tokenized inputs:", inputs)
 
 
17
 
 
 
18
  with torch.no_grad():
19
  logits = model(**inputs).logits
20
- print("๐Ÿ“Š Logits:", logits)
21
-
22
- probs = torch.sigmoid(logits).squeeze().tolist()
23
- print("๐Ÿ“ˆ ํ™•๋ฅ ๊ฐ’:", probs)
24
 
25
- labels = model.config.id2label
26
- print("๐Ÿท๏ธ ๋ผ๋ฒจ ๋ชฉ๋ก:", labels)
27
 
28
- result = {}
29
- for i, p in enumerate(probs):
30
- try:
31
- label = labels[str(i)] # โ— str(i) ์ค‘์š”
32
- if p > 0.5:
33
- result[label] = f"{p:.1%}"
34
- except Exception as e:
35
- print(f"โŒ ๋ผ๋ฒจ ๋งคํ•‘ ์˜ค๋ฅ˜: {i} โ†’ {e}")
36
 
37
- print("โœ… ์ตœ์ข… ์˜ˆ์ธก ๊ฒฐ๊ณผ:", result)
38
- return result or {"์˜ˆ์ธก๋œ ์งˆ๋ณ‘ ์—†์Œ": "๐Ÿคท"}
39
 
40
- # โœ… Gradio ์ธํ„ฐํŽ˜์ด์Šค ์ •์˜
41
  demo = gr.Interface(
42
- fn=predict, # ์—ฌ๊ธฐ์„œ predict()๊ฐ€ ํ˜ธ์ถœ๋จ
43
- inputs=gr.Textbox(label="๋ฐ˜๋ ค๋™๋ฌผ ์ฆ์ƒ ์ž…๋ ฅ", placeholder="์˜ˆ: ๊ธฐ์นจ์„ ์ž์ฃผ ํ•ด์š”"),
44
- outputs=gr.JSON(label="์˜ˆ์ธก ์งˆ๋ณ‘ ๋ชฉ๋ก"),
45
- title="๐Ÿพ PetBERT ICD ์ˆ˜์˜์‚ฌ ์˜ˆ์ธก๊ธฐ",
46
- description="๋ฐ˜๋ ค๋™๋ฌผ์˜ ์ฆ์ƒ ๋ฌธ์žฅ์„ ์ž…๋ ฅํ•˜๋ฉด AI๊ฐ€ ์งˆ๋ณ‘ ๊ฐ€๋Šฅ์„ฑ์„ ์˜ˆ์ธกํ•ฉ๋‹ˆ๋‹ค."
47
  )
48
 
49
- # โœ… ์•ฑ ์‹คํ–‰
50
- if __name__ == "__main__":
51
- demo.launch()
 
1
+ from googletrans import Translator
 
2
  from transformers import AutoTokenizer, AutoModelForSequenceClassification
3
+ import torch
4
+ import gradio as gr
5
 
6
+ # ๋ฒˆ์—ญ๊ธฐ ์ดˆ๊ธฐํ™”
7
+ translator = Translator()
8
+
9
+ # PetBERT ๋ชจ๋ธ ๋กœ๋”ฉ
10
  tokenizer = AutoTokenizer.from_pretrained("SAVSNET/PetBERT_ICD")
11
  model = AutoModelForSequenceClassification.from_pretrained("SAVSNET/PetBERT_ICD")
 
 
 
 
 
12
 
13
+ def predict_korean(text_kr):
14
+ # ํ•œ๊ธ€ โ†’ ์˜์–ด ๋ฒˆ์—ญ
15
+ translated = translator.translate(text_kr, src='ko', dest='en').text
16
+ print(f"๐Ÿ” ๋ฒˆ์—ญ๋œ ๋ฌธ์žฅ: {translated}")
17
 
18
+ # ๋ชจ๋ธ ์ž…๋ ฅ ์ฒ˜๋ฆฌ
19
+ inputs = tokenizer(translated, return_tensors="pt", truncation=True, padding=True)
20
  with torch.no_grad():
21
  logits = model(**inputs).logits
22
+ probs = torch.sigmoid(logits)
 
 
 
23
 
24
+ threshold = 0.3 # ๋‚ฎ์€ ์ž„๊ณ„๊ฐ’
25
+ predicted = (probs > threshold).nonzero(as_tuple=True)[1]
26
 
27
+ if len(predicted) == 0:
28
+ return {"์˜ˆ์ธก๋œ ์งˆ๋ณ‘ ์—†์Œ": "๐Ÿถ"}
 
 
 
 
 
 
29
 
30
+ result = {model.config.id2label[idx.item()]: f"{probs[0][idx].item():.2f}" for idx in predicted}
31
+ return result
32
 
33
+ # Gradio ์ธํ„ฐํŽ˜์ด์Šค
34
  demo = gr.Interface(
35
+ fn=predict_korean,
36
+ inputs=gr.Textbox(label="๋ฐ˜๋ ค๋™๋ฌผ ์ฆ์ƒ ์ž…๋ ฅ", placeholder="์˜ˆ: ๊ฐ•์•„์ง€๊ฐ€ ์ž์ฃผ ๊ธฐ์นจํ•ด์š”."),
37
+ outputs="json",
38
+ title="๐Ÿพ PetBERT ICD ์ˆ˜์˜์‚ฌ ์˜ˆ์ธก๊ธฐ (ํ•œ๊ธ€ ์ง€์›)",
39
+ description="ํ•œ๊ธ€๋กœ ๋ฐ˜๋ ค๋™๋ฌผ ์ฆ์ƒ์„ ์ž…๋ ฅํ•˜๋ฉด ์˜์–ด๋กœ ๋ฒˆ์—ญํ•œ ๋’ค, AI๊ฐ€ ์งˆ๋ณ‘์„ ์˜ˆ์ธกํ•ฉ๋‹ˆ๋‹ค."
40
  )
41
 
42
+ demo.launch()