Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from transformers import pipeline | |
| NER_MODEL_NAME = "Babelscape/wikineural-multilingual-ner" | |
| def create_ner_pipeline(): | |
| return pipeline( | |
| "ner", | |
| model=NER_MODEL_NAME, | |
| aggregation_strategy="simple", | |
| ) | |
| ner = create_ner_pipeline() | |
| def normalize_entity_label(label: str) -> str: | |
| label = label.replace("B-", "").replace("I-", "").upper() | |
| label_mapping = { | |
| "FIRST_NAME": "PER", | |
| "LAST_NAME": "PER", | |
| "MIDDLE_NAME": "PER", | |
| "PERSON": "PER", | |
| "PER": "PER", | |
| "CITY": "LOC", | |
| "COUNTRY": "LOC", | |
| "LOCATION": "LOC", | |
| "LOC": "LOC", | |
| "ORGANIZATION": "ORG", | |
| "COMPANY": "ORG", | |
| "ORG": "ORG", | |
| } | |
| return label_mapping.get(label, label) | |
| def analyze(text: str) -> str: | |
| if not text or not text.strip(): | |
| return "Введите текст для анализа" | |
| results = ner(text) | |
| if not results: | |
| return "Сущности не найдены" | |
| answer = [] | |
| for result in results: | |
| word = result["word"] | |
| entity_group = normalize_entity_label(result["entity_group"]) | |
| score = round(float(result["score"]), 4) | |
| answer.append(f"{word} {entity_group} — уверенность {score}") | |
| return "\n".join(answer) | |
| def run_gradio_ner_test(): | |
| demo = gr.Interface( | |
| fn=analyze, | |
| inputs=gr.Textbox( | |
| label="Текст для анализа", | |
| placeholder="Напишите текст, в котором нужно определить персону или локацию", | |
| lines=3, | |
| ), | |
| outputs=gr.Textbox(label="Результат"), | |
| title="Определение персон и локаций", | |
| description="Введите текст на русском языке — модель определит персону и/или локацию", | |
| examples=[ | |
| ["Яндекс основан Аркадием Воложем в Москве в 1997 году."], | |
| ["Иван Павлов родился в Рязани и учился в Санкт-Петербургском университете."], | |
| ["Т-Банк запустил сервис для клиентов в Екатеринбурге."], | |
| ], | |
| ) | |
| demo.launch() | |
| if __name__ == "__main__": | |
| run_gradio_ner_test() |