test_ko / app.py
vivaceailab's picture
Update app.py
d52d94b verified
# app.py
import os
from fastai.text.all import load_learner
import gradio as gr
# ๋ชจ๋ธ ํŒŒ์ผ ๊ฒฝ๋กœ ์„ค์ • (ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋˜๋Š” ๊ธฐ๋ณธ๊ฐ’ ์‚ฌ์šฉ)
MODEL_PATH = os.getenv('MODEL_PATH', 'model.pkl')
try:
# ๋ชจ๋ธ ๋กœ๋“œ
learn = load_learner(MODEL_PATH)
except Exception as e:
raise RuntimeError(f"๋ชจ๋ธ ๋กœ๋“œ ์˜ค๋ฅ˜: {e}")
# ํ•œ๊ตญ์–ด ์งˆ๋ณ‘ ๋ชฉ๋ก (๋ชจ๋ธ ์ถœ๋ ฅ ์ˆœ์„œ์— ๋งž์ถฐ ์„ค์ •)
categories = [
'์•Œ๋ ˆ๋ฅด๊ธฐ', '๋นˆํ˜ˆ', '๊ธฐ๊ด€์ง€์—ผ', '๋‹น๋‡จ๋ณ‘',
'์„ค์‚ฌ', 'ํ”ผ๋กœ', '๋…๊ฐ', '๋ง๋ผ๋ฆฌ์•„', '์ŠคํŠธ๋ ˆ์Šค'
]
def classify_korean(txt):
"""
์ž…๋ ฅ๋œ ํ•œ๊ตญ์–ด ์ฆ์ƒ์„ ๋ฐ›์•„ ๊ฐ ์งˆ๋ณ‘๋ณ„ ํ™•๋ฅ ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
ํ…์ŠคํŠธ๊ฐ€ ๋นˆ ๋ฌธ์ž์—ด์ผ ๊ฒฝ์šฐ ํ™•๋ฅ  0.0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
"""
if not txt.strip():
return {cat: 0.0 for cat in categories}
# ์˜ˆ์ธก ์ˆ˜ํ–‰
_, _, probs = learn.predict(txt)
# ๊ฒฐ๊ณผ๋ฅผ ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜
return {cat: float(probs[i]) for i, cat in enumerate(categories)}
# Gradio ์ธํ„ฐํŽ˜์ด์Šค ์„ค์ •
def create_interface():
return gr.Interface(
fn=classify_korean,
inputs=gr.Textbox(lines=3, label='์ฆ์ƒ์„ ์ž์„ธํžˆ ์ž…๋ ฅํ•˜์„ธ์š”'),
outputs=gr.Label(label='์งˆ๋ณ‘๋ณ„ ํ™•๋ฅ '),
examples=[
'๋ชฉ์ด ์•„ํ”„๊ณ  ๊ธฐ์นจ์ด ๋‚˜์š”',
'์—ด์ด ๋‚˜๊ณ  ๋ชธ์‚ด ๊ธฐ์šด์ด ์žˆ์–ด์š”',
'์†์ด ๋ถˆํŽธํ•˜๊ณ  ์„ค์‚ฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค'
],
title='ํ•œ๊ตญ์–ด ์˜๋ฃŒ ์ง„๋‹จ ํ™•๋ฅ  ์˜ˆ์ธก๊ธฐ',
description='์ฆ์ƒ์„ ์ž…๋ ฅํ•˜๋ฉด ํ•ด๋‹น ์งˆ๋ณ‘๋ณ„ ํ™•๋ฅ ์„ ํ•œ๊ตญ์–ด๋กœ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.'
)
if __name__ == '__main__':
# ์ธํ„ฐํŽ˜์ด์Šค ์‹คํ–‰ (์™ธ๋ถ€ ์ ‘์† ํ•„์š” ์‹œ share=True ์„ค์ •)
create_interface().launch()