Как работает алгоритм 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):
Параметр 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, подзаголовки, текст, ссылки) расчёт выполняется по формуле:
| Компонент | Формула в коде | Что означает на практике |
|---|---|---|
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):
Каждое вхождение слова запроса взвешивается по порядковой позиции в тексте:
- Начало текста (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:
Алгоритм оценки кластерного соответствия работает в 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-отклонения обеих метрик и посмотрите, какие из этих уточнений полезно раскрыть на странице.