Перейти к содержимому

Читаемость на разных языках: 17 формул, 86 языков

Читаемость на разных языках: 17 формул, 86 языков

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

Код: ReadSightRS, лицензия MIT.

Крейт readsight несёт 86 языков в 19 системах письма и 17 формул, и все данные вкомпилированы в бинарник.

Пять универсальных формул едут везде

Gunning Fog, SMOG, Coleman-Liau, ARI и LIX считают буквы и слоги, поэтому работают на любом письме. Тайская, арабская и польская страница получают класс по одним и тем же пяти формулам.

Этого достаточно, чтобы поймать перевод, который превратил чистое предложение в абзац канцелярита. Этого мало, чтобы сказать, насколько текст тяжёл для носителя, потому что порог «просто» в каждом языке свой.

Остальные двенадцать принадлежат языку

Flesch Reading Ease и Flesch-Kincaid несут опубликованные коэффициенты для двенадцати языков: немецкий считает по Амштаду, русский по Оборневой, нидерландский по Доуме, турецкий по Атешману. У немецкого своя Wiener Sachtextformel в четырёх вариантах, у итальянского Gulpease, у польского FOG-PL, у арабского OSMAN, у испанского семейство из четырёх формул.

Движок выдаёт каждому языку свою часть: девять формул для английского, одиннадцать для испанского, восемь для немецкого, пять для тайского. Метрика, придуманная для английских слогов, не попадает на тайское предложение.

Одна оценка на язык, а не на сайт

Панель, которая усредняет немецкий и испанский класс, выдаёт число без смысла. Полезный вид это таблица: язык, страница, класс, порог для этой аудитории.

Таблицу делают возможной два решения. Набор формул на язык задан явно, поэтому ничего не меняется молча, когда страница переезжает между языками. И арифметика одинакова в разных средах, потому что сверяется с одними и теми же эталонными значениями, поэтому пакетный прогон на Rust и админка на PHP показывают один класс.

Почему данные живут внутри бинарника

Крейт компилирует 86 языковых файлов и 86 файлов шаблонов переносов в бинарник через include_dir. Ни файловой системы, ни сети, ни каталога кеша, который надо заводить.

Для прогона на пятьдесят тысяч страниц на сборочном агенте это разница между работой, которая проходит, и работой, которая падает на отсутствующем томе с данными. Config::from_dirs() существует для обратного случая, когда данные правят без пересборки.

Что стоит измерить первым

Начните с языков, на которых сайт продаёт, и с страниц, которые приносят трафик. Двадцать адресов дают картину, полный каталог её только подтверждает.

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

Зачем нужен пакетный счёт

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

Последняя задача наименее очевидна и самая ценная: она ловит перевод, который технически верен и нечитаем, до того как его найдёт читатель.

Чего крейт не знает

Он не судит структуру, аргумент и тон, а его счёт слогов идёт по точкам переноса TeX, что точно для разбивки строк и приблизительно для фонетики. Славянские языки на кириллице считаются эвристикой, и README называет этот обмен.

Балл читаемости это фильтр по каталогу. Он находит страницы, которым нужен редактор, и никогда не найдёт страницу, которая читается легко и ничего не говорит.

Рядом: читаемость текста о самих формулах и проверка читаемости текста о работе с одной страницей, с которой всё начинается.