Немецкий бундестаг: Кто наши представители?

Анализ бундестага 19-го созыва с использованием тематического моделирования и обучения без учителя

Прозрачность политических процессов и органов является ключевой необходимостью в демократических системах. Центральным органом немецкой политики является Бундестаг, в котором проживает более 700 депутатов парламента от шести различных партий. Бундестаг принимает законы, контролирует федеральный бюджет и избирает Федерального канцлера. Более того, пленарные заседания представляют собой центральную панель для обмена политическими позициями и мнениями в политической системе Германии.

Но кто эти более 700 человек, которые составляют парламент и представляют немецкий народ? В то время как федеральные министры и несколько избранных политиков регулярно появляются в средствах массовой информации и прессе, большинство парламентариев остается практически анонимным для среднего гражданина.

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

Для обеспечения прозрачности обсуждения в парламенте транслируются по телевидению, а их стенограммы публикуются после каждого обсуждения. Однако лишь у меньшинства избирателей есть время и ресурсы, чтобы внимательно следить за парламентскими дебатами, и это во многом зависит от освещения в СМИ. В результате почти никто из избирателей не знает, над чем работает их местный представитель, который фактически был отправлен в парламент, чтобы представлять их, и тем более о чем он или она говорит.

Этот проект по науке о данных направлен на дальнейшее повышение прозрачности парламента Германии и его членов за счет применения методов машинного обучения и обработки естественного языка (НЛП). Окончательные результаты проекта визуализируются в виде интерактивной панели на Tableau Public:

Панель управления на Tableau Public (на английском языке)
(оптимизировано для настольного компьютера, ссылка работает только в браузере настольного компьютера)

Панель управления на Tableau Public (на немецком языке)
(оптимизировано для настольных компьютеров, и ссылка работает только в браузере настольных компьютеров)

Панель управления общедоступна и предоставляет следующие варианты использования:

  • Понять политическую экспертизу каждого члена парламента
  • Узнайте, какие темы затрагиваются партиями / политиками и как они развиваются с течением времени
  • Определите членов парламента от партий, которые занимаются схожим кругом тем.
  • Прочитать пленарные выступления отдельных депутатов парламента

Проектный подход

В этом проекте пленарные дебаты Бундестага анализируются на языке Python, чтобы сделать выводы об отдельных членах парламента. Для этого пленарные выступления исследуются с использованием техники НЛП, называемой тематическим моделированием, для определения основных тем в выступлениях. Используя понимание темы, политики затем группируются по политическим полям, применяя неконтролируемую кластеризацию. Наконец, разработана эвристика для выявления групп сверстников со схожими тематическими профилями.

Агрегация данных

Источником данных для этого проекта являются 109 стенограмм пленарных заседаний Бундестага 19-го созыва с его инаугурационного заседания 24 октября 2017 года до последнего заседания перед летними каникулами в 2019 году 24 июля 2019 года.

Парламент Германии опубликовал все стенограммы пленарных дискуссий с момента основания Федеративной Республики Германии в 1949 году в виде файлов XML на своем веб-сайте. Однако только для 19-го Бундестага в XML-стенограммах есть подробные теги, позволяющие четко разделить выступления и соответствующих выступающих.

Стенограммы собираются и анализируются с использованием библиотек Python Selenium и Beautiful Soup для извлечения такой информации, как дата, имя докладчика, вечеринка и соответствующая речь. Затем данные очищаются и обогащаются дополнительной информацией, чтобы прийти к окончательному набору данных, состоящему из более чем 10 000 речей, содержащих примерно 6,5 млн слов, от 717 политиков.

Обратите внимание, что 19-й Бундестаг официально насчитывает 709 членов. Расхождение можно объяснить следующими отклонениями:

1. Федеральные министры из действующего кабинета, которые не занимают официального места в парламенте, включены в набор данных.

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

3. Для нескольких членов парламента выступления на соответствующий период времени не определены.

Концепция тематического моделирования

Факторизация неотрицательной матрицы (NMF) - это алгоритм линейной алгебры, который применяется в NLP для извлечения основных тем из набора документов.

Базовый план для тематической модели от NMF строит матрицу термин-документ A. В A каждая строка описывает частоту использования терминов в документе, т. Е. Каждая строка представляет один документ и в каждом столбце один термин (документ x термин). В НЛП документ - это терминология для текста и термин в слово.

