Задача
Подсчёт упоминаний и ретвитов отвечает на вопрос «сколько», но не отвечает на вопрос «откуда». Мнение редко распространяется дословно: человек прочитал чужую формулировку, согласился и написал её по-своему. Формальной связи между двумя публикациями при этом не остаётся — ни ретвита, ни ответа, ни ссылки. Для аналитика это означает, что цепочка обрывается там, где начинается самое интересное: настоящий источник формулировки теряется, а самым влиятельным автором выглядит тот, у кого больше подписчиков.
Нужно было восстановить эту цепочку: найти ранние источники смыслов, оценить охват, увидеть, в каком ключе тема обсуждалась в разных регионах, и отличить всплеск в одной географии от общего фона.
Решение
Тема наблюдения. Аналитик создаёт наблюдение: ключевые слова и выражения, временной интервал и, если нужно, географию. Дальше сбор идёт непрерывно — сервис получает твиты через API Twitter и сохраняет текст, автора, время публикации, координаты, связи ответов и ретвитов.
Подготовка текста. Каждая публикация проходит нормализацию: определение языка, очистку служебных элементов, токенизацию, удаление стоп-слов и приведение слов к базовой форме. На этом же шаге отсеиваются дубли, спам и нерелевантные сообщения — иначе они позже склеятся в ложные кластеры и завысят охват.
Тональность. Модуль сентимент-анализа относит сообщение к позитивным, негативным или нейтральным и рассчитывает выраженность оценки — то есть насколько сильно высказана позиция, а не только её знак.
Семантика. Второй модуль строит признаки текста по словам и устойчивым сочетаниям, сравнивает публикации по смысловой близости и объединяет их в тематические кластеры. Так внутри одной темы наблюдения проявляются отдельные смысловые линии: люди обсуждают одно событие, но говорят о разном.
Репост смысла. Ключевой механизм: система сопоставляет похожие по смыслу публикации с учётом времени их появления. Из этих пар и строится граф распространения идеи — от ранней формулировки к последующим сообщениям, которые передают ту же мысль другими словами. Порядок во времени здесь принципиален: он отделяет источник от последователей и позволяет показать не только самого популярного автора, но и более раннюю публикацию, от которой формулировка пошла в оборот.
География. Геоаналитика связывает твиты и ретвиты с координатами или указанной пользователем локацией. На карте видны начальные точки, дальнейшее распространение, локальные всплески и охват — и, поскольку тональность считается отдельно, видно и то, как менялась окраска темы по мере ухода из региона-источника.
Выдача результатов. Всё отдаётся через API и аналитический интерфейс: временная шкала, карта, цепочки распространения, ключевые авторы, тематические кластеры и распределение тональности. API-контур позволял забирать данные наблюдения во внешние отчёты и системы заказчика.
Реализация. Серверная часть написана на C#: парсеры Twitter и постоянный сбор, модули нормализации, тональности и семантического сравнения, геопривязка и API поверх результатов наблюдения.
Результат
Для выбранного события система строит аналитическую карту общественного мнения: динамику обсуждения во времени, географию источников и охвата, ключевые смысловые линии и соотношение позитивных, негативных и нейтральных сообщений.
Аналитик получает возможность, которой нет у обычной статистики упоминаний: проследить путь идеи от первой заметной публикации до самостоятельных пересказов и понять, где и в каком контексте она получила развитие. В одной модели соединяются четыре измерения — время, география, смысловая близость и эмоциональная окраска, — поэтому вопросы «кто сказал первым», «через кого это пошло» и «где это восприняли иначе» решаются на одних и тех же данных.