Перейти к содержанию

Функции вычисления метрик

Тест Флеша-Кинкайда

ruts.readability_stats.calc_flesch_kincaid_grade()

Вычисление теста Флеша-Кинкайда.

Чем выше показатель, тем сложнее текст для чтения. Результатом является число лет обучения в американской системе образования, необходимых для понимания текста.

Коэффициенты по умолчанию взяты из актуальной версии проекта Plain Russian Language. Альтернативные коэффициенты для русского языка доступны через пресеты: Оборнева (0.5, 8.4, 15.59) и FKG_SIS Соловьёва, Иванова и Солнышкиной (0.36, 5.76, 11.97).

Формула:

\[ a\times\frac{\textrm{Количество слов}}{\textrm{Количество предложений}}+b\times\frac{\textrm{Количество слогов}}{\textrm{Количество слов}}–C \]

Параметры:

Параметр Тип По умолчанию Описание
n_syllables int - Количество слогов
n_words int - Количество слов
n_sents int - Количество предложений
a int 0.318 Коэффициент a
b int 14.2 Коэффициент b
c int 30.5 Коэффициент c

Индекс удобочитаемости Флеша

ruts.readability_stats.calc_flesch_reading_easy()

Вычисление индекса удобочитаемости Флеша.

Чем выше показатель, тем легче текст для чтения. Значения индекса лежат в пределах от 0 до 100 и могут интерпретироваться следующим образом:

Показатель Уровень сложности
100.0-90.0 5-й класс
90.0-80.0 6-й класс
80.0-70.0 7-й класс
70.0-60.0 8-й и 9-й класс
60.0-50.0 10-й и 11-й класс
50.0-30.0 Университет
30.0-0.0 Выпускник университета

Коэффициенты по умолчанию принадлежат Оборневой (2005/2006, вариант А). Вариант Б тех же работ (1.52, 65.14, 206.836), которым пользуется казанская группа, доступен через пресет academic.

Формула:

\[ c–a\times\frac{\textrm{Количество слов}}{\textrm{Количество предложений}}-b\times\frac{\textrm{Количество слогов}}{\textrm{Количество слов}} \]

Параметры:

Параметр Тип По умолчанию Описание
n_syllables int - Количество слогов
n_words int - Количество слов
n_sents int - Количество предложений
a int 1.3 Коэффициент a
b int 60.1 Коэффициент b
c int 206.835 Коэффициент c

Индекс Колман-Лиау

ruts.readability_stats.calc_coleman_liau_index()

Вычисление индекса Колман-Лиау.

Чем выше показатель, тем сложнее текст для чтения. Результатом является число лет обучения в американской системе образования, необходимых для понимания текста.

Формула:

\[ a\times\frac{\textrm{Количество букв}}{\textrm{Количество слов}}+b\times\frac{\textrm{Количество слов}}{\textrm{Количество предложений}}–c \]

Параметры:

Параметр Тип По умолчанию Описание
n_letters int - Количество букв
n_words int - Количество слов
n_sents int - Количество предложений
a int 6.26 Коэффициент a
b int 0.2805 Коэффициент b
c int 31.04 Коэффициент c

Индекс SMOG

ruts.readability_stats.calc_smog_index()

Вычисление индекса SMOG (Simple Measure of Gobbledygook, «Простое измерение разглагольствований»). Наиболее авторитетная метрика читабельности.

Чем выше показатель, тем сложнее текст для чтения. Результатом является число лет обучения в американской системе образования, необходимых для понимания текста.

Примечание

Коэффициенты формулы получены для порога сложного слова в 5 слогов, поэтому класс ReadabilityStats передает в функцию количество слов с числом слогов не меньше 5, а не атрибут n_complex_words объекта класса BasicStats.

Формула:

\[ a\times\sqrt{b\times\frac{\textrm{Количество сложных слов}}{\textrm{Количество предложений}}}+c \]

Параметры:

Параметр Тип По умолчанию Описание
n_complex int - Количество сложных слов
n_sents int - Количество предложений
a int 1.1 Коэффициент a
b int 64.6 Коэффициент b
c int 0.05 Коэффициент c

Автоматический индекс удобочитаемости

ruts.readability_stats.calc_automated_readability_index()

Вычисление автоматического индекса удобочитаемости.

