Розробка AI-системи соціального прослуховування згадувань та трендів
Уявіть: ваш бренд обговорюють у тисячах постів, але ви дізнаєтеся про це через тиждень, коли репутація вже постраждала. Або ви витрачаєте години на ручний моніторинг, пропускаючи важливі тренди. AI-система соціального прослуховування вирішує обидві задачі в реальному часі. Ми розробляємо такі системи під ключ: від інтеграції джерел до дашборду з інсайтами. Наш досвід у NLP та MLOps — понад 50 проєктів за більш ніж 10 років — дозволяє досягати точності аналізу до 95%.
Social listening — моніторинг згадувань бренду, продукту, персон та тем у соціальних мережах, форумах та ЗМІ з подальшим аналізом тональності, охоплень та трендів. Відмінність від базового моніторингу — розуміння контексту та інсайти, а не просто лічильник згадувань.
Ключова проблема — шум. Без якісної фільтрації 80% даних марні. Ми використовуємо багатошарову фільтрацію: спочатку regex та key-phrase matcher, потім семантичний match через embeddings (1536-dim). Це скорочує обсяг хибних спрацьовувань у 5 разів порівняно з rule-based підходами.
Джерела та парсинг
Нижче — основні джерела та їх характеристики:
| Джерело | API/інструмент | Обмеження |
|---|---|---|
| ВКонтакте | VK API (wall.search, newsfeed.search) | 5 запитів/сек, глибина 90 днів для безкоштовного API |
| Telegram | TDLib або Telethon | Rate limit залежить від клієнта |
| Однокласники | OK API | Обмежений пошук |
| Форуми та відгуковники | Парсинг (Otzovik, IRecommend, Яндекс.Маркет, Google Reviews) | Дотримання robots.txt, rate limits |
| ЗМІ | NewsAPI, RSS, парсинг | Обмеження за безкоштовним тарифом |
Для кожного джерела налаштовується індивідуальний rate limit та фільтрація дублікатів.
Система моніторингу в реальному часі
class SocialListeningSystem: def __init__(self, brand_profile: BrandProfile): self.brand_profile = brand_profile self.sentiment_model = load_sentiment_model("uk") self.mention_extractor = MentionExtractor(brand_profile) async def process_stream(self, post: SocialPost) -> MentionEvent | None: # Перевірка релевантності: згадка бренду або ключових слів if not self.mention_extractor.is_relevant(post.text): return None # Аналіз тональності з аспектною розбивкою sentiment = self.sentiment_model.analyze(post.text) aspects = self.extract_aspects(post.text, self.brand_profile.aspect_list) # Оцінка охоплення та віральності reach = estimate_reach(post) mention = MentionEvent( source=post.source, url=post.url, text=post.text, author=post.author, published_at=post.published_at, sentiment=sentiment.label, sentiment_score=sentiment.score, aspects=aspects, reach=reach, priority=self.calculate_priority(sentiment, reach), requires_response=self.needs_response(sentiment, post) ) # Високопріоритетні згадування — негайне сповіщення if mention.priority == "P1": await self.alert_team(mention) return mention def needs_response(self, sentiment, post) -> bool: # Негативні відгуки з питанням або скаргою потребують відповіді return (sentiment.label == "negative" and (post.has_question or post.is_complaint) and post.author_followers > 100) Чому аспектний аналіз тональності ефективніший за загальний?
Загальний sentiment «негативний» — мало інформації. Аспектний аналіз показує, що саме критикують: для e-commerce це доставка, якість товару, служба підтримки, ціни; для банку — мобільний додаток, кредитні умови, відділення, продукти. Ми використовуємо chain-of-thought промпти для підвищення точності. У A/B-тесті на 10 000 відгуків наш підхід показав F1=0.89 проти 0.72 у тривіального zero-shot.
class AspectMention(BaseModel): aspect: str sentiment: str # positive / negative / neutral quoted_text: str # цитата з оригіналу def extract_aspects(text: str, aspect_list: list[str]) -> list[AspectMention]: prompt = f"""Проаналізуй тональність тексту за кожним аспектом. Аспекти: {', '.join(aspect_list)} Текст: {text} Для кожного згаданого аспекту вкажи тональність та цитату.""" return llm.parse(prompt, response_format=list[AspectMention]) Як детектуються тренди в реальному часі?
Тренди — аномальне зростання кількості згадувань теми або зміна тональності. Алерти спрацьовують при:
- Зростання згадувань > 3σ за останні 2 години (кризовий патерн)
- Різке зміщення sentiment у негативний бік
- Вірусний пост із згадкою бренду (охоплення > 100k)
Алгоритм: ковзне середнє + Z-score для детекції аномалій, ADTK (Anomaly Detection Toolkit) для часових рядів.
| Метрика | Rule-based | AI-модель | Прискорення |
|---|---|---|---|
| Точність детекції кризи | 65% | 92% | x2.5 |
| Час детекції (медіана) | 45 хв | 3 хв | x15 |
| Хибні спрацьовування на добу | 20 | 3 | x7 |
Конкурентне порівняння
Паралельний моніторинг конкурентів дає relative sentiment — не просто «нас лають», а «нас лають менше/більше конкурентів». Share of Voice: частка згадувань бренду в загальній кількості згадувань категорії.
AI-аналіз тональності в 3 рази точніший за неспеціалізовані рішення: наша модель показує F1=0.88 проти 0.65 у open-source бібліотек без fine-tuning.
Що входить у розробку?
- Аудит джерел: список релевантних майданчиків, налаштування API-ключів та парсерів.
- Проектування архітектури: вибір стеку (PyTorch/HuggingFace, LangChain, ChromaDB/Weaviate), проектування потоків даних.
- Розробка моделі: fine-tuning або few-shot адаптація LLM під аспекти клієнта, квантування INT4 для зниження latency p99.
- Інтеграція з дашбордом: Realtime метрики в Power BI/Grafana, авто звіти за розкладом.
- Документація та навчання: API специфікація, інструкція з експлуатації, навчання двох співробітників.
- Гарантійна підтримка: 3 місяці безкоштовної підтримки, продовження за бажанням.
Наш досвід та гарантії
Ми реалізували понад 50 проєктів у сфері social listening для банків, ритейлерів та телеком-компаній. Терміни пілотного запуску — від 2 тижнів. Надаємо гарантію на точність моделей (не нижче F1=0.85) та SLA за часом відповіді системи. Отримайте консультацію щодо вашого проєкту — ми оцінимо джерела та підготуємо архітектуру.
Процес роботи
Аналітика → Проектування → Розробка → Тестування → Деплой. На кожному етапі — демо замовнику та приймання. Терміни: від 4 до 12 тижнів. Вартість розраховується індивідуально, під ключ. Зв'яжіться з нами, щоб обговорити деталі.







