Функции вычисления метрик¶
Классическая тошнота¶
ruts.style_stats.calc_classic_nausea()
Вычисление классической тошноты (Advego) - квадратного корня из количества вхождений самого частого слова. Характеризует навязчивость одного слова без учета длины текста, поэтому растет вместе с текстом. Норма Advego - не больше 7, на практике 1-5.
Формула:
где \(n_k\) - количество вхождений слова \(k\).
Параметры:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
text |
list[str] | - |
Список слов |
Академическая тошнота¶
ruts.style_stats.calc_academic_nausea()
Вычисление академической тошноты (Advego) - доли вхождений самых частых слов в тексте в процентах. Точная формула Advego не опубликована, реализовано как суммарная частота top_n самых частых слов, деленная на количество слов. Норма Advego - 5-15%.
Формула:
Параметры:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
text |
list[str] | - |
Список слов |
top_n |
int | 10 |
Количество самых частых слов |
Водность¶
ruts.style_stats.calc_water()
Вычисление водности (Text.ru) - доли незначимых слов в тексте в процентах. Незначимыми считаются стоп-слова: союзы, частицы, предлоги, местоимения-существительные, междометия, предикативы (нет, надо, можно), местоименные прилагательные (этот, такой, который, весь), вводные слова (конечно, например), указательные (там, тогда) и вопросительные (где, почему) наречия по разметке pymorphy3 (функция is_stopword) или слова из переданного списка стоп-слов.
Нормы Text.ru: до 15% - естественное содержание, 15-30% - избыточное, больше 30% - высокое.
Примечание
«Вода» Advego - другой показатель с нормой 55-75%, здесь он не реализован.
Формула:
Параметры:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
text |
list[str] | - |
Список слов |
stopwords |
list[str] | None |
Список стоп-слов; если не задан, используется разметка pymorphy3 |
Стоп-слово¶
ruts.style_stats.is_stopword()
Проверка, является ли слово стоп-словом по части речи. Стоп-словами считаются слова с частью речи CONJ, PRCL, PREP, NPRO, INTJ, PRED или с граммемами Apro, Prnt, Dmns, Ques по разметке pymorphy3; наборы заданы в ruts.constants.STOPWORD_POS и ruts.constants.STOPWORD_GRAMMEMES. Результаты разбора кэшируются.
Параметры:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
word |
str | - |
Слово |
Заспамленность¶
ruts.style_stats.calc_spam()
Вычисление заспамленности (Text.ru) - доли повторов слов в тексте в процентах. Каждое вхождение слова, кроме первого, считается повтором, поэтому заспамленность равна \(100\times(1 - \textrm{TTR})\). Для расчета по леммам извлекайте слова с лемматизацией.
Нормы Text.ru: до 30% - естественное содержание, 30-60% - SEO-оптимизированный текст, больше 60% - заспамленный текст.
Формула:
где \(N\) - количество слов, \(V\) - количество лексем.
Параметры:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
text |
list[str] | - |
Список слов |
Естественность по Ципфу¶
ruts.style_stats.calc_zipf_naturalness()
Вычисление естественности текста по закону Ципфа (pr-cy, megaindex) - согласия частот самых частых слов с идеальным распределением \(f_r = f_1 / r\), где \(f_1\) - частота самого частого слова, \(r\) - ранг слова. Считается как \(100\times(1 - \bar{d})\), где \(\bar{d}\) - среднее относительное отклонение частот от идеальных по рангам от 2 до \(n = \min(\textrm{top}_n, V, f_1)\): ранг 1 совпадает с идеалом по построению, а при рангах больше \(f_1\) идеальная частота меньше единицы и отклонение гапаксов растет без ограничения. Отрицательные значения обрезаются до 0. Норма сервисов - не меньше 50%.
Предупреждение
Если рангов для сравнения нет (все слова - гапаксы, одна лексема или top_n меньше 2), функция возвращает nan.
Формула:
Параметры:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
text |
list[str] | - |
Список слов |
top_n |
int | 10 |
Количество самых частых слов |
Плотность ключевых слов¶
ruts.style_stats.calc_keyword_density()
Вычисление плотности ключевых слов (Text.ru, Тургенев) - частоты каждого ключевого слова на 100 слов текста. Ключевая фраза из нескольких слов через пробел ищется как последовательность слов, вхождения фраз могут пересекаться. Слова сравниваются без учета регистра; для сравнения по леммам извлекайте слова с лемматизацией и передавайте леммы.
Формула:
Параметры:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
text |
list[str] | - |
Список слов |
keywords |
list[str] | - |
Ключевые слова или фразы |