Spaces:
Sleeping
Sleeping
A newer version of the Gradio SDK is available:
6.6.0
metadata
title: Russian NER - Извлечение именованных сущностей
emoji: 🏷️
colorFrom: blue
colorTo: green
sdk: gradio
sdk_version: 6.4.0
app_file: app.py
pinned: false
license: mit
🏷️ Russian NER — Извлечение именованных сущностей
Веб-приложение для автоматического извлечения именованных сущностей (Named Entity Recognition) из текстов на русском языке.
📋 Описание задачи
Named Entity Recognition (NER) — это задача извлечения и классификации именованных сущностей в тексте. Приложение распознаёт следующие типы сущностей:
| Тип | Описание | Примеры |
|---|---|---|
| PER | Персоны (ФИО) | Владимир Путин, Иван Петров |
| ORG | Организации | Яндекс, Сбербанк, МГУ |
| LOC | Локации (места) | Москва, Россия, Невский проспект |
| MISC | Прочее | Названия событий, продуктов и т.д. |
🤖 Выбранные модели
Модель 1: WikiNEuRal (multilingual)
- Hugging Face: Babelscape/wikineural-multilingual-ner
- Архитектура: mBERT (multilingual BERT)
- Почему выбрана:
- Поддержка 9 языков, включая русский
- Распознаёт все 4 типа сущностей (PER, ORG, LOC, MISC)
- 457K+ загрузок — проверенная сообществом
- Хорошо работает на текстах общей тематики
Модель 2: BERT Russian NER
- Hugging Face: Gherman/bert-base-NER-Russian
- Архитектура: BERT (multilingual, fine-tuned)
- Почему выбрана:
- Специально обучена для русского языка
- Высокая точность на русских текстах
- Альтернатива для сравнения результатов
✨ Функциональность
Базовые функции
- ✅ Ввод текста с ограничением 2000 символов
- ✅ Извлечение сущностей с указанием типа и уверенности
- ✅ Визуальная подсветка сущностей в тексте (цветовая маркировка)
- ✅ Блок примеров для быстрого тестирования
- ✅ Корректная обработка ошибок
Расширенные функции (на "отлично")
- ✅ Переключатель моделей — выбор из 2 моделей через Dropdown
- ✅ Сравнение моделей — side-by-side результаты обеих моделей
- ✅ Измерение latency — отображение времени обработки в миллисекундах
- ✅ История запросов — последние 10 запросов с результатами
- ✅ Пакетная обработка — загрузка CSV/TXT и выдача результатов таблицей
📊 Примеры работы
Вход:
Владимир Путин встретился с президентом Франции Эммануэлем Макроном в Москве для обсуждения вопросов безопасности.
Выход:
| Текст | Тип | Описание | Уверенность |
|---|---|---|---|
| Владимир Путин | PER | Персона (ФИО) | 99.2% |
| Франции | LOC | Локация (место) | 98.7% |
| Эммануэлем Макроном | PER | Персона (ФИО) | 98.9% |
| Москве | LOC | Локация (место) | 99.1% |
Подсветка в тексте:
- 🔵 Владимир Путин — PER
- 🔵 Эммануэлем Макроном — PER
- 🟠 Франции — LOC
- 🟠 Москве — LOC
Вход:
Компания Яндекс открыла новый офис в Санкт-Петербурге рядом с Невским проспектом.
Выход:
| Текст | Тип | Описание | Уверенность |
|---|---|---|---|
| Яндекс | ORG | Организация | 98.5% |
| Санкт-Петербурге | LOC | Локация (место) | 99.3% |
| Невским проспектом | LOC | Локация (место) | 97.8% |
⚠️ Ограничения решения
Технические ограничения
- CPU-режим: Приложение работает без GPU для совместимости с бесплатным Hugging Face Spaces
- Лимит текста: Максимум 2000 символов на один запрос
- Лимит пакетной обработки: Максимум 100 строк в файле
- Время загрузки: Первый запрос может занять 30-60 секунд (загрузка модели)
Ограничения моделей
- Модели обучены на Wikipedia и новостных текстах — могут хуже работать на сленге, диалектах
- Редкие имена и новые организации могут не распознаваться
- Сложные случаи (омонимия, сокращения) могут давать ошибки
- MISC-категория может быть неточной
Примеры сложных случаев
| Текст | Проблема |
|---|---|
| "Петров выиграл Петрова" | Омонимия: фамилия vs название турнира |
| "ВТБ" | Сокращения могут не распознаваться |
| "пойти в яндекс" | Неформальное написание |
🚀 Как использовать
Локальный запуск
# Клонировать репозиторий
git clone https://huggingface.co/spaces/YOUR_USERNAME/russian-ner
# Установить зависимости
pip install -r requirements.txt
# Запустить приложение
python app.py
Пакетная обработка
- Подготовьте CSV-файл с колонкой
text:
text
"Иван Петров работает в Яндексе."
"Мария Сидорова живёт в Казани."
- Или TXT-файл (каждая строка — отдельный текст):
Иван Петров работает в Яндексе.
Мария Сидорова живёт в Казани.
- Загрузите файл во вкладке "Пакетная обработка"
🔒 Правила безопасного использования
⚠️ ВАЖНО: Не вводите реальные персональные данные!
- Это демонстрационное приложение
- Данные не сохраняются на сервере, но проходят через модели Hugging Face
- Для обработки конфиденциальных данных используйте локальный запуск
- Не используйте для обработки паспортных данных, медицинских записей и т.п.
📁 Структура проекта
russian-ner/
├── app.py # Точка входа приложения
├── config.py # Константы и настройки
├── processing.py # Логика NER-обработки
├── ui.py # Gradio интерфейс
├── requirements.txt # Зависимости Python
└── README.md # Документация (этот файл)
🛠️ Технологии
- Gradio — веб-интерфейс
- Transformers — работа с моделями NLP
- PyTorch — бэкенд для моделей
- Pandas — обработка табличных данных
📚 Ссылки
📝 Лицензия
MIT License