Алгоритм NMF разлагает матрицу терминов документа A на две матрицы только с неотрицательными значениями таким образом, чтобы произведение двух воспроизводило исходную матрицу с наименьшей ошибкой. Две результирующие матрицы - это матрица документ-тема H (документ x тема) и матрица тема-термин W (тема x термин).

A (документ x термин) ≈ H (документ x тема) x W (тема x термин)

Интуитивно матрица тема-документ H описывает темы в документе, а матрица темы-термины W описывает, какие слова часто используются для конкретной темы.

Предварительная обработка текста

Для получения значимых результатов с тематическим моделированием NMF требуется несколько этапов предварительной обработки, которые выполняются, как показано ниже:

  • Речи очищаются путем удаления знаков препинания, преобразования всех слов в нижний регистр и исключения всех чисел.
  • Стоп-слова (наиболее распространенные слова) удаляются с помощью списка стоп-слов для немецкого языка из библиотеки Python NLTK. Кроме того, список вручную дополняется часто встречающимися словами с низким контекстным значением.
  • Стемминг (сокращение слов до словарной базы) выполняется с применением немецкого модуля от NLTK Snowball Stemmer.

Затем выступления парламента преобразуются в матрицу терминов документа с помощью TF-IDF Vectorizer из sklearn. В отличие от простого метода набора слов, который просто подсчитывает количество слов в документе, TF-IDF (частота термина - обратная частота документа) снижает влияние слов, которые часто встречаются во всех документах. В результате слова с высокой информативностью также имеют относительно больший вес в документе.

Определение темы

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

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

Например, тема, для которой наиболее важны слова «банк», «кредит», «страхование вкладов», « банковский союз »,« ЕЦБ »,« налогоплательщик »,« риск », « финансовый кризис » , и т. д. (на немецком языке это все отдельные слова) определяется как «финансовая система».

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

После определения и наименования каждой темы матрица «документ-тема» указывает, о каких темах идет речь. Каждое выступление представляет собой комбинацию всех 35 тем, некоторые из которых имеют более высокий вес, чем другие.

Агрегирование речи

Чтобы получить представление не только для выступлений, но и для отдельных членов парламента, информация о теме (вес каждой темы в речи) суммируется для каждого политика. Выступления члена парламента объединяются путем масштабирования суммы весов тем в речи до 100% и взятия среднего значения тем по всем выступлениям.

Кластерный анализ

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

Таким образом, каждый член парламента отнесен к одному конкретному политическому полю на основе тем, которые затрагиваются в его или ее выступлениях. Для этого применяется кластеризация k-средних (обучение без учителя) с использованием модуля KMeans от sklearn.

Интуитивно k-means разделяет набор данных и назначает точки данных с похожими функциями в одну группу (кластер). Сходство признаков оценивается на основе метрики расстояния (в данном случае евклидова расстояния). Алгоритм определяет кластеры таким образом, чтобы минимизировать расстояния между точками данных до соответствующих центроидов кластера (среднее значение функций из всех точек данных в одном кластере).

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

Например, кластер с наибольшей долей в «f финансовой системе» (11%), «федеральном бюджете» (10%), «экономике »(10%) определяется как« экономическая / финансовая политика ».

Как и в тематической модели, количество кластеров в k-средних необходимо выбирать вручную и выбирать вручную путем изучения результатов для разного количества кластеров. В результате получается 15 различных кластеров политического поля.

Чтобы визуализировать результаты кластерного анализа, 35-мерное пространство на последнем этапе сокращается до двухмерного пространства путем применения уменьшения размерности t-SNE с использованием модуля TSNE от sklearn.

Анализ группы сверстников

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

Визуализация и проверка

Наконец, результаты анализа визуализируются на информационной панели Tableau, которую можно интерактивно использовать для лучшего понимания Бундестага и его политиков.

В то же время дашборд дает возможность проверить результаты анализа:

  • Темы с наибольшей долей партий кажутся разумными, например «окружающая среда / энергия» для BÜNDNIS 90 / DIE GRÜNEN, «work» для DIE LINKE и « цифровизация »для FDP
  • Распределение федеральных министров и статс-секретарей по кластерам в значительной степени согласуется с соответствующими курортами.
  • Группы сверстников кажутся разумными, например от Федерального канцлера Ангелы Меркель в группу сверстников входят Хайко Маас, Антон Хофрейтер, Кристиан Линднер, Сара Вагенкнехт и и Александр Гауланд

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

Репозиторий проекта на GitHub можно найти здесь.

Отказ от ответственности: этот документ отражает только личное мнение автора и не отражает работу или взгляды работодателя автора.