Skip to content

Добавить шкалы индекса Флеша и LIX и прочтение любой метрики удобочитаемости - #90

Merged
SergeyShk merged 2 commits into
masterfrom
feature/readability-scales
Oct 5, 2026
Merged

SergeyShk merged 2 commits into
masterfrom
feature/readability-scales

Conversation

@SergeyShk

@SergeyShk SergeyShk commented Oct 5, 2026 •

Copy link
Copy Markdown
Owner

Версия 0.15.1.dev1.

Что сделано

Ядро anyTS 0.2.9 хранит шкалы прочтения метрик удобочитаемости данными, а не текстом документации. В нём появились хуки level_scales и level_scale, метод describe_level — полоса шкалы метрики — и метод describe, который даёт прочтение любой метрики. ruTS подключает их с русскими подписями.

  • Шкалы в ruts.constants:

    • READING_EASE_LEVELS — индекс Флеша по таблице Флеша с классами российской школы, как в таблице страницы функций: от «5-й класс» (от 90) до «университет» (от 30) и «выпускник университета» (ниже 30);
    • LIX_LEVELS — LIX по типам текстов Бьёрнссона, как в таблице документации: от «очень простые тексты, детские книги» до «очень сложные тексты, законы и канцелярский язык»;
    • READABILITY_LEVEL_SCALES — обе шкалы для хука level_scales класса.

    Подписи в нижнем регистре, как у describe_grade («аспирантура (старше 22 лет)»). В докстринге calc_flesch_reading_easy у полосы 50–30 было «Студент университета», в документации — «Университет». Шкала следует документации, докстринг теперь ссылается на константу, а не повторяет таблицу.

  • RIX переводится в класс таблицей Андерсона из ядра (RIX_GRADES, «университет» — 13 лет обучения) и читается по таблице классов plainrussian, как формулы класса.

  • ReadabilityStats.describe(stat):

    • формулы класса и сводный класс — через describe_grade;
    • RIX — через классы Андерсона;
    • индекс Флеша и LIX — по русским шкалам;
    • метрика без шкалы (формула Мацковского, время чтения, µ) — None.

    Например, у загадки «Ног нет, а хожу…» Флеш 87,17 читается как «6-й класс», LIX 28,3 — «очень простые тексты, детские книги», RIX 2,0 — «4-6-й класс (9-11 лет)».

  • scale_level из ядра реэкспортирована в ruts.readability_stats, как остальные функции интерпретации, и описана на странице функций с примером: scale_level(67.135, READING_EASE_LEVELS) → «8-й и 9-й класс».

  • Значения метрик не меняются. describe_grade, сводный класс и перевод индекса Флеша в класс для сводного класса (flesch_reading_easy_to_grade) остаются прежними.

  • Документация, на обоих языках:

    • разделы методов describe_level и describe включают тексты ядра на английской странице и переводят их на русской с хешем;
    • «Языковые крючки» называют шкалы;
    • «Интерпретация» объясняет, по каким таблицам читается каждая метрика;
    • под таблицей Флеша на странице функций сказано, что значения выше 100 относятся к первой полосе, а ниже 0 — к последней;
    • README (оба) называет шкалы и показывает describe, страницы установки — anyts 0.2.9.
  • Демо показывает рядом с индексом Флеша его прочтение: «87 (6-й класс)». Число округляется вниз, как граница полосы, чтобы 89,9 не превратилось в «90 (6-й класс)».

  • Зависимость — anyts>=0.2.9,<0.3. В uv.lock сдвинулись только anyts (0.2.8 → 0.2.9) и версия самой ruts.

Метод describe нужен MCP-серверу ruTS-mcp: сейчас сервер держит копии этих таблиц, а с этой версией возьмёт прочтение из библиотеки.

Проверка

  • make test — 1293 теста, 5 пропущены (данные наборов). test_level_scales_follow_docs сверяет обе шкалы с таблицами страницы функций: перестановка подписей или сдвиг границы его роняют. test_scale_level — реэкспорт и значения вне 0–100. test_describe:
    • на тексте о тезаурусах: Флеш ниже нуля — «выпускник университета», LIX выше 60 — «очень сложные тексты…», RIX выше 7,2 — «1-3-й курс вуза (17-19 лет)»;
    • на загадке: «5-й класс» и «очень простые тексты, детские книги»;
    • None у формулы Мацковского;
    • класс берёт READABILITY_LEVEL_SCALES.
  • tests/test_docs.py сверяет переводы новых разделов ядра по хешу.
  • make lint, make docs-build (mkdocs build --strict) и pre-commit — без замечаний.

🤖 Generated with Claude Code

…аемости

Ядро anyTS 0.2.9 хранит шкалы прочтения данными и дает describe_level
и describe. ruTS задает русские подписи: индекс Флеша по таблице Флеша
с классами российской школы, LIX по типам текстов Бьёрнссона
(READABILITY_LEVEL_SCALES); RIX переводится в класс таблицей Андерсона
ядра и читается по таблице классов plainrussian. Зависимость anyts>=0.2.9,
страница удобочитаемости описывает новые методы на обоих языках, демо
показывает прочтение индекса Флеша.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@SergeyShk SergeyShk added documentation Improvements or additions to documentation enhancement New feature or request labels Oct 5, 2026

@SergeyShk SergeyShk left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Шесть замечаний. Поведение describe и describe_level на крайних текстах (Флеш ниже 0 и выше 100, LIX выше 60, RIX 0, µ = nan, имена не-метрик) совпадает с ядром. Примеры документации дают написанный вывод, переводы новых секций ядра точны, в uv.lock сдвинулись только anyts и ruts.

Comment thread pyproject.toml
Comment thread ruts/readability_stats.py Outdated
Comment thread ruts/constants.py
Comment thread demo/app.py Outdated
Comment thread ruts/readability_stats.py
Comment thread tests/test_readability_stats.py
scale_level ядра доступна из ruts.readability_stats и описана на странице
функций, как другие функции интерпретации. Шкалы индекса Флеша и LIX тест
сверяет с таблицами страницы функций; под таблицей Флеша сказано, куда
попадают значения вне 0-100, докстринг calc_flesch_reading_easy говорит,
что шкала номинальная. README называет новые шкалы и показывает describe,
страницы установки - anyts 0.2.9, демо показывает индекс Флеша без
округления вверх, чтобы число не расходилось с полосой.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@SergeyShk
SergeyShk merged commit 19128ee into master Oct 5, 2026
12 checks passed
@SergeyShk
SergeyShk deleted the feature/readability-scales branch October 5, 2026 06:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants