Descore

Как работает алгоритм BM25 в поиске: зональная релевантность документов в Descore

Алгоритм BM25 (в отчётах Descore — BM25, PABM, LBM) оценивает соответствие страницы поисковому запросу с учётом закона насыщения частоты. В отличие от линейного подсчёта плотности, алгоритм не поощряет повторы: первые вхождения дают максимальный прирост релевантности, а последующие выходят на плато. Сервис раскладывает документ на функциональные зоны — Title, H1, подзаголовки, текст, ссылки и URL — и сопоставляет их с реальным диапазоном конкурентов из ТОП-10 выдачи. Быстро проверить текст можно в онлайн-инструменте SEO-анализ текста.

Принцип работы: закон насыщения частоты (TF Saturation)

В алгоритмах ранжирования поисковых систем действует закон убывающей отдачи (насыщения частоты):

  • Первые вхождения ключевых слов: задают предметную тему страницы и дают максимальный прирост релевантности.
  • Последующие естественные упоминания: раскрывают детали и поддерживают контекст, но каждое следующее вхождение добавляет всё меньший вес.
  • Механические повторы: дают всё меньший прирост по формуле и делают текст навязчивым для читателя.

Линейный подсчёт («тошнота», процент вхождений) поощрял переоптимизацию: текст с 20 повторениями фразы формально считался вдвое релевантнее текста с 10 повторениями, хотя полезной информации читателю не добавлял. Алгоритм BM25 устраняет эту проблему.

Descore оценивает не абсолютное количество повторов, а относительную долю терминов в объёме анализируемой зоны документа (relative_tf). В коротком Title каждое слово существенно влияет на оценку, а в товарном каталоге или объёмной статье допустимое число упоминаний масштабируется пропорционально размеру контента.

Что такое BM25 и почему он вытеснил линейную плотность

BM25 (Best Matching 25) — вероятностная модель ранжирования Окапи и стандарт современного информационного поиска: алгоритм применяется в поисковых ядрах Lucene, Elasticsearch, OpenSearch, а также в алгоритмах поисковых систем. BM25 стал развитием формулы TF-IDF, устранив неоправданный перекос в пользу длинных документов.

Математическая основа BM25 — гиперболическая функция насыщения частоты (TF Saturation):

saturation(t)=tf⋅(k1+1)tf+k1\text{saturation}(t) = \frac{\text{tf} \cdot (k_1 + 1)}{\text{tf} + k_1}

Параметр k₁ управляет скоростью выхода на насыщение. Использование гиперболической функции гарантирует, что при росте частоты оценка плавно приближается к пределу k₁ + 1, а вклад каждого следующего повтора уменьшается. Формула перестаёт начислять баллы за избыточные вхождения, обеспечивая быстрый отклик на первые упоминания и защищая документ от переспама.

Особенности расчёта: почему BM25 считается внутри документа

В классической академической формуле BM25 предполагается, что анализируется замкнутая коллекция документов, для каждого слова вычисляется обратная документная частота (IDF), а нормализация длины сопоставляет размер страницы со средним значением по корпусу.

Для практической SEO-аналитики конкурентной выдачи общекорпусный расчёт неприменим по трём причинам:

  • 1. Обнуление классического IDF в топе: по целевым коммерческим фразам (например, «купить ортопедический матрас») основные слова часто встречаются у 100% сайтов в ТОП-10. В классической формуле такое сплошное присутствие обнуляет IDF или уводит его в минус, что неоправданно исключает главные слова из оценки.
  • 2. Разнородность типов страниц: реальная длина документа у лидеров выдачи различается в десятки раз — от лаконичного каталога на 15 товаров до огромного маркетплейса или лонгрида на 30 000 знаков. Количество документов в выборке ТОПа невелико (10–20 страниц), поэтому попытка усреднить их длину или рассчитать по ним корпусный IDF вносит сильные статистические искажения.
  • 3. Детерминированность и зональное строение: скор вашей страницы должен объективно отражать соответствие документа запросу, а не меняться из-за того, что сегодня в выдачу случайно попал чужой форум. Для поисковых систем принципиально важно, где именно расположено слово: в Title, главном H1, подзаголовках, основном тексте или анкорах ссылок.

Поэтому Descore использует автономную зональную модель BM25 (Per-Zone Document BM25): сервис оценивает относительную частоту терминов запроса в каждой структурной зоне страницы отдельно, масштабируя результат множителем ×100 для удобного сопоставления с конкурентами.

Математика Descore: формула насыщения зоны

Для каждой зоны веб-страницы (Title, H1, подзаголовки, текст, ссылки) расчёт выполняется по формуле:

