Этим летом билайн совместно с Brand Analytics представили рейтинг компаний и институтов, занимающихся искусственным интеллектом в России, который составила нейросеть. Рейтинг одновременно учитывает и медийную активность игроков, и внимание к теме и компаниям со стороны СМИ, и «народное» обсуждение в социальных медиа, в данном случае — в Telegram-каналах. Отметим, что публикация рейтинга не преследовала какие-либо коммерческие цели и не была направлена на продвижение каких-либо компаний или услуг.

Как же нам удалось создать «нейронку», составившую рейтинг компаний, занимающихся ИИ? О внутренней кухне работы над проектом рассказывает Александр Авилов, тимлид в DS-команде дирекции по искусственному интеллекту и цифровым продуктам билайн бизнес.

Идея проекта

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

На каком языке они говорят?

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

Согласитесь, что фраза «создайте искусственный интеллект, который оценивает искусственный интеллект» звучит довольно абстрактно и тем самым вызывает много вопросов. 

Пришлось поработать с формулировкой и добавить щепотку технической экспертизы. Как итог: «создайте ранжирующую модель для компаний, которые занимаются выполнением задач, связанных с машинным обучением и ИИ».  

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

  1. Какие объекты мы ранжируем?
  2. Какие данные мы используем для ранжирования?
  3. Что мы используем в качестве целевой переменной для ранжирования?

1.png

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

Определение списка компаний

На самом деле, это самый простой пункт из представленных. За основу мы взяли список российских компаний, заявляющих о работе с искусственном интеллектом на рынке, согласно данным из открытых источников. В конечном итоге полученный список пришлось незначительно отредактировать: отсечь компании, которые основную деятельность ведут за рубежом (пусть и имеют представительство в РФ), а также сгруппировать компании в одну, если они были тесно связаны (из ярких примеров — «Сколково» и «СколТех»). 

Выбор источника данных

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

Нам нужны новости, которые:

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

2.png

Нашим основным партнером и поставщиком данных стала компания Brand Analytics. Это российская IT-компания и разработчик одноименной системы мониторинга и анализа социальных медиа и СМИ. Именно их данные во многом и стали залогом успеха решения исходной задачи.

Поскольку построение системы требовало быстрого и легковесного решения, мы захотели реализовать следующие этапы:

  • удаление стоп-слов и лишних символов из текстов;
  • приведение слов в текстах к начальной форме;
  • определение текстов, похожих друг на друга;
  • удаление текстов, близких к другим.

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

Целевая переменная

Итак, на данном этапе у нас есть список компаний и таблица с новостями, которые относятся к тематике ИИ и машинного обучения. Осталось определить ключевой элемент — целевую переменную для ранжирования. На самом деле, это задача крайне нетривиальная. В информационном поле нет данных о том, что какая-то компания «лучше» другой в общем смысле. Есть только объективная информация: прибыль компаний, по которой их можно ранжировать. Но что, если использовать линейную комбинацию признаков на основе такой объективной информации? То есть, учитывая позицию компаний по каждому из отдельных показателей, получить рейтинг компании в общем по «номинации». Основным вопросом в данном случае является определение важности каждой конкретной категории. В этом вопросе мы хотели в том числе опереться и на экспертизу профессионального сообщества, основываясь на опыте специалистов билайн. После получения данной информации обучение итоговой модели не составило больших проблем. 

Получение признаков

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

3.png

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

Отдельным важным процессом является валидация полученных данных. Основной вопрос, который при этом возникает: как мы получили данное значение признака? Очевидно, что здесь не обойтись без ручного аналитического разбора. Для этого мы реализовали отдельные функции, с помощью которых в рамках категории в номинации и конкретной компании можно было бы наглядно показать, какие именно тексты новостей были использованы для получения конкретного значения признака. 

Формирование итогового рейтинга

При наличии основных элементов построение модели машинного обучения не составило больших проблем. Признаки были предварительно масштабированы в виду особенности их распределения, особенно в категориях, связанных с суммами. Изначальные веса, которые мы получили на этапе сбора информации от экспертов, отдельно масштабировать не пришлось, так как они были сформированы в небольшом промежутке значений (от 0 до 2). Таким образом, для каждой номинации формируется своя линейная модель, которая по входу (значениям категорий в номинации) выдает для компании некоторое число, которое и используется как итог для рейтинга. Для удобства все выходы моделей для компаний также были масштабированы (в смысле рейтинга как итога удобно воспринимать числа в некотором более понятном аудитории диапазоне, например, от 0 до 100). 

Все описанные ранее этапы можно представить следующей схемой:

4.png

Куда мы движемся?

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

Обратная связь по итогам публикации

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

Отдельно стоит отметить, что рейтинг получил хороший охват (аудитория около 100 млн в СМИ и реальные просмотры около 1 млн в Telegram) и в основном положительную реакцию в медиа. 

Эпилог

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

Полный текст читайте на нашей странице на «Хабре»

Идея проекта На каком языке они говорят? Определение списка компаний Выбор источника данных Целевая переменная Получение признаков Формирование итогового рейтинга Куда мы движемся? Обратная связь по итогам публикации Эпилог