Дипломная работа: Методология создания экспертной системы для Telegram-Бота

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Также мобильная версия должна присутствовать на всех платформах, в том числе iOS, Android, windows Phone. У каждой операционной системы есть свой маркет, в котором нужно приобретать доступ за определенное количество денег, так называемыми сертификатами.

Рассмотрим реализацию данной экспертной системы в качестве Бота для мессенджера Telegram.

Боты в Telegram способны принять на себя роль экспертной системы лишь потому, что логика поведения совпадает.

Благодаря Telegram боту мы можем подключиться к нему с разных платформ, на которых подключен сам мессенджер, а на данный момент это самые популярные платформы что заменяет нам необходимость реализовывать на всех мобильных устройствах, а также в декстопном варианте, что заменяет нам необходимость использования экспертной системой в Веб-Приложении. Одним лишь Telegram-ботом мы получаем доступ к экспертной системе почти со всех платформ, которые наиболее популярны. Более того, для реализации экспертной системы нам не понадобятся особые затраты в разработке, когда мы используем готовые библиотеки и модули.

Благодаря команде разработчиков Telegram реализовала простой и отлично документированный API для возможности работы с ботами, привязка ко многим языкам программирования и популярным современным технологиям вышла достаточно быстро.

Способов реализации бота на различных языках программирования достаточно.

Изначально мы рассмотрели несколько вариантов реализации на разных языках программирования и определили наиболее подходящий для нас это язык Python.

3 Выбор соответствующих модулей и библиотек на языке Python

3.1 Библиотека time

В реализации нам понадобится библиотека time. Мне она пригодилась в бесконечном цикле, который держит бот в запущенном состоянии, обрабатывая возможные ошибки (Рис.3.1).

Рис.3.1.

3.2 Библиотека fysom

Для реализации Детерминированного Конечного Автомата нам понадобиться библиотека Fysom.

Fysom - это библиотека написанная на JavaScript, позднее переписанная на Python, которая представляет из себя реализацию ДКА, со всеми ограничениями способствующими поддержанию целостности ДКА. В этой переписанной библиотеке есть методы для создания состояний, а также есть возможность задавать условия переходов из одного состояния в другое. Для начала определим, что такое Конечные автоматы.

Конечный автомат - это способ представления поведения объекта в виде последовательности его состояний, описывающие реакцию объекта на внешние события, выполнение объектом действий, и изменение его отдельных свойств. В один и тот же момент времени возможна только активность одного состояния. Выходит, что для реализации каких-то действий машина должна иметь свое состояние. Для реализаций конечного автомата нужно начинать с определения состояний и переходов между ними.

Конечные автоматы можно описать в виде диаграмм состояний и таблиц переходов.

Диаграмма переходов выглядят следующим образом (Рис.3.2.):

Рис.3.2.

Теперь опишем библиотеку Fysom, использующуюся для реализации данных, в виде конечного автомата для создания экспертных систем.

Это библиотека для настраиваемых конечных автоматов.

Библиотека представляют собой отличную концептуальную модель для решения многих проблем, с которыми сталкиваются разработчики: от условного интерфейса, мониторинга соединений и управления до инициализации и т.д. Они могут упростить запутанные пути асинхронного кода, их легко протестировать, и они по своей сути помогают избежать неожиданных ловушек краевого случая. Библиотека стремится предоставить нам все необходимые инструменты для моделирования конечных автоматов.

Библиотека имеет в себе необходимые команды для моделирования конечных автоматов.

3.3 pyTelegramApi

Библиотека для взаимодействия с Telegram ботом pyTelegramApi. Взаимодействие ботов с людьми основано на HTTP-запросах. Библиотека pyTelegramBotAPI, берет на себя все нюансы отправки и получения запросов, позволяя сконцентрироваться непосредственно на логике.

4. Реализация экспертной системы для бота

4.1 Этапы разработки

1. Подключение всех библиотек;

2. Создание объекта ДКА (fysom);

3. Инициализация ДКА (с состояниями и переходами) Создание Fysom, задаем начальное состояние, задаем переходы, назначаем методы для обработки каждого состояния;

4. Создание объекта для связи с botApi, с передачей токена;

5. В каждый метод обработки состояния мы говорим боту отправить сообщение в соответствии с состоянием(все тексты сообщений и кнопки храним в отдельном файле в каждом отдельном массиве);

6. Создание обработчика нажатий пользователей на кнопки;

