Это название может быть началом очень плохой шутки. Это также может быть очень хорошим вопросом для запуска проекта машинного обучения. Поскольку моя работа состоит в том, чтобы быть специалистом по данным, а не комиком, я отвечу на этот вопрос, используя науку о данных.

Предмет интереса
Парламент Нидерландов (более известный как de Tweede Kamer der Staten-Generaal) собирается пару раз в неделю для обсуждения и говорить о многих делах. В состав парламента входят 150 членов, за которых проголосовали народы, и 24 человека в кабинете, избранные от правящих партий. В этом проекте мы рассмотрим как членов палаты, так и членов кабинета.

Данные, используемые для этого проекта, представляют собой набор данных, содержащий все ходы выступлений в парламенте за почти два года. Приглашенные докладчики, такие как члены Европейского парламента или гражданские лица, удаляются из набора данных.

Прежде чем машина начнет обучаться
Прежде чем углубляться в детали того, что конкретно сказали участники, рекомендуется просмотреть данные. Делая это, мы узнаем, с какими данными мы имеем дело, и лучше понимаем, какие модели будут подходящими.

Например, для хороших результатов важно, чтобы количество оборотов речи было одинаковым для каждой стороны.

Самая малословная партия, Forum voor Democratie, говорит более чем в 10 раз меньше, чем самая словесная партия, VVD. Жесткого порога для этого нет. Но если бы, например, самая маленькая группа была в 100 раз меньше самой большой, нам пришлось бы думать о решении, которое гарантирует, что алгоритм не проигнорирует самую маленькую группу.

Задача алгоритма состоит в том, чтобы угадать партию говорящего по словам, сказанным в речевой очереди. Это основано на идее, что разные стороны говорят о разных предметах, используя разные слова. Профиль выступлений каждой из сторон после некоторой предварительной обработки данных выглядит следующим образом.

Эти облака слов показывают, что это будет сложной задачей. Даже после того, как стоп-слова были удалены, многие наиболее часто используемые партии слов остаются похожими. В текстовом обучении, той части машинного обучения, которую мы будем использовать, существует множество методов решения этой проблемы. Сегодня мы будем использовать стемминг, векторизацию и TF-IDF.

Выводы
Когда один политик говорит о большем трате, а другой говорит о большем трате, они говорят об одном и том же. Без какой-либо обработки алгоритм увидит эти слова как два совершенно разных предмета. Мы будем использовать стеммер для унификации различных спряжений глаголов и порядковых размеров существительных. Теперь расходы и расходы считаются одним и тем же словом.

Векторизация
Алгоритму необходимо знать, сколько раз каждое слово используется в ходе разговора. Нам нужно количественно оценить это перед обучением модели. Это делается с помощью векторизатора. Очередь (в этом примере неограниченная) от стороны 50 Plus изменится с «Поддержка от стороны 50Plus» на:

Каждый записанный оборот речи будет зарегистрирован таким образом вместе с партией соответствующего говорящего.

TFIDF
Последняя операция над словами перед обучением модели — это операция термин-частота-обратная частота документа. Короче говоря, это означает, что слова, которые часто используются в целом, будут иметь меньшее влияние на модель, а слова, которые используются исключительно одной стороной, сильно влияют на модель. Таким образом, если все стороны говорят о здравоохранении, упоминание здравоохранения не будет обременять модель. Но если только одна сторона продолжает говорить об обороне, модель будет сильно склоняться к этой стороне, если кто-то упомянет ее снова.

Насколько хорошо машина научилась?
После обучения различных моделей, созданных для классификации, мы получили SGD-классификатор. Этот классификатор мог сказать нам, какая вечеринка была у говорящего в 41% случаев. Это может показаться низкой точностью, но это лучше, чем вы думаете. Выбрать правильную вечеринку из 13 на основе фрагментов, содержащих около 50 слов в каждом, очень сложно. Особенно, если учесть, что большинство этих фрагментов содержат одни и те же слова.

Но мы могли бы сделать лучше. Прямо сейчас модели нужно найти правильную сторону, которая либо правильная, либо неправильная. Но что, если бы модель предсказывала ориентацию партии? Тогда результатом будут два продолжающихся значения между -1 и 1, представляющие место партии в спектре левых/правых и консервативных/прогрессивных.

Основываясь на приведенной выше диаграмме, сделанной правительством, мы количественно оценили стоимость по осям каждой партии. Следующая модель будет обучена следующим значениям.

Результаты новой модели
Теперь две модели линейной регрессии будут предсказывать значение левого/правого и прогрессивного/консервативного для каждого поворота речи. Были зафиксированы следующие результаты:

Здесь мы видим черную точку на каждый оборот речи. Черная точка находится в политическом спектре, где, по мнению модели, ей и место. На каждом графике также видно место партии в политическом спектре. Выделяются следующие вещи:

  • Модель вообще не соответствует действительности.
  • Большинство поворотов речи модель размещает примерно посередине.
  • Есть что-то вроде линии, видимой слева и прогрессивной вправо и консервативной.

Урок, который нужно усвоить, заключается в том, что данные не всегда легко интерпретировать. Чтобы построить пригодную для использования модель с этим набором данных, необходимо выполнить дополнительную обработку. Сейчас все обороты речи используются для обучения модели. Следует использовать модель, основанную только на заранее запланированных поворотах речи и поворотах речи в дебатах. Еще одним улучшением модели может быть удаление всех ходов речи, состоящих только из «Поддержка со стороны X». Но может быть и так, что политики повсюду 😉.