vivaceailab commited on
Commit
d52d94b
ยท
verified ยท
1 Parent(s): 40f3a8f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -12
app.py CHANGED
@@ -1,28 +1,51 @@
1
  # app.py
 
2
  from fastai.text.all import load_learner
3
  import gradio as gr
4
 
5
- # ํ•™์Šต๋œ ๋ชจ๋ธ ํŒŒ์ผ ๋กœ๋“œ ('model.pkl'์€ ์‹คํ–‰ ๋””๋ ‰ํ† ๋ฆฌ์— ์œ„์น˜)
6
- learn = load_learner('model.pkl')
 
 
 
 
 
 
7
 
8
  # ํ•œ๊ตญ์–ด ์งˆ๋ณ‘ ๋ชฉ๋ก (๋ชจ๋ธ ์ถœ๋ ฅ ์ˆœ์„œ์— ๋งž์ถฐ ์„ค์ •)
9
- categories = ['์•Œ๋ ˆ๋ฅด๊ธฐ', '๋นˆํ˜ˆ', '๊ธฐ๊ด€์ง€์—ผ', '๋‹น๋‡จ๋ณ‘', '์„ค์‚ฌ', 'ํ”ผ๋กœ', '๋…๊ฐ', '๋ง๋ผ๋ฆฌ์•„', '์ŠคํŠธ๋ ˆ์Šค']
 
 
 
10
 
11
  def classify_korean(txt):
12
  """
13
- ํ•œ๊ตญ์–ด๋กœ ์ž…๋ ฅ๋œ ์ฆ์ƒ์„ ๋ฐ›์•„ ๊ฐ ์งˆ๋ณ‘๋ณ„ ํ™•๋ฅ ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
 
14
  """
 
 
 
15
  _, _, probs = learn.predict(txt)
 
16
  return {cat: float(probs[i]) for i, cat in enumerate(categories)}
17
 
18
  # Gradio ์ธํ„ฐํŽ˜์ด์Šค ์„ค์ •
19
- iface = gr.Interface(
20
- fn=classify_korean,
21
- inputs=gr.Textbox(lines=3, label='์ฆ์ƒ์„ ์ž์„ธํžˆ ์ž…๋ ฅํ•˜์„ธ์š”'),
22
- outputs=gr.Label(num_top_classes=len(categories), label='์งˆ๋ณ‘๋ณ„ ํ™•๋ฅ '),
23
- examples=['๋ชฉ์ด ์•„ํ”„๊ณ  ๊ธฐ์นจ์ด ๋‚˜์š”', '์—ด์ด ๋‚˜๊ณ  ๋ชธ์‚ด ๊ธฐ์šด์ด ์žˆ์–ด์š”'],
24
- description='์ฆ์ƒ์„ ์ž…๋ ฅํ•˜๋ฉด ํ•ด๋‹น ์งˆ๋ณ‘๋ณ„ ํ™•๋ฅ ์„ ํ•œ๊ตญ์–ด๋กœ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.'
25
- )
 
 
 
 
 
 
26
 
27
  if __name__ == '__main__':
28
- iface.launch()
 
 
 
1
  # app.py
2
+ import os
3
  from fastai.text.all import load_learner
4
  import gradio as gr
5
 
6
+ # ๋ชจ๋ธ ํŒŒ์ผ ๊ฒฝ๋กœ ์„ค์ • (ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋˜๋Š” ๊ธฐ๋ณธ๊ฐ’ ์‚ฌ์šฉ)
7
+ MODEL_PATH = os.getenv('MODEL_PATH', 'model.pkl')
8
+
9
+ try:
10
+ # ๋ชจ๋ธ ๋กœ๋“œ
11
+ learn = load_learner(MODEL_PATH)
12
+ except Exception as e:
13
+ raise RuntimeError(f"๋ชจ๋ธ ๋กœ๋“œ ์˜ค๋ฅ˜: {e}")
14
 
15
  # ํ•œ๊ตญ์–ด ์งˆ๋ณ‘ ๋ชฉ๋ก (๋ชจ๋ธ ์ถœ๋ ฅ ์ˆœ์„œ์— ๋งž์ถฐ ์„ค์ •)
16
+ categories = [
17
+ '์•Œ๋ ˆ๋ฅด๊ธฐ', '๋นˆํ˜ˆ', '๊ธฐ๊ด€์ง€์—ผ', '๋‹น๋‡จ๋ณ‘',
18
+ '์„ค์‚ฌ', 'ํ”ผ๋กœ', '๋…๊ฐ', '๋ง๋ผ๋ฆฌ์•„', '์ŠคํŠธ๋ ˆ์Šค'
19
+ ]
20
 
21
  def classify_korean(txt):
22
  """
23
+ ์ž…๋ ฅ๋œ ํ•œ๊ตญ์–ด ์ฆ์ƒ์„ ๋ฐ›์•„ ๊ฐ ์งˆ๋ณ‘๋ณ„ ํ™•๋ฅ ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
24
+ ํ…์ŠคํŠธ๊ฐ€ ๋นˆ ๋ฌธ์ž์—ด์ผ ๊ฒฝ์šฐ ํ™•๋ฅ  0.0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
25
  """
26
+ if not txt.strip():
27
+ return {cat: 0.0 for cat in categories}
28
+ # ์˜ˆ์ธก ์ˆ˜ํ–‰
29
  _, _, probs = learn.predict(txt)
30
+ # ๊ฒฐ๊ณผ๋ฅผ ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜
31
  return {cat: float(probs[i]) for i, cat in enumerate(categories)}
32
 
33
  # Gradio ์ธํ„ฐํŽ˜์ด์Šค ์„ค์ •
34
+ def create_interface():
35
+ return gr.Interface(
36
+ fn=classify_korean,
37
+ inputs=gr.Textbox(lines=3, label='์ฆ์ƒ์„ ์ž์„ธํžˆ ์ž…๋ ฅํ•˜์„ธ์š”'),
38
+ outputs=gr.Label(label='์งˆ๋ณ‘๋ณ„ ํ™•๋ฅ '),
39
+ examples=[
40
+ '๋ชฉ์ด ์•„ํ”„๊ณ  ๊ธฐ์นจ์ด ๋‚˜์š”',
41
+ '์—ด์ด ๋‚˜๊ณ  ๋ชธ์‚ด ๊ธฐ์šด์ด ์žˆ์–ด์š”',
42
+ '์†์ด ๋ถˆํŽธํ•˜๊ณ  ์„ค์‚ฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค'
43
+ ],
44
+ title='ํ•œ๊ตญ์–ด ์˜๋ฃŒ ์ง„๋‹จ ํ™•๋ฅ  ์˜ˆ์ธก๊ธฐ',
45
+ description='์ฆ์ƒ์„ ์ž…๋ ฅํ•˜๋ฉด ํ•ด๋‹น ์งˆ๋ณ‘๋ณ„ ํ™•๋ฅ ์„ ํ•œ๊ตญ์–ด๋กœ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.'
46
+ )
47
 
48
  if __name__ == '__main__':
49
+ # ์ธํ„ฐํŽ˜์ด์Šค ์‹คํ–‰ (์™ธ๋ถ€ ์ ‘์† ํ•„์š” ์‹œ share=True ์„ค์ •)
50
+ create_interface().launch()
51
+