44 lines
7.3 KiB
Markdown
44 lines
7.3 KiB
Markdown
|
# Лабораторная работа 7. Рекуррентная нейронная сеть и задача генерации текста
|
|||
|
### Задание на лабораторную:
|
|||
|
Выбрать художественный текст (русскоязычный и англоязычный) и обучить на нем рекуррентную нейронную сеть для решения задачи генерации.
|
|||
|
Подобрать архитектуру, справляющуюся достаточно хорошо с обоими видами текстов, и параметры так, чтобы приблизиться к максимально осмысленному результату.
|
|||
|
|
|||
|
***
|
|||
|
### Как запустить лабораторную работу:
|
|||
|
Для запуска лабораторной работы необходимо открыть файл `lr7.py`, нажать на ПКМ и в выпадающем списке выбрать опцию "Run".
|
|||
|
***
|
|||
|
### Технологии:
|
|||
|
**NumPy (Numerical Python)** - это библиотека Python, которую применяют для математических вычислений: начиная с базовых функций и заканчивая линейной алгеброй.
|
|||
|
|
|||
|
**TensorFlow** - это библиотека для машинного обучения, группы технологий, которая позволяет обучать искусственный интеллект решению разных задач.
|
|||
|
|
|||
|
**Keras** - это библиотека для языка программирования Python, которая предназначена для глубокого машинного обучения. Она позволяет быстрее создавать и настраивать модели — схемы, по которым распространяется и подсчитывается информация при обучении.
|
|||
|
|
|||
|
**Keras Preprocessing** - это модуль предварительной обработки и дополнения данных библиотеки глубокого обучения Keras. Он предоставляет утилиты для работы с данными изображения, текстовыми данными и данными последовательности.
|
|||
|
|
|||
|
**Tokenizer** - это инструмент, предоставляемый библиотекой Keras, который используется для токенизации текста (разделения текста на отдельные токены или слова). Токенизатор в Keras предоставляет функции для преобразования текста в последовательности числовых индексов.
|
|||
|
***
|
|||
|
### Что делает лабораторная работа:
|
|||
|
В лабораторной работе сначала данные считываются из файла, указанного в переменной *file_path*, создается экземпляр *Tokenizer*, который обучается на тексте из файла.
|
|||
|
Далее текст преобразуется в последовательности чисел с помощью функции *texts_to_sequences*, создаются обучающие данные путем создания последовательностей из слов и производится предобработка данных, чтобы все последовательности имели одинаковую длину, используя функцию *pad_sequences*.
|
|||
|
Данные разделяются на входные и выходные, создается модель рекуррентной нейронной сети с использованием *Sequential* и слоев *Embedding* (преобразует индексы слов в плотные векторные представления), *LSTM* ( рекуррентный слой, который обрабатывает последовательности данных с учетом долгосрочных зависимостей), *Dropout* (применяет случайное обнуление некоторых элементов входных данных во время обучения) и *Dense* (слой нейронной сети, в котором каждый нейрон связан со всеми нейронами предыдущего слоя).
|
|||
|
Модель компилируется с оптимизатором *'adam'*, функцией потерь *'sparse_categorical_crossentropy'* и метрикой *'accuracy'* и обучается на входных и выходных данных и на 150 эпохах.
|
|||
|
После генерируется текст на основе заданного начального предложения с помощью обученной модели. В функции генерации начальный текст преобразуется в последовательность чисел с помощью токенизатора, производится предобработка последовательности чисел, предсказывается следующее слово и выбирается наиболее вероятное, после этого предсказанное слово добавлется к начальному тексту.
|
|||
|
|
|||
|
Результатом работы являются сгенерированные тексты из 25 слов на русском и английском языках, которые начинаются со слов *'Зима'* и *'Winter'* и составляются на основе исходных текстов из файлов `rus.txt` и `eng.txt` соответсвенно.
|
|||
|
***
|
|||
|
### Пример выходных данных:
|
|||
|
***Пример работы и сгенерированный русский текст***
|
|||
|
![](rusRes1.JPG)
|
|||
|
...
|
|||
|
![](rusRes2.JPG)
|
|||
|
Сгенерированный текст: "Зима – лучшее время года зима – это самое холодное время года она волшебная потому что всё укрыто белым снегом и это похоже на сказку зимой".
|
|||
|
|
|||
|
***Пример работы и сгенерированный английский текст***
|
|||
|
![](engRes1.JPG)
|
|||
|
...
|
|||
|
![](engRes2.JPG)
|
|||
|
Сгенерированный текст: "Winter is the best time of the year winter is the coldest time of the year it is magical because everything is covered with white snow".
|
|||
|
***
|
|||
|
**Вывод**: результатом лабораторной работы стали сгенерированные при помощи рекурентной нейронной сети, обученной на 150 эпохах, тексты из 25 слов на русском и английском языках.
|
|||
|
Программа сгенеририровала достаточно осмысленный текст, очень похожий на исходный, как на русском, так и на английском языках. Это говорит о правильно подобранных архитектуре и параметрах.
|