Привет! Это статья о выпуске Sarcasmania-API (теперь доступна для скачивания), а также подробное описание проекта, для вашего интереса!

Вот ссылка для скачивания приложения в Google Play:



Также в Amazon App-Store (БЕСПЛАТНАЯ оплата): https://amzn.to/30ByWMa

Обзор приложения

Это приложение для социальных сетей, в котором множество саркастических твитов измеряется нашими пользователями по полярной шкале веселья и оскорбительности. Приложение позволяет нашей аудитории публиковать, просматривать и беспристрастно реагировать на саркастические твиты, загруженные нашим большим пулом клиентов в хронологическом порядке. Наконец, бесконечно работающая модель на нашем сервере включает эти входные данные в соотношение вероятностей Человека и Машины (30/70) юмора и оскорбления соответственно. Это приложение является частью исследовательского проекта по обработке естественного языка, направленного на улучшение обнаружения сарказма в тексте посредством непрерывного обучения и сентиментального анализа.

Подробное описание

Ниже приводится подробная информация об исследовательской работе, связанной с этим проектом, а также о ее преимуществах, недостатках и результатах.

Введение

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

Мотивация

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

Сфера

Мотивом нашего проекта была разработка модели, которую мы будем обучать саркастическим, юмористически-саркастическим, оскорбительно-саркастическим и обоим (юмористическим и оскорбительно-саркастическим) комментариям, используя алгоритмы машинного обучения для сарказма, оскорбления и юмора. Предполагаемая аудитория для этого проекта включает:

● Команды анализа рынка
● Психологи
● Специалисты по подбору партнеров
● Пользователи социальных сетей

Временная шкала для этого проекта была с осени 2018 года по весну 2019 года, т. е. один год на завершение обзора литературы, программирование на Python, разработку приложений для Android и аутентификацию серверов, как показано ниже:

Литературное исследование

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

Исследования по обнаружению сарказма:см. таблицу ниже.

Исследования по обнаружению юмора:см. таблицу ниже.

Исследования по обнаружению оскорблений:см. таблицу ниже.



Выполнение

Наша реализация разделена на два основных модуля, описанных ниже:

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

Интеграция отзывов пользователей в заранее определенные оценки: после того, как первый модуль присвоит введенному твику определенные баллы за сарказм, оскорбление и юмор, второй модуль будет отвечать за интеграцию отзывов пользователей в исходные баллы. . Для этой цели мы присвоим определенный вес пользовательскому вводу и продолжим добавлять средние баллы к исходным присвоенным баллам на основе соотношения «машина-пользователь» 70/30.

Детектор сарказма

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

  1. Сарказм на основе контекста:
    Профилирование пользователей: мотивация для включения этого заключается в том, что пользователи склонны к саркастичному/несаркастичному на разных форумах и их поведенческие особенности могут быть использованы в качестве контекстной информации. Мы создаем встраивание пользователя для каждого пользователя на основе двух пользовательских характеристик:
    ○ Стилометрические характеристики: создаются с использованием алгоритма Paragraph-Vector.
    ○ Индивидуальные черты: модель CNN, обученная на эталонном наборе данных.
    Моделирование дискурса: Мотивация для включения этого заключается в том, что определенные темы форума коррелируют с саркастическим уклоном сообщений, например Политика более склонна к сарказму, чем к обсуждению стихийных бедствий. Подобно стилометрическим характеристикам, модель Paragraph-Vector применяется к накопленным сообщениям с каждого форума на основе следующего:
    ○ Контекстная и тематическая информация.
    ○ Моделирование документа дискурса обсуждения.
  2. Сарказм на основе содержания
    Мы фиксируем лексические подсказки, присутствующие в предложениях, которые помогают обнаружить сарказм. Представления предложений извлекаются из целевого комментария с помощью многоуровневой сверточной нумеральной сети (CNN).

Детектор оскорблений

Классификатор токсичных комментариев был реализован с использованием нейронных сетей. Разбивка CNN дается следующим образом:

  1. Модель внедрения: предварительно обученные отношения между словами, представляющие собой матрицу 300 x 400 000.
  2. Index2word: словарь, содержащий пары ключ-значение, где ключ представляет собой слово в виде строки, а значение представляет собой целое число, представляющее слово. Обратите внимание, что эти целые числа соответствуют индексу в модели встраивания.
  3. Word2idx: список, содержащий все слова. Индекс соответствует положению слова в словесных вложениях. По сути, обратная сторона index2word.

Процесс создания модели начинается с загрузки вложений слов и словарей (index2word и word2idx). Затем мы загружаем помеченные токсичные комментарии и конвертируем эти кадры данных в последовательности. Затем мы создаем объект токенизатора и подгоняем его к последовательностям, а также дополняем все последовательности, чтобы они были одинакового размера. После этого мы ищем вектор встраивания слов для каждого уникального слова в последовательностях и сохраняем вектор встраивания слов в матрице вложений. Если слово не найдено во вложениях, то оставить в индексе все нули. Кроме того, ограничьте матрицу встраивания 20 000 наиболее часто используемых слов. Когда мы закончим, мы создадим Keras Embedding Layer из матрицы вложений и разделим данные для обучения и проверки. Наконец, мы создаем модель CNN с активацией выпрямителя и бинарной кросс-энтропийной потерей. Эта модель теперь полностью способна делать прогнозы относительно уровня токсичности комментария, непристойности, уровня угрозы, фактора оскорбления и подтверждения ненависти к личности.

