96 lines
9.7 KiB
Markdown
96 lines
9.7 KiB
Markdown
|
# Лабораторная работа 7. Рекуррентная нейронная сеть и задача генерациитекста
|
|||
|
### Вариант № 18(четный)
|
|||
|
Выбрать художественный текст (четные варианты –русскоязычный, нечетные –англоязычный) и обучить на нем рекуррентную нейронную сеть
|
|||
|
для решения задачи генерации. Подобрать архитектуру и параметры так, чтобы приблизиться к максимально осмысленному результату.
|
|||
|
Далее разбиться на пары четный-нечетный вариант, обменяться разработанными сетями ипроверить, как архитектура товарища справляется с вашим текстом.
|
|||
|
В завершении подобрать компромиссную архитектуру, справляющуюся достаточно хорошо с обоими видами текстов.
|
|||
|
***
|
|||
|
## *Как запустить лабораторную работу:*
|
|||
|
Чтобы запустить программу, открываем файл lab7 в PyCharm и нажимаем на зеленый треугольник в правом верхнем углу.
|
|||
|
***
|
|||
|
## *Использованные технологии:*
|
|||
|
**Keras** — это библиотека с открытым исходным кодом, предоставляющая интерфейс Python для искусственных нейронных сетей. Keras выступает в качестве интерфейса для библиотеки TensorFlow.
|
|||
|
|
|||
|
**TensorFlow** — это бесплатная библиотека программного обеспечения с открытым исходным кодом для машинного обучения и искусственного интеллекта. Его можно использовать для решения широкого спектра задач, но особое внимание уделяется обучению и выводу глубоких нейронных сетей.
|
|||
|
|
|||
|
**NumPy** — это фундаментальный пакет для научных вычислений на Python.
|
|||
|
***
|
|||
|
## *Что делает ЛР:*
|
|||
|
В данной работе анализируется работа рекуррентных нейронных сетей и решается задача генерации текстов на русском и английском языках. Имеются 2 файла:
|
|||
|
text_rus.txt - отрывок из книги на русском языке и text_eng.txt - на английском.
|
|||
|
|
|||
|
Метод tokenize готовит текстовые данные для обучения модели, преобразуя текст в числовые последовательности и подготавливая их в формат, пригодный для использования в нейронной сети.
|
|||
|
|
|||
|
При вызове метода train_model создается, компилируется и обучается рекуррентная нейонная сеть со следующими слоями:
|
|||
|
* Embedding - слой, преобразующий целочисленные последовательности в плотные векторы.
|
|||
|
* LSTM - слой с блоками долгой краткосрочной памятью.
|
|||
|
* Dropout - обработчик разрыва.
|
|||
|
* Dense - одномерный слой обычных нейронов.
|
|||
|
В ходе экспериментов были подобраны оптимальные настройки для слоев сети, а также необходимое кол-во эпох для обучения сети.
|
|||
|
|
|||
|
При вызове метода generate_text генерируется текст с использованием необходимых переменных.
|
|||
|
|
|||
|
**Результатом работы программы** являются: сгенерированные тексты на русском и английском языках на основе исходных текстов (в консоли).
|
|||
|
***
|
|||
|
## *Пример выходных данных:*
|
|||
|
### Русский текст:
|
|||
|
>Вывод в консоли для русского текста (140 эпох обучения):
|
|||
|
|
|||
|
![](https://sun9-26.userapi.com/impg/XgE4yiMVmlkmPOCNxfjF-xHA96aRm0pcf_kjVQ/1eMoa9EzSfg.jpg?size=704x118&quality=96&sign=c5aeed8bc608950c86c211ab258daaf2&type=album)
|
|||
|
|
|||
|
*. . .*
|
|||
|
|
|||
|
![](https://sun9-61.userapi.com/impg/nDxqsiJf0Bu07Sh4rMyD4PHBm2lwSwB0XrYNSQ/EHhW-heGkiA.jpg?size=703x130&quality=96&sign=850c6f8d01f4d8ea2ebf23f26f716bc6&type=album)
|
|||
|
|
|||
|
>Исходный текст:
|
|||
|
|
|||
|
Кофе со специями сдобрен изрядным количеством меда, и все равно обжигает мне язык. Крессентия всегда заказывает
|
|||
|
именно такой кофе. Мы сидим в павильоне, как и тысячу раз до этого, в руках у нас дымящиеся фарфоровые чашки —
|
|||
|
холодным вечером о них так приятно греть ладони. Какое-то мгновение мне кажется, что все как прежде, мы мирно сидим
|
|||
|
в полумраке и молчим. Мне не хватало наших бесед, но еще я скучала по этому уютному молчанию: мы всегда могли просто
|
|||
|
посидеть вот так, не испытывая потребности заполнять тишину глупой светской болтовней. Но это же бессмысленно.
|
|||
|
С чего мне скучать по Крессентии, если она сидит напротив меня?
|
|||
|
|
|||
|
>Сгенерированный текст:
|
|||
|
|
|||
|
Rus: Кофе со специями сдобрен изрядным количеством меда и все равно обжигает мне язык крессентия всегда заказывает
|
|||
|
именно такой кофе мы сидим в павильоне как и тысячу раз до этого в руках у нас дымящиеся фарфоровые чашки —
|
|||
|
холодным вечером о них так приятно греть ладони какое то мгновение мне кажется что все как прежде мы мирно сидим
|
|||
|
в полумраке и молчим мне не хватало наших бесед но еще я скучала по этому уютному молчанию мы всегда могли просто
|
|||
|
посидеть вот так не испытывая потребности заполнять тишину глупой светской болтовней но это же бессмысленно
|
|||
|
с чего мне скучать по крессентии если она сидит напротив
|
|||
|
|
|||
|
### Английский текст:
|
|||
|
>Вывод в консоли для английского текста (140 эпох обучения):
|
|||
|
|
|||
|
![](https://sun9-80.userapi.com/impg/c4PAhbmW2IwypFAx7CXdGgcLVzGosYGaVZggNw/b30mnuCCLco.jpg?size=696x116&quality=96&sign=93c7122a9ea7e2f83e03ccbf5b71a4e6&type=album)
|
|||
|
|
|||
|
*. . .*
|
|||
|
|
|||
|
![](https://sun9-73.userapi.com/impg/98igC5fDLCshairi_j8pgUBYfo_-LiNq5Ccl9w/Y31tYsl6jd0.jpg?size=699x130&quality=96&sign=643d64065661da347b4eecda07b7efb5&type=album)
|
|||
|
|
|||
|
>Исходный текст:
|
|||
|
|
|||
|
The spiced coffee is sweet on my tongue, made with a generous dollop of honey. The way Crescentia always orders it.
|
|||
|
We sit on the pavilion like we have a thousand times before, steaming porcelain mugs cradled in our hands to ward off
|
|||
|
the chill in the evening air. For a moment, it feels just like every time before, a comfortable silence hanging in the
|
|||
|
dark air around us. I’ve missed talking to her, but I’ve missed this, too—how we could sit together and not feel the
|
|||
|
need to fill the silence with meaningless small talk. But that’s silly. How can I miss Cress when she’s sitting right in front of me?
|
|||
|
|
|||
|
>Сгенерированный текст:
|
|||
|
|
|||
|
Eng: The spiced coffee is sweet on my tongue made with a generous dollop of honey the way crescentia always orders it
|
|||
|
we sit on the pavilion like we have a thousand times before steaming porcelain mugs cradled in our hands to ward off
|
|||
|
the chill in the evening air for a moment it feels just like every time before a comfortable silence hanging in the
|
|||
|
dark air around us i’ve missed talking to her but i’ve missed this too—how we could sit together and not feel the
|
|||
|
need to fill the silence with meaningless small talk but that’s silly how can i miss
|
|||
|
|
|||
|
***
|
|||
|
**Вывод**:
|
|||
|
Сгенерированные тексты получились в точности похожими на оригинал (за исключением некоторых моментов), что говорит о правильно подобранной структуре рекуррентной нейронной
|
|||
|
сети и количестве эпох для обучения сети. Русский текст получился практически дословным как и английский, только в английском немного съелся конец последнего предложения.
|
|||
|
|
|||
|
Для обеих моделей (для русского и английского текста) под конец обучения метрика точности модели достигла 1, а потери доведены до минимума.
|
|||
|
|
|||
|
|