Классификация отзывов клиентов с использованием FCNN, CNN, RNN и вложений в Python.

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

Мы показываем, как работать с данными последовательности, выполняя классификацию тональности набора данных обзора фильма. Чувства - это в основном чувства, которые включают эмоции, отношение и мнения, написанные на естественном языке.

Набор данных обзоров фильмов IMDB

Начнем с загрузки набора данных IMDB с помощью Keras API. Обзоры уже токенизированы. Мы хотим иметь ограниченный словарный запас, чтобы наши словесные матрицы не были произвольно маленькими. Мы также хотим иметь ограниченную длину обзоров и не обрабатывать действительно длинные предложения. В нашем наборе обучающих данных содержится 25 000 отзывов клиентов с правильными ярлыками (положительными или отрицательными).

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



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

Эталонный тест FCNN, CNN, RNN для анализа настроений

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

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



Мы собираемся сравнить этот подход с полностью связанной нейронной сетью, сверточной нейронной сетью и их комбинацией.

В приведенном ниже коде выполняется ок. 2 часа на экземпляре GPU в Google Cloud.

Точность классификации невидимых обзоров фильмов (набор тестовых данных) показана в таблице выше. Удивительно, но полносвязная нейронная сеть с вложениями превосходит остальные сети. Это однослойная сеть с полностью подключенными 250 узлами. Сверточная нейронная сеть имеет аналогичную точность. Хотя CNN были разработаны с учетом пространственной структуры данных изображения, но при этом устойчивы к положению и ориентации изученных объектов в сцене, этот же принцип можно использовать для последовательностей, таких как одномерная последовательность слов в обзоре фильма. Те же свойства, которые делают модель CNN привлекательной для обучения распознаванию объектов на изображениях, могут помочь изучить структуру в абзацах слов, а именно инвариантность методов к определенному положению функций. В исследовательском сообществе до сих пор ведутся открытые дебаты о CNN и RNN. В случае классификации обзоров фильмов простая RNN была полезна при обработке данных последовательности по сравнению с полностью подключенной сетью без вложений.

Предсказание тональности произвольного текста

Ниже мы тестируем наши модели на бесплатных текстовых обзорах. Каждый отзыв сначала токенизируется, а затем преобразуется в вектор слов, который используется для прогнозирования. Вероятность положительного отзыва выбирается выше 0,5.

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

Заключение

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

Два лучших блога, которые помогают понять работу RNN и LSTM:

  1. Http://karpathy.github.io/2015/05/21/rnn-effectiveness/
  2. Http://colah.github.io/posts/2015-08-Understanding-LSTMs/

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