Курсовой проект по теме : Создание чат-бота скрытого маркетинга по продаже верхней одежды
Актуальность, цель и задачи проекта
Архитектура системы и стек технологий
Лингвистический конвейер (NLP Preprocessing & NER)
Классификация намерений на базе Machine Learning
Retrieval-модель диалога (компонент класса RAG)
Управление контекстом диалога и анализ тональности
Сценарии нативной рекламы и интеграция с OpenWeatherMap
Разработка голосового интерфейса (STT и TTS)
Мониторинг и аналитика (Flask-панель)
14.80M

Preza

1. Курсовой проект по теме : Создание чат-бота скрытого маркетинга по продаже верхней одежды

Выполнил : Фрелих Герман Александрович
Руководитель : Попов Дмитрий Иванович
Группа : 231-333

2. Актуальность, цель и задачи проекта

Объект исследования: Коммуникация между торговым предприятием и
потребителем в среде мессенджеров с использованием NLP-технологий.
Предмет исследования: Алгоритмы машинного обучения, методы
семантического анализа и средства интеграции внешних API для
реализации интеллектуального диалогового агента.
Входящий диалог в
Telegram
Лингвистический и
семантический анализ
Рост конверсии продаж
Контекстный/Ситуативный
подбор товара
Цель проекта: Разработка интеллектуального чат-бота «Стиль & Тепло» для
Telegram, способного классифицировать намерения пользователя на
русском языке и осуществлять нативную рекламу одежды на основе
контекстного и ситуативного анализа.
Задачи проекта:
1. Реализовать конвейер предобработки и лемматизации русскоязычного
текста.
2. Разработать классификатор намерений на основе машинного
обучения и алгоритм нечеткого поиска.
3. Спроектировать Retrieval-модель для ведения неформального диалога.
4. Интегрировать функции распознавания (STT) и синтеза (TTS) речи.
5. Создать веб-панель мониторинга бизнес-показателей и логов.
2

3. Архитектура системы и стек технологий

Архитектурный шаблон: Модульный монолит с
четким разделением ответственности (Separation of
Concerns).
Стек технологий и библиотеки:
Ядро системы: Python 3.10+, python-telegram-bot
(v20+, асинхронный API).
Лингвистический препроцессинг: natasha (NER,
лемматизация), nltk (расстояние Левенштейна).
Машинное обучение: scikit-learn (векторизация,
классификация).
Речевые интерфейсы: SpeechRecognition (Google
Cloud STT), gTTS (TTS), pydub (аудио-конвертация).
Аналитика и веб-интерфейс: Flask (веб-сервер), csv
(хранение транзакций).
Модуль совместимости (compatibility.py):
Динамическое патчирование среды выполнения для
поддержки депрецированных модулей (например,
audioop на новых версиях Python).
3

4. Лингвистический конвейер (NLP Preprocessing & NER)

Лингвистический конвейер (NLP Preprocessing &
NER)
Этап 1. Очистка (clean_text):
Приведение к нижнему регистру,
фильтрация спецсимволов.
Сохранение латинских символов и
числовых параметров для точного
распознавания артикулов
(например, «Arctic Pro») и
размерных характеристик («XL»,
«48»).
Этап 2. Нормализация
(lemmatize_text): Сегментация на
токены. Лемматизация через
MorphVocab библиотеки Natasha
для приведения слов к
канонической форме.
Этап 3. Извлечение сущностей
(extract_city_entity): Выделение
именованных сущностей
географических объектов (LOC)
(городов) для выведения погоды
через api openweather
Исходный
Очищенный
Результат
ввод
текст
лемматизации
(Natasha)
«Хочу купить
хочу купить
хотеть купить
тёплую
теплую
теплый куртка
курточку!»
курточку
«Мне нужен
мне нужен
я нужный тренч
тренч 50-го
тренч 50-го
50 размер
размера»
размера
4

5. Классификация намерений на базе Machine Learning

Векторизация текстов: Статистическая мера TF-IDF на уровне
символьных N-грамм (диапазон от 2 до 4 символов) для
автоматического нивелирования опечаток.
Алгоритм классификации: Метод опорных векторов в линейной
реализации (LinearSVC).
Преимущества: Высокая обобщающая способность на
текстах малой длины, стабильность при высокой
размерности признаков, высокая скорость инференса.
Гибридный валидатор намерений:
При неуверенной классификации (Decision Score ниже порога) топ3 предсказанных класса ранжируются по расстоянию Левенштейна
(порог ≤0.3) относительно эталонных примеров из bot_config.json.
Название
интента
Кол-во
примеров в
базе
Точность
(Precision)
Полнота
(Recall)
Приветствие
25
0.98
0.96
0.97
Прощание
20
1.00
0.95
0.97
Холод/Парка
30
0.92
0.90
0.91
Дождь/Ветро 25
вка
0.90
0.92
0.91
Стиль/Тренч
25
0.94
0.91
0.92
Размеры
20
0.95
0.95
0.95
Доставка
20
0.96
0.94
0.95
Ткани
15
0.88
0.85
0.86
Среднее
значение
200
0.94
0.92
0.93
F1-мера
5

6. Retrieval-модель диалога (компонент класса RAG)

Назначение: Реализация сценария Fallback (поддержание
естественного диалога Small Talk на свободные темы).
Аналог RAG-архитектуры (Retrieval-Based Model):
База знаний: Датасет dialogues.txt (очищенный от дубликатов
корпус реплик).
Векторный индекс: Матрица признаков TF-IDF на
символьных n-граммах (размер n: 3–5).
Метрика сходства: Косинусное расстояние (Cosine
Similarity) между вектором запроса и векторами базы данных.
Критерий релевантности: Коэффициент сходства >0.45.
6

