# Лабораторная работа №7: Рекуррентная нейронная сеть и задача генерации текста ## Задание. Вариант 28 Выбрать художественный текст (четные варианты – русскоязычный, нечетные – англоязычный) и обучить на нем рекуррентную нейронную сеть для решения задачи генерации. Подобрать архитектуру и параметры так, чтобы приблизиться к максимально осмысленному результату. Далее разбиться на пары четный-нечетный вариант, обменяться разработанными сетями и проверить, как архитектура товарища справляется с вашим текстом. В завершении подобрать компромиссную архитектуру, справляющуюся достаточно хорошо с обоими видами текстов. ## Описание программы Данная программа обучается на двух текстах русскоязычном и англоязычном (2912 слов в англоязычном тесте и 1908 в русскоязычном). В программе по итогу была реализованна архитектура справляющаяся с обоими видами текстов. ## Как запустить лабораторную работу 1. Установите необходимые библиотеки: ```bash pip install tensorflow pip install keras ``` 2. Запустите скрипт: ```bash python main.py ``` ## Использованные технологии - Python - tensorflow - keras ## Что программа делает Программа загружает данные, считывает текста из файлов rus.txt и eng.txt. Далее для обоих текстов происходит следующее: Происходит токенизация текста на отдельные слова. Создание последовательностей (n-грамм) для обучения модели. Использование рекуррентной нейронной сети (RNN) с LSTM слоями. Потом происходит обучение модели на подготовленных данных. Использование обученной модели для предсказания следующего слова на основе введенного текста. В конце программа выводит сгенерированные текста. ## Тесты Запуск программы с 20-ю эпохами: ![Графики моделей](img/work20.png) Вывод русскоязычного текста с 20-ю эпохами: ![Графики моделей](img/rus20.png) Текст: > Начало широким надень дочка старик и откуда вдруг ледяной уж август и пошла так на выручили на дверей и тебе перед > беседуют старику тут сосульки висели они ни обогнал в лесу присесть стукнул считать ждать на сказала да месяцы неба > покрытая дочку и тихо опять и под между зеленые вязанкой достает Вывод англоязычного текста с 20-ю эпохами: ![Графики моделей](img/eng20.png) Текст: > Start if i back ‘i i’m sure we ’ any worked is has aloud into dinner has three coming surprised to soon about the > back all he said to have thing mr britnell exactly across when he saw that looked at the picture before — a very > dark he with the Запуск программы с 100-й эпохами: ![Графики моделей](img/work100.png) Вывод русскоязычного текста с 100-й эпохами: ![Графики моделей](img/rus100.png) Текст: > Начало ему свою длинную бороду старик и говорит сестра — уже домой вернулась а подснежники где за нею замерзнуть > ворох подснежников чем корзинкой подснежников не выглянут мартом ворох подснежников какие сладких а май обогнал бы > апрель месяцы не гаснет он за подарили где пожарче и стала греться замолчали братья месяцы тихо Вывод англоязычного текста с 100-й эпохами: ![Графики моделей](img/eng100.png) Текст: > Start a see ’ said nisbet ‘but i must have but what i must do first i must ask garwood exactly what he saw when he > looked at the picture last night then i must have the picture photographed before it goes any further and thirdly i > must find out where Перевод англоязычных текстов с помощью Google-переводчика: ![Графики моделей](img/translation.png) ## Вывод _Смотря на тесты можно заметить что текст с 20-ю эпохами является по сути несвязным набором слов, в отличие от 100 где уже прослеживаются вполне связный ряд словосочетаний и местами текст обретает хоть какой-то смысл в случае русскоязычного можно догадаться что основной темой являются подснежники. С англоязычным текстом разница заметна ещё лучше поскольку англоязычный текст больше. Подводя итоги можно сделать вывод, что количество эпох, а так же объём текста на котором обучается рекуррентная нейронная сеть влияет на конечный генерируемый текст._ ---