Chess league bot NLU
компактный NLU для шахматного бота
Это компактная GLiNER2-модель на 74M параметров (0,07B), дообученная от fastino/gliner2.5-small-v1 для arboters — бота лиги Lichess4545 в Zulip. Она определяет команды в сообщениях и извлекает из переписки предложенные, принятые и отозванные игровые слоты. Обучена 5 эпох на синтетическом датасете, работает с английским.
⚙ Ключевые особенности
- ⚙ 74M параметров, GLiNER2; на CPU один forward pass — около 50–80 мс через ONNX Runtime, до ~190 мс на длинных тредах.
- 💬 Команды: классификация command и event плюс извлечение span'ов аргументов; топ-1 команда — ответ модели.
- 🗓 Планирование: находит offered time, accepted time и withdrawn time; согласие/отзыв привязываются к исходному предложению.
- 📊 На тесте: effort verdict 98%, offered time F1 0.99, accepted 0.94, withdrawn 0.92, command accuracy 80%.
- ⚠ Только синтетические данные; отказы могут читаться как согласие, команды часто уходят в none, recipient не выучен.
💻 Пример
from gliner2 import AutoExtractor
model = AutoExtractor.from_pretrained('Lichess4545/chess-league-bot-nlu', map_location='cpu')
schema = model.create_schema().entities(labels['scheduling'])
model.extract('white: can we do thu 19:00 or sat 14:00?\nblack: sat works\n', schema)
Подробнее
📊 Главные метрики end-to-end: effort 98%, offered time F1 0.99, accepted 0.94, withdrawn 0.92; command accuracy 80% (78% на сообщениях, которых не было в обучении).🖥 Инференс: ~50–80 мс на одно ядро CPU с ONNX Runtime, до ~190 мс на самых длинных тредах.
⚠ Ограничения: обучение только на синтетике, реальные сообщения будут сложнее; отказы иногда принимаются за согласие, слабые команды — available, tell, assign_alternate, pairing, help; recipient не выучен.
© Лицензия AGPL-3.0-or-later; базовая модель — Apache 2.0.








Комментарии