Использование искусственного интеллекта для создания кратких обзоров книг, которых пока нет ...

В этом посте я покажу вам, как можно использовать искусственный интеллект (AI) и машинное обучение (ML), чтобы помочь вам начать работу над романом, который вы всегда хотели написать. Я начну с краткого описания того, как компьютеры обрабатывают текст с помощью ИИ. Затем я опишу, как я настроил модель машинного обучения под названием GPT-2, чтобы генерировать новые резюме сюжета, и дам инструкции о том, как вы можете создать для себя несколько новых сюжетных идей.

Это вторая часть моей серии статей о том, как ИИ можно использовать в творческих целях. Первая часть о том, как использовать ML для создания абстрактного искусства, доступна здесь.

Задний план

Обработка естественного языка

Обработка естественного языка (NLP) - это область лингвистики и компьютерных наук, изучающая, как машины с их компьютерными языками, такими как Java и Python, могут общаться с людьми с их естественными языками, такими как английский и суахили. Одним из первых сторонников обучения компьютеров пониманию человеческого языка был Алан Тьюринг. Об этом он писал в 1950 году [1].

Мы можем надеяться, что машины в конечном итоге будут соревноваться с людьми во всех чисто интеллектуальных областях. Но с каких лучше всего начать? Даже это трудное решение. Многие думают, что лучше всего было бы очень абстрактное занятие, например, игра в шахматы. Также можно утверждать, что лучше всего снабдить машину лучшими органами чувств, которые можно купить за деньги, а затем научить ее понимать и говорить по-английски. - Алан Тьюринг, математик и компьютерный ученый

Текст в токены

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

Вы можете видеть, что четыре слова было, было, из и раз встречаются дважды, и в обоих случаях они получают одинаковое значение токена. В этой схеме слова с заглавной буквы, такие как Оно, получают другой токен, чем оно в нижнем регистре. Кроме того, знаки препинания, как и запятая, получают собственный токен. Вы можете прочитать о различных схемах токенизации в посте Шриниваса Чакраварти здесь.

Трансформеры

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

Введенный английский текст преобразуется в токены перед подачей в преобразователь. Внутри преобразователя токены кодируются во внутреннюю универсальную форму, а затем декодируются в испанские токены, которые преобразуются в испанские слова. Подробнее о трансформаторах читайте в этом посте Максима Алларда.

GPT-2

В 2018 году OpenAI создал систему под названием Generative Pretrained Transformer (GPT) [2]. Они объяснили, что большие успехи в задачах НЛП…

… Может быть реализовано путем генеративного предварительного обучения языковой модели на разнообразном корпусе немаркированного текста с последующей точной настройкой для каждой конкретной задачи. - Алек Рэдфорд и коллеги из OpenAI

Команда OpenAI в 2019 году создала улучшенную версию преобразователя под названием GPT-2 [3]. В этой статье они сказали ...

… Языковая модель с достаточными возможностями начнет учиться делать выводы и выполнять задачи, продемонстрированные в последовательностях естественного языка, чтобы лучше их предсказать, независимо от метода их выполнения. - Алек Рэдфорд и коллеги из OpenAI

Ниже представлена ​​диаграмма, на которой показаны основные компоненты GPT-2. Вместо использования токенов с отдельными значениями, GPT-2 использует вложения слов, которые представляют собой массивы из нескольких чисел для представления каждого слова. Это дает системе возможность улавливать более полное понимание слов.

Модель GPT-2 работает в три этапа:

  1. Начальное обучение - учится понимать язык в целом
  2. Тонкая настройка - учится выполнять конкретную задачу
  3. Подсказка - заставляет систему начать генерацию выходного текста.

Обратите внимание, что модель использует входные данные всех трех фаз при создании текста. Вы можете узнать больше о том, как работает GPT-2, в сообщении Джея Аламмара здесь.

PlotJam

PlotJam - это система, которую я создал, чтобы помочь писателям открывать новые истории. Используя модель GPT-2, которая была точно настроена с названиями и краткими содержаниями более 16 тысяч английских книг, PlotJam создает новые истории с названиями и краткими описаниями сюжетов. Вот схема, на которой показаны основные компоненты.

Подготовка текста к тонкой настройке

Источником точной настройки является Набор данных с кратким изложением книги Университета Карнеги-Меллона. Я подготовил данные, выделив только жанр, название и первую часть краткого изложения сюжета для каждой книги.

Вот пример исходных данных для одной из книг:

