python

Как сделать генератор цитат за час

  • вторник, 9 июня 2020 г. в 00:26:08
https://habr.com/ru/post/505780/
  • Python
  • Разработка мобильных приложений
  • Интернет-маркетинг
  • Поисковая оптимизация
  • Социальные сети и сообщества


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

Создать машину, которая работает как InspiroBot.me — легко!

Впервые о InspiroBot AI написал Techcrunch в 2015 году, рассказав, что такой инструмент хорошая замена человеческого труда по созданию философских постов для социальных сетей.

InspiroBot о себе заявляет: «Я — искусственный интеллект, призванный генерировать неограниченное количество уникальных вдохновляющих цитат для бесконечного обогащения бессмысленного человеческого существования.» Другими словами, автор бота — Педер Джоргенсен (Peder Jørgensen), загрузил словарь и фоновые картинки, чтобы генерировать бесконечное количество цитат.

Вот как это работает, по рассказу автора блога в техфоруме Steemit.com:
Слова разделены на семантические группы и прописаны виды фраз по смыслу, например:
1) <strive-to><time/occasion> — <стремление к> <результату> <время/событие>
2)<as-relationship> — <причина> <объект1> <к> <глагол> <объект2> <как отношение> <описание> <сущность2> <как есть> <объект1>

Для подбора таких грамматических структур существует разные инструменты, например: Link Grammar Parser, где есть циклические отношения между словами — правила синтаксиса. По такому же принципу работает корректор пунктуации в Word Office. Кроме того, есть словарь на английском языке — Word Net, где части речи сгруппированы в наборы синонимов.

Однако, в большинстве случаев фразы получаются смешными или просто абсурдными.
Например:
image

image

image

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

Инструкция по разработке бота — цитатника:

1 — Для начала в Google Excel строем генератор фраз из заданных фрагментов. (Такой же механизм используют маркетологи для создания ключевых фраз для SEO.) Прописываем структуру предложения, разделяя слова по смыслу. Заполняем синонимы, которые подходят под фразу в нужной форме(падеже/времени и т.д.).

2 — После этого задаем комбинаторику выражений в виде индексов, как если бы пытались отгадать код от сейфа. Это действие не нужно делать в ручную, формулы можно подглядеть в Youtube. И вот текстовый результат — готовые мотивационные цитаты, так из 26 отдельных слов выходит 500+ уникальных выражений.

3 — Следующий шаг — работа с Python. Для этого скачиваем редактор VS Code. Там создаем файл с расширением — example.py, редактор автоматически покажет, что вы работаете теперь в питоновском исходнике. Обновите свой Python до версии 3.8, чтобы работали все библиотеки.

Вот весь код:
image

Дальше все разберем шаг за шагом:
Для работы с Google Excel нужен — “gspread”
Для функции рандома вводим “random”
Для работы с графикой вводим “PIL”
image

После подключаем Google API, чтобы получить данные из таблицы.
Для этого прописываем скоп ссылок:
image
и подключаем креденшелы.
Подробнее как подключить API можно ознакомиться тут.

Далее мы указываем лист, в которой находится таблица с данными:
image

В моем случае я назвала лист с фразами в Excel — “Quotes”
image

Возвращаемся обратно к скрипту.
Сперва надо создать объект, куда запишем все ранее сгенерированные фразы из наших таблиц:
image

Следом нужно в цикле получить все строки со склейками:
image

Теперь можем запустить скрипт и в консоли вы должны увидеть, что-то подобное, но уже с вашими подборками фраз:
image

Так, получив все необходимые данные, теперь берем изображение и кладем в ту же директорию, где лежит скрипт:
image

Потом берем из директории любое изображение с функцией рандома:
image

Нужно еще скачать шрифты с кириллицей. Быстренько идем на google fonts и скачиваем любой понравившийся шрифт и кладем рядом, выбираем позицию для изображения(250, 250 можно чуть выше, ниже, как хотите):
image

Берем готовую цитату и массива по рандомному индексу:
image

Функция draw нарисует текст в указанной позиции с нужным шрифтом
image

Далее просто прописываем show, чтобы на выходе получить изображение
и сохраняем изображение в той же директории.
image

Запускаем и смотрим результат:
image
Вуаля!

Уверена, используя инструкцию, у Вас получится создать такого бота меньше, чем за час!
(P.S. Интересно, какую цитату вам выдаст непредсказуемый Inspirobot, делитесь в комментариях!)


Авторы статьи: Амина Эмерсон и Фамил Гаджиев