Реинжиниринг консультационного чат-бота для клиентов торговой компании
|
ВВЕДЕНИЕ 6
1 АНАЛИЗ ИСХОДНЫХ ДАННЫХ 9
1.1 Анализ исходного проекта 9
1.2 Анализ проблемных мест 12
1.3 План выполнения работ 13
2 ПРОЕКТИРОВАНИЕ 14
2.1 Концептуальная модель обработки сообщений 14
2.2 Описание участников обработки сообщений 15
2.2.1 ApiWorker 15
2.2.2 MessageHandler 16
2.2.3 Notifier 18
2.2.4 Сценарист 19
2.2.5 Историк 21
2.2.6 Типы данных 22
3 РЕАЛИЗАЦИЯ 23
3.1 Уведомления 23
3.2 Работа с базой 24
3.3 Датаклассы 26
3.4 Канал telegram 28
3.5 Канал ВКонтакте 28
3.6 Канал почты 29
3.7 Web API чат-бота 30
3.8 Сценарист и сценарии 31
3.9 Обработчик 32
4 ТЕСТИРОВАНИЕ 33
4.1 Статический анализ 33
4.2 Автоматические тесты 34
4.3 Нагрузочное тестирование 36
5 АНАЛИЗ ПРОЕКТОВ 37
5.1 Метрики 37
5.2 Сравнение 39
ЗАКЛЮЧЕНИЕ 42
ЛИТЕРАТУРА 43
1 АНАЛИЗ ИСХОДНЫХ ДАННЫХ 9
1.1 Анализ исходного проекта 9
1.2 Анализ проблемных мест 12
1.3 План выполнения работ 13
2 ПРОЕКТИРОВАНИЕ 14
2.1 Концептуальная модель обработки сообщений 14
2.2 Описание участников обработки сообщений 15
2.2.1 ApiWorker 15
2.2.2 MessageHandler 16
2.2.3 Notifier 18
2.2.4 Сценарист 19
2.2.5 Историк 21
2.2.6 Типы данных 22
3 РЕАЛИЗАЦИЯ 23
3.1 Уведомления 23
3.2 Работа с базой 24
3.3 Датаклассы 26
3.4 Канал telegram 28
3.5 Канал ВКонтакте 28
3.6 Канал почты 29
3.7 Web API чат-бота 30
3.8 Сценарист и сценарии 31
3.9 Обработчик 32
4 ТЕСТИРОВАНИЕ 33
4.1 Статический анализ 33
4.2 Автоматические тесты 34
4.3 Нагрузочное тестирование 36
5 АНАЛИЗ ПРОЕКТОВ 37
5.1 Метрики 37
5.2 Сравнение 39
ЗАКЛЮЧЕНИЕ 42
ЛИТЕРАТУРА 43
Обработка естественных языков (Natural Language Processing, NLP) - направление компьютерной лингвистики и машинного обучения, изучающее анализ и синтез естественных языков. Под обработкой естественных языков понимается создание систем, обрабатывающих естественные языки с целью выполнения определенных задач. В список этих задач могут входить следующие элементы [10].
• Формирование ответов на вопросы (Question Answering).
• Анализ эмоциональной окраски высказываний (Sentiment Analysis).
• Машинный перевод (Machine Translation).
• Распознавание речи (Speech Recognition).
• Морфологическая разметка (Part of Speech Tagging).
• Извлечение сущностей (Name Entity Recognition).
Диалоговые системы - это системы, решающие задачу формирования ответов на вопросы. Само формирование ответов может сопровождаться решением сопутствующих задач, таких как извлечение именованных сущностей или анализ эмоциональной окраски. Диалоговые системы можно охарактеризовать по двум векторам: задача- ориентированная или общего назначения (task-oriented/general) и закрытого или открытого диапазона тем (closed/open domain). Первая классификация определяет создана ли система для решения одного конкретного вопроса по данной теме в ходе диалога, или позволяет свободно вести продолжительный диалог на поставленную тему. Вторая классификация определяет на сколько диалоговая система ограничена в диапазоне выбора тем для беседы с человеком.
Чат-боты - это диалоговые системы, обладающие интерфейсом для взаимодействия с человеком. Чаще всего чат-боты работают через мессенджеры, социальные сети, форумы или диалоговые окна на сайтах. Также чаще всего боты используются для решения типовых задач, хорошо описываемых сценариями. Такие чат-боты часто применяются в бизнесе для оперативного решения вопросов клиентов.
Клиентские чат-боты предназначены для взаимодействия с клиентами той или иной организации, оперативного и массового решения вопросов клиента, либо сбора информации для оформления лучшего предложения.
Чат-бот, рассматриваемый в этой работе, относится к клиентским чат-ботам, имеет четкий список тем для диалогов и шаблоны ответов, что позволяет отнести его к группе, так называемых, авто-информаторов.
В рамках данной работы проводится рефакторинг сервиса чат-бота.
Рефакторинг - это изменение внутренней структуры программного обеспечения, имеющее целью облегчить понимание его работы и упростить модификацию, не затрагивая наблюдаемого поведения [10].
Во время жизненного цикла программного обеспечения, его код претерпевает изменения с той или иной частотой, в тех или иных масштабах. В это время код теряет свою структурированность, обрастает сложными конструкциями, повторяющимися кусками кода, незадокументированными фрагментами. Рефакторинг позволяет улучшить композицию и структуру кода, уменьшить дублирование, облегчить понимание, провести профилактику ошибок, улучшить модифицируемость и уменьшить время внесения новых изменений.
Иногда может наступить критический момент, когда команда понимает, что при проектировании системы были совершены существенные ошибки, что текущее состояние кода не может быть исправлено очередным рефакторингом, но может создать препятствия к дальнейшему развитию проекта. В этом случае уместным может быть перепроектировать систему на других основах, то есть произвести реинжиниринг.
Цель и задачи
Целью данной выпускной квалификационной работы является проведение рефакторинга системы клиентского чат-бота. Для достижения этой цели должны быть решены следующие задачи.
1. Анализ исходного проекта и выявление его проблемных мест.
2. Составление требований к новому проекту.
3. Проектирование и реализация новой системы с учетом всех требований.
4. Тестирование новой системы.
5. Анализ эффективности проведенных работ.
Структура и объем работы
Работа состоит из введения, пяти глав, заключения и списка используемой литературы. Объем работы составляет 44 страницы, объем библиографии 29 наименований.
Содержание работы
Первая глава, «Анализ исходных данных», содержит анализ проблемных мест исходного проекта и составление списка требований к его улучшению.
Вторая глава, «Проектирование», описывает проект новой системы.
Третья глава, «Реализация», содержит описание реализации новой системы.
Четвертая глава, «Тестирование», содержит описание и результаты написанных и проведенных тестов новой системы.
Пятая глава, «Анализ проектов», описывает метрики и инструменты, используемые для анализа качества кодовой базы исходного и конечного проектов, и результаты анализа.
Заключение резюмирует результаты, полученные в рамках проведенной работы.
• Формирование ответов на вопросы (Question Answering).
• Анализ эмоциональной окраски высказываний (Sentiment Analysis).
• Машинный перевод (Machine Translation).
• Распознавание речи (Speech Recognition).
• Морфологическая разметка (Part of Speech Tagging).
• Извлечение сущностей (Name Entity Recognition).
Диалоговые системы - это системы, решающие задачу формирования ответов на вопросы. Само формирование ответов может сопровождаться решением сопутствующих задач, таких как извлечение именованных сущностей или анализ эмоциональной окраски. Диалоговые системы можно охарактеризовать по двум векторам: задача- ориентированная или общего назначения (task-oriented/general) и закрытого или открытого диапазона тем (closed/open domain). Первая классификация определяет создана ли система для решения одного конкретного вопроса по данной теме в ходе диалога, или позволяет свободно вести продолжительный диалог на поставленную тему. Вторая классификация определяет на сколько диалоговая система ограничена в диапазоне выбора тем для беседы с человеком.
Чат-боты - это диалоговые системы, обладающие интерфейсом для взаимодействия с человеком. Чаще всего чат-боты работают через мессенджеры, социальные сети, форумы или диалоговые окна на сайтах. Также чаще всего боты используются для решения типовых задач, хорошо описываемых сценариями. Такие чат-боты часто применяются в бизнесе для оперативного решения вопросов клиентов.
Клиентские чат-боты предназначены для взаимодействия с клиентами той или иной организации, оперативного и массового решения вопросов клиента, либо сбора информации для оформления лучшего предложения.
Чат-бот, рассматриваемый в этой работе, относится к клиентским чат-ботам, имеет четкий список тем для диалогов и шаблоны ответов, что позволяет отнести его к группе, так называемых, авто-информаторов.
В рамках данной работы проводится рефакторинг сервиса чат-бота.
Рефакторинг - это изменение внутренней структуры программного обеспечения, имеющее целью облегчить понимание его работы и упростить модификацию, не затрагивая наблюдаемого поведения [10].
Во время жизненного цикла программного обеспечения, его код претерпевает изменения с той или иной частотой, в тех или иных масштабах. В это время код теряет свою структурированность, обрастает сложными конструкциями, повторяющимися кусками кода, незадокументированными фрагментами. Рефакторинг позволяет улучшить композицию и структуру кода, уменьшить дублирование, облегчить понимание, провести профилактику ошибок, улучшить модифицируемость и уменьшить время внесения новых изменений.
Иногда может наступить критический момент, когда команда понимает, что при проектировании системы были совершены существенные ошибки, что текущее состояние кода не может быть исправлено очередным рефакторингом, но может создать препятствия к дальнейшему развитию проекта. В этом случае уместным может быть перепроектировать систему на других основах, то есть произвести реинжиниринг.
Цель и задачи
Целью данной выпускной квалификационной работы является проведение рефакторинга системы клиентского чат-бота. Для достижения этой цели должны быть решены следующие задачи.
1. Анализ исходного проекта и выявление его проблемных мест.
2. Составление требований к новому проекту.
3. Проектирование и реализация новой системы с учетом всех требований.
4. Тестирование новой системы.
5. Анализ эффективности проведенных работ.
Структура и объем работы
Работа состоит из введения, пяти глав, заключения и списка используемой литературы. Объем работы составляет 44 страницы, объем библиографии 29 наименований.
Содержание работы
Первая глава, «Анализ исходных данных», содержит анализ проблемных мест исходного проекта и составление списка требований к его улучшению.
Вторая глава, «Проектирование», описывает проект новой системы.
Третья глава, «Реализация», содержит описание реализации новой системы.
Четвертая глава, «Тестирование», содержит описание и результаты написанных и проведенных тестов новой системы.
Пятая глава, «Анализ проектов», описывает метрики и инструменты, используемые для анализа качества кодовой базы исходного и конечного проектов, и результаты анализа.
Заключение резюмирует результаты, полученные в рамках проведенной работы.
С развитием социальных сетей, их значимость для бизнеса неуклонно растет, равно как растет темп ритма жизни. Бизнес сейчас зачастую теряет прибыль только из-за того, что не может дать клиентам быструю обратную связь. Развитие и продвижение чат-ботов помогает уменьшить время отклика на запрос клиента и решить возникающую проблему.
Целью данной работы было проведение работ по улучшению кодовой базы, увеличению надежности, читаемости и модифицируемости существующего проекта чат-бота. Для достижения этой цели был проведен анализ исходного проекта, выявлен ряд его недостатков, составлен план работ с перечнем требуемых характеристик конечного результата, разработана и реализована новая архитектура системы.
По итогу выполнения работ был получен единый цельный проект, с четко организованной архитектурой, использующий удобные и понятные средства по работе с базой данных и системой отложенного выполнения задач. Проект максимально покрыт тестами модульными, интеграционными и системными.
В планах дальнейшего развития проекта находится проведение работ по улучшению архитектуры диалоговой системы чат-бота, которая не была затронута в ходе текущего рефакторинга.
Целью данной работы было проведение работ по улучшению кодовой базы, увеличению надежности, читаемости и модифицируемости существующего проекта чат-бота. Для достижения этой цели был проведен анализ исходного проекта, выявлен ряд его недостатков, составлен план работ с перечнем требуемых характеристик конечного результата, разработана и реализована новая архитектура системы.
По итогу выполнения работ был получен единый цельный проект, с четко организованной архитектурой, использующий удобные и понятные средства по работе с базой данных и системой отложенного выполнения задач. Проект максимально покрыт тестами модульными, интеграционными и системными.
В планах дальнейшего развития проекта находится проведение работ по улучшению архитектуры диалоговой системы чат-бота, которая не была затронута в ходе текущего рефакторинга.



