Со времени «L’arrivée d’un train en gare de La Ciotat», первого фильма, когда-либо украсившего Землю в 1895 году, кино- и телеиндустрия, безусловно, эволюционировала и заняла видное место в жизни большинства людей в 21 веке. От напряженных триллеров 1950-х годов известных авторов, таких как Хичкок, до запоминающихся ситкомов 1990-х и 2000-х годов - всегда есть что привлечь внимание любого зрителя, который хочет посвятить какое-то время в своей суматошной жизни тому, чтобы потерять реальность и погрузиться в вымышленный мир на экране. . Телевизионные ситкомы, такие как «Друзья» и «Офис», безусловно, являются приоритетом для значительной части глобального Запада. Будь то комфорт беззаботной жизни, ностальгия или еще один повод для хорошего смеха, эти два шоу никогда не переставали играть важную роль для многих людей разных поколений.

Хотя многие из нас могут согласиться с тем, что мы чаще всего прибегаем к «Друзьям» или «Офису» для порции юмора, количество «шутливых» оскорбительных замечаний в обоих шоу иногда делает их невыносимыми для просмотра. Наша осведомленность, безусловно, может быть частично приписана «пробужденной» тысячелетней культуре, но это не делает шоу менее проблематичным. Смотреть «Друзья» или «Офис» - это личный выбор каждого. Важно понимать, что оба шоу прекрасно представляют время, в которое они вышли в эфир - время до #MeToo и #BlackLivesMatter, время, когда нежелательные комментарии часто вызывали смех. Также важно осознавать последствия, которые могут нести многие проблемные элементы шоу. Поэтому цель этого проекта не в том, чтобы резко критиковать писателей или восхвалять их остроумное чувство юмора. Цель состоит в том, чтобы изучить возможности обработки естественного языка в двух популярных телешоу, о которых у многих зрителей могут быть противоположные мнения.

Если мы объективно выберем наиболее интересных персонажей из «Друзей» и «Офиса», то Чендлер Бинг и Майкл Скотт, безусловно, будут лидерами. Оба они считаются «шутниками» группы, и в каждой сцене есть как минимум одна шутка. Хотя эти два шоу представлены в разных жанрах, ситкоме и мультфильме соответственно, чувство юмора Чендлера и Майкла вполне сравнимо. От тонких саркастических замечаний и «это то, что она сказала» до не столь тонких трансфобных, ксенофобских и гомофобных комментариев, они оба опережают остальных с точки зрения юмора и открытого характера. В этой статье будут сравниваться и противопоставляться Чендлер Бинг и Майкл Скотт с точки зрения их чувства юмора и уровня оперативности с применением различных техник обработки естественного языка.

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

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

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

«Набор данных шуток» состоит из шуток от Reddit и StupidStu ff. Org. Основная задача с этим набором данных заключалась в обеспечении унифицированных меток. Часть набора данных Reddit содержит сообщения Reddit из / r / jokes, и метка дается на основе количества баллов, полученных за каждое сообщение. Таким образом, метки варьируются от 0 до 48 526. Однако часть набора данных StupidStu ff. Org содержит шутки с рейтингом от 0,0 до 5,0. Во-первых, каждая метка в обоих поднаборах данных была сопоставлена ​​с 0, 1, 2, 3, 4 или 5, учитывая диапазон значений меток в обоих. Оба набора данных были объединены и перемешаны, и для простоты все метки были сопоставлены с 0 или 1, где 1 означал «смешно», а 0 - «не смешно».

«Набор данных языка вражды» было немного проще. Набор данных содержит сообщения, которые помечены как 0 для языка вражды, 1 для неприемлемой лексики и 2 ни для того, ни другого. Подобно «Набор данных шуток», для простоты метки в этом случае также были преобразованы в двоичные, где 0 означало «нейтральный», а 1 означало «язык вражды или ненормативная лексика».

Обсуждаемые выше два набора данных первоначально использовались для обучения двух отдельных классификаторов - одного для классификации удачных шуток, а другого для классификации языка вражды / ненормативной лексики. Как мы кратко обсудим в следующих разделах, эта методология оказалась довольно неудачной при подходе к данной проблеме. Следующим шагом было объединение двух наборов данных в один, чтобы научить классификатора распознавать строку как неприемлемую или забавную. Однако это потребовало создания двух отдельных наборов данных. Один содержал только два ярлыка - 0 для «смешно» и 1 для «неприятного». Второй набор данных также включал нейтральные сообщения из «Набор данных о проявлениях ненависти», чтобы увидеть, сколько строк на символ на самом деле не было ни смешным, ни неприятным. Этот набор данных был помечен как 0 для «нейтрального», 1 для «смешного» и 2 для «опасного». Оба этих набора данных были сбалансированы, чтобы включать четное количество выборок на метку, в результате чего получилось 41 тыс. Выборок в двоичном наборе данных и 13 тыс. Выборок в наборе данных с 3 категориями. Метки набора данных с 3 категориями были преобразованы в горячие векторы для целей обучения.

Следующим шагом, который применялся абсолютно ко всем наборам данных, включая фактические сценарии, использованные для тестирования, была очистка текста. Очистка включала удаление всех знаков препинания, специальных символов, а также преобразование всех сокращений в их полную форму. После этого текст был также обработан с помощью SnowballStemmer. Еще одним важным этапом предварительной обработки была токенизация. На рисунке 1 ниже показана средняя длина предложения в комбинированном наборе данных. То же самое было сделано для всех других наборов данных, но это опущено для краткости этой статьи. На Рисунке 1 видно, что большинство предложений имеют длину 200 или меньше. Следовательно, при токенизации все предложения меньшей длины были дополнены, а предложения больше 200 были обрезаны. Предварительно обученные вложения GloVe также использовались для обеспечения более высокой точности обучения, и были построены матрицы встраивания. Выбранные вложения были из токенов 6B и векторов 100d, и их график T-SNE можно найти на рисунке 2.

