Разработка AI-системы анализа общественного мнения и открытых данных
Государственные органы, аналитические центры и крупные компании нуждаются в систематическом мониторинге общественного дискурса: что волнует людей, как меняется отношение к регулированию, какие темы набирают популярность. AI-система агрегирует данные из открытых источников и трансформирует их в actionable аналитику.
Источники данных
Социальные сети и форумы: ВКонтакте API, Одноклассники API, Telegram (через MTProto или парсинг публичных каналов), Reddit, Pikabu. Публичные группы, комментарии, посты — без персональных данных.
СМИ и новостные агрегаторы: RSS-ленты, Яндекс.Новости API, MediaMetrics, Google News API. Более 50 000 источников.
Государственные открытые данные: data.gov.ru, региональные порталы открытых данных, реестры ФНС, Росстат API.
Платформы петиций: Change.org, РОИ (Российская общественная инициатива) — тематики и динамика подписей.
Отзывы о госуслугах: портал Госуслуги (публичные оценки), региональные порталы, платформа «Активный гражданин».
Тематическое моделирование
from bertopic import BERTopic
from sentence_transformers import SentenceTransformer
class PublicOpinionAnalyzer:
def __init__(self):
self.embedder = SentenceTransformer("sentence-transformers/paraphrase-multilingual-mpnet-base-v2")
self.topic_model = BERTopic(
embedding_model=self.embedder,
language="russian",
min_topic_size=50,
nr_topics="auto"
)
def discover_topics(self, texts: list[str], timestamps: list[datetime]) -> TopicAnalysis:
embeddings = self.embedder.encode(texts, batch_size=512)
# Динамическое тематическое моделирование — как темы меняются во времени
topics, probs = self.topic_model.fit_transform(texts, embeddings)
topics_over_time = self.topic_model.topics_over_time(texts, timestamps)
return TopicAnalysis(
topics=self.topic_model.get_topic_info(),
temporal_dynamics=topics_over_time,
trending=self._detect_trending(topics_over_time)
)
def _detect_trending(self, topics_over_time) -> list[TrendingTopic]:
# Темы с ростом > 2σ за последние 7 дней
...
Sentiment по группам населения
Анализ не только общего тона, но и различий между группами: молодёжь vs пожилые (по характеристикам аудитории), регионы, профессиональные сообщества. Это позволяет выявить, что волнует конкретные сегменты, а не усреднённую «аудиторию».
class SegmentedSentiment(BaseModel):
topic: str
segments: dict[str, SentimentScore] # сегмент → тональность
overall: SentimentScore
divergence_score: float # насколько сегменты расходятся во мнениях
sample_quotes: dict[str, list[str]] # примеры высказываний по сегментам
Индекс общественного доверия
Для государственных органов ключевая метрика — динамика доверия к конкретному ведомству, политике, решению:
- Доля позитивных упоминаний в контексте конкретной темы
- Изменение tone относительно базового периода (до объявления решения)
- Сравнение с аналогичными ведомствами / регионами
- Корреляция с медиаактивностью (эффект пресс-релизов и официальных заявлений)
Обнаружение манипуляций и ботов
Скоординированные кампании, накрутка петиций, искусственный хайп — система выявляет аномалии:
- Резкий скачок числа похожих сообщений за короткий период
- Аккаунты с признаками ботов (возраст, активность, лексика)
- Координированный posting — одинаковые тексты в разных каналах
- Выявленные манипуляции помечаются и исключаются из аналитики
Отчётность и визуализация
Еженедельные автоматические отчёты с: топ-10 трендовых тем, динамикой sentiment, сравнением с предыдущим периодом, экспертными цитатами. Интерактивный дашборд с временными рядами, картами (региональный срез), word clouds по темам.







