Обновить

Большой релиз библиотеки ударений в silero-stress для русского языка

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели7.2K
Всего голосов 21: ↑21 и ↓0+24
Комментарии11

Комментарии 11

Спасибо Вам! Вы невероятно круты! И щедры.

Тема настолько же объемная, как ремонт. Можно только остановить, а не закончить. Надеюсь лишь, что языковые модели когда-то дойдут до реального, а не вероятностного понимания смысла текста. Как минимум, до уровня приемлемого для подготовки датасета.

Появилось ли у вас разделение подходов разрешения по типу омографа? Морфологические — меняется форма, а не смысл, — отлично перенимают свойства у синонимов и даже просто сопоставимых по склонению слов. Важны морфологические формы контекста. Можно обойтись без разметки. Смысловые — меняется как форма, так и смысл, — скорее важен сам контекст. Вплоть до раздельного обучения. Собственные — О́дин, Ангара́, Ма́ша, Ва́ля — достаточно позиции в предложения и регистра, вместо исключения из списка омографов.

Также удивило первое же слово из технического списка тем, что люди путаются. 1. ед, населенный пункт: выехал из села́; 2. мн, населенный пункт: города и сёла; 3 жр, действие: се́ла в машину. Вначале прогон по смыслу, потом по форме.

Появилось ли у вас разделение подходов разрешения по типу омографа?

Ну мы используем десятки разных источников данных.

 Важны морфологические формы контекста. Можно обойтись без разметки.

Это всё прекрасно, но тогда всё сводится к наличию парсера морф. форм этого самого контента. А парсеры мягко говоря никто особо не разрабатывает, они все древние, неидеальные и много кушают.

Смысловые — меняется как форма, так и смысл, — скорее важен сам контекст. Вплоть до раздельного обучения.

Тут без нейросетей — никуда, к сожалению.

Собственные — О́дин, Ангара́, Ма́ша, Ва́ля — достаточно позиции в предложения и регистра, вместо исключения из списка омографов.

Мы исходим из того, что пользователь не обязательно будет соблюдать регистр (особенно при формировании текста для озвучки!). А так регистр и позиция … это как раз (барабанная дробь) же регулярка! Ну то есть по идее комьюнити может тут регулярок докинуть.

Также удивило первое же слово из технического списка тем, что люди путаются. 1. ед, населенный пункт: выехал из села́; 2. мн, населенный пункт: города и сёла; 3 жр, действие: се́ла в машину. Вначале прогон по смыслу, потом по форме.

Ну это "кандидат" в омографы. И это редкий "тройной" омограф ещё и с буквой ё. Какая красота.

Немного другое имел ввиду. Смысловые и морфологические омографы, это две разные предметные области, а не одна, собственно омографы. Уж очень сильно они отличаются. Если их разделить, подобранные для каждой архитектуры сеток/датасетов, покажут себя намного лучше, чем если попытку разобрать эти различия возложить на одну. Причем легче по ресурсам.

А так регистр и позиция … это как раз (барабанная дробь) же регулярка!

Еще бы завести понятие сессии. Имя — книгоспецифичное явление. Но это действительно, пусть пользователь решает другими средствами.

Еще бы завести понятие сессии. Имя — книгоспецифичное явление. Но это действительно, пусть пользователь решает другими средствами.

Ну просто 2 объекта и 2 json и юзер что угодно может делать.

Смысловые и морфологические омографы, это две разные предметные области, а не одна, собственно омографы. Уж очень сильно они отличаются. Если их разделить, подобранные для каждой архитектуры сеток/датасетов, покажут себя намного лучше, чем если попытку разобрать эти различия возложить на одну. Причем легче по ресурсам.

Ну да, всё так. Чисто члены предложения и части речи по идее разбирают библиотеки типа Наташи. Но их особо никто не поддерживает и их по сути одна (парочка). Это не "модно".

