ОБУЧЕНИЕ· 2 мин чтения · 28 июля, 09:07

Антискам-бот на грязных данных: опыт без размеченного датасета

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

Автор столкнулся с необходимостью фильтровать скам в Telegram-канале своего проекта и решил построить классификатор без размеченного датасета. Исходные данные — сырые сообщения: опечатки, сленг, смесь латиницы и кириллицы. Традиционный подход (сбор тысячи лейблов) был неприемлем. Вместо этого найдено техническое решение: детектор (бинарный: скам/не скам) и типизатор (классификация типов скама: фишинг, фейк-поддержка, бонус-скам и т.д.).

Первый этап — построение детектора. Автор использовал эвристики: ключевые слова, частотность ссылок, наличие битых ссылок, соотношение длины сообщения и количества ссылок. На основе эвристик сгенерирована «разметка» — неидеальная, но достаточно точная для обучения. Модель (логрегрессия и градиентный бустинг) обучилась на этой разметке и показала 94% точности на тестовом наборе.

Второй этап — типизатор. После определения скама нужно понять его тип. Автор столкнулся с проблемой: 120 типов в данных, многие с перекрытием. Решение — кластеризация эвристических признаков в 10 обобщённых категорий (фишинг, фейк-поддержка, вымогательство, реклама, бонусы и т.д.). Для каждой категории написаны десятки паттернов (регулярные выражения, проверки связок слов). Такой подход позволил избежать полной разметки, но потребовал ручной инженерии.

  1. Не бойтесь грязных данных. Эвристики и авторазметка дают базу для обучения классификатора без лейблов.
  2. Начните с простых признаков. Количество ссылок, длина текста, наличие битых ссылок — часто достаточно для отсева 80% скама.
  3. Типизация скама — отдельная сложность. Лучше сгруппировать 100+ типов в 5–10 обобщённых категорий.
  4. Грабли: битые ссылки в скаме — нетривиальный признак. Мошенники часто используют сокращалки, ведущие в никуда. Это можно детектить через предзагрузку URL.

«Разметка данных вручную — это часы работы, которые можно потратить на что-то более важное.»

Автор статьи на Habr, разработчик антискам-бота
Точность детектора на тестовом наборе94%
F1-мера детектора92%
Объём датасета для обучения1200 сообщений
Количество выявленных типов скама120
Обобщённых категорий типов10

Для бизнеса этот кейс показывает: защиту клиентов от мошенников можно организовать силами одной команды разработки — без миллионов на разметку и долгих циклов. Подход «эвристики → авторазметка → модель» применим не только для текстов, но и для других каналов (email, чаты в CRM). Главное — начать с простых признаков, которые уже есть в системе.

✦ ProAgent AI

Обсудить внедрение ИИ-агентов в вашем бизнесе

Расскажите о задаче — посчитаем, сколько часов и денег сэкономит агент.

Обсудить внедрение →