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}
print_stats¶
Выводит на экран таблицу с вычисленными метриками стиля текста.
Пример
Код:
...
# Отображение таблицы вычисленных метрик
ss.print_stats()
Результат:
Метрика | Значение
---------------------------------------------
Классическая тошнота | 1.73
Академическая тошнота (%) | 93.33
Водность (%) | 46.67
Заспамленность (%) | 26.67
Естественность по Ципфу (%) | 33.33