Skip to content

X5-hackathon-ner/fastapi-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NER Hackathon Baseline

Данный репозиторий содержит базовое решение для задачи NER (Named Entity Recognition), подготовленное в рамках хакатона.

О задаче

Участникам необходимо разработать решение для задачи извлечения именованных сущностей (NER) из поисковых запросов. Решением является модель, интегрированная в веб-сервис, обеспечивающий ответ на входящие запросы не дольше одной секунды.

Распознаваемые сущности:

  • TYPE — категория товара (молоко, хлеб, вода, чипсы и т.п.)
  • BRAND — бренд (Coca-Cola, Простоквашино, Lays и др.)
  • VOLUME — объём/вес/количество (0.5 л, 1 л, 200 г, 10 шт.)
  • PERCENT — процент (2.5%, 15%)

Формат BIO-разметки:

  • B-ENTITY — начало сущности,
  • I-ENTITY — продолжение сущности,
  • O — не сущность.

Оценка В этом хакатоне основной метрикой является macro-averaged F1-score по BIO-разметке для всех типов сущностей (TYPE, BRAND, VOLUME, PERCENT).

Определения:

  • True Positive (TP) — сущность, которая выделена моделью, причем выделена верно (начало и конец сущности, а также тип сущности совпадает с эталонной разметкой).
  • False Positive (FP) — сущность, предсказанная моделью, но отсутствующая в эталонной разметке (O), либо не совпадающая с сущностью эталонной разметки.
  • False Negative (FN) — сущность, которая есть в эталонной разметке, но не была распознана моделью.

Для каждой сущности считаются:

  • Precision=TP/ (FP + TP)
  • Recall=TP/(FN+TP)
  • F1=2*(Precision*Recall) / (Precision+Recall)

Macro-F1 сначала вычисляет F1-score для каждого типа сущностей (TYPE, BRAND, VOLUME, PERCENT), а затем усредняет результаты.

Ограничения:

  1. Время отклика веб-сервиса для одного запроса не превышает 1 секунду.
  2. Веб-сервис должен непрерывно работать с момента отправки endpoint в tg бота до конца проверки.
  3. Сервис должен быть доступен по публичному URL без авторизации.

Участники могут:

  1. Использовать публично доступные внешние данные.
  2. Использовать любые архитектуры моделей.
  3. Использовать готовые предобученные языковые модели.

Важно! Запрещается использовать ручные словари, собранные специально под задачу, готовых коммерческих NER-API, любых закрытых или приватных датасетов, которые не доступны всем участникам.

Логика работы

Бейзлайн реализован на FastAPI и демонстрирует простейший подход на основе правил (rule-based):

  • слова, начинающиеся с кириллицы → TYPE
  • слова, начинающиеся с латиницы → BRAND
  • токены, начинающиеся с цифры → VOLUME

Результатом работы является BIO-разметка входящего запроса.


Быстрый старт 🚀

Чтобы ваше решение было оценено и попало в лидерборд, выполните шаги:

  1. Разверните веб сервис (инструкция).
  2. Зарегистрируйте команду в Telegram-боте.
  3. Отправьте в бот URL вашего сервиса.
  4. После нажатия Оценить решение в Telegram-боте начнется автоматическая проверка и измерение качества модели.

Результаты будут отображены в лидерборде.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published