Обновить

Посимвольная нейросетевая модель для автоматической акцентуации русского языка

Время на прочтение4 мин
Охват и читатели8.4K
Всего голосов 10: ↑10 и ↓0+10
Комментарии19

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

"В лесу' родила'сь ёлочка"

Тут уже ошибка, должно быть роди'лась, по крайней мере, мы именно так всегда в детском саду пели.

Добрый вечер, спасибо за комментарий -

✅ Accentor initialized successfully!

В лесу' родила'сь ёлочка

Ваш вариант ударения относиться к ограничению модели -

  • Авторская метрика vs обычное произношение

Если вы поставите ударение в предложении - Моя дочь родилась в Москве - вы услышите что в обычном произношении правильно родила'сь

Ударения могут зависеть от контекста. Если "точность важнее скорости", то можно в LLM текст загнать. И то, chatGPT в примерах ниже, правильно расставил ударения только с включенными рассуждениями:

Я в Москве' родила'сь,
Э'то моя' ипо'стась.

Но

Я в Москве' роди'лась,
Тут и пригоди'лась.

Эту же модель можно попробовать дообучить и на поэзии - вопрос нужен хороший датасет. Что касается LLM - это долго и дорого - символьная модель запускается локально и работает относительно быстро.

Так в "ипостась" тоже неправильно указано. Более того, вся рифма рушится.

модель ставит обычное произношение в этой фразе корректно

📖 Loading vocabulary from /opt/homebrew/lib/python3.11/site-packages/ruaccent/model/vocab.json...

   Vocabulary size: 224

🤖 Initializing model...

📦 Loading weights from /opt/homebrew/lib/python3.11/site-packages/ruaccent/model/acc_model.pt...

✅ Accentor initialized successfully!

Э'то моя' ипоста'сь

Да, вы правы, не обратил внимание на это, когда писал комментарий.
Я поэкспериментировал с разными LLM и все они ошибаются на этой задаче. Даже если и была правильная выдача, то при повторной генерации появлялись ошибки.

Справится ли оно с билингвальным текстом?

"Залей этот commit в ветку."

Модель понимает и русские и аншлийские символы

📖 Loading vocabulary from model/vocab.json...

   Vocabulary size: 224

🤖 Initializing model...

📦 Loading weights from model/acc_model.pt...

✅ Accentor initialized successfully!


Зале'й э'тот commit в ве'тку.

Windows 11 Pro 25H2 26200.7623
Python 3.13.7
FileNotFoundError: Model file not found: model/acc_model.pt

Добрый день, нашел баг с относительными путями в коде - сейчас обновлю

Обновил версию 1.2.0 перенес файлы модели в папку акцентора и теперь модель корректно скачивается с пакетом. Обновите командой pip install ruaccent-predictor --upgrade или pip uninstall ruaccent-predictor и потом обновите pip install ruaccent-predictor==1.2.0

Да, теперь всё замечательно. Большое спасибо за оперативность и за потраченный труд в целом. Весьма полезный проект.

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

400+ художественных произведений с ручной разметкой ударений

А это точно так? В карточке датасета написано, что они размечали его с помощью этой тулзы, которая в свою очередь на russtress основана. Мы когда-то тестили russtress, было так себе.

Если валидация из этого же сета взята, то вполне может быть, что метрики не совсем реальность отражают.

Убрал из статьи упоминание о ручной разметки - валидировал отобранные пары, но не вручную, а перепроверяя через silero stress при фильтрации

Прогнал "стресс-тест" на 50 уникальных предложениях, чтобы обойти кэширование и проверить именно чистую работу нейросети на посимвольном анализе. Результаты ниже:

  1. Морфологическая интуиция: Тест на "Глокой куздре" пройден корректно. Модель верно расставила ударения в несуществующих словах (Гло'кая куздра' штеко' будла'нула), что подтверждает к обобщающую способность.

  2. Устойчивость к "грязным" данным: Опечатки в словах и смешанный регистр (мгази'нзАбО'рЧиКоМ) не сбивают модель — она корректно восстанавливает позицию ударения по контексту символов.

  3. Омографы: Порадовало разрешение омографа в связке мо'лол муку'. Контекст "мельницы" считан верно.

  4. Производительность: Без кэша на MPS около 440 симв/сек (в среднем 98 мс на фразу). Для посимвольной модели потребуется около 30 минут на книгу.

Лог тестов прилагаю:

text

============================================================
Loading Custom Accentor
============================================================
✅ Using Apple MPS (Metal)
📖 Loading vocabulary from /opt/homebrew/lib/python3.11/site-packages/ruaccent/model/vocab.json...
   Vocabulary size: 224
🤖 Initializing model...
📦 Loading weights from /opt/homebrew/lib/python3.11/site-packages/ruaccent/model/acc_model.pt...
✅ Accentor initialized successfully!

🚀 Запуск теста на 50 УНИКАЛЬНЫХ предложениях (без кэша)...
============================================================
⏱  Чистое время обработки: 4.8993 сек
📊 Среднее на фразу: 97.99 мс
🚀 Скорость: 439 симв/сек
============================================================
-> Вчра я пошл в мгази'н за вксуны'м кфе.
-> Прграмми'ст нписа'л кд на я'зке Питн.
-> Тэо'Т тЕкст НаПиСа'н зАбО'рЧиКоМ дЛя ПровЕ'рКи.
-> Шла Са'ша по шоссе' и соса'ла су'шку.
-> The quick bron fox jumps ove ver the lazy dog.
-> Устано'вка Xindoms заверши'лась с крити'ческой оши'бкой 0x0001.
-> Ква'нтовая суперпози'ция электро'на в а'томе водоро'да.
-> Архите'ктор Растре'лли спроекти'ровал Зи'мний дворе'ц.
-> В антаркти'де пингви'ны гре'ются друг о дру'га.
-> Синхрофазотро'н испо'льзуется для ускоре'ния элемента'рных ча'стиц.
-> Ма'ма мыла' ра'му чи'стым мы'лом до'лго.
-> Гло'кая куздра' штеко' будла'нула бокра'.
-> Битко'ин и эфи'риум обвали'лись на криптоби'рже.
-> Ста'рый ме'льник мо'лол му'ку на ме'льнице.
-> Ю'ный натура'лист изуча'л пова'дки ди'ких живо'тных.

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

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

Публикации