Введение
Техники убеждения позволяют упростить процесс аргументации, например, используя эмоции аудитории или используя логические ошибки для воздействия на нее. В этой статье мы создадим конвейер spaCy с SpanCategorizer
для обнаружения и классификации интервалов, в которых в тексте используются методы убеждения.
Наши обучающие данные определяют 20 категорий. Спаны могут перекрываться, то есть слово может быть частью разных спанов.
Вот частичный пример:
Мы будем обучать разные модели с набором данных, использовать разные конфигурации spaCy и сравнивать результаты.
Оглавление:
- Техники убеждения
- Набор данных
- Создание корпуса
- Обучение модели
- Предлагаемые интервалы
- Полученные результаты
- Заключение
Конфигурация SpaCy и код Python для создания корпуса,используемого в этой статье, доступны на github.
Ищете «HOWTO» по использованию spaCy для категоризации диапазонов?
Если вы ищете пошаговое руководство по использованию spaCy для категоризации спанов, ознакомьтесь с моим Обнаружение токсичных спанов с помощью spaCy. Там вы найдете соответствующую конфигурацию проекта spaCy, конфигурацию обучения, дополнительный код Python и интерпретацию показателей оценки. Токсичность — это только одна категория, но расширение подхода на несколько категорий и перекрывающихся интервалов технически тривиально. Как это делается, вы можете найти в коде, сопровождающем данную статью на github.
Техники убеждения
Необоснованные рассуждения носят разные названия. Философы говорят об ошибках, психологи сосредотачиваются на манипулировании, политологи говорят о пропаганде, а лингвисты, интересующиеся почтенной традицией риторики, обращаются к убеждение. Каждая область по-своему сосредоточена на том, каково релевантное влияние необоснованных рассуждений.
Для обнаружения и объяснения необоснованных рассуждений могут потребоваться эпистемология, логика, оценка намерений, психологические предубеждения, знание ранее существовавшего повествования и даже физического контекста. Поскольку все это не соответствует подходящему описанию проблемы машинного обучения, мы превращаем необоснованные рассуждения в проблему классификации: при заданном наборе категорий и наборе данных текстов с отмеченными интервалами, принадлежащими категориям, мы обучаем модель обнаруживать такие интервалы и классифицировать их. Мы называем эти категории методами убеждения.
В разных исследованиях были предложены разные наборы методов убеждения, например. начиная от единой классификации всего текста как пропаганды и заканчивая выделением 69 различных приемов». Здесь мы принимаем один набор из двадцати техник, понимая, что возможен другой набор.
Давайте посмотрим на описание некоторых техник, описанных в [1]:
Нагруженный язык: использование определенных слов и фраз с сильным эмоциональным подтекстом (как положительным, так и отрицательным) для воздействия на аудиторию.
Лозунги: короткая и эффектная фраза, которая может включать ярлыки и стереотипы. Лозунги, как правило, действуют как эмоциональные призывы.
Причинно-упрощенное упрощение: предположение об одной причине или причине, когда на самом деле существует несколько причин проблемы. Это включает в себя перекладывание вины на одного человека или группу людей без изучения сложности вопроса.
Представление нерелевантных данных (отвлекающий маневр). Представление нерелевантных материалов к обсуждаемому вопросу, чтобы отвлечь внимание всех от высказанных замечаний.
Эти приемы описаны в контексте подзадачи 2 задания SemEval-2021 Задачи 6: «Выявление приемов убеждения в текстах и изображениях»[1].
Настоящая статья посвящена реализации системы обнаружения и классификации отрезков с использованием spaCy SpanCategorizer
и уделит лишь поверхностное внимание значению методов и используемому набору данных. Для получения подробной информации о наборе данных и о значении различных методов, по которым мы классифицируем интервалы, ознакомьтесь с упомянутой статьей.
Набор данных
Используемый нами набор данных создан для задачи 6 SemEval-2021 Выявление техник убеждения в текстах и изображениях. Его можно найти на github [3].
Набор данных состоит из 951 «мема», коротких текстов, взятых из постов в социальных сетях, в которых команда аннотаторов идентифицировала 2083 спэна с методами убеждения. Тексты накладываются на изображение — поэтому они содержат многочисленные разрывы строк — и многие из них написаны прописными буквами. Мы игнорируем изображения.
Вот пример:
Наших стариков призвали на войну, чтобы спасти жизни.\nНас призвали сесть на диван, чтобы спасти их жизни.\nМы можем это сделать.\n
Убеждение охватывает в этом тексте:
- Преувеличение/преуменьшение: "Наши старики были призваны на войну, чтобы спасать жизни.\nНас призывают сесть на диван, чтобы спасти их жизни".
- Призыв к страху/предубеждению: «война»
- Апелляция к страху/предубеждению: «сядь на диван, чтобы спасти их».
- Лозунги: «Мы можем это сделать».
Ниже представлен обзор методов убеждения, выделенных в наборе данных, для каждого из которых указано количество вхождений в наборе данных и среднее количество токенов в диапазоне. Для определения количества слов в спане использовался стандартный токенизатор spaCy. Обратите внимание, что при подсчете учитываются маркеры вставки и пробела.
Всего имеется 2083 интервала.
Глядя на таблицу, вы видите:
- Первые две категории составляют более половины набора данных и в среднем менее трех слов, что намного короче, чем почти все остальные категории.
- Почти две трети категорий имеют в среднем десять или более токенов в промежутках, в которых они встречаются.
В целом:
- Набор данных довольно маленький
- Распределение по классам неравномерно. Большинство классов в наборе данных имеют менее 50 образцов, что мало. Только Загруженный язык, Обращение/маркировка и Smears имеют значительное количество экземпляров.
Создание корпуса
Определение интервалов похоже на то, как если бы вы взяли цветной маркер и выделили фрагмент исходного текста. Поскольку нам нужны точные фрагменты, мы не будем изменять исходный текст, предварительно обрабатывая его каким-либо образом.
Наш набор данных уже разделен на части train
, dev
и test
. Мы конвертируем каждый из этих файлов отдельно в двоичный файл .spacy
, который используется в качестве входных данных для обучения.
Обучение модели
Поскольку остается открытым вопрос, какая базовая модель лучше всего соответствует нашим требованиям, мы попробуем маленькую, большую и трансформерную модели и сравним результаты.
Как только наш корпус определен, мы можем начать обучение с помощью команды spacy train
. Для удобочитаемости и повторяемости мы определяем это в проекте spaCy. Вы можете найти пример обычного конвейера, состоящего из шагов corpus, train и evaluate, в project.yml моей статьи «Обнаружение токсичных спанов с помощью Spacy».
Такой конвейер упрощает тонкую настройку обучения одной модели. Здесь мы не будем настраивать, а вместо этого воспользуемся тремя базовыми моделями и посмотрим, как они работают. Для определения их конфигурации мы используем диалог быстрого старта в документации spaCy.
Выбираем компонент spancat
и генерируем три конфигурации:
- ЦП + эффективность (маленькая)
- ЦП + точность (большая)
- GPU (не различает эффективность и точность) (преобразователь)
В результате появятся модели маленькие, большие и трансформеры. Модель трансформатора spaCy по умолчанию — RoBERTa-base
.
Используя значения конфигурации по умолчанию, мы обучим каждую из этих моделей и сравним результаты.
Предлагаемые интервалы
Для обнаружения спанов spaCy сначала создает набор возможных спанов для документа. Это делает компонент под названием Suggester.
Промежутки могут быть обнаружены только в том случае, если они сначала сгенерированы или «предложены».
SpaCy 3.3 поставляется с двумя реализациями Suggesters, обе основаны на генерации n-грамм, то есть промежутков из n
токенов. ngram_suggester
настроен со списком длин n-грамм, например. [1, 2, 3, 4]
. ngram_range_suggester
настроен с минимальным и максимальным диапазоном длин, например. min_size=1
, max_size=4
.
Следствие: промежутки, превышающие максимальную длину предполагаемых n-грамм, не будут обнаружены.
Именованные сущности обычно состоят всего из нескольких токенов. При длине токена 5 именованный объект «Берлин-Бранденбургский аэропорт Вилли Брандт» является относительно длинным. Однако в нашем текущем наборе данных мы имеем дело с интервалами, которые могут даже варьироваться между предложениями. Вот пример фрагмента из нашего набора данных категории Causal Simplification
: «Детский Трамп не встретится с Пелоси по поводу коронавируса\nПотому что она ему не нравится». SpaCy разбивает этот фрагмент на 15 токенов, включая один для новой строки, где "won't" разбивается на ["wo", "n't"].
Поскольку обучение, оценка и предсказание любого диапазона могут быть успешными только в том случае, если он не содержит больше токенов, чем сгенерировано Suggester, мы должны заглянуть в наш набор данных и посмотреть, сколько выборок было отрезано.
В приведенной ниже таблице мы принимаем 8 граммов, 16 граммов и 32 грамма как максимум для ngram-range-suggester
.
Мы применяем некоторую разметку на основе произвольных ограничений:
- ‹ 10 %: удовлетворительно (выделено серым цветом)
- › 10% & ‹ 30%: причина для беспокойства (черный)
- › 30% : плохо (красный)
Что мы видим:
- Загруженный язык и Обозначение имени/маркировка удовлетворяют всем выбранным максимумам n-грамм
- Для максимум 8 граммов только 6 техник имеют коэффициент сокращения меньше 30%.
- Для максимум 16 граммов только 10 техник имеют снижение скорости меньше, чем 30%.
- Для максимального веса 32 грамма есть еще 4 техники с коэффициентом сокращения от 10% до 30%.
Мы будем тренироваться с суггестерами с максимальным весом 16 грамм и 32 грамм. Мы будем игнорировать суггестор с максимальным весом 8 граммов, так как это выглядит бесперспективно, учитывая, что этот суггелер не может удовлетворительно охватить так много техник.
Примечание. В настоящее время экспериментально доступно больше функций подсказки, например.
subtree_suggester
, (существительное)chunk_suggester
иsentence_suggester
.
Полученные результаты
Глядя на баллы F1 для подсказчика n-грамм, установленного на максимум 16 и 32 токена, мы находим:
Как и ожидалось, модель большой (lg) работает лучше, чем модель small (sm), а модель transformer (trf) работает лучше, чем модель transformer (trf). крупная модель. Удивительно, однако, что маленькие и большие модели работают хуже с 32 граммами, чем с 16 граммами. Также мы обнаружили, что модель-трансформер работает значительно лучше с 32 граммами, чем с 16 граммами.
В таблице ниже приведены данные для оценки F1, использованной на приведенной выше диаграмме, а также показатели точности и полноты. Значения, которые уменьшились для 32-граммового подсказчика, отмечены красным.
Мы видим, что для маленьких и больших моделей полнота уменьшается для 32-граммового подсказчика, но точность увеличивается.
Это означает, что маленькие и большие модели помечают слишком много токенов, которые не должны быть помечены для 32-граммового суггестра, хотя они охватывают больше тех, которые должны быть помечены. Давайте назовем это чрезмерно оптимистичной маркировкой. Модели-трансформеры этим дефектом не страдают.
Было бы интересно определить, почему это происходит, но для этого потребуются дополнительные исследования.
Давайте посмотрим на баллы F1 для каждой отдельной техники убеждения:
Мы видим:
- Обращение/маркировка и Загруженный язык прогнозируются лучше всего. Это понятно, учитывая, что для этих категорий у нас самое большое количество выборок, в то время как они также имеют в среднем наименьшее количество токенов на диапазон.
- Прогноз для 32-граммовой модели для маленьких и больших моделей становится хуже или остается на одном уровне для этих двух методов по сравнению с 16-граммовой.
- Примечательно, что маленькая модель улавливает две техники с 16 граммами, чего нет у других, но не улавливает их с 32 граммами.
- Модели-трансформеры улавливают дополнительные приемы в 32-граммовых суггестрах, а другие модели — нет.
- Модели-трансформеры лучше справляются даже с короткими интервалами обзыва/маркировки и загруженного языка при использовании 32-граммового подсказчика, чем при использовании 16-граммового подсказчика.
Повторяющиеся прогнозы
Созданные модели должны уметь прогнозировать интервалы для разных классов, которые перекрывают друг друга. Однако что происходит — и чего не должно происходить — так это то, что существуют предсказания интервалов с одной и той же меткой, которые перекрывают друг друга. На следующем изображении показан прогноз для модели на основе трансформатора весом 32 грамма.
Я считаю это ошибкой SpanCategorizer
.
Сравнение с другими системами обнаружения пролета
Показатели — это просто числа, если только они не служат для сравнения различных систем, их производящих. Поскольку мы эффективно реализовали подзадачу 2 задачи 6 SemEval 2021, мы можем сравнить наш результат с другими системами в таблице лидеров для этой задачи. SpaCy использует метрики на основе токенов, но упомянутый конкурс использует метрики на основе символов.
Использование наилучшей модели для получения прогноза для набора тестовых данных и оценка результата с помощью метода подсчета очков, предоставленного для конкурса, приводит к символьному F1, равному 0,449. Это поставило бы его на второе место в рейтинге Задачи 6, опубликованном в [1]!
Это побуждает к дальнейшим исследованиям, сравнивающим архитектуру модели spaCy-with-suggester с моделями, участвующими в Задаче 6.
Заключение
Мы видели, что SpanCategorizer
в spaCy можно использовать для обнаружения промежутков и их классификации. Поскольку набор данных, использованный в настоящей статье, содержит промежутки различной длины, нам необходимо было принять во внимание функциональность и конфигурацию spaCy Suggester
, которая является функцией, генерирующей промежутки. Для этого набора данных модели трансформаторов оказались значительно более точными, чем малые и большие модели spaCy. Полученная модель хорошо зарекомендовала себя среди альтернативных систем для обнаружения и классификации пролетов.
Рекомендации
[1] «SemEval-2021 Задача 6: Выявление приемов убеждения в текстах и изображениях» (2021) Д. Димитров и др.
[2] “WVOQ at SemEval-2021 Task 6: BART for Span Detection and
Classification” (2021) Cees Roele
[3] «Данные для SemEval-2021 Task 6: Обнаружение приемов убеждения в текстах и изображениях», github
[4] «Мелкий анализ пропаганды в новостных статьях» (2019) Г. Да Сан Мартино и др.