Обзор проекта
Описание проекта
Заголовок раздела «Описание проекта»Проект представляет собой систему для автоматического сбора и анализа данных из новостных источников. Система собирает статьи с популярных русскоязычных платформ, анализирует их тональность и сохраняет результаты в базу данных.
Основные функции
Заголовок раздела «Основные функции»- Сбор данных: Автоматический скрапинг статей с различных источников
- Анализ тональности: Определение эмоциональной окраски текста с помощью машинного обучения
- Хранение данных: Сохранение результатов в базу данных 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 │ ││ └──────────────┘ └──────────────┘ │└─────────────────────────────────────────────────────────┘Рабочий процесс
Заголовок раздела «Рабочий процесс»-
Инициализация
- Настройка виртуального окружения
- Установка зависимостей
- Настройка базы данных
-
Сбор данных
- Запуск скраперов для каждого источника
- Извлечение заголовков, авторов, ссылок
- Сохранение сырых данных
-
Обработка
- Анализ тональности каждой статьи
- Классификация по категориям
- Объединение данных из разных источников
-
Хранение
- Заполнение таблиц базы данных
- Создание индексов для быстрого поиска
- Резервное копирование данных
-
Мониторинг
- Отслеживание выполнения задач
- Обработка ошибок
- Логирование всех операций
Источники данных
Заголовок раздела «Источники данных»- URL: https://habr.com
- Тип контента: Технические статьи и новости
- Частота обновления: Ежедневно
- Особенности: Структурированный HTML, доступ к хабам
- URL: https://dzen.ru
- Тип контента: Новости и статьи
- Частота обновления: Ежедневно
- Особенности: Большой объём контента, теги для фильтрации
Финальные результаты
Заголовок раздела «Финальные результаты»Структура данных
Заголовок раздела «Структура данных»Каждая статья в базе данных содержит следующие поля:
| Поле | Тип | Описание |
|---|---|---|
| id | INTEGER | Уникальный идентификатор |
| источник | TEXT | Название источника (Habr/Dzen) |
| заголовок | TEXT | Заголовок статьи |
| ссылка | TEXT | URL статьи |
| автор | 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)
- Уведомления о важных событиях
Полезные ресурсы
Заголовок раздела «Полезные ресурсы»Следующие шаги
Заголовок раздела «Следующие шаги»Ознакомьтесь со следующими разделами:
- Структура проекта — детальное описание файлов и папок
- Исходные коды — примеры реализации скраперов
- Справочные материалы — полезная документация