### Задание Выбрать художественный текст(четные варианты – русскоязычный, нечетные – англоязычный)и обучить на нем рекуррентную нейронную сеть для решения задачи генерации. Подобрать архитектуру и параметры так, чтобы приблизиться к максимально осмысленному результату. Далее разбиться на пары четный-нечетный вариант, обменяться разработанными сетями и проверить, как архитектура товарища справляется с вашим текстом. Вариант 1: первостепенно - английский текст. Кооперироваться, впрочем, не с кем. ### Запуск программы Файл lab7.py содержит и запускает программу, аргументов и настройки ~~вроде~~ не требует. ### Описание программы Программа представляет собой консольное приложение-инструмент для работы с моделями. Она может создавать и обучать однородные модели для разных текстов. В файлах хранятся два текста: англоязычный data.txt (Остров сокровищ) и русскоязычный rus_data.txt (Хоббит). Также там хранятся две сохранённые обученные модели: * model_eng - модель, обученная на английском тексте. На текущий момент 27 эпох обучения. * model_rus - модель, обученная на русском тексте. На текущий момент 12 эпох обучения. Обучение проходило 1 день. В программе необходимо выбрать загружаемый текст и соответствующую модель, в данный момент подключается русскоязычная модель. Программа содержит методы пересоздания модели и дообучения модели (передаётся модель и количество эпох дообучения). Оба метода отключены и могут быть подключены обратно при необходимости. После возможных пересоздания и дообучения моделей программа запрашивает текст-кодовое слово, которое модели будет необходимо продолжить, сгенерировав свой текст. Сама модель имеет следующую архитектуру: * слой, преобразующий слова в векторы плотности, Embedding с входом, равным числу слов, с выходом 100, и с длиной ввода, равной длине максимального слова. * слой с блоками долгой краткосрочной памятью, составляющая рекуррентную сеть, LSTM со 150 блоками. * слой, задающий степень разрыва нейронных связей между соседними слоями, Dropout с процентом разрыва 15. * слой вычисления взвешенных сумм Dense с числом нейронов, равным числу слов в тексте и функцией активации 'softmax' ### Результаты тестирования По результатам дневного обучения можно сказать следующее: Модель успешно генерирует бессмысленные последовательности слов, которые либо состоят из обрывков фраз, либо случайно (но достаточно часто) складываются в осмысленные словосочетания, но не более. Примеры генераций (первое слово - код генерации): Модель, обученная на 'Острове сокровищ', 27 эпох обучения: >ship that he said with the buccaneers a gentleman and neither can read and figure but what is it anyway ah 'deposed' that's it is a > >chest said the doctor touching the black spot mind by the arm who is the ship there's long john now you are the first that were > >silver said the doctor if you can get the treasure you can find the ship there's been a man that has lost his score out he Модель, обученная на 'Хоббите', 12 эпох обучения: >дракон и тут они услыхали про смога он понял что он стал видел и разозлился как слоны у гэндальфа хороши но все это было бы он > >поле он не мог сообразить что он делал то в живых и слышал бильбо как раз доедал пуще прежнего а бильбо все таки уж не мог > >паук направился к нему толстому из свертков они добрались до рассвета и даже дальше не останавливаясь а именно что гоблины обидело бильбо они не мог ничего Итого: Даже такая простая модель с таким малым количеством эпох обучения может иногда сгенерировать нечто осмысленное. Однако для генерации нормального текста необходимо длительное обучение и более сложная модель, из нескольких слоёв LSTM и Dropout после них, что, однако, потребовало бы вычислительные мощности, которых у меня нет в наличии. Иначе следует взять очень маленький текст.