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

Почему анализ настроений так важен?

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

LSTM с Керасом

Я буду использовать Keras для реализации LSTM. Keras представляет собой оболочку высокого уровня для Tensorflow, ее можно запускать на процессоре или графическом процессоре. Хотя обучение GPU происходит намного быстрее и требует CUDA toolkit от Nvidia вместе с CUDNN.

Посмотрите на данные

Ниже приведен снимок данных-

Как видно выше, нужны только важные столбцы — метка и твит. Столбец «Твит» содержит твит, а метка показывает, является ли твит положительным или отрицательным.

Подготовка данных

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

Начнем с импорта некоторых важных библиотек.

Теперь наступает важная часть — встраивание Word.

Мы должны преобразовать каждый твит в реальный вектор, известный как встраивание слов в текст. Это метод, при котором слова кодируются как действительные
векторы в многомерном пространстве. К счастью, в Keras есть простой и удобный способ сделать это. С помощью слоя внедрения. Мы также должны использовать векторы длиной 128 для представления каждого слова. Это будет первый слой нейронной сети.

Кроме того, нам нужно выбрать только первые 2000 слов по частоте.
А количество слов в каждом твите будет ограничено 32
символами.

Давайте посмотрим на очищенные данные

Теперь давайте подгоним Tokenizer к данным и используем texts_to_sequences, чтобы подогнать его к столбцу твитов.

Преобразованные данные должны выглядеть примерно так.

Как видно выше, первый твит состоит из 14 символов, а третий твит
содержит 16 символов. Это приведет к проблемам при обучении нейронной
сети. Следовательно, все твиты должны быть обрезаны или дополнены нулями.

Построение сети LSTM

Первый слой нейронной сети — это встроенный слой. Этот слой имеет 32 вектора длины, которые представляют каждое слово. Следующий уровень — это уровень LSTM, который имеет 200 единиц памяти (при необходимости их можно увеличить). В конце находится плотный узел с одним выходом, так как это проблема бинарной классификации.

Модель будет использовать Адама в качестве оптимизатора.

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

Хорошо видно, что точность на проверочном наборе составляет 94,66 в конце третьей эпохи, что довольно неплохо, учитывая, что обучение заняло 5 минут.

Вывод

Точность модели можно еще больше повысить, используя больше блоков памяти LSTM, хотя она будет обучаться медленнее. Обучение на GPU будет намного быстрее, чем на CPU. Также сети CNN обучаются намного быстрее, чем LSTM. Наконец, можно избежать чрезмерной подгонки, используя отсев.