Автоматизация исследования тенденций: глубокое техническое погружение в следующую тенденцию

Обнаружение тенденций с помощью НЛП и социальных доказательств

Настройка контекста

Next Trend - это мобильное приложение, которое помогает создателям контента, предпринимателям, владельцам бизнеса и маркетологам быть в курсе текущих и потенциальных будущих тенденций своей отрасли.

Для этого мы разработали комплексное решение для автоматизации мониторинга социальных сетей и анализа тенденций. Мы используем обработку естественного языка (NLP) для анализа большого количества сообщений в социальных сетях и выявления самых горячих тенденций в Интернете.

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

TL; DR; Отобранные инструменты и методы для извлечения вирусных тенденций в бизнесе, технологиях и общественных интересах из сообщений в социальных сетях. Компоненты в нашем техническом стеке были выбраны для облегчения сверхбыстрого извлечения данных, интеллектуальной категоризации и уведомлений в реальном времени.

Схема архитектуры

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

Стек технологий

Next Trend построен на современном стеке, который обеспечивает быстрые циклы разработки, является гибким и масштабируемым. Эта гибкость позволяет нам свободно экспериментировать при разработке системы, которая быстро реагирует на изменения тренда.

Мобильное приложение, созданное с использованием Flutter.

Кросс-платформенный Flutter SDK от Google помог нам легко создать удобный пользовательский интерфейс, который единообразно отображается на всех устройствах и в операционных системах и не полагается на собственный код.

Инфраструктура парсинга, построенная с использованием FastAPI, Redis Queue, Redis Cache и Postgres.

Чтобы повысить производительность, мы выбрали молниеносный FastAPI для веб-уровня, Redis, потому что он легкий и функционирует как брокер сообщений и кеш, и Postgres для хранения данных временных рядов. Мы использовали архитектуру веб-очередей-рабочих, чтобы отделить длительные рабочие процессы, такие как очистка и категоризация, для запуска на рабочих узлах.

NLP API, созданный с использованием spaCy и FastAPI

spaCy - один из самых популярных фреймворков НЛП на рынке. Это позволило нам успешно обучить нашу собственную модель распознавателя именованных сущностей (NER). Наш NER может извлекать наиболее релевантные сущности из собранных данных. spaCy также предлагает мощные возможности вектора слов для обнаружения похожих ключевых слов.

Панель администратора для модерации контента построена с использованием Vue.js.

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

Быстрое надежное хранение документов в Firestore

No-ops Firestore масштабируется автоматически, поэтому он идеально подходит для хранения всех наших данных о тенденциях. Обновления в режиме реального времени и возможность обрабатывать мобильные данные в разных операционных системах критически важны для того, чтобы наши клиенты всегда были в курсе последних событий. Мы также полагаемся на офлайн-поддержку Firestone, чтобы уменьшить потенциально пагубные последствия задержки и плохого подключения к Интернету.

Синхронизация с помощью Google Cloud Functions

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

Действия Github для CI / CD и автоматических выпусков

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

Алголия для полнотекстового поиска

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

Уведомления с использованием Firebase Cloud Messaging (FCM)

Мы использовали FCM, чтобы включить push-уведомления для наших пользователей. Мы также создали темы, которые позволяют пользователям персонализировать тип получаемых уведомлений.

Общая архитектура

Архитектура Next Trend разработана для поддержки четырех основных функций:

  1. Извлечение
  2. Категоризация
  3. Модерация
  4. Уведомление

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

И все это без вмешательства человека.

Извлечение и категоризация

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

Добыча

Центральным узлом системы Next Trend является процесс Scraper Worker. Его основная функция - извлекать ключевые слова и их данные и передавать их процессу категоризации. Эти данные собираются с платформ социальных сетей, дополняются данными сторонних SEO и дополнительной информацией из тематических новостей и блогов. Ранее сохраненные данные дают представление об исторических изменениях и тенденциях с течением времени.

Диаграмма последовательности для автоматического исследования ключевых слов

В этом посте мы подробно расскажем о добыче:



Категоризация

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

Модерация контента и отчетность

Снимок экрана нашей панели администратора

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

Уведомления

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

Заключительное слово

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

Если вам интересно что-нибудь из того, что я упомянул в этом посте, не стесняйтесь связаться со мной в LinkedIn и напишите мне сообщение!