Update app.py
Browse files
app.py
CHANGED
|
@@ -3,18 +3,14 @@ import re
|
|
| 3 |
import gradio as gr
|
| 4 |
from transformers import pipeline, AutoTokenizer, AutoModelForTokenClassification
|
| 5 |
|
| 6 |
-
# ================== КОНФИГУРАЦИЯ ==================
|
| 7 |
-
# Можно легко добавить новые модели
|
| 8 |
MODELS = {
|
| 9 |
"Leo97/KoELECTRA-small-v3-modu-ner",
|
| 10 |
"Babelscape/wikineural-multilingual-ner",
|
| 11 |
"CAMeL-Lab/bert-base-arabic-camelbert-mix-ner",
|
| 12 |
}
|
| 13 |
|
| 14 |
-
# Выбранная модель по умолчанию
|
| 15 |
DEFAULT_MODEL = "Leo97/KoELECTRA-small-v3-modu-ner"
|
| 16 |
|
| 17 |
-
# Цвета для разных типов сущностей (для красивого отображения)
|
| 18 |
ENTITY_COLORS = {
|
| 19 |
"PER": "#FF6B6B", # персона
|
| 20 |
"ORG": "#4ECDC4", # организация
|
|
@@ -190,7 +186,6 @@ def batch_process(files):
|
|
| 190 |
|
| 191 |
return "✅ Обработка завершена", results
|
| 192 |
|
| 193 |
-
# ================== ИНТЕРФЕЙС GRADIO ==================
|
| 194 |
with gr.Blocks(title="NER — Извлечение сущностей", theme=gr.themes.Soft()) as demo:
|
| 195 |
|
| 196 |
# Заголовок
|
|
@@ -198,7 +193,6 @@ with gr.Blocks(title="NER — Извлечение сущностей", theme=gr
|
|
| 198 |
# 🔍 Извлечение именованных сущностей (NER)
|
| 199 |
**Распознавание имен, организаций, локаций и других сущностей в тексте**
|
| 200 |
|
| 201 |
-
*Используются модели из Hugging Face Hub*
|
| 202 |
""")
|
| 203 |
|
| 204 |
# Основные вкладки
|
|
@@ -305,42 +299,7 @@ with gr.Blocks(title="NER — Извлечение сущностей", theme=gr
|
|
| 305 |
inputs=file_input,
|
| 306 |
outputs=[batch_status, batch_results]
|
| 307 |
)
|
| 308 |
-
|
| 309 |
-
# Вкладка 3: О приложении
|
| 310 |
-
with gr.TabItem("ℹ️ О приложении"):
|
| 311 |
-
gr.Markdown(f"""
|
| 312 |
-
## Информация о приложении
|
| 313 |
-
|
| 314 |
-
**Поддерживаемые модели:**
|
| 315 |
-
{chr(10).join([f"- **{k}**: {v}" for k, v in MODELS.items()])}
|
| 316 |
-
|
| 317 |
-
**Типы сущностей:**
|
| 318 |
-
- **PER/PERSON**: Персона, человек
|
| 319 |
-
- **ORG/ORGANIZATION**: Организация, компания
|
| 320 |
-
- **LOC/LOCATION**: Локация, место
|
| 321 |
-
- **MISC**: Прочие сущности
|
| 322 |
-
- **DATE/TIME**: Даты и время
|
| 323 |
-
|
| 324 |
-
**Ограничения:**
|
| 325 |
-
- Максимальная длина текста: {MAX_CHARS} символов
|
| 326 |
-
- Работает на CPU (бесплатно, но медленнее)
|
| 327 |
-
- Модели могут ошибаться, особенно на сложных текстах
|
| 328 |
-
|
| 329 |
-
**Рекомендации по использованию:**
|
| 330 |
-
1. Для русских текстов используйте `ai-forever/ruBert-base-ner`
|
| 331 |
-
2. Для многоязычных текстов используйте `Davlan/xlm-roberta-large-ner-hrl`
|
| 332 |
-
3. Текст должен быть грамотно написан для лучшего распознавания
|
| 333 |
-
""")
|
| 334 |
-
|
| 335 |
-
# Футер
|
| 336 |
-
gr.Markdown("---")
|
| 337 |
-
gr.Markdown("""
|
| 338 |
-
<div style="text-align: center; color: #666;">
|
| 339 |
-
<small>NLP приложение для извлечения сущностей | Hugging Face Spaces + Gradio</small>
|
| 340 |
-
</div>
|
| 341 |
-
""")
|
| 342 |
|
| 343 |
-
# ================== ЗАПУСК ==================
|
| 344 |
if __name__ == "__main__":
|
| 345 |
demo.launch(
|
| 346 |
server_name="0.0.0.0",
|
|
|
|
| 3 |
import gradio as gr
|
| 4 |
from transformers import pipeline, AutoTokenizer, AutoModelForTokenClassification
|
| 5 |
|
|
|
|
|
|
|
| 6 |
MODELS = {
|
| 7 |
"Leo97/KoELECTRA-small-v3-modu-ner",
|
| 8 |
"Babelscape/wikineural-multilingual-ner",
|
| 9 |
"CAMeL-Lab/bert-base-arabic-camelbert-mix-ner",
|
| 10 |
}
|
| 11 |
|
|
|
|
| 12 |
DEFAULT_MODEL = "Leo97/KoELECTRA-small-v3-modu-ner"
|
| 13 |
|
|
|
|
| 14 |
ENTITY_COLORS = {
|
| 15 |
"PER": "#FF6B6B", # персона
|
| 16 |
"ORG": "#4ECDC4", # организация
|
|
|
|
| 186 |
|
| 187 |
return "✅ Обработка завершена", results
|
| 188 |
|
|
|
|
| 189 |
with gr.Blocks(title="NER — Извлечение сущностей", theme=gr.themes.Soft()) as demo:
|
| 190 |
|
| 191 |
# Заголовок
|
|
|
|
| 193 |
# 🔍 Извлечение именованных сущностей (NER)
|
| 194 |
**Распознавание имен, организаций, локаций и других сущностей в тексте**
|
| 195 |
|
|
|
|
| 196 |
""")
|
| 197 |
|
| 198 |
# Основные вкладки
|
|
|
|
| 299 |
inputs=file_input,
|
| 300 |
outputs=[batch_status, batch_results]
|
| 301 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 302 |
|
|
|
|
| 303 |
if __name__ == "__main__":
|
| 304 |
demo.launch(
|
| 305 |
server_name="0.0.0.0",
|