Появилось ли у вас разделение подходов разрешения по типу омографа?
Да в целом оно всегда было, но на уровне тренировочных данных. На инференсе мы полагаемся на нейронку, чтобы не разрабатывать ещё и свой парсер, или не тянуть зависимость от условной Наташи. У всех парсеров морфологических, что мы тестили, часто весьма вольные представления о морфологии всё же. Разницы особо нет - Наташа ошибаться будет, или сразу классификатор. Плюс они ощутимо замедляют пайплайн итоговый.
Метрики, которые репортят парсеры, немного не бьются у нас с реальностью - их даже для разметки омографов с трудом можно использовать, что говорить про полноценный инференс.
Важны морфологические формы контекста. Можно обойтись без разметки.
Наверное мы в будущем просто дополним набор регулярок/словосочетаний для поиска перед подачей в нейросеть. Многие кейсы действительно однозначно разрешаются без конфликтов с другими контекстами. Но пока не дошли руки всё это прям полноценно разрулить.
Также удивило первое же слово из технического списка тем, что люди путаются.
По поводу села - это список не только того, где люди путаются, но и слов, которые мы пока не решаем. Конкретно это слово до сих пор в стоплисте, потому что у него три варианта. Их таких прям совсем по пальцам пересчитать, мы пока остановились на тех, у кого два.
Когда-то в будущем их может тоже докинем, пока что можно чисто регулярки/словосочетания добавить.
Upd.: пока печатал, уже коллега выше ответил то же самое почти ъуъ.
400+ художественных произведений с ручной разметкой ударений
А это точно так? В карточке датасета написано, что они размечали его с помощью этой тулзы, которая в свою очередь на russtress основана. Мы когда-то тестили russtress, было так себе.
Если валидация из этого же сета взята, то вполне может быть, что метрики не совсем реальность отражают.
правила-исключения, когда ударение ставится НЕ на последний гласный
А это правила для фильтрации словаря чисто? Или как-то по ним можно определить на какую именно гласную ударение ставить? Может там есть эвристики в духе "если не последняя, то первая/предпоследняя".
Тут открытый вопрос конечно, как с точки зрения акцентора расставлять ударения / ё в таких словах. Конкретных правил, насколько мне известно, на этот счёт нет (если ошибаюсь - буду рад узнать).
На данный момент мы остановились на том, что просто в таких словах ставим одно фиксированное ударение. Был ещё вариант ставить случайным образом, но мы от него по итогу отказались. А по текстовому контексту определить конкретный вариант произношения в таких словах задачка вряд ли в принципе выполнимая. За исключением быть может конкретных случаев, где реплики нарочито с "говором" прописаны.
Заметили. Метрики у нас хоть и хорошие, но не идеальные. Учитывая, что каждое слово формально - это отдельная задача классификации, метрики отдельно взятых слов могут отличаться заметно (см. гистограмму в разделе Метрики качества).
Конкретно в кейсе именно со словосочетанием "мы все", модель действительно в большинстве случаев ставит "мы всё". Хотя в целом метрики пары "все/всё" неплохие.
В будущих релизах мы этот кейс (как и другие, до которых дотянемся) постараемся исправить.
Ну в какой-то степени сейчас так, да. Можно корректировать сами омографы, но не другие слова. Например, как вы писали выше, "доверить морфологию другой библиотеке". В таком случае, "перезаписывать" ударения в омографах наша не будет.
В остальных случаях сейчас да, результат может измениться.
В идеале пайплайн сейчас такой для вашего юзкейса, если я правильно понял:
- корректируете ударения в омографах, если хочется; - запускаете наш классификатор омографов; - делаете свою коррекцию текста; - запускаете нашу расстановку обычных ударений.
Если будет запрос, в следующих обновлениях мы постараемся сделать предикты более стабильными. Сейчас действительно шальная пунктуация чаще влияет на результат, чем хотелось бы. Заодно флаг для 1-сложных слов прокинем.
Можно просто фильтрануть homodict, убрав из него ненужные слова. Поиск по нему как раз идёт.
Опережая возможный вопрос - туда можно добавить свои. Но когда мы тестили, генерализация по омографам не из трейна была в районе 60%, то есть смысла в этом около нуля. Чисто на случай слов по типу "звонишь" / "творог", если хочется получать рандомное ударение, а не фиксированное.
Да в целом оно всегда было, но на уровне тренировочных данных. На инференсе мы полагаемся на нейронку, чтобы не разрабатывать ещё и свой парсер, или не тянуть зависимость от условной Наташи. У всех парсеров морфологических, что мы тестили, часто весьма вольные представления о морфологии всё же. Разницы особо нет - Наташа ошибаться будет, или сразу классификатор. Плюс они ощутимо замедляют пайплайн итоговый.
Метрики, которые репортят парсеры, немного не бьются у нас с реальностью - их даже для разметки омографов с трудом можно использовать, что говорить про полноценный инференс.
Наверное мы в будущем просто дополним набор регулярок/словосочетаний для поиска перед подачей в нейросеть. Многие кейсы действительно однозначно разрешаются без конфликтов с другими контекстами. Но пока не дошли руки всё это прям полноценно разрулить.
По поводу
села- это список не только того, где люди путаются, но и слов, которые мы пока не решаем. Конкретно это слово до сих пор в стоплисте, потому что у него три варианта. Их таких прям совсем по пальцам пересчитать, мы пока остановились на тех, у кого два.Когда-то в будущем их может тоже докинем, пока что можно чисто регулярки/словосочетания добавить.
Upd.: пока печатал, уже коллега выше ответил то же самое почти ъуъ.
А это точно так? В карточке датасета написано, что они размечали его с помощью этой тулзы, которая в свою очередь на russtress основана. Мы когда-то тестили russtress, было так себе.
Если валидация из этого же сета взята, то вполне может быть, что метрики не совсем реальность отражают.
А это правила для фильтрации словаря чисто? Или как-то по ним можно определить на какую именно гласную ударение ставить? Может там есть эвристики в духе "если не последняя, то первая/предпоследняя".
Замечал, что символы процента удаляются, и пробелы перед дефисами. Кажется, еще перед кавычками и скобками.
По переносу строки проверим, спасибо за репорт.
Тут открытый вопрос конечно, как с точки зрения акцентора расставлять ударения / ё в таких словах. Конкретных правил, насколько мне известно, на этот счёт нет (если ошибаюсь - буду рад узнать).
На данный момент мы остановились на том, что просто в таких словах ставим одно фиксированное ударение. Был ещё вариант ставить случайным образом, но мы от него по итогу отказались. А по текстовому контексту определить конкретный вариант произношения в таких словах задачка вряд ли в принципе выполнимая. За исключением быть может конкретных случаев, где реплики нарочито с "говором" прописаны.
Заметили. Метрики у нас хоть и хорошие, но не идеальные. Учитывая, что каждое слово формально - это отдельная задача классификации, метрики отдельно взятых слов могут отличаться заметно (см. гистограмму в разделе Метрики качества).
Конкретно в кейсе именно со словосочетанием "мы все", модель действительно в большинстве случаев ставит "мы всё". Хотя в целом метрики пары "все/всё" неплохие.
В будущих релизах мы этот кейс (как и другие, до которых дотянемся) постараемся исправить.
Например, так. Добавим в документацию, забыли.
Ну в какой-то степени сейчас так, да. Можно корректировать сами омографы, но не другие слова. Например, как вы писали выше, "доверить морфологию другой библиотеке". В таком случае, "перезаписывать" ударения в омографах наша не будет.
В остальных случаях сейчас да, результат может измениться.
В идеале пайплайн сейчас такой для вашего юзкейса, если я правильно понял:
- корректируете ударения в омографах, если хочется;
- запускаете наш классификатор омографов;
- делаете свою коррекцию текста;
- запускаете нашу расстановку обычных ударений.
Если будет запрос, в следующих обновлениях мы постараемся сделать предикты более стабильными. Сейчас действительно шальная пунктуация чаще влияет на результат, чем хотелось бы. Заодно флаг для 1-сложных слов прокинем.
Вообще, есть третий, мб кому-то удобнее покажется.
Можно просто фильтрануть
homodict, убрав из него ненужные слова. Поиск по нему как раз идёт.Опережая возможный вопрос - туда можно добавить свои. Но когда мы тестили, генерализация по омографам не из трейна была в районе 60%, то есть смысла в этом около нуля. Чисто на случай слов по типу "звонишь" / "творог", если хочется получать рандомное ударение, а не фиксированное.
Thanks for link, it can be useful for creating clean homograph dictionaries. That's really nice.
However, it seems that this tool also helps only with homograph detection, but it does not disambiguate them.