Непрерывное обучение.Непрерывное обучение — это неизведанная область машинного обучения даже в 2019 году. Основной принцип, на котором оно работает, заключается в том, что самые важные знания машины не забываются, в то же время изучая новую информацию. последовательно. Его свойства:

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

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

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

  1. Катастрофическое забывание: машины забывают старые данные и учитывают только новые данные с их метками.
  2. Степень несходства между задачами. Если две задачи, изучаемые моделью, сильно различаются, это также в конечном итоге приведет к сбою.

Решения. Вот несколько решений, которые приходят на ум в связи с этими проблемами:

  1. Полное переобучение всех объединенных данных: этот подход эффективен, но наивен, поскольку его временная сложность увеличится в разы.
  2. Сохранение предыдущих знаний. Метод сохранения предыдущих знаний включает в себя сохранение старых параметров для повторного использования.
  3. Использование предыдущих знаний. Техника, с помощью которой используются предыдущие знания, называется трансферным обучением.
  4. Изучение новых знаний. Метод изучения нового набора данных называется добавочным обучением с помощью динамически увеличивающихся параметров.

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

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

Потери ( λ ) = старый результат - новый результат

  • Многозадачное обучение. Оно работает по принципу «Учиться, не забывая». Здесь мы сначала изучаем начальную задачу, затем запускаем ее на новых данных и записываем ответы и, наконец, расширяем модель с помощью нового слоя классификации, который соответствующим образом расширяет выходные данные. Для этого находим хорошее значение λ. Если λ низкое, мы игнорируем новые данные, в противном случае мы учимся на новых данных. Это означает, что этот алгоритм сильно зависит от связанности задач — если они похожи, они всего на дюйм отодвигаются от своих старых значений, в противном случае они борются за власть!
  • Пошаговое изучение детекторов объектов. В этом подходе мы работаем, выявляя старые ответы для старых классов и используя потери энтропии для новых классов. В этом случае мы не добавляем новый классификационный слой, а лишь добавляем несколько нейронов в выходной слой.

Применение. Дистилляция знаний в конечном итоге использовалась для обучения нашей модели на основе пользовательского ввода.

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

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

Детектор юмора

Блок обнаружения юмора будет работать параллельно с детектором оскорблений, чтобы определить уровень юмора, присутствующего во входном твите, и присвоить ему оценку юмора. Метод поверхностного обучения SVM (машины опорных векторов) с линейным ядром используется с обзорами Yelp в качестве обучающих данных для модели.

Пошаговое обучение. Алгоритм обнаружения юмора, который использовался ранее, представлял собой SVM с линейным ядром, обученным на обзорах Yelp для обнаружения юмора. Не было прямой реализации для реализации добавочного обучения на SVM, поэтому для этой цели используется реализация SGD, предоставленная scikitlearn. Используемая функция потерь называется «петля», которая выводит линейный SVM, такой же, как тот, который использовался в предыдущей реализации обнаружения юмора. Модель обучается с использованием обзоров Yelp, которые также использовались в предыдущей реализации, но модель не полностью соответствует обзорам, используется функция SGD partial_fit, чтобы мы могли постепенно заставить модель изучать саркастический юмор с течением времени. Модель снова будет частично подходить, когда через наше приложение ей будут предоставлены новые входные данные.

Алгоритм слияния

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

Результаты

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



Многофункциональная модель обнаружения

Используя наш набор данных с собственной маркировкой, объединенный с ответами пользователей из Continual Learning, мы смогли создать многофункциональную модель обнаружения сарказма, юмора и оскорблений, код которой приведен ниже:

Как видите, модель обучена с точностью 99,08 % — корреляция данных видна из набора данных, найденного на Kaggle здесь:



В конце вероятности, которые доказывают корреляцию между тремя настроениями, выводятся из данных ниже:

P(сарказм) = 18488/39780 = 0,46

P(Юмор) = 19643/39780 = 0,49

Р(Оскорбление) = 19358/39780 = 0,48

P(Сарказм|Юмор) = 9037/39780 ÷ 0,49 = 0,44

P(Сарказм|Оскорбление) = 8694/39780 ÷ 0,48 = 0,4375

P(Сарказм|Юмор,Оскорбление) = 4293/39780 ÷ 0,46*0,49*0,48 = 0,92

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

Будущие цели

Мы собираемся получить публикацию по результатам этого исследования от Совета IEEE этим летом 2019 года. Кроме того, это исследование может быть расширено, чтобы найти корреляция Юмора с Оскорблением напрямую — поскольку эти два аспекта также часто пересекаются. Мы также собираемся представить это как идею для Fake-News Challenge в Facebook: на основе комментариев к сообщению или статуса/содержания сообщения — мы можем использовать обнаружение сарказма, чтобы выяснить, является ли автор шутит или говорит серьезно в новостных центрах, таких как 8Fact и 9Gag.

Члены команды:
Рамша Сиддики, Марьям Надим, Махнур Хан и Неха Акрам
Советник проекта:
д-р Марьям Башир
Центр публикаций:
Факультет компьютерных наук, Национальный университет компьютерных и новых наук, Лахор, Пакистан (Выпускные проекты 2018 г.)

Пожалуйста, прокомментируйте ниже свои отзывы о приложении и обязательно загрузите и используйте его хотя бы один раз! Спасибо ❤…