Чем выше показатель, тем сложнее текст для чтения. Результатом является возраст, необходимый для понимания текста. Значения индекса могут интерпретироваться следующим образом:

Показатель Возраст
1 6-7 лет
2 7-8 лет
3 8-9 лет
4 9-10 лет
5 10-11 лет
6 11-12 лет
7 12-13 лет
8 13-14 лет
9 14-15 лет
10 15-16 лет
11 16-17 лет
12 17-18 лет
13 18-24 года
14 24+ года

Формула:

\[ a\times\frac{\textrm{Количество букв}}{\textrm{Количество слов}}+b\times\frac{\textrm{Количество слов}}{\textrm{Количество предложений}}–c \]

Параметры:

Параметр Тип По умолчанию Описание
n_letters int - Количество букв
n_words int - Количество слов
n_sents int - Количество предложений
a int 6.26 Коэффициент a
b int 0.2805 Коэффициент b
c int 31.04 Коэффициент c

Индекс удобочитаемости LIX

ruts.readability_stats.calc_lix()

Вычисление индекса удобочитаемости LIX.

Чем выше показатель, тем сложнее текст для чтения. Значения индекса лежат в пределах от 0 до 100 и могут интерпретироваться следующим образом:

Показатель Уровень сложности
4.9 и меньше до 4 класса включительно
5.0-5.9 5-6 класс
6.0-6.9 7-8 класс
7.0-7.9 9-10 класс
8.0-8.9 11-12 класс
9.0-9.9 Университет

Примечание

В канонической формуле длинным считается слово длиннее 6 букв, поэтому класс ReadabilityStats передает в функцию количество слов с числом букв не меньше 7, а не атрибут n_long_words объекта класса BasicStats.

Формула:

\[ \frac{\textrm{Количество слов}}{\textrm{Количество предложений}}+100\times\frac{\textrm{Количество длинных слов}}{\textrm{Количество слов}} \]

Параметры:

Параметр Тип По умолчанию Описание
n_long_words int - Количество длинных слов
n_words int - Количество слов
n_sents int - Количество предложений

Индекс удобочитаемости RIX

ruts.readability_stats.calc_rix()

Вычисление индекса удобочитаемости RIX.

Упрощенный спутник индекса LIX (1983, Anderson), не зависящий от языка. Чем выше показатель, тем сложнее текст для чтения. Значения индекса могут интерпретироваться следующим образом:

Показатель Уровень сложности
< 0.2 1-й класс
0.2-0.5 2-й класс
0.5-0.8 3-й класс
0.8-1.3 4-й класс
1.3-1.8 5-й класс
1.8-2.4 6-й класс
2.4-3.0 7-й класс
3.0-3.7 8-й класс
3.7-4.5 9-й класс
4.5-5.3 10-й класс
5.3-6.2 11-й класс
6.2-7.2 12-й класс
> 7.2 Университет

Примечание

Как и для LIX, длинным считается слово длиннее 6 букв, поэтому класс ReadabilityStats передает в функцию количество слов с числом букв не меньше 7.

Формула:

\[ \frac{\textrm{Количество длинных слов}}{\textrm{Количество предложений}} \]

Параметры:

Параметр Тип По умолчанию Описание
n_long_words int - Количество длинных слов
n_sents int - Количество предложений

Формула Соловьёва, Иванова, Солнышкиной

ruts.readability_stats.calc_sis_grade()

Вычисление формулы удобочитаемости для русских академических текстов (Соловьёв, Иванов, Солнышкина, 2023).

Формула получена на корпусе Russian Academic Corpus из 154 учебников для 2-11 классов (5.7 млн токенов). Результатом является класс школы, средняя ошибка около одного класса. В отличие от теста Флеша-Кинкайда использует среднюю длину слова в буквах, а не в слогах.

Коэффициенты по умолчанию соответствуют общей формуле. Для отдельных ступеней обучения авторы приводят собственные коэффициенты, они доступны в справочнике ruts.constants.SIS_GRADE_STAGES и через метод sis_grade_by_stage:

Ступень a b c
2-4 классы -2.59 0.17 0.61
5-7 классы -5.29 0.20 1.34
8-11 классы -3.26 0.21 1.35

Примечание

Авторы считали среднюю длину предложения по токенам spaCy, куда попадает пунктуация, поэтому расчет по словам ruTS дает класс чуть ниже.

Формула:

