Как мы используем API Giphy для тематических гифок в футбольном статус-боте

Наш отдел аналитики в свободное время выращивает бота, который находит интересные закономерности в футбольных статистических данных и пишет про это статусы у нас на Sports.ru. Робота зовут FRED, получается у него примерно так: imageТворчество робота пока не отличается разнообразием (всего пара десятков типов фактов), но каркас уже готов. Базовая модель такая:

1. Раз в час запускается Python-скрипт, который анализирует ближайшие футбольные матчи, если они есть.

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

Каждому типу фактов приписана своя функция интересности, которая зависит от содержания факта (голы интереснее карточек и замен), его экстремальности (забивать десять игр подряд интереснее, чем пять) и популярности команд и турниров на сайте.

3. Из всех фактов выбираются три самых интересных, которые постятся через API в ленту статусов Sports.ru и в твиттер. В общие ленты Sports.ru (со всеми новыми статусами) могут попасть только особо интересные факты, остальные видят только подписчики.

Улучшение с помощью «добивок»

Первые опыты робота выглядели неубедительно: однообразные факты выглядели скучными (тем более, что временами Фред забирается куда-нибудь в гибралтарский футбол). Ему определенно не хватало эмоций и разнообразия.

Для начала мы решили добавить к фактам «панчлайн»: слово-добивку в конце, подчеркивающее эмоцию высказывания. Эту манеру в футболе популяризовала компания Opta, поставляющая статистические данные в том числе и для Sports.ru. Разумеется, аккаунты Opta ведутся реальными людьми.

У нас есть девять категорий возможных панчлайнов. Каждому типу факта соответствует своя категория, но иногда берутся добивки и других типов, так создается дополнительный комический эффект. Сценаристы знают, что интересная сцена — это та, в которой происходит не то, что ожидал зритель, но при этом сохраняется целостность мира произведения. Чем больше разрыв между ожиданием и реальным исходом, тем интереснее. Робот, разумеется, не постит совсем случайные слова (тогда целостность пропадает и становится слишком очевидной механическая природа высказывания), но иногда написать «А смысл?» после фразы про серию побед «Спартака» бывает довольно смешно.

Улучшение с помощью гифок

Но мы хотели сделать робота еще интереснее — хотя бы потому, что он пока недостаточно умный, чтобы развлекать только статистикой. В статусах на Sports.ru удобно смотреть гифки, поэтому мы решили иллюстрировать факты с их помощью.Тематические гифки, впрочем, найти почти невозможно (их почти нет даже про игроков чемпионата России), поэтому мы вновь обратились к эмоциям высказываний.

Фиксированный список гифок аналогично словарю панчлайнов, впрочем, делать не хотелось. Гифки быстро приедаются, их долго собирать и нужно регулярно менять — значит, такое решение плохо масштабируется (в идеале робот должен работать для разных стран и на разных языках). К счастью, есть проект Giphy с большой базой хорошо протегированных и подходящих нам по формату гифок — и, что особенно прекрасно, у Giphy есть свое бесплатное API.

Сейчас робот, размещая статус, сопровождает его чем-то случайным из свежих гифок — например, с тегами fail или wtf. Сочетание факта, панчлайна и гифки позволяет чаще генерировать статусы, оказывающиеся высказываниями сами по себе. Например, такие:

image

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

image

Что мы планируем делать с Фредом дальше:

1. Серьезно расширить количество возможных фактов.

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

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

С радостью ответим на вопросы и примем предложения по развитию статус-бота.

© Habrahabr.ru