97 lines
6.4 KiB
Markdown
97 lines
6.4 KiB
Markdown
|
# Лабораторная работа №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 где
|
|||
|
уже прослеживаются вполне связный ряд словосочетаний и местами текст обретает хоть какой-то смысл в случае русскоязычного
|
|||
|
можно догадаться что основной темой являются подснежники. С англоязычным текстом разница заметна ещё лучше поскольку
|
|||
|
англоязычный текст больше. Подводя итоги можно сделать вывод, что количество эпох, а так же объём текста на котором
|
|||
|
обучается рекуррентная нейронная сеть влияет на конечный генерируемый текст._
|
|||
|
|
|||
|
---
|
|||
|
|