Ну и еще один минус морфтаггеров, возможно более важный — это еще одна предметная область. Их цель все слова, без упора на морфологическую омографию. Принципы похожи, но нюансы переворачивают всё.

В прошлом посте описывал один свой старый экперимент... стер. Цель, с помощью PyMorphy (единственный источник знаний), найти существительные с разным написанием ед.рд/мн.им и перенести эти знания на соответствующий тип омографа (скалы, горы, реки итд). Понимая множество упрощений и допущений, результат довольно ошеломительный и точно перспективный.

Может именно поэтому, так настойчиво предлагаю рассмотреть морфологические омографы как отдельную предметную область. При вашем-то опыте и целеполагании... ну а нет, так нет.

Мы естественно пробовали в этом направлении копать. Очень шумно выходит. Плюс не хочется зависимости тащить лишние.

Появилось ли у вас разделение подходов разрешения по типу омографа?

Да в целом оно всегда было, но на уровне тренировочных данных. На инференсе мы полагаемся на нейронку, чтобы не разрабатывать ещё и свой парсер, или не тянуть зависимость от условной Наташи. У всех парсеров морфологических, что мы тестили, часто весьма вольные представления о морфологии всё же. Разницы особо нет - Наташа ошибаться будет, или сразу классификатор. Плюс они ощутимо замедляют пайплайн итоговый.

Метрики, которые репортят парсеры, немного не бьются у нас с реальностью - их даже для разметки омографов с трудом можно использовать, что говорить про полноценный инференс.

Важны морфологические формы контекста. Можно обойтись без разметки.

Наверное мы в будущем просто дополним набор регулярок/словосочетаний для поиска перед подачей в нейросеть. Многие кейсы действительно однозначно разрешаются без конфликтов с другими контекстами. Но пока не дошли руки всё это прям полноценно разрулить.

Также удивило первое же слово из технического списка тем, что люди путаются.

По поводу села - это список не только того, где люди путаются, но и слов, которые мы пока не решаем. Конкретно это слово до сих пор в стоплисте, потому что у него три варианта. Их таких прям совсем по пальцам пересчитать, мы пока остановились на тех, у кого два.

Когда-то в будущем их может тоже докинем, пока что можно чисто регулярки/словосочетания добавить.

Upd.: пока печатал, уже коллега выше ответил то же самое почти ъуъ.

Силеро большое спасибо за релиз - это реально большой шаг вперед!

Что мы намерили на своих книгах, сравнивая с предыдущей версией:

Устойчивость — ваше главное обещание подтвердилось. Одно и то же предложение с разной пунктуацией (без точки, «!», запятая без пробела, переставленные части): доля омографов, у которых меняется ударение, упала с 5.3% до 2.2%, а на чистом пунктуационном шуме — до 0.8%. Словосочетания и очищенный контекст заметно помогли на частых словах: «один» — с 83% до 100% совпадения с нашей эталонной разметкой, формы «второй» — с 35% до 91%. Ё в омографах («все/всё», «чем/чём», «чёрт») — 92% верных на книгах, изданных с ё. Наш словарный ёфикатор давал 66%. Ручной словарь поправок сократился с 208 строк до 44 (почти все имена собственные). Остальное модель теперь делает сама, и часть наших «поправок» оказалась хуже её ответа. Что осталось (вдруг пригодится): «глаза» в им./вин. мн. часто «гл+аза» («опустил глаза»); «уже» иногда «+уже» («уже не те»); «к двери» → «двер+и»; «сестры» в род. ед.; «узнает» в значении совершенного вида. Используем silero-stress в приложении-читалке (порт на Swift + ONNX), слушаем целые романы, и после обновления идут целые главы без единой ошибки ударения — раньше мы слышали ошибки почти в каждой главе.

Уже это уже легендарное слово.

Ух ты!!! До этой статьи не знал про ваш проект. Буду использовать в разработке голосового ИИ-бота для клиента. Как раз не хватало расстановки ударений. Спасибо! Звездочка в гитхаб прилетела :)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации