Я обучил модель LSTM писать, как J.K. Роулинг

Прошло ровно 13 лет и 9 дней с момента выхода седьмой и последней книги о Гарри Поттере. Чтобы узнать о последних приключениях мальчика-волшебника, вам придется полагаться на воображение искусственного интеллекта (ИИ).

Я обучил рекуррентную нейронную сеть LSTM на первых трех книгах о Гарри Поттере, а затем попросил ее создать главу на основе того, что она узнала. Вот предварительный просмотр главы.

Примечание: я добавил немного форматирования, чтобы облегчить чтение.

Гарри был его глазами дракона. Он сказал, что шторм под последним визгом пронесся по всей гриффиндорской стене, постучал рулевым колесом по травянистым столам и пошел очень сам, такой егерь.

«Я в порядке», - сказал Гарри, плашмя на груди устремившись на поле для квиддича. Он встал и тихо упал через коридор, выглядя подавленным. Шея Гарри казалась слишком надуманной. Он почувствовал, как что-то истощило Гермиону.

«Но это не потому, что не все люди, поэтому я должен настаивать». Единственный стал еще в одиннадцать часов, когда гиппогриф отскочил от земли, пытаясь убить свою интересность везде, где он стонал, атаковал.

«Что ж, я знаю старые уроки, Гарри. Вы все больше искры, и они сказали правду. Я полагаю, что к единственному вечеру вздоха я, скорее всего, не смогу ответить. Косолапс раскрыл руку и выдернул подбородок. Сириус спросил Волан-де-Морта, хорошо ли он играл, и люди, которые еще довольны этим письмом, говорят.

«Вы послали меня о том, как не ставить эти классы в свои учебники в Гриффиндоре, чем о свидетелях в самом деле. Бери, чушь, - сказал Гарри, чтобы карта оставалась открытой, но вытащил дверь. «Ты дурак, Гарри? Не могли бы вы сделать все возможное, чтобы добавить Маховик времени? " - сказала Гермиона, сжав кулак.

«Я просто посмотрю на головокружительное, слишком знакомое имя, прежде чем меч появится на сцене». Поймал в них и попытался быстро закричать в шкирку небольшой хлоп, и впился взглядом в танк. «Очаровательно», - сказал он довольно глубоко, потому что Гарри тихо вскочил наверх, чтобы начать во всех направлениях.

Несмотря на бессмысленный сюжет и грамматические ошибки, приятно видеть, как LSTM генерирует текст в стиле Гарри Поттера Дж. К. Роулинг. Но, как бы впечатляюще это ни было, результаты определенно носят развлекательный, а не полезный характер.

Фон

Что такое RNN?

Рекуррентная нейронная сеть (RNN) отличается от других нейронных сетей, поскольку она имеет память, в которой хранится информация обо всех слоях, которые она обработала до сих пор, и вычисляет следующий слой на основе этой памяти.

Что такое LSTM?

Сеть Long Short-Term Memory (LSTM) - это модифицированная версия RNN, которая упрощает запоминание прошлых данных в памяти.

Если вы хотите узнать больше о RNN и LSTM, вы можете обратиться к этой статье.

Как я это сделал

Чтобы следовать этому руководству, вы можете найти код на моем GitHub, нажать зеленую кнопку Код, а затем выбрать Загрузить ZIP.

После загрузки кода найдите zip-файл в папке загрузок и разархивируйте его.

Сбор и подготовка данных

Я поскреб текст из первых трех книг о Гарри Поттере и объединил его. Затем я написал небольшой фрагмент кода, чтобы удалить ненужный текст, например номера страниц. Вот фрагмент кода:

Вы также можете настроить образец текста, открыв файл input.txt, который находится по адресу word-rnn-tensorflow ›data› harry-potter ›input.txt. Удалите весь текст в файле, затем замените его образцом текста, который хотите использовать. Убедитесь, что вы сохранили файл после внесения изменений.

Обучение модели

После сбора и подготовки данных я использовал предварительно обработанный текст в качестве входных данных для модели LSTM. Образец текста - это текст, который модель прочитает и будет использовать в качестве вдохновения для создания текста.

Предполагая, что у вас уже установлен TensorFlow, пора обучить модель. Для этого вы можете просто запустить в Терминале следующий код:

python train.py

Обучение может занять несколько часов, особенно если ваш образец текста длинный. Чем длиннее образец текста, тем лучше будет результат, но, конечно, обучение модели займет больше времени. В моем случае образец текста о Гарри Поттере состоял из 276 592 слов, а обучение модели заняло около 8 часов.

Производство письма

Как только ваша модель завершит обучение, пора писать. По умолчанию количество слов, которые будет выдавать модель, равно 300. Вы можете изменить это, сначала открыв файл sample.py, который находится внутри потока word-rnn-tensorflow. -мастер папка. Затем внутри файла найдите строку кода, в которой говорится:

parser.add_argument('-n', type=int, default=300, help='number of words to sample')

Здесь вы можете изменить значение по умолчанию на количество слов, которое должна выводить модель, скажем, 1000.

parser.add_argument('-n', type=int, default=1000, help='number of words to sample')

После внесения изменений сохраните файл и запустите в Терминале следующий код:

python sample.py

И Voilà, через пару минут компьютер выдаст красивый текст. После небольшого форматирования он готов к публикации.

Спасибо за прочтение!

  • Следуйте за мной на Medium, чтобы узнать больше
  • Давайте подключимся к LinkedIn