1. Типология деструктивного дискурса: классы, метки и границы между категориями контента
Типология деструктивного дискурса: классы, метки и границы между категориями контента
Почему два модератора, читая одну и ту же фразу «Да ты совсем спятил», могут принять диаметрально противоположные решения — один посчитает это шуткой, другой — оскорблением? Именно потому, что у деструктивного дискурса нет чёткой границы, похожей на черту на асфальте. Это скорее спектр, и задача инженера по модерации — разметить его так, чтобы алгоритм мог работать предсказуемо.
Зачем нужна типология
Любая система машинного обучения учится на метках — ярлыках, которые человек присваивает примерам из датасета. Если метки размыты, противоречивы или пересекаются, модель путается и выдаёт случайные результаты. Типология деструктивного дискурса — это карта, которая говорит модели: «Вот что значит "токсично", вот что значит "опасно", а вот — просто грубовато, но допустимо».
Без такой карты вы получите ситуацию, знакомую каждому, кто работал с датасетом Toxic Comment Classification Challenge на Kaggle: модель с точностью 97% на тесте, которая на реальных комментариях путает сарказм с угрозой, а критику — с языком вражды.
Базовые категории деструктивного дискурса
В индустрии модерации контента сложилась устойчивая иерархия из шести ключевых категорий. Каждая из них отвечает на свой вопрос о тексте.
| Категория | Вопрос, на который отвечает | Пример | |---|---|---| | Токсичная речь (toxic speech) | Нарушает ли текст нормы вежливого общения? | «Ты тупой, как пробка» | | Оскорбительная речь (abusive language) | Содержит ли текст прямые оскорбления адресата? | «Идиот, закрой рот» | | Язык вражды (hate speech) | Направлен ли текст против группы по признаку расы, пола, религии? | «Все [группа] должны убираться отсюда» | | Угрозы насилия (threats) | Содержит ли текст прямую или косвенную угрозу физического вреда? | «Я найду тебя и сломаю тебе лицо» | | Призывы к самоповреждению/суициду (self-harm content) | Поощряет ли текст причинение вреда себе или другим? | «Лучше бы ты не проснулся завтра» | | Спам и манипуляция (spam/manipulation) | Пытается ли текст обмануть, ввести в заблуждение или навязать? | «СРОЧНО! Перешли 10 людям или будет несчастье!» |
На первый взгляд категории кажутся чёткими, но на практике между ними — зона пересечения, где разметчики расходятся чаще всего.
Зона пересечения: где категории накладываются
Возьмём фразу: «Все [представители этнической группы] — воры и должны сидеть в тюрьме». Это одновременно и язык вражды (направлен против этнической группы), и токсичная речь (нарушает нормы общения), и потенциально призыв к насилию (хотя и не прямая угроза). Какую метку ставить?
Существует два подхода:
Много меток (multi-label). Один текст может получить несколько меток одновременно. Именно так устроен датасет Jigsaw: каждый комментарий может быть одновременно toxic, severe_toxic, obscene, threat, insult и identity_hate. Этот подход лучше отражает реальность, но усложняет обучение модели.
Одна метка (single-label). Текст получает только одну, самую «тяжёлую» категорию. Иерархия обычно строится по принципу потенциального вреда: угроза насилием > язык вражды > оскорбление > токсичность. Так проще обучать модели, но вы теряете нюансы.
Практика показывает, что для промышленных систем оптимален гибридный подход: модель предсказывает набор меток, а бизнес-логика определяет приоритет действий (удалить, скрыть, отправить на ручную проверку).
Принципы построения чётких границ
Чтобы разметчики расходились реже, а модель училась лучше, нужно задокументировать правила принятия решений (decision rules) для каждой категории. Вот пять принципов, которые работают на практике.
Принцип адресата. К кому направлен текст? Если к конкретному человеку — скорее всего, это оскорбление. Если к группе по защищённому признаку — язык вражды. Если ко всем без исключения — общий токсикоз.
Принцип намерения. Пытается ли автор причинить вред, унизить или запугать? Фраза «Ты ведёшь себя как идиот» в споре о погоде — оскорбление. Та же фраза в обсуждении сложного алгоритма может быть дружеским подколом. Контекст решает.
Принцип конкретности угрозы. «Я тебя убью» — прямая угроза. «Мир стал бы лучше без таких, как ты» — язык вражды без конкретной угрозы. «Кто-нибудь должен навести порядок» — серая зона, зависящая от контекста.
Принцип уязвимости аудитории. Текст в чате взрослых специалистов и тот же текст в детском форуме — разный уровень опасности. Многие платформы учитывают контекст площадки при разметке.
Принцип повторяемости. Однократная грубость — это инцидент. Систематические оскорбления в адрес одного человека — харассмент (harassment), который выделяется в отдельную категорию.
Иерархия вреда: от неприятного к опасному
Не всё деструктивное одинаково опасно. Практическая иерархия, которую используют команды модерации крупных платформ, выглядит так (от менее к более опасному):
Эта иерархия определяет не только метку, но и скорость реакции: угроза требует немедленного удаления, а грубость может быть обработана с задержкой или просто снижена в рекомендациях.
Edge cases: самые частые ловушки разметки
Сарказм и ирония. «Ну ты гений, конечно» — похвала или оскорбление? Модели плохо понимают сарказм, потому что он строится на контексте и тоне, которые теряются в тексте. Разметчики должны помечать такие случаи отдельной меткой «сарказм/неоднозначность».
Рекламация и цензура. «Этот продукт — полный мусор, разработчики — бездельники» — это токсичность или legitimate negative review? Критика продукта и критика людей — разные вещи, но модели часто путают их.
Референс к защищённой группе без ненависти. «Мой сосед-мусульманин приготовил отличный плов» — упоминание религии без негативной окраски. Модели, обученные на грубом паттерне «[группа] = плохо», могут ложно срабатывать на нейтральных упоминаниях.
Кодовый язык и эвфемизмы. Злоумышленники заменяют запрещённые слова символами, цифрами или синонимами: «гей» → «ге1», «убить» → «ликвидировать». Словарные фильтры это пропускают, а модели без специального обучения — тоже.
Контекст площадки. Фраза «Я тебя убью» в игровом чате после проигрыша и та же фраза в личных сообщениях незнакомому человеку — совершенно разные ситуации. Разметка без учёта контекста площадки даёт шумные данные.
Практический инструмент: карточка разметчика
Чтобы свести разногласия к минимуму, каждая категория должна быть описана в карточке разметчика (annotation card). Вот минимальный шаблон:
Такие карточки сокращают межразметочное расхождение (Cohen's Kappa) с 0.5–0.6 до 0.75–0.85, что является приемлемым порогом для обучения моделей.
От типологии к данным
Типология — это фундамент. Следующий шаг — применить её к реальным текстам: написать инструкции разметчикам, провести пилотную разметку, измерить согласованность и итеративно уточнить границы категорий. Именно этому посвящена следующая статья, где мы разберём критерии разметки языка вражды и токсичной речи на практических примерах.