7. Описание поведения ДКА в соответствии с callback data полученным от обработчика из пункта 6 (говорим в какое состояние перейти).

4.1.1 Telegram Бот

Боты телеграмм - аккаунты, которые управляются специальными разными программами. Они используются для:

- Выполнения команд в чатах;

- Поиска в интернете;

- Развлечения;

- Бизнеса и т.д.

Он может выполнять за своего владельца какую-либо деятельность. Например, одни из полезных функций ботов является: массовая рассылка, перевод с одного языка на другой, и так далее. Список функций для ботов достаточно широк.

Чтобы подключить бот достаточно:

- Войти в telegram;

- Открыть поиск;

- Ввести имя бота. Это может быть, например, @telerobot - робот Антон - один из самых популярных в телеграмм.

После этого, можно задать команды, которые он будет выполнять.

Каждый выполняет свои команды. Чтобы узнать какие, достаточно всего лишь написать “Помощь” В ответ придёт список команд, которыми можно будет воспользоваться.

Возможности бота достаточно большие. Многие предприятия и фирмы используют возможность создать свой бот. Это позволяет расширить границы работы и увеличить численность клиентов и обслуживание.

В данной работе мы используем Telegram Бот в качестве интерфейса для экспертной системы. Данная система поможет ответить на базовые вопросы об алгоритме и перспективах защиты ваших интеллектуальных прав.

4.2 BotFather. Настройка бота

Для начала нужно зарегистрировать саму оболочку бота в самом мессенджере, получить присвоенный ей ID, который является также токеном. В Телеграмм помощь при такой регистрации оказывает виртуальный помощник @BotFather.

Как это сделать:

1. Ввод команды /start для запроса инструкции.

2. Отправка установки /newbot.

3. @BotFather предлагает придумать имя для создаваемого бота. Оно должно заканчиваться словом «bot».

4. Далее помощник присылает токен нового виртуального пользователя и url для добавления его в список контактов.

Полученную комбинацию желательно протестировать этой ссылкой: api.telegram.org/bot/getMe.

Готово, у нас присутствует токен, для дальнейшей работы.

4.3 Подключение библиотеки ДКА Fysom

У нас есть метод для создания нашего автомата, в котором есть объект fsm в который мы передаем параметры:

1. Параметр: список начального состояния, в котором состояние `waiting_start'.

2 Перечисление всех событий с переходами.

Как устроен один из переходов:

У нас адрес названия состояния откуда мы начинаем (finals) и в состояние, которое мы перейдем `show_sections'

Чтобы совершить переход, нам необходимо вызвать метод, название которого мы указываем здесь:

Далее, после того, как мы описали все состояния и что необходимо вызвать для их перехода мы описываем callbaks.

Каждому коллбэку мы даем название и название самого метода, который будет обрабатываться:

В колбэках мы описываем то, что будет происходить при попадании на такое состояние. Есть определенное соглашение, что название коллбэка должно быть в соответствии с названием состояния и иметь частичку “on” мы даем название которое будет отвечать за происходящее, которое будет отвечать за это состояние.

Далее то же самое попадая на состояние мы должны будем описать далее, что будет происходить на этом состоянии.

Например возьмем состояние если мы попадем на него, сработает коллбэк.

Далее, что происходит в данном коллбэке:

Описываем работу обработчика события `onwaiting_start'.

будет реагировать на нажатие кнопки /start в интерфейсе Telegram бота. После нажатия на кнопку start запускается метод

Который заставляет бота отправить сообщение. Далее будет адресован ответ который мы берем из хранилища response_storage.py, обращаемся к нему и обращаемся к переменной , которая обращается к хранилищу и берет данную строкупосле сохраняет наш chat_id.

далее вызывается метод для перехода из этого состояния Вся работа этого коллбэка заключалась в том, чтобы отправить нам строку из хранилища и перейти из этого состояния waiting_start. Далее из этого состояния мы переходим дальше

Дальше смотрим на коллбэк назначанный на `show_sections'.

