Постановка задачи заказчиком:
Реализовать рекурентную нейронную сеть для анализа тональности текста. Тренировочные данные состоят из двух файлов positive.txt и negative.txt с позитивными и негативными текстами соответственно. Важен сам pipeline и описание действий.
- Анализ и подготовка данных
- Объеденины данные, добавлен целевой признак 'Target' со значениями 1 - негативный текст, 0 - позитивный. Использовалась библиотека Pandas.
- Текст отчищен от лишних знаков и сивмолов. Оставлены только буквы. Использована библиотека для регулярных выражений re.
- При помощи библиотеки pymorphy2 слова приведены к их нормальной словарной форме:
- для существительных — именительный падеж, единственное число;
- для прилагательных — именительный падеж, единственное число, мужской род;
- для глаголов, причастий, деепричастий — глагол в инфинитиве несовершенного вида.
- Данные разделены на тренировочную, валидационную и тестовую выборки. Использовалась библиотека Scikit-Learn
- Текст векторизирован. В качестве алгоритма использовался мешок слов, размер словаря 73567. Для этого была использована библиотекой PyTorch.
- Создание модели и тренировка
- Реализованы функции для тренировки модели. В качесте метрики выбрана и реализована функция F1-score.
- Создана следующая модель Input -> Embedding -> LSTM -> Dropout -> Linear -> ReLU -> Linear -> Class. Использована библиотека PyTorch
- В качестве функции потерь была взята BCEWithLogLoss. Так было решено сделать различный learning rate для различных слоев модели.
- Тестирование модели
- Проведена оценка модели на тестовой выборке.
- Обученная модель сохранена для дальнейшего использования
Для корректной работы программы необходим установить библиотеки
Основные файлы
Файл тренировки rnn_in_text.jpynb
Файл тестирования testing_model.py
Для работы файла testing_model.py необходим словарь vocab.txt и модель model.torch. Они создаются в процессе тренировки
Вспомогательные файлы:
Данные для тестирования: texts.txt - Вносятся тексты для анализа
Словарь: vocab.txt - Создаётся после выполнения файла rnn_in_text.jpynb
Модель : model.torch - Создаётся после выполнения файла rnn_in_text.jpynb
Вспомогательные функции: functions.py
В папке Data находятся данные для обучения модели