Wikipedia ID 1166383
Freebase ID /m/04cvx9
Book title White Noise
Book author Don DeLillo
Publication date 1985-01-21
Genres Novel, Postmodernism, Speculative fiction, Fiction
Plot summary
Set at a bucolic Midwestern college known only as The-College-on-the-Hill, White Noise follows a year in the life of Jack Gladney, a professor who has made his name by pioneering the field of Hitler Studies (though he hasn’t taken German language lessons until this year). He has been married five times to four women and has a brood of children and stepchildren (Heinrich, Denise, Steffie, Wilder) with his current wife, Babette. Jack and Babette are both extremely afraid of death; they frequently wonder which of them will be the first to die. The first part of White Noise, called "Waves and Radiation," is a chronicle of contemporary family. ...

Вот код Python для предварительной обработки резюме книги.

Вот одна из записей из набора данных сводки книги CMU после предварительной обработки.

GENRE: Novel, Postmodernism, Speculative fiction, Fiction TITLE: White Noise PLOT: Set at a bucolic Midwestern college known only as The-College-on-the-Hill, White Noise follows a year in the life of Jack Gladney, a professor who has made his name by pioneering the field of Hitler Studies (though he hasn't taken German language lessons until this year). He has been married five ...

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

После предварительной обработки текста краткого содержания книги я использовал его для точной настройки модели GPT-2. Я выполнил тонкую настройку для 10 000 шагов, которых, кажется, достаточно, чтобы система могла сгенерировать новые сводки сюжетов. Вот исходный код:

Создание графиков

После точной настройки модели ее можно использовать для создания новых графиков, вызвав функцию генерации. Я передаю подсказку «ЖАНР:», которая сигнализирует системе о необходимости создания заголовков и сюжетов истории со случайным жанром.

Вот результат, показывающий новый сюжет, синтезированный GPT-2:

GENRE: Mystery TITLE: Deadright’s Corner PLOT: The novel’s protagonist is Edward Wells, a young policeman who is given the job of turning around the case of a manslaughter in which a man killed his wife’s valet – the killing was clearly premeditated – after which he is induced to investigate the matter further. It is during this investigation that Wells discovers the terms of a secret contract between the police and a deceased man's ...

В ПОРЯДКЕ. Вот. Первая новая история. Фильм в жанре детективов под названием «Уголок мертвого права». И, похоже, это криминальная история с молодым полицейским в роли главного героя. Неплохо.

Проверка на оригинальность

Система GPT-2 разработана, чтобы «только начать писать» в стиле данных, используемых для точной настройки. При появлении запроса с префиксом «ЖАНР:» он выберет один из жанров, которые он видел при тонкой настройке, а затем создаст заголовок и краткое изложение сюжета. Однако нет гарантии, что он всегда будет создавать новый заголовок и уникальный сюжет. Иногда он выбирает существующее название и может или не может придумать сюжет, похожий на опубликованное произведение.

Я отфильтровываю явно переработанные истории, обрабатывая результаты, чтобы увидеть, является ли заголовок уникальным или нет. Я проверяю ранее использованные заголовки в наборе данных CMU, а также заголовки с сайта обзора книг Goodreads и базы данных IMDB, в которой есть заголовки для фильмов и телешоу. Вот диаграмма, которая показывает количество заголовков в этих трех наборах данных.

Вы можете видеть, что база данных IMDB имеет огромный список заголовков по сравнению с набором данных CMU и Goodreads. Вот фрагмент кода, который показывает, как я накапливаю список заголовков, которые будут использоваться для проверки дубликатов.

Обратите внимание, что я удаляю статьи «The» и «A» из заголовка заголовков. Если в GPT-2 появится название «Великий Гэтсби», мы сочтем это обманом и отфильтруем. Также обратите внимание, что список названий не является исчерпывающим. Существует множество опубликованных книг, на которых нет страниц в Википедии, обзоров на Goodreads, или по которым нет фильмов или телешоу. Поэтому, если вы видите сюжет, который вам нравится, сначала проведите небольшое исследование, прежде чем писать свой шедевр, чтобы убедиться, что он действительно уникален.

Не повторяйся. Не повторяйся.

Иногда текстовый генератор GPT-2 застревает на определенной фразе и повторяет ее несколько раз в кратком изложении сюжета. В этом примере вы можете увидеть некоторое повторение.

GENRE: Science Fiction TITLE: Baseline Behavior PLOT: In the preface, Guy Sager explains his term for the branch of psychology that emphasizes the individual’s sense of themselves vs. the collective and their social relations. He believes that the individual’s sense of themselves can be affected by the environment (via the “environment in which they find themselves”). In other words, the individual’s sense of themselves can be saved by the environment (via their …

Обратите внимание, как фраза «самосознание индивида» повторяется трижды. Я написал небольшую функцию, которая ищет этот артефакт, чтобы отфильтровать повторяющиеся записи. Вот код Python.

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

Создание новых историй в Google Colab

Вот инструкции по запуску PlotJam. Он работает как Google Colab, бесплатный сервис для экспериментов с ИИ с использованием высокопроизводительного графического процессора. Обратите внимание, что требуется учетная запись Google.



  1. Нажмите ссылку PlotJam выше.
  2. Войдите в свою учетную запись Google, если вы еще не вошли в нее.
  3. Нажмите первую кнопку Выполнить ячейку (наведите указатель мыши на значок [] и нажмите кнопку воспроизведения). Появится предупреждение о том, что этот блокнот не был создан Google.
  4. Нажмите Все равно запустить, чтобы инициализировать систему. Загрузка наборов данных и настройка предварительно обученной модели GPT-2 занимает около 5 минут.
  5. Выберите, какой жанр вы хотите попробовать, и нажмите вторую кнопку Выполнить ячейку, чтобы создать несколько новых сюжетов.
  6. Выберите понравившуюся историю и нажмите третью кнопку Выполнить ячейку, чтобы сгенерировать пять вариантов выбранного сюжета.

Вы можете видеть, что каждый из вариантов сюжета начинается с одного и того же жанра и названия, но отличается тем, как разворачивается краткое содержание сюжета.

Будущая работа

Система PlotJam основана на «большой» модели GPT-2. Эта модель с 774 миллионами параметров работает в системе Google Colab. Дальнейшая работа будет заключаться в использовании «сверхбольшой» модели с 1,6 миллиардами параметров, которая может дать лучшие результаты. OpenAI недавно выпустила бета-версию своей модели GPT-3, которая, по их утверждениям, имеет 175 миллиардов параметров. Это, вероятно, еще лучше помогло бы составить краткое изложение сюжета.

Благодарности

Я хотел бы поблагодарить Дженнифер Лим за ее помощь и отзывы по этому проекту.

Исходный код

Весь исходный код этого проекта доступен на GitHub. Исходники выпущены под лицензией CC BY-NC-SA.

использованная литература

[1] А. М. Тьюринг, «Вычислительные машины и интеллект» Mind. 49: 433–460, октябрь 1950 г.

[2] А. Рэдфорд, К. Нарасимхан, Т. Салиманс и И. Суцкевер, «Улучшение понимания языка с помощью генеративного предварительного обучения», июнь 2018 г.

[3] А. Рэдфорд, Дж. Ву, Р. Чайлд, Д. Луан, Д. Амодеи и И. Суцкевер. «Языковые модели - это многозадачные учащиеся без учителя», февраль 2019 г.

Приложение A: Пример вывода

Вот несколько «отобранных» сэмплов с сайта PlotJam.

GENRE: Historical fiction, Historical novel TITLE: Banner in the Storm PLOT: The story begins with Bertie finding himself at sea with the second Continental Spice Company. The story follows him as he joins the company, and encounters some of the Continental crew, including Captain Harvey Hatcher, a former Ballista, and Professor Appleby, who has joined the company to search for the Northwest Passage. Hatcher and Appleby have a small sailboat that is quite beat up. They set out to sea in a stormy sea with a group of American and ...
GENRE: Science Fiction TITLE: Faso PLOT: The novel opens in a post-apocalyptic Southern California, in a hellish world shattered by nuclear war decades before. Fifteen-year-old Alex Hunter and his ten-year-old friend Sean Collins go to visit a mysterious old building called the Basement. The Basement is an old bunker owned by the U.S. military that is filled with ancient artifacts and military technology. Alex and Sean are separated as they are pursued by a horde of evil ...
GENRE: Crime Fiction TITLE: Physical Damage PLOT: The police report finding a bloody scene of apparent murder, but do not find any suspects. The case becomes more complicated when two bodies are found wearing the same cologne and gloves. The case becomes more personal for Detective Chief Inspector Alan Banks when he is called to a murder scene by two of his colleagues, both of whom are lying in their own ...

Чтобы получить неограниченный доступ ко всем статьям на Medium, станьте участником за 5 долларов в месяц. Не-члены могут читать только три закрытых истории каждый месяц.