Определение эмоциональной нагрузки текста с помощью нейронной сети типа LSTM
Была реализована программа, определяющая эмоциональную окраску текста на русском языке. Для этого была разработана модель глубокого обучения, использующая рекуррентные нейронные сети (LSTM). Модель была разработана с помощью языка Python 3 и библиотеки PyTorch для работы с нейронными сетями. Для наглядного представления результатов работы нейронной сети было также написано веб-приложение с использованием микрофрейморка Flask. Пользователем на веб-странице вводится текст для анализа эмоциональной окраски, по результатам которого определяется одна из эмоциональных характеристик.
В качестве выборки для обучения были выбраны размеченные русские твиты на две категории: позитивные и негативные (корпус Юлии Рубцовой: http://study.mokoron.com)
Обучить нейронную сеть можно двумя способами: с помощью CPU и GPU. На GPU вычисления происходят в разы быстрее, поэтому второй вариант является более приемлемым, однако требуется интернет-соединение. Для обучения на GPU была использована облачная технология Google Colab.
Программа классифицирует текст по двум типам эмоциональной окраски: позитивной и негативной.
Для обучения и тестирования модели необходимо установить библиотеки PyTorch и Pandas:
pip install torch torchvision
pip install pandas
Данный пункт необходим только для тестирования и обучения модели с помощью CPU: при работе с файлом train_in_colab.ipynb в Google Colab предварительные установки библиотек не требуются.
Для тестирования модели через веб-приложение необходимо установить микрофреймворк Flask:
pip install Flask
Чтобы собрать и запустить проект из командной строки из корня проекта (tonal_flask), нужно выполнить следующую последовать команд:
export FLASK_APP=app.py
python -m flask run
Сервер запустится на http://127.0.0.1:5000. Для получения класса эмоциональной окраски текст на РУССКОМ языке необходимо ввести на веб-странице. Другим вариантом тестирования работы программы является передача пути исследуемого файла в качестве аргумента ключа -i:
python3 test_model.py -i input.txt
input.txt - текстовый файл c расширением txt, который содержит тестируемый текст.
- переходим по http://127.0.0.1:5000
- в input-поле "введите текст на русском языке..." необходимо ввести текст до 120 символов строго на русском языке. Могут встречаться эмодзи(смайлы), ссылки и т.д., система не будет их учитывать при обработке текста (так же как и слова на других языках).
- после нажатия кнопки "Получить результат" будут написаны предсказанная эмоциональная окраска(позитивная или негативная) и ее вероятность.
Следующие шаги нужны только для того, чтобы заново обучить модель.
Для того, чтобы запустить обучение модели на CPU :
python3 train_model.py
Для того, чтобы запустить обучение модели на GPU, необходимо :
- загрузить файл train_in_colab.ipynb на сайте https://colab.research.google.com;
- выбрать режим GPU: перейти по Runtime > Change runtime type и выбрать GPU в качестве Hardware accelerator
- Запустить файл с помощью Runtime > Run all (Ctrl + F9).
- После запуска файла в первых двух ячейках будет предложено загрузить файлы: необходимо загрузить файлы ./dataset/positive.csv и /dataset/negative.csv c помощью появившихся в этих ячейках кнопки "Выбрать файлы".