Перейти к содержимому

Обзор проекта

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

  • Сбор данных: Автоматический скрапинг статей с различных источников
  • Анализ тональности: Определение эмоциональной окраски текста с помощью машинного обучения
  • Хранение данных: Сохранение результатов в базу данных SQLite
  • Автоматизация: Планирование и автоматическое выполнение задач через Airflow
  • Мониторинг: Отслеживание выполнения процессов и логирование
КатегорияТехнологияОписание
Язык программированияPython 3.10+Основной язык разработки
Скрапингrequests, BeautifulSoup4Выполнение HTTP-запросов и парсинг HTML
Машинное обучениеtransformers, torchАнализ тональности текста
База данныхSQLiteХранение собранных данных
КонтейнеризацияDocker, Docker ComposeИзоляция и упрощение развёртывания
ОркестрацияApache AirflowАвтоматизация и планирование задач
ВерсионированиеGit, GitLabКонтроль версий кода
┌─────────────────────────────────────────────────────────┐
│ Apache Airflow │
│ (Планирование и оркестрация) │
└────────────────┬────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ Web Scrapers Module │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ HabrScraper │ │ DzenScraper │ │
│ └──────────────┘ └──────────────┘ │
│ │ │ │
│ └──────────┬─────────────┘ │
│ ▼ │
│ BaseScraper (базовый класс) │
└────────────────┬────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ Sentiment Analysis Module │
│ (transformers + RuBERT model) │
└────────────────┬────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ SQLite Database │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ habr table │ │ dzen table │ │
│ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────┘
  1. Инициализация

    • Настройка виртуального окружения
    • Установка зависимостей
    • Настройка базы данных
  2. Сбор данных

    • Запуск скраперов для каждого источника
    • Извлечение заголовков, авторов, ссылок
    • Сохранение сырых данных
  3. Обработка

    • Анализ тональности каждой статьи
    • Классификация по категориям
    • Объединение данных из разных источников
  4. Хранение

    • Заполнение таблиц базы данных
    • Создание индексов для быстрого поиска
    • Резервное копирование данных
  5. Мониторинг

    • Отслеживание выполнения задач
    • Обработка ошибок
    • Логирование всех операций
  • URL: https://habr.com
  • Тип контента: Технические статьи и новости
  • Частота обновления: Ежедневно
  • Особенности: Структурированный HTML, доступ к хабам
  • URL: https://dzen.ru
  • Тип контента: Новости и статьи
  • Частота обновления: Ежедневно
  • Особенности: Большой объём контента, теги для фильтрации

Каждая статья в базе данных содержит следующие поля:

ПолеТипОписание
idINTEGERУникальный идентификатор
источникTEXTНазвание источника (Habr/Dzen)
заголовокTEXTЗаголовок статьи
ссылкаTEXTURL статьи
авторTEXTИмя автора
рейтинг/времяTEXTДополнительная информация
датаTEXTДата публикации
тональностьTEXTПоложительная/Отрицательная/Нейтральная
уверенностьREALУверенность модели (0-1)
{
"источник": "Habr",
"заголовок": "Python: новые возможности в версии 3.12",
"ссылка": "https://habr.com/ru/post/123456/",
"автор": "Иван Петров",
"рейтинг": "+125",
"дата": "2024-03-07T10:00:00Z",
"тональность": "Положительная",
"уверенность": 0.9523
}

Система собирает следующие метрики:

  • Общее количество статей из каждого источника
  • Распределение статей по тональности
  • Средняя уверенность анализа
  • Количество статей за период
  • Самые популярные авторы

Результаты можно визуализировать в виде:

  • Гистограммы распределения тональности
  • Графика количества статей по времени
  • Облака тегов по темам
  • Таблицы с сортировкой и фильтрацией
  • Telegram-каналы
  • Reddit-сабреддиты
  • YouTube-комментарии
  • Социальные сети
  • Определение тематики статьи
  • Выделение ключевых слов
  • Определение языков
  • Кластеризация по содержанию
  • API для доступа к данным
  • Web-интерфейс для просмотра результатов
  • Экспорт в разные форматы (CSV, Excel)
  • Уведомления о важных событиях

Ознакомьтесь со следующими разделами:

  1. Структура проекта — детальное описание файлов и папок
  2. Исходные коды — примеры реализации скраперов
  3. Справочные материалы — полезная документация