PolyakovK commited on
Commit
5395cc2
·
verified ·
1 Parent(s): 4603ed4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +39 -17
app.py CHANGED
@@ -1,9 +1,10 @@
 
1
  from transformers import pipeline
2
 
3
  def get_classifier():
4
  classifier = pipeline(
5
  "zero-shot-classification",
6
- model="sberbank-ai/rugpt3small_based_on_gpt2",
7
  framework="pt"
8
  )
9
  return classifier
@@ -12,31 +13,52 @@ def classify_email(text):
12
  classifier = get_classifier()
13
 
14
  candidate_labels = [
15
- "Клиент хочет назначить встречу",
16
- "Клиент не заинтересован или отказывается",
17
- "Клиент задаёт уточняющие вопросы"
18
  ]
19
 
20
  result = classifier(
21
  text,
22
  candidate_labels,
23
- hypothesis_template="Это письмо о том, что {}."
 
24
  )
25
 
26
- # Получаем индекс наиболее вероятной метки (0, 1 или 2)
27
- label_index = result["labels"].index(result["labels"][0])
 
 
 
 
 
 
 
 
28
 
29
- # Возвращаем категорию (1, 2 или 3) и уверенность
30
  return {
31
- "category": label_index + 1,
32
- "confidence": result["scores"][label_index],
33
- "label": result["labels"][0]
34
  }
35
 
36
- # Пример использования
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  if __name__ == "__main__":
38
- test_text = "Добрый день! Можно ли узнать подробнее о ваших услугах и ценах?"
39
- result = classify_email(test_text)
40
- print(f"Категория: {result['category']}")
41
- print(f"Уверенность: {result['confidence']:.2f}")
42
- print(f"Метка: {result['label']}")
 
1
+ import gradio as gr
2
  from transformers import pipeline
3
 
4
  def get_classifier():
5
  classifier = pipeline(
6
  "zero-shot-classification",
7
+ model="joeddav/xlm-roberta-large-xnli",
8
  framework="pt"
9
  )
10
  return classifier
 
13
  classifier = get_classifier()
14
 
15
  candidate_labels = [
16
+ "назначение встречи",
17
+ "отказ или отсутствие интереса",
18
+ "уточняющие вопросы"
19
  ]
20
 
21
  result = classifier(
22
  text,
23
  candidate_labels,
24
+ hypothesis_template="В этом письме клиент выражает {}",
25
+ multi_label=False
26
  )
27
 
28
+ # Преобразуем метки в категории 1,2,3
29
+ label_map = {
30
+ "назначение встречи": 1,
31
+ "отказ или отсутствие интереса": 2,
32
+ "уточняющие вопросы": 3
33
+ }
34
+
35
+ top_label = result["labels"][0]
36
+ category = label_map[top_label]
37
+ confidence = result["scores"][0]
38
 
 
39
  return {
40
+ "category": category,
41
+ "confidence": confidence,
42
+ "label": top_label
43
  }
44
 
45
+ # Создаем интерфейс Gradio
46
+ def gradio_interface(text):
47
+ result = classify_email(text)
48
+ return (
49
+ f"Категория: {result['category']}\n"
50
+ f"Уверенность: {result['confidence']:.2f}\n"
51
+ f"Метка: {result['label']}"
52
+ )
53
+
54
+ # Создаем веб-интерфейс
55
+ iface = gr.Interface(
56
+ fn=gradio_interface,
57
+ inputs=gr.Textbox(lines=5, label="Введите текст письма"),
58
+ outputs=gr.Textbox(label="Результат"),
59
+ title="Классификация писем",
60
+ description="Определение категории письма: 1 - назначение встречи, 2 - отказ, 3 - уточняющие вопросы"
61
+ )
62
+
63
  if __name__ == "__main__":
64
+ iface.launch()