Они иронизируют?

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

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

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

Реализация идеи на cAInvas — здесь!

Набор данных

On Kaggle от Rishabh Misra

Этот набор данных собран с двух новостных сайтов. The Onion стремится создавать саркастические версии текущих событий, поэтому были собраны заголовки из категорий «Новости вкратце» и «Новости в фотографиях» (которые носят саркастический характер). Кроме того, на сайте HuffPost были собраны настоящие (и не саркастические) заголовки новостей.

Глядя на распределение значений классов -

Это почти сбалансированный набор данных. Хорошо пойти!

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

Текст заголовка должен быть очищен, то есть удалены URL-адреса и элементы HTML (если они есть). Затем текст удаляется из любого символа, который не является алфавитом. Функции для одного и того же определяются следующим образом:

После того, как описанная выше предварительная обработка завершена, предложение преобразуется в нижний регистр, прежде чем превратить его в корневое слово. Это помогает идентифицировать слова, являющиеся разными формами одного и того же слова (например, есть, есть, есть и т. д.). Для стемминга используется стеммер Snowball модуля nltk.stem.

Стоп-слова не удаляются, поскольку они могут помочь передать контекст предложения в целом.

Слова, принадлежащие каждому из классов, хранятся отдельно для визуализации с помощью WordCloud.

Размер слова пропорционален его частоте в наборе данных. На основе этих изображений невозможно сделать какие-либо выводы.

Разделение проверки поезда

Разделение набора данных на обучающий и проверочный наборы с использованием соотношения 80–20.

Набор поездов содержит 22895 образцов, а набор для проверки — 5724 образца.

Токенизация

Функция Tokenizer модуля keras.preprocessing.text используется для преобразования текста в последовательность целых чисел, которые используются в качестве входных данных для модели. Затем они дополняются нулями для достижения максимальной длины 200.

Модель

Обучаемая модель состоит из слоя внедрения, который преобразует входные выборки (разреженные) в плотные массивы фиксированного размера. Затем следуют LSTM и три плотных слоя, первые два имеют активацию ReLU, а последний — сигмовидные функции активации.

Модель скомпилирована с использованием потерь BinaryCrossentropy, так как классов всего два — 0 и 1. Используется оптимизатор Adam и отслеживается точность модели.

Функция обратного вызова EarlyStopping модуля keras.callbacks отслеживает метрику (здесь val_loss по умолчанию) для заданного количества эпох и останавливает обучение, если метрика не улучшается (уменьшает, если потеря, увеличивает, если точность). Параметр restore_best_weights гарантирует, что модель с наименьшими потерями при проверке (или лучшим значением метрики) будет восстановлена ​​в переменной модели.

Модель достигла точности ~ 83,5% на тестовом наборе после обучения со скоростью обучения 0,01.

Заглянуть в матрицу путаницы, чтобы лучше понять результаты —

Метрики

Прогноз

Выполнение прогнозов на случайных тестовых выборках —

глубокий C

Библиотека, компилятор и инфраструктура вывода deepC предназначены для включения и выполнения нейронных сетей глубокого обучения с упором на функции устройств малого форм-фактора, таких как микроконтроллеры, eFPGA, процессоры и другие встроенные устройства, такие как raspberry-pi, odroid, Arduino, SparkFun Edge, RISC-V, мобильные телефоны, x86 и портативные компьютеры.

Компиляция модели с помощью deepC —

Перейдите на платформу cAINvas (ссылка на блокнот, указанную ранее), чтобы запустить и создать свой собственный файл .exe!

Источники: Аиша Д