Update app.py
Browse files
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 |
-
|
| 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 |
-
|
| 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
|
| 159 |
-
|
| 160 |
-
|
| 161 |
-
|
| 162 |
-
|
| 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 |
+
)
|