NomClass / app.py
hh1199's picture
Update app.py
2536443 verified
raw
history blame
1.73 kB
import gradio as gr
from transformers import pipeline
import re
MODELS = {
"ruRoberta-large": "sberbank-ai/ruRoberta-large",
"rubert-tiny2": "cointegrated/rubert-tiny2",
"multilingual-e5": "intfloat/multilingual-e5-base"
}
def classify(model_name: str, item: str, categories: str) -> str:
# Нормализация текста
item = re.sub(r"[^а-яА-ЯёЁ]", " ", item).lower().strip()
classifier = pipeline(
"zero-shot-classification",
model=MODELS[model_name],
device=-1
)
hypothesis_template = (
"Примеры категорий:\n"
"- молоток → инструменты\n"
"- картофель → овощи\n"
"Категория для '{}' → "
)
result = classifier(
item,
candidate_labels=[c.strip().lower() for c in categories.split(",")],
hypothesis_template=hypothesis_template,
multi_label=False
)
if result['scores'][0] < 0.3:
return "Категория не определена"
return f"{result['labels'][0].capitalize()} ({result['scores'][0]:.2f})"
iface = gr.Interface(
fn=classify,
inputs=[
gr.Dropdown(list(MODELS.keys()), label="Модель"),
gr.Textbox(label="Товар"),
gr.Textbox(label="Категории", value="Инструменты, Овощи, Техника")
],
outputs=gr.Textbox(label="Результат"),
examples=[
["ruRoberta-large", "Аккумуляторная дрель", "Инструменты, Техника"],
["rubert-tiny2", "Свёкла кормовая", "Овощи, Фураж"]
]
)
iface.launch()