Резолвер ё дообучен на речи
nn/nn_yo_homograph_resolver/model.onnx решает, е или ё в словах, где возможны оба
варианта: «все/всё», «чем/чём». Исходная модель ставит ё и там, где так никто не говорит:
«самое время» → «самоё» в 57% случаев, «далеко» → «далёко» в 43%.
Ё слышна, поэтому истина для неё — речь. Модель дообучена на расшифровках ~340 часов речи из датасетов lab260 (igm, webinars, upvote, buldjat, golos, tuchniyzhab, 20 шардов youtube), сделанных распознавателем GigaAM v3 e2e, который пишет ё: 33 299 предложений, 36 058 омографов, подтвержденных 5-ю ASR-движками (GigaAM v3 e2e-ctc, GigaAM v3 ctc, GigaAM v3 rnnt, T-one, Vosk). Архитектура, токенайзер и конфиг исходные; веса восстановлены из ONNX. Обычные слова размечены как NO_YO, пунктуация — как PUNCT, как в оригинале; на омографах без подтверждённой метки ответ исходной модели удерживается KL-членом. 3 эпохи, lr 3e-5.
Отложенная выборка — 1 810 предложений из тех же семи корпусов, 1 964 омографа:
| исходная | дообученная | |
|---|---|---|
| ё восстановлена | 95,5 % | 98,7 % |
| е ошибочно превращена в ё | 8,5 % | 4,2 % |
| слова с < 20 примерами в обучении: восстановлено / ложных ё | 69 % / 38 % | 94 % / 25 % |
Корпуса — подкасты, вебинары, видео; на другой речи цифры могут отличаться.
29 записей убраны из словарей ё
Слова, у которых вариант с ё — архаизм («самоё», «далёко»), редкость («нёбо», «лёт», «перёд», «маркёр», «вселённой») или фамилия («Королёва»), а также «узнаем/узнаете», где модель предпочитала настоящее время куда более частому будущему. В 48 часах речи ни одно из них не прозвучало с ё («узнаём» — 5 раз из 22).
Из yo_homographs: самое, далеко, недалеко, небо, неба, небу, небом, небе, лет, лета, лету,
летом, лете, узнаем, узнаете, шлем, перед, лень, маркер, берег, отсек, чел, королева, королеву,
королеве, королевой, вселенной, нулевых. Из yo_words: левой.
Использование
from huggingface_hub import snapshot_download
from ruaccent import RUAccent
workdir = snapshot_download("Sh1man/ruaccent-accentuator", revision="<коммит>")
accentizer = RUAccent()
accentizer.load(omograph_model_size="turbo3.1", use_dictionary=True,
workdir=workdir, repo="Sh1man/ruaccent-accentuator")
Рассчитано на RUAccent из sh1man/ruaccent (1.5.8.5):
он обрабатывает предложения целиком даже с skip_regex и применяет ответ резолвера только к
омографам.
Model tree for Sh1man/ruaccent-accentuator
Base model
ruaccent/accentuator