Как работает BM25 в Descore: зональная релевантность документов
BM25 (в отчётах Descore — BM25, PABM, LBM) — это вероятностная метрика соответствия страницы поисковому запросу. В отличие от устаревшего подсчёта плотности, BM25 учитывает закон насыщения частоты: алгоритм оценивает концентрацию терминов без поощрения спама и раскладывает страницу на зоны — Title, H1, подзаголовки, текст, анкоры ссылок и URL. Быстро проверить текст можно в онлайн-инструменте SEO-анализ текста.
Принцип работы: закон насыщения частоты (TF Saturation)
В алгоритмах ранжирования поисковых систем действует закон убывающей отдачи (насыщения частоты):
- Первые вхождения ключевых слов: задают предметную тему страницы и дают максимальный прирост релевантности.
- Последующие естественные упоминания: раскрывают детали и поддерживают контекст, но каждое следующее вхождение добавляет всё меньший вес.
- Механические повторы: дают всё меньший прирост по формуле и делают текст навязчивым для читателя.
Раньше в SEO использовался линейный подсчёт: «тошнота» и процент прямых вхождений. По этой устаревшей логике текст с 20 повторениями фразы считался вдвое релевантнее текста с 10 повторениями. Поисковые алгоритмы закрыли эту уязвимость, так как линейная плотность поощряла текстовый спам.
В адаптированной модели Descore учитывается не только число повторов, но и относительную долю терминов в объёме анализируемой зоны. В коротком Title каждое слово существенно влияет на оценку, а в большом товарном каталоге или объёмной статье допустимое число упоминаний масштабируется пропорционально размеру контента.
Что такое BM25 и почему он вытеснил линейную плотность
BM25 (Best Matching 25) — вероятностная модель ранжирования Окапи, разработанная Стивеном Робертсоном и Карен Спарк-Джонс. Она стала стандартом информационного поиска и применяется в Lucene, Elasticsearch, OpenSearch, а также в поисковых алгоритмах Яндекса и Google.
Математическая основа BM25 — гиперболическая функция насыщения частоты (TF Saturation):
Параметр k₁ управляет скоростью выхода на насыщение. При росте частоты оценка плавно приближается к пределу k₁ + 1, а вклад каждого следующего повтора уменьшается.
Особенности расчёта: почему BM25 считается внутри документа
В классической формуле BM25 используются корпусный IDF (редкость слова в выбранном наборе документов) и сравнение длины документа со средней длиной по этому набору.
Descore адаптирует модель для анализа конкурентной выдачи по трём причинам:
- 1. Частые слова запроса: по коммерческому запросу (например,
«купить ортопедический матрас») основные слова встречаются у многих конкурентов. В исходной формуле их IDF может быть низким или отрицательным, что уменьшает вклад этих слов в оценку. - 2. Детерминированность оценки: скор вашей страницы должен отражать структуру самого документа, а не меняться из-за того, что сегодня в выдачу случайно попал форум на 50 000 слов или одностраничный сайт. Значение рассчитывается по документу стабильно, а уже затем сопоставляется с показателями конкурентов из ТОП-10.
- 3. Зональное строение: для поисковика важно, где именно расположено слово — в Title, в главном H1, в подзаголовках, в первом абзаце текста или в анкорах навигации.
Поэтому Descore использует автономную зональную модель BM25 (Per-Zone Document BM25): сервис оценивает насыщение слов в каждой зоне страницы отдельно и масштабирует результат множителем ×100.
Математика Descore: формула насыщения зоны
Для каждой зоны веб-страницы (Title, H1, подзаголовки, текст, ссылки) расчёт выполняется по формуле:
| Компонент | Формула в коде | Что означает на практике |
|---|---|---|
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) — анкоры текстовых ссылок страницы, включая меню и внутреннюю перелинковку. - Корпусный BM25 ссылок (
links_corpus_bm25_score/ LCBM) — та же зона ссылок в сопоставлении со значимыми словами запросов кластера. - URL BM25 (
url_bm25_score/ UBM) — части адреса страницы; учитываются и варианты транслитерации слов запроса.
PABM: Позиционно-взвешенный BM25 текста страницы
Descore оценивает, где слова запроса встречаются в извлечённом тексте HTML body — ближе к началу или к концу. Положение элементов на экране и их видимость эта метрика не измеряет.
Отдельно от метрики проверьте, удобно ли посетителю ориентироваться на первом экране. Здесь многое зависит от типа страницы и интента:
- В статьях и услугах: читатель сразу ищет ответ на свой вопрос или условия услуги, поэтому внятное начало текста удерживает внимание и снижает показатель отказов.
- В интернет-магазинах и каталогах: задачу первого экрана решают заголовок H1, теги-чипсы категорий, фильтры и верхние карточки товаров. Вставлять сюда длинную вводную статью не нужно — это только мешает выбору товаров.
Чтобы оценить распределение слов по длине извлечённого текста, Descore рассчитывает Position-Aware BM25 (PABM):
Каждое вхождение слова запроса взвешивается по порядковой позиции в тексте:
- Начало текста (0% длины): коэффициент 1.5 (+50% к весу за раннее появление темы).
- Середина текста (50% длины): нейтральный коэффициент 1.0.
- Конец текста (100% длины): коэффициент 0.5 (-50% веса для слов в самом низу).
Если PABM заметно ниже Text BM25, проверьте, не сосредоточены ли слова запроса ближе к концу извлечённого текста. На значение может влиять и порядок служебных блоков в HTML, поэтому по одной метрике нельзя судить о качестве страницы или наличии спама.
Запросный BM25 vs Кластерный BM25 (Cluster-Corpus)
Страница редко ранжируется только по одной фразе. В реальной выдаче она продвигается по целой группе похожих и уточняющих запросов (синонимы, характеристики, модификаторы).
В одиночном запросе слова делят вес поровну (1 / m). Но в целом кластере слов много, а их частотность различается в разы. Для комплексной оценки соответствия всей группе запросов в Descore реализован Cluster-Corpus BM25:
Алгоритм рассчитывает кластерный BM25 в 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. - 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.
Z-отклонения показывают, какие зоны отличаются от нормы выдачи. По ним можно выбрать направление правки: повысить или снизить насыщенность словами запроса, изменить их расположение или раскрыть важные подтемы кластера.
Вопросы и ответы
Почему BM25 может снизиться после расширения текста?
В Descore BM25 зависит от доли слов запроса в анализируемой зоне. Если вы добавили большой фрагмент без этих слов, длина текста выросла, а их доля уменьшилась. Поэтому балл может снизиться даже при сохранении прежнего числа вхождений. По Z-отклонению видно, как изменённая зона соотносится с нормой выдачи.
Учитывает ли BM25 словоформы и синонимы?
Словоформы учитываются через лемматизацию: например, «матрас» и «матрасы» приводятся к одной базовой форме. Синонимы автоматически не объединяются в одно слово. В кластерном BM25 они участвуют в расчёте, если входят в значимые слова запросов кластера.
Почему запросный и кластерный BM25 дают разные результаты?
Запросный BM25 считает совпадения со словами маркерного запроса, а кластерный — со значимыми словами всей группы, взвешенными по частотности. Страница может хорошо раскрывать основной запрос, но слабее представлять уточнения: виды, модели, материалы или условия. Сопоставьте Z-отклонения обеих метрик и посмотрите, какие из этих уточнений полезно раскрыть на странице.