Наблюдая за первыми и вторыми дебатами, я был очарован тем, как каждый выступающий использует определенные слова или ведет себя определенным образом на протяжении всего выступления. Как и многие другие, я не политик. Но я знаю, что могу понять характер или личность людей, анализируя их разговоры, видя, как часто они используют определенные слова и как часто они склонны перебивать или говорить в целом. Поэтому я пошел в Интернет, нашел сценарии обоих дебатов и начал изучать. Сначала я просто проводил мозговой штурм и обдумывал все, что приходило мне в голову, но я обнаружил, что это может быть прекрасной возможностью узнать больше о некоторых известных пакетах для обработки естественного языка и написать статью, чтобы подытожить свое путешествие. Здесь я в основном хочу просмотреть то, что я визуализировал, и рассказать вам о персонажах, но если вы хотите увидеть код и пакеты, которые я использовал, вы можете просто посетить мою записную книжку Kaggle или Colab.

Сюжетная линия

В этой статье мы начнем с анализа абзацев, затем перейдем к предложениям и, наконец, погрузимся в слова. Надеюсь, набор данных готов для использования в Kaggle, и вы можете использовать различные типы расшифровки по своему усмотрению. В файле CSV, который я использовал для этого анализа, каждая строка указана для одного говорящего и предложений, которые они использовали, а также временной метки их произнесения. После просмотра наборов данных и заполнения нулевых значений и удаления или восстановления некоторых несоответствий мы получаем что-то вроде того, что у нас есть ниже. Используя столбец минут, мы можем вычислить другой столбец, указанный в секундах. Поскольку каждая дискуссия состоит из двух частей, каждая из которых начинается с 00:00, этот столбец может быть очень полезен для простого добавления временных значений первой части ко второй.

Уровень абзаца

Жар дискуссии!

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

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

Вообще говоря, в обоих дебатах есть три части, где кандидаты начинают стрелять друг в друга: одна после представления и разогрева, другая в середине и одна примерно за 15 минут до конца, где они пытаются доказать свою точку зрения, разговаривая. быстрее и больше, чтобы прикончить сильно!

Также после каждого бурного обсуждения мы видим, что они остывают и нормально разговаривают минут 20.

Уровень предложения

Кто доминирует в обсуждении?

Теперь давайте воспользуемся токенизатором предложений и проанализируем предложения, используемые в каждом споре. Я использовал NLTK sent_detector для этой задачи и добавил еще один столбец для подсчета количества предложений каждый раз, когда они начинают говорить.

По количеству предложений мы видим, что в обоих дебатах больше говорит Трамп (точнее, использует больше предложений) и доминирует более чем в 40% беседы.

анализируя этот сюжет, я подумал, что количество предложений не отражает всех характеристик спорщиков. Если мы хотим увидеть, действительно ли человек перебивает нас, мы должны подсчитать количество предложений, которые он использует каждый раз, когда начинает говорить. Итак, ниже я построил график, который показывает, что в первых дебатах Трамп и Байден начали говорить и произнесли только одно предложение примерно 190 и 150 раз. Это показывает, что в течение 40 раз Трамп либо перебивал, либо просто коротко отвечал посреднику (что, как мне кажется, не так, учитывая, что Трамп проявляет наибольшую склонность говорить, используя больше предложений). Но мы можно увидеть значительное улучшение во вторых участниках дебатов, поскольку оба участника уменьшили свое число на 100, достигнув примерно 70 и 50 раз. (Хотя это может быть и немного из-за продолжительности дискуссий, так как первые дебаты примерно на 20 минут короче, чем первые.)

Уровень предложения

Самые распространенные слова

Чтобы изучить лексикон, используемый кандидатами, мы просто берем весь текст и пытаемся максимально очистить ненужные слова и знаки препинания, такие как «is», «in», «at» и т. д., чтобы добраться до сути того, о чем они говорят. пытаешься сказать. Как вы могли заметить, я не удалил все стоп-слова, потому что хотел посмотреть, есть ли местоимение, которое один человек использует чаще, чем другой (например, «я»).

Если вы внимательно посмотрите на древовидную карту выше, вы заметите, что каждый человек по-разному относится к другому. Трамп чаще обращается к своему оппоненту напрямую, в то время как Байден склонен больше разговаривать с посредником и использовать местоимение «он» для обращения к Трампу. Из того, что я вижу, они в основном используют одни и те же слова, но по-разному. Например, из всех 60 самых популярных слов, которые использует Трамп, около 10 процентов — это местоимение «я» (почти в два раза больше, чем у Байдена), еще 10 процентов — это местоимение «ты», в то время как Байден склонен использовать слова более широко, чем Трампа, потому что у него нет слов, которые преобладают более чем в 7 процентах его часто используемых слов.

