Как создавался умный агрегатор новостей LifeLines
Рассказываем, как IT-компания Технологика и российский стартап запустили мобильный агрегатор новостей, который опередил своё время.
Содержание
Идея и челлендж проекта
Изначально идея проекта была достаточно простой – создать удобный агрегатор, который собирал бы новости со всей сети в единое пространство. Чтобы пользователь мог получить максимально полную картину происходящего в мире, не прыгая с одной площадки на другую. Нужно было учитывать и то, что каждый новостной источник освещает события по-своему.
Именно здесь и начинает свой путь задумка проекта LifeLines – освещать все мировые события в максимально объективном и непредвзятом ключе, давая читателю возможность формировать свою точку зрения на происходящее.
Другими словами, LifeLines – это агрегатор новостей, который стремится предоставить пользователю широкий спектр возможностей для работы с поступающей информацией, начиная от обзора одного и того же новостного повода в разных СМИ, заканчивая возможностью настройки новостной ленты «под себя».
Мы-независимый проект и делаем то, что нам интересно и не заинтересованы в продвижении какой-то конкретной точки зрения. Мы заинтересованы лишь в одном - качественно подать пользователю информацию. И уже его задача - решить, какая у него точка зрения по данному вопросу. Человек должен сам формировать её на основе нескольких источников.
Вадим Питерский, управляющий проекта LifeLines
Фичи агрегатора LifeLines
Резонансная новостная лента. Лента стремится донести пользователю наиболее важные события, анализируя, сколько упоминаний в СМИ они произвели.
Персональная новостная лента. Пользователи, которым по какой-то причине не нравится алгоритм резонансной ленты, могут сформировать свою ленту, включив в нее желаемые источники, из базы LifeLines.
Возможность дополнительной персонализации лент новостей, указав интересующие темы и географию. Также можно исключить из показа определенные источники или новостные теги.
Хронология новостей - возможность отследить, как развивалось событие во времени.
Справочная информация. Возможность, не выходя из приложения получить справочную информацию об исторических событиях и персоналиях, упомянутых в статье.
Telegram-каналы как дополнительный источник оперативной и эксклюзивной информации. Новостная выдача из традиционных веб СМИ при возможности обогащается видео- и фото-информацией из Telegram-каналов.
Исследование рынка
Первым на рынок выводился мобильный продукт и только после его запуска - веб версия продукта.
Анализ конкурентных проектов производится только среди новостных агрегаторов. Были проанализированы 2 группы конкурентов:
Крупные игроки вроде Mail.ru, Яндекс, Rambler.
Множество однотипных агрегаторов, предлагающих примерно один и тот же функционал.
В первой группе очевидным фаворитом является Яндекс, имеющий огромные мощности и самые продвинутые алгоритмы для решения задачи, аналогичной LifeLines. Однако у него нет своего мобильного приложения специально для новостей.
Первая группа конкурентов живет замкнутой жизнью, слабо реагируя на фидбек пользователей. Внести какое-то непопулярное изменение в приложение, и потом получать годами негативные оценки – норма.
У второй группы есть существенный минус - посредственное качество продукта. Складывается ощущение, что цель подобных приложений состоит в том, чтобы показывать рекламу, а новости – дело вторичное. Тяжело обнаружить какую-либо изюминку, которая бы оправдывала такое отношение к пользователю.
Для того, чтобы выделиться на фоне конкурентных проектов LifeLines выработал несколько ключевых идей:
Прислушиваться к обратной связи. Приложение должно соответствовать актуальным потребностям пользователей. Для этого, в «Настройках», есть пункт «Предложения по улучшению»; также мы проводим опросы, какие улучшения пользователи хотели бы увидеть в первую очередь.
Оригинальные идеи в функционале приложения, которых еще ни у кого не реализовано. Например, в новостной ленте мы используем не только обычные новостные источники, но и новости из Telegram-каналов.
Избегание агрессивной монетизации.
Стремление к прозрачности работы своих алгоритмов.
Дизайн-концепция
Перед дизайнерами стояла важная задача: необходимо было создать визуальную концепцию приложения, когда маркетинговая и бренд-стратегии продукта были ещё в проработке.
При создании дизайн-концепции приложения был сделан упор на минимализм, чтобы максимально облегчить взаимодействие пользователя с новостями. Очень многие новостные сервисы визуально перегружены и нам хотелось этого избежать. Была выбрана нестандартная цветовая гамма в фиолетовых тонах, приятная глазу и не раздражающая пользователя. Также было уделено большое внимание шрифтам, поскольку это важная часть новостных приложений.
Очень большое внимание было уделено UX в приложении.
В силу того, что у LifeLines мощная база в плане фичей и их развития, мы проектировали интерфейс таким образом, чтобы функционал можно было без проблем масштабировать. На старте проектирования был выбран минимальный набор функций для максимальной простоты взаимодействия с новостями. Развивая приложение проблем не возникло, все за счёт грамотной приоритизации пространства и построения иерархий на начальном этапе. При этом интерфейс остался не нагруженный и минималистичный.
Виктор, дизайнер LifeLines
Как всё устроено внутри
Вся работа в бэкенде LifeLines протекает в 4 этапа:
Периодический обход новостных источников (веб-сайты, Telegram-каналы) из внутренней базы в несколько тысяч источников. Сбор текста, дат и заголовков в первичный документ.
Обработка текстовой информации с помощью моделей машинного обучения. На выходе получается нормализованная форма текста, в которой можно выделить теги, именные сущности (персоны, объекты, события), географию, а также вероятную категорию (тему).
Агрегирование обработанных статей в события. 10 статей из 10 разных источников могут освещать разные события, а могут и одно и то же. На этом этапе все статьи раскладываются по своим “полочкам” и ранжируются по значимости.
События проходят индексацию и ожидают показа конечному пользователю в зависимости от настроек ленты.
Это общий принцип работы новостного агрегатора. Однако во время работы над его ядром были сложности и вот как они были решены.
Челлендж #1
Сотни новостных источников обязательно будут генерировать дубликаты одних и тех же событий, если все их совместить в одну ленту. Поэтому система должна уметь определять, где статьи об одном и том же, но в разных источниках. То есть, она должна понимать, о чем идет речь. А также из множества “склеенных” статей необходимо определить ту, которую мы покажем, как “заглавную” в блоке.
Решение #1
Перебрав различные варианты выбор пал на использование модели машинного обучения на основе BERT, которая способна преобразовывать текст в векторное представление. И уже работая с векторами, а не с текстом, появляется возможность определить насколько статьи семантически схожи друг с другом.
Стало ясно, что при таком алгоритме в качестве “заглавной” выбирается самая большая статья с некоторой поправкой на дату публикации, что является довольно удачным решением. Пользователь получает самый информативный текст из всех о произошедшем событии на момент времени.
Хоть текущий алгоритм и не идеален, свои задачи он выполняет. Его усовершенствование – наша задача на самое ближайшее будущее.
Челлендж #2
Одной из фич приложения LifeLines стала хронология или “развитие события”, возможность посмотреть, как развивалось событие во времени. Из любой новости, если она имела какое-то развитие во времени, можно перейти в прошлое и узнать, как развивались события.
Решение #2
Самый рабочий способ организации такой хронологии — по тегам с поправкой на географию. Но метод эффективен не на 100%, потому что, часто в хронологию событий попадает вариант исходной новости из другого источника, который не был правильно сгруппирован изначально при помощи нейросети.
Челлендж #3
На этапе после получения нормализованного текста статьи встает вопрос распознавания в тексте определенных сущностей, такие как персоны, бренды, география и т.п. Это необходимо для определения географии события и определения тегов.
Решение #3
Для решения этой проблемы была использована модель машинного обучения, способная выделять в тексте именные сущности, определяя, что это: География, Персона или Организация.
Далее, имена географических сущностей используются для поиска в базе топонимов. Также эта база давала узнать об иерархии географических объектов, что дополнительно помогает определить конечную географию события.
Имена Персон и Организаций используются для поиска в базе WikiData, которая содержит огромный объем справочной информации в удобном для машины формате. В статьях с такими сущностями автоматически прикрепляются ссылки на Википедию сразу под текстом новости для уточнения информации.
Мобильная часть LifeLines
После того, как внутреннее ядро LifeLines и дизайн были готовы, можно было приступить к разработке мобильного приложения.
Для быстрого старта был создан прототип. Поскольку основа приложения — это сложная лента с новостями, большинство интересных моментов в финальной версии приложения во время разработки были связаны с ней и с различными оптимизациями. Так, были реализованы:
Асинхронная загрузка картинок в ленте новостей — т.е. сначала показывается текстовая часть ленты, а потом в нее грузим картинки.
Кэширование контента при переходе от ленты к детальным новостям картинки берутся из кэша для ускорения загрузки.
Адаптация верстки новостей под одну стилистику. Поскольку все новости автоматически парсятся бэкендом с новостных сайтов, в ленту может попасть разное. Ведь картинки бывают разной высоты, стили тоже у всех сайтов отличаются. Поэтому нам пришлось научить приложение обрабатывать и красиво показывать картинки в приложении, и заменять стили на релевантные.
От старта разработки до релиза прошло около 3-4 месяцев.
Релиз
Релиз приложения под обе мобильные платформы состоялся в конце 2021 года. В 2022 году приложение было выбрано Google Play в качестве рекомендуемых.
Количество установок в день увеличилось более чем в два раза в 2022 году. С начала 2022 года к его концу количество активных пользователей выросло в 8 раз. Был даже пик установок в 17 раз превышающий цифры на старте.
Проект небольшой и изящный, предсказуемый в плане разработки. От старта до релиза прошло около 4 месяцев. Был промежуточный билд и финальный. На первоначальном этапе мы использовали подход без авторизации в приложении, настройки хранятся на сервере через привязку к устройству.
Самохин Денис, менеджер проекта мобильной разработки
Планы на развитие
У проекта множество планов. Сервис регулярно улучшается, ведется работа над новыми фичами, которые были запрошены пользователями - такие как виджет для мобильного приложения, добавление Telegram-каналов в закладке «Персональное», работа с историческими источниками, возможность оставлять комментарии под новостями. Но также есть и более амбициозные планы.
Мы сделали возможность читать не только традиционные веб СМИ, но и Telegram-каналы. Конкурентные приложения обходят их стороной. А зная, что сейчас Telegram куёт половину новостного контента, нам не хочется, чтобы наш пользователь это упускал.
Никита, Ведущий разработчик LifeLines
Архивы
Планируется расширение архивной части — скрапинг данных с большего числа иностранных и исторических источников и их подгрузка в систему.
Зарубежные источники
Проект можно было бы дополнить большой частью иностранных источников, но пока что это не представляется возможным из-за политической обстановки и новой законодательной базы. Однако, для этого всё готово.
Мы хотим, чтобы у пользователя была возможность сравнивать различные точки зрения, но поскольку мы — бизнес, зарегистрированный в России, нам необходимо соблюдать законы. В будущем, мы готовы к тому, чтобы дать пользователям доступ к зарубежным источникам, если законодательство поменяется.
Вадим Питерский, управляющий проекта LifeLines
Сам себе репортер
Одна из историй, в которую хочет погрузиться LifeLines — это социальная составляющая. Дать пользователям возможность делать собственные публикации о событиях в мире под своим профилем - будь то сообщения очевидцев с места происшествия, или же просто мнение насчет той или иной ситуации.
Также в планах проработать локальный масштаб новостей. Ведь у каждого города имеется множество различных сообществ, которые тоже являются агрегаторами, принимая от очевидцев материалы и публикуя их у себя в группах и каналах.
Задачей LifeLines будет предоставить наиболее удобную и комфортную среду для такого рода контента, чтобы пользователям хотелось делиться событийной информацией именно здесь.
Трансляция события
Один из важных новостных форматов в наше бурное время – текстовые новостные трансляции.
Бывает, что в реальном времени разворачиваются особо важные события, и новые факты всплывают каждые несколько минут. А значит, нужен такой же оперативный формат показа информации.
В планах дать возможность LifeLines чувствовать подобные новостные турбулентности и создавать для них текстовую трансляцию, в которую будут оперативно помещаться поминутно информация из множества СМИ.
Спасибо за внимание! Оставайтесь на связи, впереди еще много интересных кейсов.