Score=100⋅∑i=1m[wi⋅tfi⋅(k1+1)tfi+k1]\text{Score} = 100 \cdot \sum_{i=1}^{m} \left[ w_i \cdot \frac{\text{tf}_i \cdot (k_1 + 1)}{\text{tf}_i + k_1} \right]
КомпонентФормула в кодеЧто означает на практике

tf (relative_tf)

freq / zone_length

Доля слова в зоне: число вхождений делится на общее число слов зоны. Одно слово в Title из 6 слов весит больше, чем то же слово среди 500 слов статьи.

k₁ = 2.0

(tf * 3.0) / (tf + 2.0)

Параметр насыщения частоты. В Descore используется значение 2.0: прирост оценки уменьшается по мере роста доли слова в зоне.

Вес терма (wᵢ)

1.0 / len(query_terms)

Вес слова в запросе: для одиночного запроса все слова делят вес поровну (сумма = 1). Однословный и длинный запросы оцениваются в единой шкале.

Масштаб × 100

total_score * 100.0

Множитель для удобного отображения результата расчёта.

Анатомия страницы: зональные метрики BM25 в отчётах Descore

В прикладном аудите BM25 работает эффективнее всего при разделении страницы на смысловые блоки. Зональные метрики показывают, насколько слова главного запроса представлены в разных структурных частях документа:

  • Title BM25 (title_bm25_score / TBM) — текст тега <title>.
  • H1 BM25 (h1_bm25_score / H1BM) — текст заголовка H1.
  • Headings BM25 (headings_bm25_score / HBM) — подзаголовки H2 и H3, объединённые в одну текстовую зону.
  • Description BM25 (description_bm25_score / DBM) — содержимое метатега description.
  • Text BM25 (bm25_text_score / BM) — текст HTML body после удаления служебных тегов. В эту зону попадают и меню, и тексты ссылок, и футер.
  • BM25 ссылок (links_bm25_score / LBM) — анкоры текстовых ссылок страницы, включая меню и внутреннюю перелинковку.
  • URL BM25 (url_bm25_score / UBM) — релевантность адреса страницы (ЧПУ). Рассчитывается по специализированной модели с учётом структуры URL (slug, домен, путь) и транслитерации.

PABM: Позиционно-взвешенный BM25 текста страницы

Descore оценивает, где слова запроса встречаются в извлечённом тексте HTML body — ближе к началу или к концу. Положение элементов на экране и их видимость эта метрика не измеряет.

Отдельно от метрики проверьте, удобно ли посетителю ориентироваться на первом экране. Здесь многое зависит от типа страницы и интента:

  • В статьях и услугах: читатель сразу ищет ответ на свой вопрос или условия услуги, поэтому внятное начало текста удерживает внимание и снижает показатель отказов.
  • В интернет-магазинах и каталогах: задачу первого экрана решают заголовок H1, теги-чипсы категорий, фильтры и верхние карточки товаров. Вставлять сюда длинную вводную статью не нужно — это только мешает выбору товаров.

Чтобы оценить распределение слов по длине извлечённого текста, Descore рассчитывает Position-Aware BM25 (PABM):

PABM=100⋅∑i=1m[wi⋅saturationi⋅Pˉi]\text{PABM} = 100 \cdot \sum_{i=1}^{m} \left[ w_i \cdot \text{saturation}_i \cdot \bar{P}_i \right]

Каждое вхождение слова запроса взвешивается по порядковой позиции в тексте:

  • Начало текста (0% длины): коэффициент 1.5 (+50% к весу за раннее появление темы).
  • Середина текста (50% длины): нейтральный коэффициент 1.0.
  • Конец текста (100% длины): коэффициент 0.5 (-50% веса для слов в самом низу).

Если PABM заметно ниже Text BM25, проверьте, не сосредоточены ли слова запроса ближе к концу извлечённого текста. На значение может влиять и порядок служебных блоков в HTML, поэтому по одной метрике нельзя судить о качестве страницы или наличии спама.

Запросный BM25 vs Кластерный BM25 (Cluster-Corpus)

Страница редко ранжируется только по одной фразе. В реальной выдаче она продвигается по целой группе похожих и уточняющих формулировок (синонимы, характеристики, модификаторы).

В одиночном ключе слова делят вес поровну (1 / m). Но в кластере слов много, а их частотность различается в разы: здесь есть как высокочастотные маркеры, так и редкие спецификации. Предварительная обработка семантического ядра и логарифмическое взвешивание позволяют комплексно оценить соответствие всей группе через Cluster-Corpus BM25:

Cluster-BM25=100⋅∑w∈Cluster[W(w)⋅tfw⋅(k1+1)tfw+k1]\text{Cluster-BM25} = 100 \cdot \sum_{w \in \text{Cluster}} \left[ W(w) \cdot \frac{\text{tf}_w \cdot (k_1 + 1)}{\text{tf}_w + k_1} \right]
W(w)=ln⁡(1+Freq(w))∑j=1Kln⁡(1+Freq(wj))W(w) = \frac{\ln(1 + \text{Freq}(w))}{\sum_{j=1}^{K} \ln(1 + \text{Freq}(w_j))}

Алгоритм оценки кластерного соответствия работает в 4 шага:

  • 1. Отсечение шума: отбираются слова с долей не менее 0.1% от суммарной частоты группы запросов, что отсекает единичные опечатки и мусорные хвосты.
  • 2. Логарифмирование ln(1 + Freq): уменьшает разрыв весов между высокочастотными словами и более редкими характеристиками — моделями, размерами, материалами.
  • 3. Нормировка весов (Σ W = 1.0): сумма весов всех слов приводится к 1.0, поэтому шкала Cluster BM25 находится в том же диапазоне, что и одиночный BM25.
  • 4. Насыщение в зоне: каждое слово оценивается через формулу насыщения relative_tf (k₁ = 2.0), которая уменьшает отдачу от повторения одного слова.

Зональные метрики кластерного анализа:

  • Text Cluster BM25 (cluster_corpus_bm25_score / CCBM): соответствие текста страницы значимым словам из запросов кластера.
  • Title Cluster BM25 (title_corpus_bm25_score / TCBM): вхождение слов из запросов кластера в Title.
  • H1 Cluster BM25 (h1_corpus_bm25_score / H1CBM): вхождение слов из запросов кластера в H1.
  • Headings Cluster BM25 (headings_corpus_bm25_score / HCBM): вхождение слов из запросов кластера в подзаголовки H2/H3.
  • Description Cluster BM25 (description_corpus_bm25_score / DCBM): вхождение слов из запросов кластера в метатег description.
  • Links Cluster BM25 (links_corpus_bm25_score / LCBM): вхождение слов из запросов кластера в анкоры ссылок страницы.

Как читать отчёт: Z-отклонения BM25

В Descore основной ориентир при анализе BM25 — Z-отклонения по каждой зоне страницы относительно нормы ТОПа. Сравнить свой документ с конкурентами выдачи можно в модуле SEO-анализ SERP.

Отрицательное Z-отклонение показывает отличие в меньшую сторону, положительное — в большую. Значения ближе к нулю характерны для выбранного топа, а сильные отклонения выделяют зоны, требующие внимания. Сопоставьте отклонения Title, H1, подзаголовков, текста и ссылок, чтобы выбрать, где повысить или снизить насыщенность словами запроса.

Если в выдаче ранжируются сайты разных форматов (маркетплейсы, монобренды, информационные порталы), при выборе правок учитывайте содержание прямых конкурентов вашего типа.

Примеры ниже показывают, как выглядят понятные формулировки и механические повторы. Они не задают универсальных числовых порогов BM25.

ЗонаСлабое совпадение по зонеЕстественная формулировкаИскусственные повторы

Title

«Главная — Официальный сайт в Москве». Главный запрос отсутствует.

«Ортопедические матрасы в Москве: каталог и цены». Чёткий ключ и коммерческие маркеры.

«Матрасы купить матрас матрасы Москва». Прямой спам повторами.

H1

«Каталог продукции». Слишком абстрактно, суть не названа.

«Ортопедические матрасы». Простое и прямое название страницы.

«Купить матрас ортопедический матрас». Искусственная тавтология.

Headings (H2/H3)

Подзаголовки только «О нас», «Преимущества», «Контакты». Нет предметных разделов.

«Пружинные и беспружинные модели», «Как выбрать жесткость». Подзаголовки по сути темы.

Каждый заголовок начинается с ключа: «Матрасы цены...», «Матрасы отзывы...».

Body (PABM)

Ключевые слова почти не встречаются или смещены в самый низ страницы.

Слова темы появляются в начале извлечённого текста и дальше раскрываются по содержанию.

Ключевые слова механически повторяются в предложениях или блоках футера.

Ссылки (LBM)

В анкорах ссылок отсутствуют тематические запросы и названия категорий.

Информативные анкоры: «двуспальные матрасы», «детские модели».

Сквозные блоки перегружены прямыми коммерческими вхождениями.

Как работать с показателем: практические советы

Начните с Z-отклонений: выберите зону и направление правки. Ниже — способы повысить или снизить BM25 через формулировки, содержание и расположение слов запроса.

