student2222333051 commited on
Commit
a62422b
·
verified ·
1 Parent(s): 67cfabf

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +6 -33
app.py CHANGED
@@ -24,12 +24,11 @@ english_ner = pipeline(
24
  )
25
 
26
  # ============================
27
- # Функция распознавания сущностей и подсчёта метрик
28
  # ============================
29
- def recognize_entities_auto(text, gold_entities=None):
30
  """
31
  text: текст пользователя
32
- gold_entities: словарь с эталонными сущностями {'PER': [...], 'ORG': [...], 'LOC': [...]}
33
  """
34
  # Определяем язык
35
  try:
@@ -72,43 +71,17 @@ def recognize_entities_auto(text, gold_entities=None):
72
  for item in items:
73
  highlighted.append((item, key))
74
 
75
- # ============================
76
- # Подсчёт метрик
77
- # ============================
78
- metrics_text = ""
79
- if gold_entities:
80
- for key in ['PER','ORG','LOC']:
81
- # Приводим к нижнему регистру для корректного сравнения
82
- pred_set = set([p.lower().strip() for p in entities[key]])
83
- gold_set = set([g.lower().strip() for g in gold_entities.get(key, [])])
84
-
85
- tp = len(pred_set & gold_set)
86
- fp = len(pred_set - gold_set)
87
- fn = len(gold_set - pred_set)
88
-
89
- precision = tp / (tp + fp) if (tp + fp) > 0 else 0.0
90
- recall = tp / (tp + fn) if (tp + fn) > 0 else 0.0
91
- f1 = 2 * precision * recall / (precision + recall) if (precision + recall) > 0 else 0.0
92
-
93
- metrics_text += f"{key}: Precision={precision:.2f}, Recall={recall:.2f}, F1={f1:.2f}\n"
94
-
95
- return highlighted, metrics_text.strip()
96
 
97
  # ============================
98
  # Gradio интерфейс
99
  # ============================
100
  iface = gr.Interface(
101
  fn=recognize_entities_auto,
102
- inputs=[
103
- gr.Textbox(lines=15, placeholder="Введите русский или английский текст здесь..."),
104
- gr.JSON(label="Эталонные сущности (опционально)", value={"PER":[],"ORG":[],"LOC":[]})
105
- ],
106
- outputs=[
107
- gr.HighlightedText(label="Выделенные сущности", color_map={"PER":"#faa", "ORG":"#afa", "LOC":"#aaf"}),
108
- gr.Textbox(label="Метрики (если указаны эталонные сущности)")
109
- ],
110
  title="Автоматический NER для русского и английского текста",
111
- description="PER – человек, ORG – организация, LOC – место. Текст любого языка обрабатывается автоматически. Можно передать эталонные сущности для подсчёта Precision/Recall/F1."
112
  )
113
 
114
  iface.launch()
 
24
  )
25
 
26
  # ============================
27
+ # Функция распознавания сущностей
28
  # ============================
29
+ def recognize_entities_auto(text):
30
  """
31
  text: текст пользователя
 
32
  """
33
  # Определяем язык
34
  try:
 
71
  for item in items:
72
  highlighted.append((item, key))
73
 
74
+ return highlighted
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
 
76
  # ============================
77
  # Gradio интерфейс
78
  # ============================
79
  iface = gr.Interface(
80
  fn=recognize_entities_auto,
81
+ inputs=gr.Textbox(lines=15, placeholder="Введите русский или английский текст здесь..."),
82
+ outputs=gr.HighlightedText(label="Выделенные сущности", color_map={"PER":"#faa", "ORG":"#afa", "LOC":"#aaf"}),
 
 
 
 
 
 
83
  title="Автоматический NER для русского и английского текста",
84
+ description="PER – человек, ORG – организация, LOC – место. Текст любого языка обрабатывается автоматически."
85
  )
86
 
87
  iface.launch()