\[ a+b\times\frac{\textrm{Количество слов}}{\textrm{Количество предложений}}+c\times\frac{\textrm{Количество букв}}{\textrm{Количество слов}} \]

Параметры:

Параметр Тип По умолчанию Описание
n_letters int - Количество букв
n_words int - Количество слов
n_sents int - Количество предложений
a int -17.5 Коэффициент a (свободный член)
b int 0.56 Коэффициент b (при средней длине предложения)
c int 2.45 Коэффициент c (при средней длине слова)

Формула Соловьёва, Иванова, Солнышкиной с частотностью

ruts.readability_stats.calc_sis_grade_freq()

Вычисление варианта общей формулы с четвертым признаком FREQ2 - средней частотностью слов текста по словарю Ляшевской и Шарова (Соловьёв, Иванов, Солнышкина, 2023, таблица 7): чем чаще слова, тем ниже класс. В статье значения FREQ2 лежат в пределах 200-1000, что соответствует средней частотности знаменательных слов (LexicalStats.mean_ipm_content); среднее по всем словам с учетом союзов и предлогов в разы больше. На наборе TextsByGrade формула с частотностью дает ту же корреляцию с классом, что и формула без нее (ρ Спирмена 0.76 против 0.77), как и в статье.

Коэффициенты по умолчанию соответствуют общей формуле, коэффициенты ступеней обучения из той же таблицы доступны в справочнике ruts.constants.SIS_GRADE_FREQ_STAGES и через параметр stage метода sis_grade_by_freq:

Ступень a b c d
2-4 классы -1.21 0.2 0.56 -0.0025
5-7 классы -5.18 0.17 1.35 -0.00043
8-11 классы 1.3 0.23 0.88 -0.0035

Формула:

\[ a+b\times\frac{\textrm{Количество слов}}{\textrm{Количество предложений}}+c\times\frac{\textrm{Количество букв}}{\textrm{Количество слов}}+d\times\textrm{FREQ2} \]

Параметры:

Параметр Тип По умолчанию Описание
n_letters int - Количество букв
n_words int - Количество слов
n_sents int - Количество предложений
mean_ipm float - Средняя частотность знаменательных слов (ipm)
a float -14.46 Коэффициент a (свободный член)
b float 0.58 Коэффициент b (при средней длине предложения)
c float 2.15 Коэффициент c (при средней длине слова)
d float -0.0026 Коэффициент d (при средней частотности)

Формула Мацковского

ruts.readability_stats.calc_matskovsky_index()

Вычисление формулы Мацковского - первой формулы удобочитаемости для русского языка (1976), полученной методом последовательных интервалов.

Чем выше показатель, тем сложнее текст для чтения.

Примечание

Сложным считается слово с числом слогов больше трех, поэтому класс ReadabilityStats передает в функцию количество слов с числом слогов не меньше 4.

Формула:

\[ a\times\frac{\textrm{Количество слов}}{\textrm{Количество предложений}}+b\times100\times\frac{\textrm{Количество сложных слов}}{\textrm{Количество слов}}+c \]

Параметры:

Параметр Тип По умолчанию Описание
n_complex int - Количество сложных слов
n_words int - Количество слов
n_sents int - Количество предложений
a int 0.62 Коэффициент a (при средней длине предложения)
b int 0.123 Коэффициент b (при доле сложных слов)
c int 0.051 Коэффициент c (свободный член)

Индекс Дейла-Чейла

ruts.readability_stats.calc_dale_chall_index()

Вычисление индекса Дейла-Чейла.

Чем выше показатель, тем сложнее текст для чтения. Результатом является число лет обучения в американской системе образования, необходимых для понимания текста.

Оригинальная формула использует список из 3000 знакомых слов, для русского языка такого свободного списка нет, поэтому применяется адаптация проекта Plain Russian Language, где вместо доли незнакомых слов используется доля сложных слов. Оригинальные коэффициенты формулы: 0.1579 и 0.0496.

Примечание

Сложным считается слово с числом слогов больше четырех, поэтому класс ReadabilityStats передает в функцию количество слов с числом слогов не меньше 5.

Формула:

\[ a\times100\times\frac{\textrm{Количество сложных слов}}{\textrm{Количество слов}}+b\times\frac{\textrm{Количество слов}}{\textrm{Количество предложений}} \]

Параметры:

Параметр Тип По умолчанию Описание
n_complex int - Количество сложных слов
n_words int - Количество слов
n_sents int - Количество предложений
a int 0.552 Коэффициент a (при доле сложных слов)
b int 0.273 Коэффициент b (при средней длине предложения)

Индекс Ганнинга

ruts.readability_stats.calc_gunning_fog_index()

Вычисление индекса туманности Ганнинга (1952, Gunning).

Чем выше показатель, тем сложнее текст для чтения. Результатом является число лет обучения в американской системе образования, необходимых для понимания текста. Используется в адаптации проекта Plain Russian Language. SEO-сервисы дополнительно умножают результат на 0.78, обоснование этого множителя не опубликовано.

Примечание

Сложным считается слово с числом слогов больше четырех, поэтому класс ReadabilityStats передает в функцию количество слов с числом слогов не меньше 5.

Формула:

\[ a\times\left(\frac{\textrm{Количество слов}}{\textrm{Количество предложений}}+100\times\frac{\textrm{Количество сложных слов}}{\textrm{Количество слов}}\right) \]

Параметры:

Параметр Тип По умолчанию Описание
n_complex int - Количество сложных слов
n_words int - Количество слов
n_sents int - Количество предложений
a int 0.4 Коэффициент a

Перевод индекса Флеша в класс

ruts.readability_stats.flesch_reading_easy_to_grade()

Перевод индекса удобочитаемости Флеша в класс школы для включения в сводный класс по аналогии с text_standard библиотеки textstat:

Индекс Флеша Класс
90-100 5
80-90 6
70-80 7
60-70 8.5 (8-9 классы)
50-60 10
40-50 11
30-40 12
меньше 30 13

Значения больше 100 относятся к 5-му классу.

Параметры:

Параметр Тип По умолчанию Описание
flesch_reading_easy float - Значение индекса удобочитаемости Флеша

Сводный класс

ruts.readability_stats.calc_consensus_grade()

Вычисление сводного класса - медианы округлённых значений формул класса. Аналог text_standard библиотеки textstat, где вместо медианы используется мода; медиана устойчивее к выбросам отдельных формул. Значения формул округляются арифметически (половина - вверх). Индекс Флеша переводится в класс и добавляется без округления, поэтому для диапазона 60-70 он голосует за 8.5.

Класс ReadabilityStats передаёт в функцию тест Флеша-Кинкайда, индексы Колман-Лиау, SMOG, ARI, Дейла-Чейла и Ганнинга, формулу Соловьёва, Иванова, Солнышкиной и индекс Флеша.

Параметры:

Параметр Тип По умолчанию Описание
grades list[float] - Значения формул класса
flesch_reading_easy float None Значение индекса удобочитаемости Флеша

Класс и возраст читателя

ruts.readability_stats.grade_to_age()

Получение класса школы и возраста читателя по значению формулы класса. Соответствие взято из таблицы GRADE_TEXT проекта Plain Russian Language и доступно в справочнике ruts.constants.GRADE_AGE_LEVELS:

Класс Ступень Возраст
1-3 1-3-й класс 6-8 лет
4-6 4-6-й класс 9-11 лет
7-9 7-9-й класс 12-14 лет
10-11 10-11-й класс 15-16 лет
12-14 1-3-й курс вуза 17-19 лет
15-17 4-6-й курс вуза 20-22 года
больше 17 аспирантура старше 22 лет

Значение округляется арифметически, значения меньше 1 относятся к 1-3-му классу.

Параметры:

Параметр Тип По умолчанию Описание
grade float - Значение формулы класса

Время чтения

ruts.readability_stats.calc_reading_time()

Вычисление времени чтения текста в минутах. Норма чтения про себя для взрослого - 120-180 слов в минуту (Кузнецов и Хромов, 1991), по умолчанию используется верхняя граница. Нормы чтения вслух для начальной школы по ФГОС доступны в справочнике ruts.constants.READING_SPEED_NORMS:

Норма Слов в минуту
adult_silent 120-180
grade_1 25-40
grade_2 60-80
grade_3 80-100
grade_4 90-110

Формула:

\[ \frac{\textrm{Количество слов}}{\textrm{Скорость чтения}} \]

Параметры:

Параметр Тип По умолчанию Описание
n_words int - Количество слов
wpm int 180 Скорость чтения, слов в минуту