Spaces:
Sleeping
Sleeping
import gradio as gr | |
from transformers import pipeline | |
def get_classifier(): | |
classifier = pipeline( | |
"zero-shot-classification", | |
model="joeddav/xlm-roberta-large-xnli", | |
framework="pt" | |
) | |
return classifier | |
def classify_email(text): | |
classifier = get_classifier() | |
candidate_labels = [ | |
"назначение встречи", | |
"отказ или отсутствие интереса", | |
"уточняющие вопросы" | |
] | |
result = classifier( | |
text, | |
candidate_labels, | |
hypothesis_template="В этом письме клиент выражает {}", | |
multi_label=False | |
) | |
# Преобразуем метки в категории 1,2,3 | |
label_map = { | |
"назначение встречи": 1, | |
"отказ или отсутствие интереса": 2, | |
"уточняющие вопросы": 3 | |
} | |
top_label = result["labels"][0] | |
category = label_map[top_label] | |
confidence = result["scores"][0] | |
return { | |
"category": category, | |
"confidence": confidence, | |
"label": top_label | |
} | |
# Создаем интерфейс Gradio | |
def gradio_interface(text): | |
result = classify_email(text) | |
return ( | |
f"Категория: {result['category']}\n" | |
f"Уверенность: {result['confidence']:.2f}\n" | |
f"Метка: {result['label']}" | |
) | |
# Создаем веб-интерфейс | |
iface = gr.Interface( | |
fn=gradio_interface, | |
inputs=gr.Textbox(lines=5, label="Введите текст письма"), | |
outputs=gr.Textbox(label="Результат"), | |
title="Классификация писем", | |
description="Определение категории письма: 1 - назначение встречи, 2 - отказ, 3 - уточняющие вопросы" | |
) | |
if __name__ == "__main__": | |
iface.launch() |