☁️Облако слов

Имея все эти слова, мы можем использовать наиболее распространенные слова, используемые каждым кандидатом, чтобы составить облако слов для каждого. Для облака слов на картинке (или маске) ​​у вас должны быть две вещи: 1. Слова 2. Маска (или контурная картинка. Только помните, что у картинки должен быть прозрачный фон.)

👈 Полярность и субъективность с TextBlob👉

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

Но поскольку полярность — это значение, а не конкретная метка, я решил разделить спектр на 5 разных групп и дать каждой метку:

0: отрицательный, 1: несколько отрицательный, 2: нейтральный, 3: скорее положительный, 4: положительный

Субъективность – это коэффициент от 0 до 1, показывающий, насколько субъективно слово или фраза. (Довольно очевидно! Я знаю.)

Хотя TextBlob — одна из самых известных библиотек для обработки текста, я обычно не использую ее слишком часто и не доверяю ей так же сильно, как доверяю моделям глубокого обучения в анализе настроений. Это потому, что он использует наивный подход к анализу предложений, и если не в очень очевидном случае, он не всегда может получить правильный ответ. Итак, здесь я буду отображать только субъективность и полярность разговоров участников дебатов и не буду вдаваться в подробности того, что мы видим на каждом графике, я оставлю место для нашего следующего шага, который представляет собой анализ настроений с помощью 🤗 Transformers.

Перенос обучения с🤗 Трансформерами

С Transformers у нас есть множество инструментов и моделей, позволяющих выполнять любую задачу, которую мы хотим, всего несколькими строками кода. В этой статье я быстро представлю конвейеры для тех, кто просто хочет быстрого анализа, но для классификации я буду использовать модель RoBERTa, обученную на наборе данных с 5 различными метками.

Трубопроводы:

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

Вы можете задаться вопросом, выполняет ли эта функция. ну, модель по умолчанию, которая используется конвейером трансформаторов для анализа тональности, — это предварительно обученная модель «дистилберт-база-без кейса», которая была обучена на sst2 (набор данных обзоров фильмов). Таким образом, вы фактически используете трансферное обучение и прогнозируете новые наборы данных на основе весов, которые были обучены другим человеком или организацией.

Вы можете увидеть живую демонстрацию классификации настроений здесь. Модели очень разнообразны, и вы можете как использовать их здесь, так и посмотреть живую демонстрацию каждой из них на веб-сайте Huggingface.

Недостатки: Все эти модели довольно полезны и хороши, но помните, что все модели не так точны или хороши, как их собратья! Например, если вы выберете значение по умолчанию (модель Distillbert, которая не является самой точной или лучшей среди моделей трансформаторов).

Конвейерные модели обучались на определенном наборе данных с заданными метками, поэтому вы не сможете получить ничего отличного от того, что они вам могут предложить. Как в этом примере, если мы хотим иметь 5 меток, но поскольку набор данных sst2 был основан на наборе данных с 3 разными метками: отрицательный, нейтральный и положительный, мы не можем получить то, что хотим. И хотя есть несколько недостатков, когда вы классифицируете свой текст с помощью distillbert, это все же отличный способ (я думаю, лучше, чем полярность) для анализа настроений.

РОБЕРТа

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

Лучшая модель, которую мы можем получить, — это модель Large Roberta, которая превосходит Large Bert, XLNet и DistillBert. (На самом деле я экспериментировал со всеми этими моделями, чтобы увидеть, действительно ли это лучшая модель, и оказалось, что она может дать нам отличные результаты даже с несколькими числами эпох)

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

Как видите, наша модель лучше определяет настроения и может дать нам более конкретные результаты. Интересно, что мы можем видеть, как Трамп опережает Байдена, когда дело доходит до выражения эмоций в его предложениях. Хотя один раз с небольшим отрывом Байден использует больше «несколько положительных» предложений в первых дебатах. Кроме того, сравнивая дебаты Etwo, мы видим, что в первых дебатах не только более нейтральные предложения, но и предложения с более негативным настроением. Таким образом, я думаю, что в целом оба кандидата сделали все возможное во время вторых дебатов, чтобы избежать враждебности и перерывов в дебатах.

Сноска

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