Подход

После того, как вся предварительная обработка была сделана, следующей частью было собственно обучение. Библиотека Keras была выбрана для решения этой проблемы из-за ее простоты, ясности и адаптируемости к различным задачам. Как упоминалось ранее, в первых экспериментах отдельные модели обучались шуткам и разжиганию ненависти. Подход, выбранный для их обучения, не будет обсуждаться ради краткости этой статьи, но точный код можно найти на моей странице GitHub. Короче говоря, результаты обеих таких моделей не увенчались успехом. Классификатор с 3 категориями и бинарный классификатор были обучены с использованием LSTM из 100 скрытых слоев и значения исключения 0,2, чтобы снизить риск переобучения, за которым следует плотный слой соответствующего измерения. В ходе различных тестов функция активации softmax использовалась для категориального классификатора, а сигмоидальная диаграмма использовалась для двоичного классификатора. В категориальной модели в качестве функции потерь использовалась категориальная кросс-энтропия, а в качестве оптимизатора - Адам. Оптимизатор для бинарной модели остался тем же, но в качестве функции потерь использовалась бинарная кросс-энтропия. Каждая модель была настроена на обучение в течение 100 эпох, с ранней остановкой терпения 3, использовался размер пакета 32 и 0,2 валидационного разделения (80% данных использовалось для обучения и 20% данных использовалось для валидации). Однако ни одна из моделей не превысила 20 эпох. Графики точности и потерь для обеих моделей можно увидеть ниже на рис. 3–6. Мы видим, что они работали достаточно хорошо.

Результаты и анализ

После обучения два классификатора запускались на реальных строках персонажей. Как упоминалось ранее, сценарии также прошли предварительную обработку, аналогичную обучающим наборам, для обеспечения их совместимости с обученными моделями. Однако важно отметить, что у Майкла и Чендлера было разное количество строк. Следовательно, во внимание принималось не количество, а процент определенных этикеток с учетом общего количества строк. На рисунках 7 и 8 ниже показаны результаты работы двух классификаторов по линиям Майкла и Чендлера. Поразительно, но в обоих случаях Чендлер более открыт и менее забавен по сравнению с Майклом. В модели из 3 категорий у Чендлера также больше нейтральных линий, чем у Майкла. Для экспериментов линии Фиби и Пэм также были извлечены, предварительно обработаны и протестированы. На рисунках 9 и 10 ниже мы видим, что Пэм в целом считается более забавной и менее официантной, чем Фиби, но у нее также больше нейтральных линий, чем у Фиби, что не очень удивительно.

Проблемы

Несмотря на то, что исследовать телевизионные сценарии с использованием описанной выше методологии интересно, существует множество проблем, которые следует рассмотреть, прежде чем делать какие-либо выводы. Оба используемых набора обучающих данных обширны и содержат хорошо размеченные данные. Однако определение того, является ли шутка смешной или является ли определенное высказывание допустимым, очень субъективно и зависит от жизненного опыта каждого человека. Именно поэтому первый эксперимент по обучению двух отдельных классификаторов шуткам и разжиганию ненависти провалился - даже человеку трудно точно оценить, насколько смешной является конкретный анекдот или насколько важным является пост. Независимо от того, насколько хорошо данные предварительно обрабатываются или насколько высока точность конечной модели, нет никакой гарантии, что результаты на самом деле верны. Как видно из предыдущего раздела, результаты Майкла и Чендлера не сильно различаются, что можно описать либо ошибками в предварительной обработке и / или настройке нейронной сети, либо фактическим сходством двух символов. Нейронные сети в целом также не очень успешно распознают сарказм, и, учитывая, что Чендлер значительно более саркастичен, чем Майкл, это может повлиять на результаты. Однако, поскольку целью этого проекта было просто изучить возможности НЛП в данной области, конечные результаты по-прежнему впечатляют.

Заключение и дальнейшие действия

Глядя на результаты на рисунках с 7 по 10, мы видим, что и Чендлер, и Фиби менее забавны и более эффективны, чем Майкл и Пэм. Результаты Фиби против Пэм имеют довольно большой смысл, поскольку, несмотря на то, что оба они довольно нейтральные персонажи, мы можем согласиться с тем, что Фиби имеет тенденцию делать гораздо более серьезные замечания по сравнению с Пэм, и, учитывая количество строк, которые у Пэм есть (намного меньше, чем у Пэм). Фиби), процент забавных или нейтральных людей кажется от природы высоким. Однако результаты Чендлера против Майкла довольно удивительны, поскольку Майкл хорошо известен своими «шутливыми» комментариями на протяжении всего шоу. Такое поведение можно объяснить несколькими причинами. Это может быть связано либо с предвзятостью наборов данных, которые состоят в основном из последних данных, которые могут быть смещены в сторону «Офиса», поскольку они намного более свежие, чем «Друзья». Это также можно объяснить общим количеством строк на символ. «Друзья» в целом намного длиннее, чем «Офис», что может немного исказить данные. Как упоминалось в предыдущем разделе, сарказм также может играть роль в тестах. Этапы предварительной обработки и структура нейронной сети также влияют на результаты, и может быть невидимое смещение в сторону одних типов линий по сравнению с другими. Вывод, который мы, вероятно, можем сделать, состоит в том, что, учитывая, что «Друзья» - более старый сериал, чем «Офис», он, как правило, менее чувствителен к официальным замечаниям. Однако приятно видеть, что женские персонажи имеют похожее распределение линий.

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

Спасибо за чтение! Вы можете найти исходный код здесь и мои социальные сети здесь!