Проверка читаемости текста: 86 языков одной командой
В брифе написано «пишите просто», и никто не измеряет, что вернулось. Редактор читает текст, находит его плотным и просит переписать так, что становится ещё плотнее. Проверка читаемости текста заменяет мнение числом, с которым автор может спорить, и занимает секунду на страницу.
Код: ReadSightJS, лицензия MIT.
@globus.studio/readsight измеряет текст на 86 языках в 19 системах письма. Внутри 17 формул, слоги считаются по шаблонам переносов TeX, зависимостей в рантайме нет.
Что заменяет число
«Слишком сложно читать» это суждение о человеке. «14 класс по Flesch-Kincaid, 23 балла по Flesch Reading Ease» это утверждение о тексте, и автор может за минуту проверить на нём другую версию.
Эта разница меняет разговор на ревью. Вместо защиты абзаца автор режет придаточное и смотрит, как двигаются два числа. Инструмент не делает текст лучше, он делает спор решаемым.
Пять формул работают на любом языке
Gunning Fog, SMOG, Coleman-Liau, ARI и LIX считают текст на всех 86 языках, потому что они считают буквы и слоги, а не сверяются со списком слов. Остальные двенадцать несут опубликованные коэффициенты для конкретного языка.
Движок выдаёт каждому языку только те формулы, которые ему подходят: девять для английского, одиннадцать для испанского, восемь для немецкого, пять для тайского. Английская метрика не попадает на тайское предложение, и одно это правило снимает самый частый абсурд в многоязычной работе с контентом.
Слоги это место, где видна честность
Слоги считаются по алгоритму переносов Франка Лянга, тому самому, которым TeX разбивает строки десятки лет. Он точен в том, где слово можно перенести, и приблизителен в том, сколько в нём слогов, потому что перенос и фонетика это разные задачи.
Библиотека пишет это в README, а не прячет. Для славянских языков на кириллице, где один гласный равен одному слогу, включается эвристический счётчик со своим шаблоном гласных, и «дыхание» считается как четыре, а не как получилось бы по шаблонам TeX.
Что получает сборка на Node
Пакет выходит в ESM и CommonJS с типами TypeScript, поэтому уже существующей сборке не нужен новый инструмент. Покрытие держится на 100%, а совпадение с PHP-версией проверяется эталонными векторами по всем 86 языкам с допуском 1e-9.
Для контентной команды это значит, что число в редакторе и число в конвейере приходят из одной арифметики, и переписывание одной реализации не меняет молча другую.
Чего число не говорит
Оно не скажет, ясна ли мысль, идут ли подзаголовки за вопросами читателя и не длинно ли предложение по уважительной причине. Dale-Chall и Spache оценивают трудные слова по слогам, и README признаёт, что это оценка, а не исходные списки слов.
Балл читаемости это один фильтр из нескольких. Он ловит абзац, который невозможно читать с телефона, и пропускает лёгкий абзац, в котором ничего нет.
Что проверить перед внедрением
Возьмите два своих текста, хороший и плохой по вашему мнению, и прогоните их через формулы, которые поддерживает язык. Если баллы не совпали с ожиданием, дело не в инструменте, а в том, что вы считали хорошим.
Потом решите, какой класс сложности считается нормой для вашей аудитории. Без этого числа проверка превращается в отчёт, который никто не читает.
Куда это встроить
Пользу приносят два места: проверка до публикации, которая не пускает текст выше согласованного класса, и линия по разделу сайта, которая показывает, не уезжает ли манера письма.
Оба стоят дешево. Первое это одна команда в CI, второе это таблица баллов по месяцам, и любое из них делает строку «пишите просто» в брифе чем-то значащей.
Рядом: читаемость текста о полной картине формул и языков и сортировка таблицы HTML о другом случае, когда нативный инструмент без зависимостей лучше тяжёлого.
