В реестре факторов товарной вертикали goods (ya/extsearch/goods/base/factors/factors_meta_gen.in, всего 3144 фактора) есть отдельная пачка признаков, которая отвечает не за релевантность и не за цену, а за "чистоту" оффера и магазина. Это антиспам-слой: дешёвые статические флаги, которые ловят примитивные манипуляции в названии товара, имени магазина и текстовых полях, плюс несколько унаследованных "кармических" признаков, доехавших до Маркета из общего веб-стека Яндекса.
Важно сразу обозначить рамку. Маркет не индексирует ваш сайт в привычном SEO-смысле - вы отдаёте офферы фидом (YML, Yandex Market Language), апстрим-конвейер (дерево market/, не это репо) матчит офферы в карточки моделей и категоризирует, после чего готовое поколение индекса раскатывается шардами на бекенды report. Антиспам-факторы из нашего дерева - это то, что считается уже над офферной частью индекса и подаётся в ранжирующую формулу report. Параллельно существует продуктовый "индекс качества продавца" (отгрузки, отмены, претензии) - это другая, операционная история, она живёт не в факторах ранжирования, а в кабинете партнёра. Я разбираю именно ранжирующие признаки по коду.
Реальные имена факторов из реестраДисклеймер. Это реконструкция по исходникам товарной вертикали goods, а не официальная формула Маркета. Финальное ранжирование - CatBoost/MatrixNet (meta_models, formulas-JSON), это деревья решений. У факторов НЕТ фиксированных процентных весов. Все оценки "сильный/слабый сигнал" - качественные.
Вытащил из factors_meta_gen.in всё, что относится к спаму, карме, латинице и капсу. Привожу с тегами как в коде. Тег TG_TEXT_PLACE - участвует в текстовой выдаче, TG_MODEL_OFFER_PLACE - в карточке товара с офферами, TG_BLENDER_PLACE - в подмешивании в блендер общей выдачи. Ни один из перечисленных НЕ помечен TG_DEPRECATED или TG_UNUSED - то есть формально все живые.
Код: Выделить всё
ФАКТОР УРОВЕНЬ МЕСТА ВЫДАЧИ
---------------------------- ------------ -----------------------------
NO_SPAM STATIC BLENDER + MODEL_OFFER + TEXT
SPAM_2 STATIC BLENDER + MODEL_OFFER + TEXT
SPAM_KARMA STATIC BLENDER + MODEL_OFFER + TEXT
ADV_ASPAM STATIC BLENDER + MODEL_OFFER + TEXT
BAD_BOOKMARKS STATIC BLENDER + MODEL_OFFER + TEXT
TEST_ANTISPAM_FEATURES STATIC BLENDER + MODEL_OFFER + TEXT
SYN_PERCENT_BAD_WORD_PAIRS STATIC BLENDER + MODEL_OFFER + TEXT
NUM_LATIN_LETTERS STATIC BLENDER + MODEL_OFFER + TEXT
SHOP_NAME_LATIN OFFER BLENDER + MODEL_OFFER + TEXT
SHOP_NAME_UPPERCASE OFFER BLENDER + MODEL_OFFER + TEXT
RINGS_HOST_RANK_BADNESS_1 STATIC BLENDER + MODEL_OFFER + TEXT
RINGS_HOST_RANK_BADNESS_2 STATIC BLENDER + MODEL_OFFER + TEXT
RINGS_HOST_RANK_BADNESS_3 STATIC BLENDER + MODEL_OFFER + TEXT
RINGS_HOST_RANK_BADNESS_4 STATIC BLENDER + MODEL_OFFER + TEXT
RINGS_HOST_RANK_BADNESS_OLD STATIC BLENDER + MODEL_OFFER + TEXT
CATEGORY_CLSSFY_BAD_TITLE_PR_M CATEGORY TEXT
CATEGORY_CLSSFY_BAD_TITLE_PR_S CATEGORY TEXT
CATEGORY_CLSSFY_BAD_CATEGORY_PR_M CATEGORY TEXT
CATEGORY_CLSSFY_BAD_CATEGORY_PR_S CATEGORY TEXT
CATEGORY_CLSSFY_BAD_FULL_PR_M CATEGORY TEXT
CATEGORY_CLSSFY_BAD_FULL_PR_S CATEGORY TEXT
Разбор по смыслу
Прямые антиспам-флаги: NO_SPAM, SPAM_2, ADV_ASPAM
Это ядро. NO_SPAM по смыслу - "документ прошёл проверку, спама не обнаружено" (инвертированный признак: высокое значение = чисто). SPAM_2 - вторая версия спам-детектора (наличие "2" прямо говорит, что был SPAM первой версии, который вытеснили). ADV_ASPAM (advanced anti-spam) - продвинутый антиспам-вердикт. Все три - статические, считаются на этапе сборки индекса, а не в рантайме запроса. Для модели это, скорее всего, сильные понижающие/срезающие сигналы: если оффер помечен как спамный, дерево уводит его вниз независимо от того, как хорошо он матчится по тексту.
Кармические признаки: SPAM_KARMA, BAD_BOOKMARKS
SPAM_KARMA - накопленная "репутация спамности" источника, не разовый вердикт, а агрегат. BAD_BOOKMARKS - доля плохих/мусорных закладок-сигналов. Это унаследованная веб-механика: репутация, которая копится и медленно отпускает. Практический вывод - разовая чистка одного оффера карму не обнуляет, тут работает история.
Латиница и капс в текстах: NUM_LATIN_LETTERS, SHOP_NAME_LATIN, SHOP_NAME_UPPERCASE
Самая понятная и контролируемая магазином группа. NUM_LATIN_LETTERS - количество латинских букв (в русскоязычном названии товара куча латиницы - классический признак переспама и обхода: "КУПИТЬ Iphone NEW ОРИГИНАЛ TOP"). SHOP_NAME_LATIN и SHOP_NAME_UPPERCASE - заданы на уровне TG_OFFER, то есть это про имя магазина в оффере: целиком латинское имя или ИМЯ КАПСОМ. Логика старая и прозрачная: крикливое название - попытка визуально выделиться в выдаче, модель это штрафует.
Лексический мусор: SYN_PERCENT_BAD_WORD_PAIRS
Процент "плохих пар слов" - синтаксический сигнал бессвязного текста: набор ключей, склеенный без грамматики ("чехол телефон купить дёшево москва оригинал самсунг"). Высокий процент плохих биграмм = текст писали не для человека, а под выдачу.
Категорийная классификация: CATEGORY_CLSSFY_BAD_*
Шесть признаков (BAD_TITLE, BAD_CATEGORY, BAD_FULL, каждый в версиях _M и _S). По смыслу - вероятность того, что классификатор считает товар попавшим не в свою категорию: BAD_TITLE по названию, BAD_CATEGORY по заявленной категории фида, BAD_FULL по всему вместе. Суффиксы _M и _S - почти наверняка две модели/два порога (например, более и менее строгий). Это ловит подмену категории - когда товар суют в популярную или конкурентную выдачу, где его быть не должно. Живут на TG_DOCUMENT_CATEGORY и только в TG_TEXT_PLACE.
Унаследованный веб-бэкграунд: RINGS_HOST_RANK_BADNESS_1..4 + OLD
Пять признаков "плохости" хоста из общевебной системы host-rank (RINGS). Это 링-ранг хоста-источника оффера: насколько "плохой" домен по вебным меркам. Наличие версий 1..4 плюс OLD - типичный след эволюции, где старую версию не выпилили, а оставили рядом. Для Маркета это репутация домена магазина, прилетающая снаружи вертикали.
Где сигнал сильный, где слабый (качественно)
Код: Выделить всё
СИГНАЛ ХАРАКТЕР ВЛИЯНИЯ (реконструкция)
------------------------------ ----------------------------------------
NO_SPAM / SPAM_2 / ADV_ASPAM сильный, режущий: спамный вердикт топит
SPAM_KARMA / BAD_BOOKMARKS средний, инерционный: копится и отпускает
NUM_LATIN_LETTERS средний, монотонный: больше латиницы хуже
SHOP_NAME_LATIN/UPPERCASE слабый-средний: косметика имени магазина
SYN_PERCENT_BAD_WORD_PAIRS средний: маркер нечитаемого названия
CATEGORY_CLSSFY_BAD_* средний-сильный в своей категории выдачи
RINGS_HOST_RANK_BADNESS_* слабый для Маркета: внешняя вебная карма
Что из этого реально контролирует магазинЕщё раз граница: "режущий", "монотонный", "инерционный" - это моя интерпретация семантики имён и тегов. В CatBoost ни у одного из них нет фиксированного веса - один и тот же фактор в разных листьях дерева может играть по-разному. Доказано кодом только то, что фактор существует, не помечен мёртвым и подаётся в указанные места выдачи.
- Название оффера в фиде. Убрать латиницу там, где она не нужна (NUM_LATIN_LETTERS, SHOP_NAME_LATIN). Латиница допустима в брендах и моделях (iPhone 15, ASUS ROG), но не как украшение и не как дубль кириллического ключа.
- Капс. Не писать имя магазина и название товара КАПСОМ (SHOP_NAME_UPPERCASE). Заглавные только по правилам языка.
- Читаемость названия. Название - для человека: бренд, тип товара, модель, ключевой параметр. Без склейки ключей - это прямо бьёт по SYN_PERCENT_BAD_WORD_PAIRS.
- Правильная категория в фиде. Не пихать товар в чужую, более конкурентную категорию - это материал для CATEGORY_CLSSFY_BAD_CATEGORY/FULL.
- Гигиена домена-источника. Чистый хост без вебной истории спама помогает по RINGS_HOST_RANK_BADNESS.
Практические выводы
- Антиспам в Маркете - это про офферы и тексты фида, а не про сайт. Чистый, человекочитаемый фид закрывает большую часть управляемых факторов.
- Манипуляции в названии (латиница, капс, ключевая каша) ловятся дешёвыми статическими признаками - это первое, что чинится и первое, что стоит проверить.
- Категорийная дисциплина важна отдельно: правильная категория в YML снижает риск по CATEGORY_CLSSFY_BAD_*.
- Репутационные признаки (KARMA, RINGS) инерционны - не ждите мгновенного эффекта от разовой чистки.
Доказано кодом: перечисленные факторы есть в реестре товарной вертикали goods, у каждого указанные теги/места выдачи, ни один из разобранных не помечен TG_DEPRECATED/TG_UNUSED. Реконструкция (по именам и тегам, не по формуле): что именно каждый сигнал измеряет и насколько сильно влияет. Сама логика бана/санкций магазина - это операционный индекс качества продавца, он живёт вне факторов ранжирования и в этом разборе не вскрывается. Числовые веса не приводятся принципиально: ранжирует CatBoost-ансамбль, статических процентов у факторов нет.