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

SEO-метрики стиля

ruts.style_stats.StyleStats

Описание

Модуль для вычисления SEO-метрик стиля и качества текста, повторяющих показатели сервисов Advego и Text.ru: тошнота, водность, заспамленность, естественность распределения слов по закону Ципфа и плотность ключевых слов. В качестве источника данных может использоваться как непосредственно текст, так и объект класса Doc библиотеки spaCy.

Точные формулы сервисов не опубликованы, поэтому реализованы общепринятые определения; они описаны в разделе функций. Слова по умолчанию извлекаются в нижнем регистре без лемматизации, поэтому формы одного слова считаются разными словами, как в Advego. Для расчета по леммам передайте объект WordsExtractor с параметрами use_lexemes=True и lowercase=True.

Примечание

Вычисление метрик происходит посредством вызова соответствующего атрибута или метода get_stats объекта класса StyleStats. Нормы сервисов рассчитаны на тексты в несколько сотен слов, на коротких текстах значения тошноты и заспамленности неинформативны.

Параметры

Параметр Тип По умолчанию Описание
source str/Doc - Источник данных (строка или объект Doc)
words_extractor WordsExtractor None Инструмент для извлечения слов
stopwords list[str] None Список стоп-слов для водности; если не задан, стоп-слова определяются по части речи с помощью pymorphy3
top_n int 10 Количество самых частых слов для академической тошноты и естественности по Ципфу

Атрибуты

Атрибут Тип Описание
words tuple[str] Кортеж извлеченных слов
classic_nausea float Классическая тошнота
academic_nausea float Академическая тошнота в процентах
water float Водность в процентах
spam float Заспамленность в процентах
zipf_naturalness float Естественность по Ципфу в процентах

Нормы сервисов:

Метрика Норма
Классическая тошнота не больше 7, на практике 1-5 (Advego)
Академическая тошнота 5-15% (Advego)
Водность до 15% - естественное содержание, 15-30% - избыточное, больше 30% - высокое (Text.ru)
Заспамленность до 30% - естественное содержание, 30-60% - SEO-оптимизированный текст, больше 60% - заспамленный (Text.ru)
Естественность по Ципфу не меньше 50% (pr-cy, megaindex)

Методы

keyword_density

Возвращает плотность ключевых слов и фраз - частоту каждого из них на 100 слов текста. Фраза из нескольких слов через пробел ищется как последовательность слов, регистр не учитывается.

Параметры:

Параметр Тип По умолчанию Описание
keywords tuple[str] - Ключевые слова или фразы

Пример

from ruts import StyleStats

text = "Ног нет, а хожу, рта нет, а скажу: когда спать, когда вставать, когда работу начинать"
ss = StyleStats(text)
ss.keyword_density("когда", "нет а")
# {'когда': 20.0, 'нет а': 13.333333333333334}

get_stats

Возвращает справочник с вычисленными метриками стиля текста.

Пример

Код:

# Загрузка библиотек
from ruts import StyleStats

# Подготовка данных
text = "Ног нет, а хожу, рта нет, а скажу: когда спать, когда вставать, когда работу начинать"

# Вычисление метрик
ss = StyleStats(text)
ss.get_stats()

Результат:

{'classic_nausea': 1.7320508075688772,
'academic_nausea': 93.33333333333333,
'water': 46.666666666666664,
'spam': 26.666666666666668,
'zipf_naturalness': 33.333333333333336}

Выводит на экран таблицу с вычисленными метриками стиля текста.

Пример

Код:

...

# Отображение таблицы вычисленных метрик
ss.print_stats()

Результат:

              Метрика              | Значение
---------------------------------------------
Классическая тошнота               |   1.73
Академическая тошнота (%)          |  93.33
Водность (%)                       |  46.67
Заспамленность (%)                 |  26.67
Естественность по Ципфу (%)        |  33.33