Массовый анализ текстов: 86 языков в конвейере
Каталог на сорок тысяч страниц редактор прочитать не может, а выборка из сорока говорит только о выборке. Массовый анализ текстов считает весь экспорт за ночь, сортирует по классу сложности и отдаёт редактору список вместо ощущения.
Код: ReadSightPy, лицензия MIT.
readsight для Python 3.10 измеряет текст на 86 языках по 17 формулам, и он собран под задачу, где текст приходит из базы, а не из текстового поля.
Что конвейер требует от счётчика
Три вещи по порядку: одно и то же число дважды, отсутствие сети и скорость, при которой работа заканчивается до утра.
Детерминированность даёт данные: языковые файлы и шаблоны переносов TeX зафиксированы, скомпилированные шаблоны лежат в кеше, ничего не скачивается. Скорость в том же порядке, что и остальная работа: около миллисекунды на текст в 45 слов, десять миллисекунд на сборку движка из кеша и шестьдесят на первую загрузку немецкого.
На фоне всего экспорта время чтения базы всё равно больше. Это правильная форма для компонента конвейера.
Какой отчёт получается
Таблица, где на документ одна строка: язык, набор формул, класс, порог для этой аудитории. Испанскому достаётся одиннадцать формул, немецкому восемь, тайскому пять, и таблица держит их отдельно, а не усредняет в одно бессмысленное число.
Отсортируйте по классу внутри языка, и сто худших страниц окажутся сверху. Этот список и есть результат: редактор идёт по нему, а следующий прогон показывает, сдвинулось ли число.
Фильтр, который отрабатывает себя
Самое ценное применение это фильтр в конвейере переводов. Сравните целевой текст с исходным и не пропускайте то, что стало тяжелее на два класса. Перевод, который технически верен и нечитаем, проходит все остальные проверки в цепочке.
Два класса это стартовый порог, а не закон. Возьмите его из своего корпуса и держите фиксированным, чтобы число значило одно и то же в следующем квартале.
Две зависимости, обе названы
Пакету нужны regex для классов Unicode-букв и platformdirs, чтобы положить кеш шаблонов в правильный каталог на каждой операционной системе. Больше в рантайме ничего.
Это осознанный бюджет. Каждая зависимость в конвейере данных это то, что может зафиксировать версию, сломать пересборку или исчезнуть из индекса колёс, и два известных пакета это цена, которую стоит называть вслух.
Где это останавливается
Он не отличит страницу, которая плохо доказывает, от страницы, которая доказывает хорошо. Он не смотрит на подзаголовки, картинки и ссылки, а его счёт слогов идёт по точкам переноса TeX, что приблизительно по природе, и README это признаёт.
Балл читаемости это ключ сортировки. Он находит страницы, которым нужен человек, а человек решает, что с ними делать.
Что делать с первыми ста результатами
Прочитайте десять из них до того, как отправить список кому-то ещё. Хвост каталога обычно состоит из страниц, которые никто не писал нарочно: старые страницы услуг, продублированные описания, импорт, принёсший не тот текст. Такие лечатся удалением или объединением, а не редактурой.
Остальным девяноста нужен человек, и отчёт должен говорить, какая формула провалилась. Страница, которая провалилась по длине предложений, и страница, которая провалилась по многосложным словам, это две разные правки.
С чего начать
Экспортируйте тысячу документов, прогоните счётчик и посмотрите на распределение до того, как выбирать порог. В каталоге обычно есть длинный хвост страниц, которые никто не писал нарочно, и это и есть первые сто в списке.
Порог выбирайте по распределению, а не по желанию: он должен отсекать хвост, а не половину каталога.
Рядом: читаемость на разных языках о том, чем наборы формул отличаются по языкам, и читаемость текста о самих формулах.