1. Если вы хотите повысить BM25 зоны:

  • Title и H1: укажите целевой запрос или его естественную словоформу. Сделайте заголовок конкретнее, убрав слова, которые не помогают понять тему и предложение страницы.
  • Подзаголовки H2/H3: назовите предметные разделы конкретнее — через виды, характеристики или вопросы по теме запроса.
  • Основной текст (Body): добавьте недостающие слова запроса в те фрагменты, где они помогают раскрыть тему: описание, характеристики, условия или ответы на вопросы.
  • Ссылки (LBM и LCBM): добавьте ссылки на подкатегории, сопутствующие товары или статьи с предметными анкорами вместо пустых ссылок без текста.

2. Если вы хотите снизить BM25 зоны:

  • Разгрузите Title и H1: уберите повторные вхождения одного и того же корня (например, вместо «Матрасы купить матрас Москва» оставьте лаконичное «Ортопедические матрасы в Москве: каталог и цены»).
  • Уберите повторы из подзаголовков H2/H3: если каждый заголовок начинается с одного ключа («Матрасы цена...», «Матрасы отзывы...»), замените их на естественные формулировки («Цены и комплектации», «Отзывы покупателей»).
  • Разбавьте основной текст: замените навязчивые механические повторы целевой фразы местоимениями, сопутствующими характеристиками или синонимами.
  • Сократите повторы в навигации (LBM): уберите неестественные прямые коммерческие анкоры из сквозных меню и футера, заменив их на понятные пользовательские названия разделов.

3. Если вы хотите повысить PABM за счёт расположения слов:

  • Перенесите ключевые понятия темы ближе к началу содержательной части страницы. Проверьте порядок текстовых блоков в HTML: в расчёт входят и меню, и футер.
  • В статьях и услугах — поднимите тезис и суть предложения в вводный абзац.
  • В интернет-магазинах — проверьте, как в HTML расположены названия категорий, фильтров и первых карточек. Отдельно оцените, удобно ли покупателю ориентироваться на первом экране, без добавления искусственных текстов.

4. Если вы хотите повысить кластерный BM25:

  • Посмотрите, какие виды, характеристики, модели и условия встречаются в запросах кластера и относятся к вашей странице. Раскройте недостающие подтемы в подходящих разделах.

Чек-лист перед публикацией материала

  • Title и H1 называют тему страницы? Ключевой запрос указан прямо и естественно, без набивки дублями и без абстрактных рекламных слоганов?
  • Проверены ли Z-отклонения по зонам? Сопоставьте их с содержанием Title, H1, подзаголовков, текста и ссылок и выберите, где нужно изменить насыщенность словами запроса.
  • Понятна ли тема в начале страницы? Оцените первый экран глазами посетителя. PABM отдельно покажет расположение слов запроса в извлечённом тексте, но не видимую область экрана.
  • Отражает ли структура реальные запросы темы? Подзаголовки H2/H3 разбивают страницу на предметные разделы вместо пустых дежурных штампов?
  • Раскрыты ли важные подтемы кластера (Cluster BM25)? Проверьте характеристики, виды и уточнения из запросов группы, относящиеся к интенту страницы.

Главное о показателе

Алгоритм BM25 в Descore оценивает текстовое соответствие документа запросу по ключевым структурным зонам: Title, H1, подзаголовкам, тексту, ссылкам и URL.

Сервис сопоставляет показатели страницы с реальным диапазоном конкурентов из ТОП-10 выдачи. Z-отклонения показывают, какие зоны отличаются от нормы топа, помогая сбалансировать текстовую оптимизацию и защитить страницу от переспама.

Вопросы и ответы

Почему BM25 может снизиться после расширения текста?

В Descore BM25 зависит от доли слов запроса в анализируемой зоне. Если вы добавили большой фрагмент без этих слов, длина текста выросла, а их доля уменьшилась. Поэтому балл может снизиться даже при сохранении прежнего числа вхождений. По Z-отклонению видно, как изменённая зона соотносится с нормой выдачи.

Учитывает ли BM25 словоформы и синонимы?

Словоформы учитываются через лемматизацию: например, «матрас» и «матрасы» приводятся к одной базовой форме. Синонимы автоматически не объединяются в одно слово. В кластерном BM25 они участвуют в расчёте, если входят в значимые слова запросов кластера.

Почему запросный и кластерный BM25 дают разные результаты?

Запросный BM25 считает совпадения со словами маркерного запроса, а кластерный — со значимыми словами всей группы, взвешенными по частотности. Страница может хорошо раскрывать основной запрос, но слабее представлять уточнения: виды, модели, материалы или условия. Сопоставьте Z-отклонения обеих метрик и посмотрите, какие из этих уточнений полезно раскрыть на странице.