TL;DR
BAIT — это набор из 50 новостных статей, где живые аннотаторы (разметчики) вручную отметили фразы, давящие на когнитивные искажения читателя. Всего девять типов «триггеров»: авторитет, негатив, «все так делают», «раньше было лучше» и другие. Шесть топовых LLM попросили найти эти триггеры в тексте: сначала сказать, какие типы есть в статье, потом выделить конкретные фрагменты.
Главная находка: модели неплохо чувствуют, что триггер в статье есть, но плохо показывают, где он. Точность поиска фрагментов у лучшей модели — меньше половины от согласия двух людей. Модели перестараются: видят негативность примерно в 39 статьях вместо 23 настоящих, авторитет — в 30 вместо 19. Большая часть отмеченных кусков — не манипуляция. Любая цитата эксперта и любая страшная новость превращаются в «триггер».
Причина в том, что модель реагирует на слова-маркеры («эксперты считают», «катастрофа»), а не на механизм. Например, на то, что утверждение вообще ничем не подкреплено. Метод простой: давать модели чёткие определения, правило «минимальный фрагмент» и 3–10 размеченных примеров. Это сокращает разрыв с людьми, но не закрывает его. Поэтому результат нужно проверять глазами.
Схема метода
ЗАДАЧА 1 (детекция): статья → список типов триггеров из 9 → «есть / нет» по каждому
ЗАДАЧА 2 (локализация): статья → для каждого триггера дословные цитаты-фрагменты
+ группировка разрозненных цитат в один триггер → JSON
Всё в одном системном промпте: определения (по строке на тип) + правило
«несколько фрагментов = один триггер» + формат вывода.
Режимы: 0 примеров / 3 размеченных статьи / 10 размеченных статей.
Пример применения
Задача: PR-директор маркетплейса получил на согласование статью в деловом издании про рынок доставки. Прежде чем звонить редактору, он хочет понять, где текст давит на читателя. Ему нужны точные цитаты, чтобы вести разговор по фактам.
Промпт:
<Задача>
Прочитай статью. Сначала определи, какие из 9 типов когнитивных
ловушек в ней есть. Затем для каждого найденного типа выпиши
дословные цитаты, которые эту ловушку запускают.
Задача>
<Триггеры>
B01 Иллюзия истины — утверждение повторяется (в том числе другими словами)
B02 Негативность — негативное подано сильнее, чем позитивное
B03 Эффект толпы — вес утверждению придаёт «так думают/делают многие»
B04 Авторитет — вес утверждению придаёт статус источника
B05 Стереотипы — оценка строится на принадлежности к группе
B06 Деклинизм — «раньше было лучше»
B07 Эффект жертвы — история одного человека направляет оценку
B08 Иллюзорная корреляция — события связаны причинно без оснований
B09 Ретроспективная ошибка — исход подан как «было очевидно заранее»
Триггеры>
<Правила>
- Один триггер может состоять из нескольких цитат в разных местах
статьи (например, повтор одного тезиса) — объединяй их в одну группу.
- Цитата — дословная, из текста.
- Если в статье нет триггеров, верни пустой список.
Правила>
<Формат>
JSON: [{"тип": "B04", "цитаты": ["...", "..."], "уверенность": 1-3}]
Формат>
<Статья>
{вставить текст статьи про рынок доставки}
Статья>
Результат: модель вернёт JSON-список триггеров с типом, цитатами и уверенностью. Ожидайте перебор: часть цитат окажется обычными ссылками на экспертов и фактами о негативных событиях. Список нужно просмотреть самому и вычеркнуть то, что на деле подкреплено данными в тексте. Как рабочий черновик «где смотреть» результат полезен. Как приговор «здесь манипуляция» — нет.
Почему это работает
Слабость LLM. Модель легко цепляется за видимые признаки: слово «эксперт», тревожная лексика, «раньше». Манипуляция — это не слово, а условие: цитата эксперта становится триггером, только если дальше по тексту его слова ничем не подтверждены. Чтобы это понять, надо держать в голове всю статью. Модель же помечает по поверхности.
Сильная сторона. Модель хорошо классифицирует текст целиком: «в статье есть давление через авторитет». Для этого достаточно общего впечатления. Ещё она хорошо следует формату и умеет копировать цитаты. Из 50 статей почти все её строки находились в тексте дословно.
Как метод это использует. Он делит работу на два этапа. На первом модель решает то, что умеет (что есть в тексте). На втором её просят показать цитаты в строгом формате, чтобы проверка стала возможной. Определения, правило группировки и примеры сужают разрыв с людьми. Остаток закрывает человек.
Рычаги управления: - Число примеров: 0 → 3 → 10. Больше примеров ближе к человеческой разметке, но разрыв остаётся. - Список триггеров: оставь только нужные типы (например, B04 и B02). Меньше типов означает меньше перебора. - Шкала уверенности 1–3: фильтруй только «3», чтобы убрать сомнительные. - Правило «пустой список»: оно нужно, чтобы модель не выдумывала триггер в чистом тексте. В корпусе 4 статьи из 50 были чистыми.
Шаблон промпта
<Задача>
Прочитай {тип_текста}. Сначала определи, какие из перечисленных
типов давления на читателя в нём есть. Затем для каждого найденного
типа выпиши дословные цитаты, которые его запускают.
Задача>
<Триггеры>
{ID} {название} — {определение в одну строку}
{ID} {название} — {определение в одну строку}
...
Триггеры>
<Правила>
- Один триггер может состоять из нескольких цитат в разных местах
текста — объединяй их в одну группу.
- Цитата — дословная, из текста.
- Если триггеров нет, верни пустой список.
Правила>
<Примеры>
{3–10 размеченных текстов: текст → правильный JSON}
Примеры>
<Формат>
JSON: [{"тип": "ID", "цитаты": ["..."], "уверенность": 1-3}]
Формат>
<Текст>
{текст}
Текст>
Подставляйте:
- {тип_текста} — статья, пресс-релиз, пост;
- {ID} {название} {определение} — ваши категории;
- {примеры} — тексты из вашей практики с вашей разметкой. Блок можно убрать, тогда это нулевой режим.
Это реконструкция по описанию системного промпта в статье (два задания, определение в одну строку, правило для многофрагментных триггеров, формат вывода). Дословного текста промпта авторы в доступной части не приводят. Определения девяти типов выше — мои формулировки по описанию категорий.
🚀 Быстрый старт — вставь в чат:
Вот шаблон для поиска приёмов давления на читателя в тексте. Адаптируй под мою задачу: [твоя задача].
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит, какие приёмы давления важны именно тебе, что за текст ты проверяешь и есть ли у тебя размеченные примеры. Это нужно потому, что метод держится на коротких чётких определениях категорий и на примерах. Из твоих ответов модель соберёт их по образцу шаблона.
Ограничения
⚠️ Перебор срабатываний: модели завышают число триггеров там, где есть простые внешние признаки (негатив, авторитет, деклинизм). Большинство отмеченных ими фрагментов манипуляцией не является.
⚠️ Точное место найти трудно: при поиске конкретных фрагментов модели достигают меньше половины человеческого согласия. Лучшая модель получила 0,22 против 0,50 между двумя людьми. Использовать вывод как финальный вердикт нельзя.
⚠️ Примеры помогают, но не лечат: 3 и 10 размеченных статей сокращают разрыв с людьми, но не закрывают его.
⚠️ Потолок задачи низкий: даже люди согласны между собой умеренно (около 0,5). Задача по природе спорная, а «правильный ответ» зависит от аннотатора.
⚠️ Узкая выборка: 50 английских новостных статей про COVID, климат, миграцию и Украину, два аннотатора. Перенос на русские тексты, соцсети и рекламу авторы не проверяли. В доступной части статьи нет полных таблиц по моделям и по числу примеров, так что оценки опираются на аннотацию и введение.
Как исследовали
Команда из Гентского университета взяла 50 английских статей из корпуса SemEval-2023 (в среднем около 750 слов) и составила схему из девяти когнитивных искажений. Их отобрали по двум критериям: искажение должно оставлять след в тексте, и разметчики должны отличать его от соседних. Два обученных аннотатора (психолог и лингвист) размечали статьи независимо и в два прохода: сначала «есть ли триггер», потом «какой минимальный фрагмент». Третий человек свёл расхождения в эталон. Получилось 592 фрагмента и 398 триггеров. Больше трети триггеров состоят из нескольких кусков (например, повтор одного тезиса).
Затем шесть топовых моделей прогнали с одним и тем же системным промптом: без примеров, с 3 и с 10 размеченными статьями (три случайных набора примеров, результат усреднён). Модели сравнивали с людьми по той же метрике. Для этого одного аннотатора оценивали по разметке другого.
Сюрприз был в характере ошибок. Модели почти дотягивают до людей в вопросе «какие триггеры есть», но заметно отстают, когда нужно указать место. Они завышают те типы, у которых самые заметные внешние признаки. Отмеченные ими «не-триггеры» содержат признак этого типа намного чаще случайного текста. То есть модель ловит маркер, а не механизм.
Практический вывод: доверять модели можно как детектору «стоит посмотреть», но не как судье.
Адаптации и экстраполяции
🔧 Техника: добавить условия срабатывания → меньше перебора (не проверялось на LLM)
В кодбуке (инструкции для людей-аннотаторов) у каждого типа есть чёткое условие: например, «авторитет» засчитывается, только если статус источника заменяет доказательство. Там же явно прописаны пары путаницы: толпа и авторитет, деклинизм и ретроспективная ошибка. Авторы тестировали на моделях одну строку определения. Можно попробовать усилить её так:
B04 Авторитет — вес утверждению придаёт статус источника.
Засчитывай, только если в статье нет данных, подтверждающих это
утверждение. Не путай с B03: B03 — «многие считают», B04 — «конкретный
человек/организация с регалиями».
Стоит проверить на 10–20 своих текстах, снизится ли перебор.
🔧 Техника: минимальный фрагмент → точнее цитаты
В правилах разметки у людей стояло «минимальный фрагмент»: самая короткая цитата, без которой триггер исчезает. Добавь в <Правила>:
«Цитата — самый короткий кусок, удаление которого уберёт приём. Не весь абзац».
Экстраполяция: второй проход как «адвокат защиты» (моя идея, в статье не проверялась)
Раз модель перестраивается, после первого прохода запусти отдельную проверку:
Вот статья и список найденных «триггеров». Для каждой цитаты проверь:
подтверждено ли это утверждение данными, источником или аргументом
где-либо в тексте? Если да — верни «снять». Если нет — «оставить».
Приведи место в тексте, на которое опираешься.
[вставить статью и JSON из первого прохода]
Это снимает часть ложных срабатываний, но результат всё равно нужно просмотреть самому.
Ресурсы
- Статья: BAIT: Can LLMs Find What Biases a Reader? A Benchmark for Cognitive Bias Triggers in News
- Авторы: Yousra Fettach, Tijl De Bie, Ghent University, Бельгия
- Код, схема, кодбук и разметка: https://github.com/aida-ugent/BAIT
- Исходный корпус: SemEval-2023 Task 3 (Piskorski et al.)
