Масштаб данных и новые омографы
Разработчики Silero провели фундаментальную переработку модели простановки ударений. Ключевое изменение — увеличение обучающей выборки до 195 миллионов предложений (рост с предыдущих версий за счет добавления ~54 млн новых качественных данных). Из них порядка 8 миллионов предложений получили обновленные метки ударений.
Список сложных слов-омографов расширен до 2 208 слов. Это результат добавления 395 новых омографов и исключения 111 устаревших из исходных 1 924. Особое внимание уделено «токсичным» омографам: для них внедрена логика принудительной установки наиболее популярного варианта ударения, что снижает риск ошибок в критичных контекстах.
Решение проблемы «дрожания» модели
Важным архитектурным улучшением стала стабилизация вывода. Ранее модель могла выдавать разные результаты при добавлении или удалении лишних знаков препинания. В новой версии эта проблема решена, что делает библиотеку пригодной для обработки «сырого» текста без предварительной очистки.
Метрики качества
Для независимой проверки качества был создан ручной валидационный набор данных объемом около 100 тысяч предложений для ~5 000 омографов с тройным перекрытием разметчиков. Ниже приведена структура работы с ключевыми параметрами модели:
| Параметр | Тип | Описание и влияние на результат |
|---|---|---|
| put_stress | bool | Вкл/выкл ударения в обычных словах (по умолчанию True) |
| put_yo | bool | Вкл/выкл букву «ё» в обычных словах (по умолчанию True) |
| put_stress_homo | bool | Вкл/выкл ударения в омографах (по умолчанию True) |
| put_yo_homo | bool | Вкл/выкл букву «ё» в омографах (по умолчанию True) |
| stress_single_vowel | bool | Вкл/выкл ударения в словах с одной гласной (по умолчанию True) |
| words_to_ignore | list | Список слов, полностью исключаемых из обработки |
Новый функционал: регулярные выражения
Пользователи получили возможность добавлять собственные регулярные выражения и словосочетания для управления ударениями. Это позволяет переопределять логику модели для специфичных доменных терминов или имен собственных, которые модель может обрабатывать некорректно.
Как использовать
Библиотека доступна через PyPI и Torch Hub. Пример базовой инициализации и обработки текста с учетом омографов:
from silero_stress import load_accentor
accentor = load_accentor()
accentor.to(device='cpu')
sample = "Меня зовут Лева Королев. Я из готов."
print(accentor(sample))
# Вывод: Мен+я зов+ут Л+ёва Корол+ёв. +Я +из г+отов.
Полная документация и списки всех поддерживаемых омографов доступны в репозитории проекта.
Источник: Habr ↗