Здесь мы берем клавиатуру из файла `utils', который находится в отдельном файле со всеми кнопками и попросили бота отправить нам сообщение, где в сообщении содержится новая строка.

И помимо строки будет содержаться клавиатура.

В следствие чего мы увидим на экране список с категориями и клавиатуру, чтобы можно было выбрать одну из них.

Следующий этап - выбор из списка категорий.

Для того, чтобы бот дальше действовал, нам нужно получить ответ от пользователя.

Допустим, пользователь нажал на кнопку 3 то у нас callback_data будет 3

Далее проверяем в каком состоянии мы находились:

После нажатия на 3 у нас callback_data 3 мы выбрали третью ветку

и запустили этот метод fsm.selected_third() это означает что мы из состояния show_sections перешли в одно из первых состояний третьей ветки

Дальше в third1 тоже назначен соответствующий callback

где тоже берется клавиатура и отправляется пользователю один из вопросов из нашего хранилища response_storage вызывается метод где в качестве первого параметра идет в качестве второго параметра мы передаем номер сообщения который у нас идет по счету. Раз мы в первом состоянии нашей 3 ветки, значит это будет под номером 1 и передаем тип сообщения answer или questions

Это означает, что мы из массива берем соответствующее сообщение.

И отправляет пользователю и будет ждать ответа на кнопку “Да” или “Нет” за которым кроется коллбэк 1 или 2

После нажатия на соответствующую кнопку, например 1 вызывается этот метод:

Так мы показали как работают коллбэки в библиотеке Fysom

4.4 ApiTelegramBot

Структура библиотеки для ДКА вся расписана, а вот основное содержание всех действий в каждом состоянии работают за счет работы bot api

Для начала мы подключаем и создаем объект нашего бота.

После берем токен, который мы получили от BotFather изначально в самом Telegram.

После мы апперируем всеми методами через библиотеку бота.

Это некая обертка pyTelegramApi, где все методы расписаны и достаточно при вызове передать параметр. После создания объекта мы обращаемся к этим методам передавая лишь необходимый параметр, что убирает необходимость на более низком уровне взаимодействовать c api

4.5 Технология добавления новых веток в КДА

Рассмотрим добавление 7-ой ветки.

1) Добавляем новую кнопку в Utils.py;

2) Добавляем в дереве переход;

3) Добавляем в обработчик всех кнопок;

после вызова метода автоматически срабатывает переход из состояния `show_sections' в состояние `seventh1'.

4) описываем то, что будет происходить в этом состоянии, для этого прописываем callback .

5) описываем его работу:

6) обращаемся к нему в response.storage:

7) добавляем в категориях:

8) далее для перехода после нажатия на кнопку No добавляем следующее состояние:

Далее, если после нажатие No переходим в результативное финальное состояние нам нужно его добавить в finals, чтобы принудительно привести его в начальное состояние после завершения.

Далее как мы указали изначально разрешаем всем, кто в finals перейти в начальное состояние show_sections:

также создаем для него коллбэк и описываем его, в котором выдаем результат

и возвращаемся в начальное состояние :

Таким образом мы описали метод добавления новых веток в нашу экспертную систему.

5. Интерфейс и тестирование Telegram бота “Робот-юрист”

1) Находим бот в поиске по адресу @itislawyer_bot

2) Отправляем начальную команду для бота /start

3) Получаем приветствие и выбор категорий (Рис.5.1).

Рис.5.1. Приветствие и выбор категорий

4) Выбираем интересующую категорию и нажимаем на соответствующую кнопку (Рис.5.2).

Рис.5.2.

5) Далее нажимаем “Да” и переходим по вопросам по интересующей информации после чего получаем результат, основанный на экспертной системе (Рис.5.3).

Рис.5.3.

После чего бот выдает результат и возвращает в исходное состояние (Рис.5.4).

Рис.5.4.

Тестируем в боте все кнопки и проверяем все выводы. “Робот-Юрист” готов!

экспертный fysom telegram бот

Заключение

Физическое или юридическое лицо, которое обращается за консультацией, теперь может в удобном и доступном для него виде бесплатно получить экспертную оценку по юридическим вопросам. В конечном итоге мы решили проблему ограниченности физических возможностей. При увеличении объема обращений за консультациями к боту теперь не снизится качество и нет необходимости сокращать количество обращений путем повышения стоимости консультаций, с помощью бота первоначальную помощь по консультациям можно получить благодаря экспертной оценке Telegram бота. Представшая проблема несоответствия возможностей консультанта потребностям консультируемого эффективно решилась автоматизацией. При этом важность чтобы автоматизированное решение было надежным сохранилась (на его решения можно опираться, оно подкреплено ссылками на юридические документы, юридические статьи), представляет собой простой и удобный интерфейс для консультируемого (доступность, быстрое решение вопросов), возможность расширения возможностей по консультации для юристов.