Repository navigation
Ударения, метр и рифма: VerseStats и словарь StressDict - #67
Merged
Merged
Conversation
Словарь ударений Козиева all_accents (1,68 млн словоформ, CC0) подключен как набор данных StressDict: архив загружается по закрепленному коммиту с проверкой SHA-256, файл индексируется в памяти без разбора строк и ищется двоичным поиском. Модуль verse_stats: ударение слова по словарю с поправками частых ошибок, по букве ё, для составных слов, стяжений (желанье) и деепричастий (забыв); метр по алгоритму Барахнина с подгонкой ударений под икты и отсевом дольника, верлибра и прозы; схема рифмовки по фонетическому ключу окончания; типы окончаний, пиррихии, профиль ударности, строфы. Класс VerseStats, функции word_stress, accentuate, detect_meter, rhyme_scheme, split_stanzas, компонент spaCy verse. На RIFMA ударения совпадают у 97% слов, рифмы находятся с точностью 93% и полнотой 90%. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
SergeyShk
commented
Sep 20, 2026
SergeyShk
left a comment
Owner
Author
There was a problem hiding this comment.
Проверил на реальном словаре и PoetryCorpus. Индекс StressDict в порядке: файл отсортирован по байтам, ключи уникальны, все 1 680 535 записей согласованы с ключами. По VerseStats четыре замечания ниже: два бага в подгонке ударений (кандидаты чужого слова и перенос ударения с ё и из анакрузы), переполнение букв в схеме рифмовки и наречия на -ого в ключе рифмы.
Кандидаты ударения хранятся в слове, а не в строке: слово вне словаря в середине строки больше не подменяет ударение последнего слова, а после сброса метра кандидаты отброшенного метра не используются. Ударение по букве ё и ударение в анакрузе на икт не переносятся - первое надежнее словарного, второе отклонением не считается. Буквы схемы рифмовки после прописных идут строчными, а когда кончаются - повторно используются буквы закрытых групп. Замена -ого на -ово не применяется к наречиям с произносимым [г] (много, строго, дорого). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Что сделано
Словарь ударений
ruts.datasets.StressDict- словарь Ильи Козиеваall_accents(1 680 535 словоформ, CC0): архив 10,6 МБ загружается из репозитория автора по закрепленному коммиту с проверкой SHA-256, какFreqDict. Файл (77 МБ) читается один раз на процесс и индексируется целиком в памяти без разбора строк: позиции строк и табуляций находятся векторно через numpy, словоформа ищется двоичным поиском по байтам отсортированного файла - загрузка 0,2 с, около 100 МБ памяти, поиск 4 мкс.lookupвозвращает номер ударного слога,get_records/get_textsперебирают словарь.Модуль
ruts.verse_stats:word_stress- ударный слог слова: по букве ё, по словарю с поправкамиSTRESS_CORRECTIONS(около 150 частых ошибок и подвижных ударений словаря: ещё, себе́, пе́ред, зо́лото, леса́х - найдены сверкой частых форм PoetryCorpus), для составных слов по частям, для стяжений (желанье - желание) и деепричастий (забыв - забывший) по полной форме.VerseStats- метр по алгоритму Барахнина, Кожемякиной и Кузнецовой: выбирается метр с наименьшим числом ударений многосложных слов на слабых позициях (ударение в анакрузе не считается), затем метр снимает неоднозначность: клитики безударны, односложные слова ударны на икте, служебные слова безударны вне икта, подвижные ударения (воды́ - во́ды) переносятся на икт, если после переноса строка становится метрической, слова вне словаря получают икт или ударение по рифме. Если после подгонки больше 10% ударений остаются на слабых позициях, метрNone- дольник, акцентный стих, верлибр, проза. Статистики: число стоп и их распределение, доля отклонений, пиррихии, профиль ударности, схемыcCcC, схемы рифмовки по строфам, доля рифмованных строк, типы окончаний, ударные гласные,accentuate().-A-A), как в RIFMA.accentuate,detect_meter,rhyme_scheme,split_stanzas, компонент spaCyverse.Версия
0.14.0.dev4, документация на двух языках (модуль, функции с описанием алгоритма, словарь, компонент), README.Проверка
Noneтолько гекзаметры и подражания народному стиху.make lint, mypy,mkdocs build --strictпроходят.🤖 Generated with Claude Code