DanielNRU commited on
Commit
a846072
·
verified ·
1 Parent(s): a038fb4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -20
app.py CHANGED
@@ -122,10 +122,10 @@ def insert_entity_markers(text: str, entities: List[Dict]) -> str:
122
  return text
123
 
124
  def process_text(text: str) -> Dict[str, List[str]]:
125
- """Обрабатывает текст и возвращает сущности и отношения"""
126
  # Получаем сущности
127
  entities = predict_entities(text)
128
-
129
  # Находим отношения
130
  relations = []
131
  for i, ent1 in enumerate(entities):
@@ -140,30 +140,24 @@ def process_text(text: str) -> Dict[str, List[str]]:
140
  'tail': ent2,
141
  'relation': rel
142
  })
143
-
144
  # Собираем симптомы из отношений has_symptom
145
- symptoms = []
146
  for rel in relations:
147
  if rel['relation'] == 'has_symptom':
148
  body_part = rel['head']['text'].strip()
149
  symptom = rel['tail']['text'].strip()
150
- # Форматируем симптом как "часть тела + симптом"
151
- symptoms.append(f"{body_part} {symptom}")
152
-
153
- # Группируем сущности по типу (исключая BODY_PART)
154
  ent_by_type = {label: [] for label in ["TOPONYM", "MEDICINE", "SYMPTOM", "ALLERGEN"]}
155
-
156
- # Добавляем все сущности, кроме SYMPTOM
157
  for ent in entities:
158
- if ent['label'] in ent_by_type and ent['label'] != 'SYMPTOM':
159
- # Убираем лишние пробелы и добавляем в список
160
- text = ent['text'].strip()
161
- if text and text not in ent_by_type[ent['label']]:
162
- ent_by_type[ent['label']].append(text)
163
-
164
- # Добавляем симптомы из отношений
165
- ent_by_type['SYMPTOM'] = symptoms
166
-
167
  return ent_by_type
168
 
169
  def format_output(entities_by_type: Dict[str, List[str]]) -> str:
@@ -242,4 +236,4 @@ if __name__ == "__main__":
242
  server_port=7860,
243
  share=False,
244
  debug=True
245
- )
 
122
  return text
123
 
124
  def process_text(text: str) -> Dict[str, List[str]]:
125
+ """Обрабатывает текст и возвращает сущности и отношения (с повторами, как в pollen_ner.py)"""
126
  # Получаем сущности
127
  entities = predict_entities(text)
128
+
129
  # Находим отношения
130
  relations = []
131
  for i, ent1 in enumerate(entities):
 
140
  'tail': ent2,
141
  'relation': rel
142
  })
143
+
144
  # Собираем симптомы из отношений has_symptom
145
+ symptoms_from_rel = []
146
  for rel in relations:
147
  if rel['relation'] == 'has_symptom':
148
  body_part = rel['head']['text'].strip()
149
  symptom = rel['tail']['text'].strip()
150
+ symptoms_from_rel.append(f"{body_part} {symptom}")
151
+
152
+ # Группируем сущности по типу (с повторами)
 
153
  ent_by_type = {label: [] for label in ["TOPONYM", "MEDICINE", "SYMPTOM", "ALLERGEN"]}
 
 
154
  for ent in entities:
155
+ if ent['label'] in ent_by_type:
156
+ ent_by_type[ent['label']].append(ent['text'].strip())
157
+
158
+ # Для SYMPTOM: добавляем симптомы из отношений
159
+ ent_by_type['SYMPTOM'].extend(symptoms_from_rel)
160
+
 
 
 
161
  return ent_by_type
162
 
163
  def format_output(entities_by_type: Dict[str, List[str]]) -> str:
 
236
  server_port=7860,
237
  share=False,
238
  debug=True
239
+ )