Как мы используем API Giphy для тематических гифок в футбольном статус-боте
Наш отдел аналитики в свободное время выращивает бота, который находит интересные закономерности в футбольных статистических данных и пишет про это статусы у нас на Sports.ru. Робота зовут FRED, получается у него примерно так: Творчество робота пока не отличается разнообразием (всего пара десятков типов фактов), но каркас уже готов. Базовая модель такая:
1. Раз в час запускается Python-скрипт, который анализирует ближайшие футбольные матчи, если они есть.
2. Скрипт считает все возможные факты для команд, играющих в выбранных матчах, используя отчеты по командам и игрокам из нашей базы.
Каждому типу фактов приписана своя функция интересности, которая зависит от содержания факта (голы интереснее карточек и замен), его экстремальности (забивать десять игр подряд интереснее, чем пять) и популярности команд и турниров на сайте.
3. Из всех фактов выбираются три самых интересных, которые постятся через API в ленту статусов Sports.ru и в твиттер. В общие ленты Sports.ru (со всеми новыми статусами) могут попасть только особо интересные факты, остальные видят только подписчики.
Улучшение с помощью «добивок»
Первые опыты робота выглядели неубедительно: однообразные факты выглядели скучными (тем более, что временами Фред забирается куда-нибудь в гибралтарский футбол). Ему определенно не хватало эмоций и разнообразия.
Для начала мы решили добавить к фактам «панчлайн»: слово-добивку в конце, подчеркивающее эмоцию высказывания. Эту манеру в футболе популяризовала компания Opta, поставляющая статистические данные в том числе и для Sports.ru. Разумеется, аккаунты Opta ведутся реальными людьми.
У нас есть девять категорий возможных панчлайнов. Каждому типу факта соответствует своя категория, но иногда берутся добивки и других типов, так создается дополнительный комический эффект. Сценаристы знают, что интересная сцена — это та, в которой происходит не то, что ожидал зритель, но при этом сохраняется целостность мира произведения. Чем больше разрыв между ожиданием и реальным исходом, тем интереснее. Робот, разумеется, не постит совсем случайные слова (тогда целостность пропадает и становится слишком очевидной механическая природа высказывания), но иногда написать «А смысл?» после фразы про серию побед «Спартака» бывает довольно смешно.
Улучшение с помощью гифок
Но мы хотели сделать робота еще интереснее — хотя бы потому, что он пока недостаточно умный, чтобы развлекать только статистикой. В статусах на Sports.ru удобно смотреть гифки, поэтому мы решили иллюстрировать факты с их помощью.Тематические гифки, впрочем, найти почти невозможно (их почти нет даже про игроков чемпионата России), поэтому мы вновь обратились к эмоциям высказываний.
Фиксированный список гифок аналогично словарю панчлайнов, впрочем, делать не хотелось. Гифки быстро приедаются, их долго собирать и нужно регулярно менять — значит, такое решение плохо масштабируется (в идеале робот должен работать для разных стран и на разных языках). К счастью, есть проект Giphy с большой базой хорошо протегированных и подходящих нам по формату гифок — и, что особенно прекрасно, у Giphy есть свое бесплатное API.
Сейчас робот, размещая статус, сопровождает его чем-то случайным из свежих гифок — например, с тегами fail или wtf. Сочетание факта, панчлайна и гифки позволяет чаще генерировать статусы, оказывающиеся высказываниями сами по себе. Например, такие:
В худшем случае робот, словно сорвавшийся с цепи SMM-менеджер, украшает ленту случайными гифками. Возможно, с развитием собственно извлечения закономерностей мы откажемся от дополнительных украшений, но пока гифки неплохо стимулируют как минимум сотрудников, занимающихся проектом.
Что мы планируем делать с Фредом дальше:
1. Серьезно расширить количество возможных фактов.
2. Использовать для обучения бота активность его подписчиков, которые комментируют, лайкают и репостят удачные статусы.
3. Размножить его для наших проектов в разных странах, учитывая региональные особенности.
С радостью ответим на вопросы и примем предложения по развитию статус-бота.