7. Управление контекстом диалога и анализ тональности

Контекстно-зависимый диалог: Сессионная
память пользователя (USER_MEMORY) на
основе defaultdict в Python.
Сохранение контекста предыдущих реплик
для разрешения семантической
неопределенности (например, при коротких
запросах: «Есть размер M?», «Сколько
стоит?»).
Лексикографический анализ тональности
(sentiment_analyzer.py): Вычисление
среднего эмоционального индекса текста на
основе словаря тональности EMO_DICT.
Оценка охватывает как общеупотребительные
маркеры эмоций, так и предметноориентированные леммы (слякоть, промокли).
Адаптивное поведение: Динамическое
изменение префиксов ответов бота в
зависимости от настроения собеседника.
7

8. Сценарии нативной рекламы и интеграция с OpenWeatherMap

Движок нативной рекламы (AdScenarioEngine):
• Продуктовая матрица: 3 категории верхней
одежды с уникальными шаблонами
вовлечения.
• Механизм выбора: контекстный триггер (по
распознанному интенту) или ситуативный
триггер (по текущей погоде).
Интеграция с внешним сервисом погоды:
• Асинхронные HTTP-запросы к
OpenWeatherMap API по названию города.
• Автоматический переход на mock-данные
(тестовый режим) при отсутствии интернетсоединения или API-ключа.
Алгоритм «мягких продаж»: Интеграция
рекламного блока в ответы поисковой Fallbackмодели с вероятностью 30% для снижения эффекта
навязчивости.
8

9. Разработка голосового интерфейса (STT и TTS)

Канал распознавания речи (Speech-to-Text —
STT):
• Проблема: Telegram записывает аудио в
сжатом кодеке Opus (формат .ogg), не
поддерживаемом библиотеками
распознавания.
• Решение: Перекодирование на лету в
несжатый формат WAV с помощью
библиотеки Pydub и системной утилиты
FFmpeg.
• Распознавание: Акустическая модель Google
Web Speech API (языковой пакет ru-RU).
Канал синтеза речи (Text-to-Speech — TTS):
• Синтез текстового ответа в аудиопоток
формата .mp3 посредством библиотеки gTTS
(Google Text-to-Speech).
• Динамическая генерация уникальных имен
аудиофайлов во временной директории ОС с
автоматической очисткой ресурсов после
отправки.
9

10.

10

11.

11

12. Мониторинг и аналитика (Flask-панель)

Инфраструктура сбора данных:
• Асинхронное ведение системного лога
взаимодействия в формате CSV (bot_log.csv).
• Регистрация параметров: временная метка,
входящий текст, распознанный интент, ответ
системы, коэффициент тональности.
Сервер мониторинга (admin_app.py):
• Автономное веб-приложение на базе
микрофреймворка Flask, функционирующее на
независимом порту.
Бизнес-метрики (KPI):
• NLU-rate: показатель качества работы
классификатора намерений (доля успешно
распознанных бизнес-интентов).
• Average Sentiment: средний уровень
удовлетворенности пользователей на основе
анализа тональности диалогов.
12

13.

13

14.

Характеристика чатбота (из задания к
курсовой)
Статус
Реализация и практические результаты в проекте
Минимальные функции
вопрос-ответ

Файл bot_config.json. Настроены базовые сценарии приветствия, прощания и самопрезентации со случайным
выбором вариантов ответа.
Наличие расширенного
списка интентов

Файл bot_config.json. Сформирован расширенный набор из 11 бизнес-интентов (размеры, цены, доставка,
материалы) со средним объемом до 30 фраз-примеров на класс.
Наличие датасета реплик
dialogues.txt

Модуль fallback_model.py. Разработан семантический поиск по внешней базе dialogues.txt на основе
косинусного сходства векторов для поддержания диалогов Small Talk.
Машинное обучение
(ML) для анализа
интентов

Модуль intent_classifier.py. Обучена модель LinearSVC с векторизацией TF-IDF на символьных N-граммах.
Средняя F1-мера модели составила 0.93. Интегрирован нечеткий поиск Левенштейна.
Использование API
Telegram

Модуль main.py. Развернут асинхронный диалоговый бот на базе библиотеки python-telegram-bot (v20+) с
неблокирующей обработкой запросов (async/await).
Использование
сценариев рекламы
товара

Модули ad_engine.py, main.py. Реализован рекламный движок с контекстным (по интенту) и ситуативным (по
текущей погоде) триггерами вызова с вероятностью интеграции 30%.
Количество товаров для
рекламы не менее 3 шт

Модуль ad_engine.py. В каталог PRODUCTS добавлены 3 товара (парка Arctic Pro, ветровка Storm Breaker,
тренч Urban Style) со случайными шаблонами рекомендаций.
Обработка голосовых
команд и ответ голосом

Модуль voice_manager.py. Настроен речевой конвейер STT (Google API с транскодированием аудио OGG в
WAV через Pydub и FFmpeg) и TTS (генерация аудиоответов через gTTS).
Другие дополнительные
возможности

Файлы admin_app.py, sentiment_analyzer.py. Реализованы: веб-панель администратора на Flask (расчет KPI,
NLU-rate, лог-файлы в CSV), оценка тональности по словарю EMO_DICT для адаптации префиксов ответов,
и извлечение городов через Natasha NER для API погоды OpenWeatherMap.
14
English     Русский Rules