Креативный помощник AI

Создание генератора стихов с использованием вложений слов

Руководство по созданию генератора стихов AI на основе библиографии любимого автора.

С появлением в последнее время новых и более сложных языковых моделей иногда кажется непосильной задачей сделать первые шаги в мире обработки естественного языка.

Цель этого руководства - предоставить довольно простой проект, генератор стихотворений, который поможет вам познакомиться с миром НЛП с помощью всего лишь одной техники: встраивания слов.

Итак, что такое вложения слов?

Вложения слов - это n-мерные векторные представления слов, которые каким-то образом фиксируют их значение на основе контекста, существующего в корпусе. Другими словами: слова, которые используются одинаково в определенном корпусе (совокупности текстов), будут иметь похожие векторы.

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

Сходство используется для количественной оценки сходства между двумя векторами. Он вычисляет косинус угла между ними, что приводит к значению 1 для векторов с той же ориентацией и 0, когда угол равен 90 °.

Мы будем использовать это свойство для поиска сходства между словами и предложениями.

Алгоритм

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

В этом конкретном руководстве я использую стихи Эдгара Аллана По.

Воспоминание данных

Для начала нам нужно собрать стихи, которые станут источником для нашего проекта. Для этого мы создадим веб-парсер на Python, который будет собирать стихи конкретного писателя (в моем случае Эдгара Аллана По) с сайта mypoeticside.com и сохранять их в .csv файл.

Очистка и подготовка данных

Мы создадим функцию, которая берет наш ранее созданный файл .csv и разбивает стихи на стихи на основе выбранного нами регулярного выражения. Затем мы также удалим и заменим некоторые нежелательные символы из стихов (например, двоеточия), чтобы полученное стихотворение выглядело более связным и связным.

Мы сохраним стихи в новом файле .csv.

Генератор стихотворений

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

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

Мы будем использовать заранее подготовленные векторы из библиотеки Spacy, в частности модель «en_core_web_md», которая была обучена на наборе данных Common Crawl. Мы также вычислим сходство, используя ту же библиотечную функцию.

Наконец, мы выбираем стих с наивысшим баллом и повторяем этот процесс, пока стихотворение не будет завершено.

Форматирование стихотворения

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

Результаты

Я лично предпочитаю создавать короткие стихотворения из 4 стихов, чтобы свести к минимуму вероятность того, что результат будет непоследовательным.

Вот некоторые из результатов, которые мне понравились больше всего:

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

Надеюсь, вам понравилось это руководство, и не стесняйтесь связываться со мной в Linkedin или Twitter.