Информационная система автоматической классификации русскоязычных новостных текстов с применением методов искусственного интеллекта.
Проект выполнен в рамках выпускной квалификационной работы и объединяет полный цикл обработки новостных данных: от сбора и предобработки корпуса до обучения моделей, оценки качества и развертывания пользовательских интерфейсов для практического применения.
Цель проекта - разработать интеллектуальную систему, способную автоматически определять тематику русскоязычного новостного текста, а также выполнять дополнительный анализ содержимого:
Система ориентирована на работу с русскоязычными новостными материалами и может использоваться в задачах медиамониторинга, маршрутизации новостей, построения аналитических панелей и поддержки редакционных процессов.
RuBERT для инференса.Streamlit для интерактивной проверки текстов.SQLite.Финальная модель обучена распознавать следующие классы:
В проекте используется корпус русскоязычных новостей Lenta.ru, дополненный этапами очистки, фильтрации и балансировки.
По материалам ноутбуков проекта:
1 189 509 новостных записей;5000 публикаций;10 000 текстов на каждую категорию.Для экспериментов в проекте рассмотрены несколько семейств моделей:
LSTM, CNN, FastText;RuBERT;BERTopic и Top2Vec;В качестве основной модели системы используется дообученный DeepPavlov/rubert-base-cased, сохраненный в директории rubert_final_model/.
Метрики качества по результатам ноутбука notebooks/3_transformers.ipynb:
Accuracy: 0.8961Macro F1-score: 0.8951Weighted F1-score: 0.8956ROC AUC (macro): 0.9944Эти результаты показывают, что трансформерный подход обеспечивает высокое качество многоклассовой классификации русскоязычных новостных текстов.
Логика системы строится по следующему конвейеру:
Интерфейсы системы работают поверх одной и той же дообученной модели и используют единый энкодер меток классов.
PythonPyTorchTransformersscikit-learnpandas, numpy, scipyStreamlitpyTelegramBotAPISQLiteaiohttpBeautifulSoupJupyter NotebookDocker / Docker ComposeНиже приведена структура репозитория в понятном виде, близком к схеме проекта:
VKR_news_classification/
|
|-- app/ # Основной прикладной код системы
| |-- bot.py # Telegram-бот для классификации текстов
| `-- streamlit_app.py # Веб-интерфейс на Streamlit
|
|-- notebooks/ # Ноутбуки с исследованиями и обучением моделей
| |-- 1_base_models.ipynb # Базовые модели классификации
| |-- 2_neural_models.ipynb # Нейросетевые модели
| |-- 3_transformers.ipynb # Трансформерные модели и RuBERT
| |-- 4_topic_modeling.ipynb # Тематическое моделирование
| |-- 5_sentiment_analysis.ipynb # Анализ тональности и эмоций
| `-- analysis.ipynb # Дополнительный анализ данных
|
|-- scripts/ # Служебные скрипты подготовки данных и обучения
| |-- parse_lenta_ru.py # Парсинг новостных данных с Lenta.ru
| |-- preprocessing.py # Очистка и балансировка датасета
| `-- rubert_train.py # Скрипт обучения финальной модели RuBERT
|
|-- rubert_final_model/ # Дообученная модель RuBERT и ее конфигурация
| |-- config.json # Конфигурация модели
| |-- model.safetensors # Весовые параметры модели (не добавлен в GitHub из-за большого размера)
| |-- special_tokens_map.json # Специальные токены
| |-- tokenizer.json # Файл токенизатора
| |-- tokenizer_config.json # Конфигурация токенизатора
| |-- training_args.bin # Параметры обучения
| `-- vocab.txt # Словарь токенизатора
|
|-- rubert_label_encoder.pkl # Кодировщик категорий
|-- requirements.txt # Основные зависимости для запуска приложения
|-- requirements-research.txt # Дополнительные зависимости для ноутбуков
|-- Dockerfile # Сборка контейнера приложения
|-- docker-compose.yml # Конфигурация запуска контейнера
|-- compose.sh # Скрипт пересборки и запуска Docker
|-- .dockerignore # Исключения для Docker build context
`-- README.md # Документация по проекту
Примечание: на исходной схеме проекта фигурирует create_db.py, однако в текущей версии репозитория инициализация SQLite встроена непосредственно в app/bot.py и app/streamlit_app.py.
git clone https://github.com/Stedjey/VKR_news_classification_system.git
cd VKR_news_classification_system
python -m venv .venv
source .venv/bin/activate
Для Windows:
.venv\Scripts\activate
Для запуска приложения и основных скриптов:
pip install -r requirements.txt
Если планируется работа с исследовательскими ноутбуками и дополнительными экспериментами:
pip install -r requirements-research.txt
Из корня проекта:
streamlit run app/streamlit_app.py
После запуска интерфейс будет доступен по адресу http://localhost:8501.
export TELEGRAM_BOT_TOKEN=your_token_here
python app/bot.py
Для Windows PowerShell:
$env:TELEGRAM_BOT_TOKEN="your_token_here"
python app/bot.py
Токен Telegram-бота вынесен в переменную окружения TELEGRAM_BOT_TOKEN.
Linux/macOS:
export TELEGRAM_BOT_TOKEN=your_token_here
docker compose up --build
Windows PowerShell:
$env:TELEGRAM_BOT_TOKEN="your_token_here"
docker compose up --build
bash compose.sh
После запуска:
http://localhost:8501;db/;hf-cache/.Примечание: при первом запуске контейнеру потребуется доступ в интернет, чтобы скачать модели для анализа тональности и эмоций.
Веб-интерфейс позволяет:
SQLite.Бот предоставляет аналогичные возможности через Telegram:
bot_messages.db.Ноутбуки в каталоге notebooks/ отражают исследовательскую часть дипломной работы:
notebooks/1_base_models.ipynb - сравнение базовых ML-моделей;notebooks/2_neural_models.ipynb - эксперименты с нейросетевыми архитектурами;notebooks/3_transformers.ipynb - обучение и оценка трансформеров;notebooks/4_topic_modeling.ipynb - тематическое моделирование;notebooks/5_sentiment_analysis.ipynb - анализ тональности;notebooks/analysis.ipynb - дополнительный анализ данных и визуализации.Разработанная система может применяться для:
Текущая версия проекта имеет ряд ограничений:
В дальнейшем проект можно расширить за счет:
Проект разработан в рамках ВКР на тему:
«Разработка информационной системы автоматической классификации русскоязычных новостных текстов с применением методов искусственного интеллекта»
Если вы используете данный репозиторий в учебных или исследовательских целях, рекомендуется ссылаться на него как на часть выпускной квалификационной работы по тематике интеллектуального анализа текстов и автоматической классификации новостей.
Информационная система автоматической классификации русскоязычных новостных текстов с применением методов искусственного интеллекта.
Проект выполнен в рамках выпускной квалификационной работы и объединяет полный цикл обработки новостных данных: от сбора и предобработки корпуса до обучения моделей, оценки качества и развертывания пользовательских интерфейсов для практического применения.
Цель проекта - разработать интеллектуальную систему, способную автоматически определять тематику русскоязычного новостного текста, а также выполнять дополнительный анализ содержимого:
Система ориентирована на работу с русскоязычными новостными материалами и может использоваться в задачах медиамониторинга, маршрутизации новостей, построения аналитических панелей и поддержки редакционных процессов.
RuBERT для инференса.Streamlit для интерактивной проверки текстов.SQLite.Финальная модель обучена распознавать следующие классы:
В проекте используется корпус русскоязычных новостей Lenta.ru, дополненный этапами очистки, фильтрации и балансировки.
По материалам ноутбуков проекта:
1 189 509 новостных записей;5000 публикаций;10 000 текстов на каждую категорию.Для экспериментов в проекте рассмотрены несколько семейств моделей:
LSTM, CNN, FastText;RuBERT;BERTopic и Top2Vec;В качестве основной модели системы используется дообученный DeepPavlov/rubert-base-cased, сохраненный в директории rubert_final_model/.
Метрики качества по результатам ноутбука notebooks/3_transformers.ipynb:
Accuracy: 0.8961Macro F1-score: 0.8951Weighted F1-score: 0.8956ROC AUC (macro): 0.9944Эти результаты показывают, что трансформерный подход обеспечивает высокое качество многоклассовой классификации русскоязычных новостных текстов.
Логика системы строится по следующему конвейеру:
Интерфейсы системы работают поверх одной и той же дообученной модели и используют единый энкодер меток классов.
PythonPyTorchTransformersscikit-learnpandas, numpy, scipyStreamlitpyTelegramBotAPISQLiteaiohttpBeautifulSoupJupyter NotebookDocker / Docker ComposeНиже приведена структура репозитория в понятном виде, близком к схеме проекта:
VKR_news_classification/
|
|-- app/ # Основной прикладной код системы
| |-- bot.py # Telegram-бот для классификации текстов
| `-- streamlit_app.py # Веб-интерфейс на Streamlit
|
|-- notebooks/ # Ноутбуки с исследованиями и обучением моделей
| |-- 1_base_models.ipynb # Базовые модели классификации
| |-- 2_neural_models.ipynb # Нейросетевые модели
| |-- 3_transformers.ipynb # Трансформерные модели и RuBERT
| |-- 4_topic_modeling.ipynb # Тематическое моделирование
| |-- 5_sentiment_analysis.ipynb # Анализ тональности и эмоций
| `-- analysis.ipynb # Дополнительный анализ данных
|
|-- scripts/ # Служебные скрипты подготовки данных и обучения
| |-- parse_lenta_ru.py # Парсинг новостных данных с Lenta.ru
| |-- preprocessing.py # Очистка и балансировка датасета
| `-- rubert_train.py # Скрипт обучения финальной модели RuBERT
|
|-- rubert_final_model/ # Дообученная модель RuBERT и ее конфигурация
| |-- config.json # Конфигурация модели
| |-- model.safetensors # Весовые параметры модели (не добавлен в GitHub из-за большого размера)
| |-- special_tokens_map.json # Специальные токены
| |-- tokenizer.json # Файл токенизатора
| |-- tokenizer_config.json # Конфигурация токенизатора
| |-- training_args.bin # Параметры обучения
| `-- vocab.txt # Словарь токенизатора
|
|-- rubert_label_encoder.pkl # Кодировщик категорий
|-- requirements.txt # Основные зависимости для запуска приложения
|-- requirements-research.txt # Дополнительные зависимости для ноутбуков
|-- Dockerfile # Сборка контейнера приложения
|-- docker-compose.yml # Конфигурация запуска контейнера
|-- compose.sh # Скрипт пересборки и запуска Docker
|-- .dockerignore # Исключения для Docker build context
`-- README.md # Документация по проекту
Примечание: на исходной схеме проекта фигурирует create_db.py, однако в текущей версии репозитория инициализация SQLite встроена непосредственно в app/bot.py и app/streamlit_app.py.
git clone https://github.com/Stedjey/VKR_news_classification_system.git
cd VKR_news_classification_system
python -m venv .venv
source .venv/bin/activate
Для Windows:
.venv\Scripts\activate
Для запуска приложения и основных скриптов:
pip install -r requirements.txt
Если планируется работа с исследовательскими ноутбуками и дополнительными экспериментами:
pip install -r requirements-research.txt
Из корня проекта:
streamlit run app/streamlit_app.py
После запуска интерфейс будет доступен по адресу http://localhost:8501.
export TELEGRAM_BOT_TOKEN=your_token_here
python app/bot.py
Для Windows PowerShell:
$env:TELEGRAM_BOT_TOKEN="your_token_here"
python app/bot.py
Токен Telegram-бота вынесен в переменную окружения TELEGRAM_BOT_TOKEN.
Linux/macOS:
export TELEGRAM_BOT_TOKEN=your_token_here
docker compose up --build
Windows PowerShell:
$env:TELEGRAM_BOT_TOKEN="your_token_here"
docker compose up --build
bash compose.sh
После запуска:
http://localhost:8501;db/;hf-cache/.Примечание: при первом запуске контейнеру потребуется доступ в интернет, чтобы скачать модели для анализа тональности и эмоций.
Веб-интерфейс позволяет:
SQLite.Бот предоставляет аналогичные возможности через Telegram:
bot_messages.db.Ноутбуки в каталоге notebooks/ отражают исследовательскую часть дипломной работы:
notebooks/1_base_models.ipynb - сравнение базовых ML-моделей;notebooks/2_neural_models.ipynb - эксперименты с нейросетевыми архитектурами;notebooks/3_transformers.ipynb - обучение и оценка трансформеров;notebooks/4_topic_modeling.ipynb - тематическое моделирование;notebooks/5_sentiment_analysis.ipynb - анализ тональности;notebooks/analysis.ipynb - дополнительный анализ данных и визуализации.Разработанная система может применяться для:
Текущая версия проекта имеет ряд ограничений:
В дальнейшем проект можно расширить за счет:
Проект разработан в рамках ВКР на тему:
«Разработка информационной системы автоматической классификации русскоязычных новостных текстов с применением методов искусственного интеллекта»
Если вы используете данный репозиторий в учебных или исследовательских целях, рекомендуется ссылаться на него как на часть выпускной квалификационной работы по тематике интеллектуального анализа текстов и автоматической классификации новостей.