anchor-words

Определяет, чем является слово в поисковом запросе: заведение, игра, способ оплаты, регион, предложение или обычное слово. Нужна затем, что страницу задаёт названная в запросе сущность, а не близость текстов: «betway bonus» и «casumo bonus» похожи почти дословно, но это две разные страницы.

Полное дообучение xlm-roberta-base, 278 млн параметров, шесть классов. На RTX 4090 размечает 7825 слов в секунду — сорок тысяч слов ядра считаются за секунды.

Что на входе

Слово в отрыве ничего не значит: «quatro» читается как числительное, «delta» как буква. Поэтому рядом идут запросы, в которых слово встречается, самые частотные первыми. Формат обязан совпадать до символа:

слово: betway
запрос: betway casino | betway login | betway canada | betway app | betway bonus
from transformers import AutoModelForSequenceClassification, AutoTokenizer

tok = AutoTokenizer.from_pretrained("Krasovskiy/anchor-words")
model = AutoModelForSequenceClassification.from_pretrained("Krasovskiy/anchor-words")

текст = "слово: betway\nзапрос: betway casino | betway login | betway canada"
метка = model.config.id2label[
    model(**tok(текст, return_tensors="pt", truncation=True, max_length=64))
    .logits.argmax(-1).item()]

Классы и качество

Отложенная четверть, деление хешем от слова.

класс что это F1
WORD обычное слово ниши 0,906
BRAND заведение 0,872
GEO страна, регион, город 0,826
PAY способ оплаты 0,824
OFFER вид предложения 0,755
PRODUCT игра или вид игры 0,538

Верных 85,8%, macro F1 0,787.

Пределы, о которых надо знать

PRODUCT слабее всех, и это не случайность. Игра почти всегда называется формой из нескольких слов — «book of ra», «sweet bonanza», «alaxe in zombieland», — а модель отвечает про слово. Одиночное book или sweet обычное, и разметка их таковыми и считает; страницу игры задаёт форма целиком. Пользуйтесь каталогом игр там, где он есть.

Производителя игр от заведения по запросу отличить нельзя. У habanero, stakelogic, spinomenal запросы вида «X casino» — ровно как у казино. Класс PROVIDER в модель намеренно не включён: его закрывает справочник точным совпадением, и это надёжнее любой догадки.

Модель не знает рынка, она знает текст. Мнение о слове «fun» или «bono» ненадёжно. В работающем инструменте её ответ — третий по старшинству источник после справочников и подсказок Google, а не первый.

Обучающая выборка размечена не человеком. Метки собраны из свидетельств: подтверждение подсказками, кураторские справочники, поведение слова в ядре. При проверке в выборке нашлись отравленные метки — родовые слова ниши стояли брендами из-за того, что составные имена справочника разбирались на слова. Ошибка исправлена, но происхождение меток стоит держать в уме.

Чем мерить не надо

Accuracy при таком дисбалансе врёт: обычных слов в ядре около четырёх пятых, и модель, метящая всё словом, получит 80%. Смотрите на полноту по классам — прежде всего, сколько имён модель не узнала.

Родственная модель

anchor-pairs отвечает на второй вопрос кластеризации: два запроса — одна страница или разные.

Два замера, и они не равны

Числа выше сняты на отложенной выборке: слова, которых не было в обучении ни из одного источника. Это обычная проверка «умеет ли модель обобщать».

Есть второй замер, на нарочно трудном тесте: все 112 спорных случаев, которые разбирались вручную, плюс пятая часть остальной ручной разметки. Спорные — те, где два размечавших не сошлись, то есть ровно граница задачи. Там:

baseline (эмбеддинги + логрегрессия) anchor-words
macro F1 0,4442 0,4632

Прибавка +0,019 при заявленном пороге в пять пунктов — то есть на границе задачи модель почти не помогает. Чтение 120 худших ошибок объяснило почему: часть «ошибок» — ошибки самой разметки, а провайдера игр от заведения по одному запросу отличить нельзя в принципе. «netent casino» — это раздел сайта, а не бренд, и понять это можно только из справочника.

Оба числа верны, просто отвечают на разные вопросы. Берите первое, если нужна разметка обычного ядра; второе — чтобы не ждать чуда на трудных случаях.

Где не работает

  • Провайдер против заведения — см. выше, закрывается справочником.
  • Слово в отрыве от контекста. Без строки запрос: модель гадает: «quatro» читается как числительное, «delta» как буква.
  • Ниша. Училась на гемблинге; на других нишах не мерялась.

Где её место в конвейере: честный замер 26 августа 2026

Модель делает то, что заявлено. Но на канадском ядре казино (35 581 запрос) её метки оказались почти не нужны, и это надо знать заранее.

Разметку сущностей можно получить бесплатно, прямо из самих запросов:

источник что даёт забрал запросов
соседство с родовым словом spinz casino -> spinz 12 205
позиция в запросе имя стоит первым словом, порог 80% 8 686
поведение про оператора спрашивают login, bonus, app, withdrawal 1 971
форма есть и сама, и с родовым all jackpots + all jackpots casino 708 форм

Разница между 7295 метками модели и 2548 метками из справочников составила 7 ключей из 35 581. Конвейер, собранный на правилах выше, дал 11 755 страниц против 14 684 у сборки с моделью, при этом 11 679 групп держатся на 100% плотности. Считается четыре секунды на процессоре.

Отдельно проверен холодный старт — новая ниша, где нет ни справочника брендов, ни кэша подсказок Google. Без них конвейер даёт 11 599 страниц против 11 755: правила подхватывают всё сами.

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

Downloads last month
24
Safetensors
Model size
0.3B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Krasovskiy/anchor-words

Finetuned
(4192)
this model