ГЛАВА 2. АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ
2.1 Описание предметной области
В настоящей работе предметной областью является магазин электроники. Областью функционирования предприятия, в первую очередь, является торговля смартфонами, планшетными ПК и ноутбуками.
Каждая единица ассортимента магазина обладает набором параметров. Этот набор включает такие параметры как тип устройства, размер дисплея, страна-производитель, форм-фактор разъёма зарядки/подключения периферии. Данные параметры выбраны согласно следующей логике: в настоящее время практически любое устройство от производителя, поставляющего свою продукцию в розничные магазины обладает приемлемой для большинства пользователей производительностью, качеством съёмки и объёмом аккумулятора, что позволяет опустить данные параметры в процессе разработки экспертной системы.
2.2 Модели представления знаний в экспертных системах
Характерная особенность ЭС, отличающая их от традиционных систем обработки информации, заключается в оперировании знаниями. Формализм описания такого рода информации определяется как представление знаний. Компонент, который использует для решения проблем знания экспертов, описанные в заранее выбранной для них форме представления, является механизмом вывода. В системах с базами знаний, в том числе и экспертных системах, представление знаний является фундаментальным понятием. Решение о выборе способа представления знаний оказывает существенное влияние на любую их составную часть.
Можно сказать, что представлением знаний определяются возможности системы базы знаний. И наоборот, чтобы система обработки знаний отвечала определенным прикладным потребностям, должно быть создано соответствующее представление знаний. Поскольку представление знаний является средством описания знаний человека, то желательно, чтобы его описательные возможности были как можно выше. С другой стороны, если форма представления становится излишне сложной, то усложняется и механизм выводов, при этом не только затрудняется проектирование ЭС, но и возникает опасность потери достоверности выполняемых ею действий. В конечном итоге проектирование представления знаний предусматривает выработку всех этих условий, а затем и выбор решения на основе некоторого компромисса между ними.
В настоящее время для настройки и обучения искусственных нейронных сетей все чаще применяются генетические алгоритмы. С их помощью создаются искусственные нейронные сети, адаптированные для решения конкретных задач. В пятой главе рассматривается генетический алгоритм, и даются рекомендации для его программной реализации [22-36]. Нейросетевой модели посвящена шестая глава. Знания в нейросетевой модели представляются неявным образом посредством задаваемой топологии сети, весов связей и типов функции активации
2.3.Выбор языка разработки
Благодаря появлению специальных инструментальных средств построения ЭС сократились сроки разработки, значительно снизилась трудоемкость. Инструментальные средства построения ЭС можно разбить на три основных типа:
- языки программирования;
- среды программирования;
- пустые ЭС (оболочки).
С точки зрения разработчика экспертных систем, наибольший интерес представляет использование сред программирования и пустых экспертных систем (оболочек), хотя не всегда можно заметить разницу между этими понятиями.
К числу таких средств первой группы относятся языки обработки символьной информации, наиболее известными из которых являются Пролог и Лисп. Пролог- язык высокого уровня, ориентированный на использование концепций и методов математической логики. Как следует из его названия, Пролог предназначен для программирования в терминах логики. Основной особенностью Пролога, отличающей его от всех других языков, является декларативный характер написанных на нем программ. Язык Лисп изобретен в Массачусетском технологическом институте и обладает способностью обрабатывать списковые структуры. Языки программирования Лисп и Пролог имеют встроенные механизмы для манипулирования знаниями.
Помимо Лиспа и Пролога создано множество других языков, ориентированных на обработку символьной информации и разработку ЭС: Smalltalk, FRL, Interlisp. Кроме этих специализированных языков для разработки экспертных систем используются и обычные языки программирования общего назначения: Си, Ассемблер, Паскаль, Фортран, Бейсик, Python др.
2.4 Применение языка Python в разработке ИИС
Для реализации программного обеспечения, связанного с применением ИИ, требуется надежный, гибкий язык программирования с богатым инструментарием. Python обладает всеми обозначенными качествами, в связи с чем в настоящее время на нем разрабатывается множество ИИ-проектов. Также Python среди других языков программирования выделяет ряд преимуществ:
1. простота и логичность
2. большой выбор библиотек и фреймворков
3. мультиплатформенность
В Python позволяет писать лаконичный и читаемый код без различных затруднений. Несмотря на то, что за машинным обучением и искусственным интеллектом стоят сложные алгоритмы и процессы, простота Python позволяет создавать надежные системы. Разработчики могут полностью сосредоточиться на выполняемых задачах, не отвлекаясь на технические нюансы языка.
Кроме того, Python прост в изучении, чем и привлекает многих разработчиков. Написанный на нем код легко понятен человеку, что упрощает создание моделей для машинного обучения.
Создание алгоритмов ИИ и машинного обучения -- это сложная задача, требующая много времени. И чтобы было легче находить оптимальные пути решения задач, программистам нужна хорошо структурированная и надежная среда разработки. Многочисленные фреймворки и библиотеки Python помогают существенно уменьшить количество времени, необходимого для разработки приложений. Программная библиотека -- это предварительно написанный код, который разработчики используют для решения распространенных задач. Python, с его богатым стеком технологий, имеет обширный набор библиотек для искусственного интеллекта и машинного обучения.
Мультиплатформенность - свойство языка программирования или фреймворка, позволяющее разработчикам переносить ПО на разные машины с минимальными изменениями, либо без изменений вовсе. Одной из причин популярности Python является то, что этот язык от платформ не зависит, так как поддерживается многими из них, включая Linux, Windows и macOS. Код Python может использоваться для создания программ для большинства операционных систем, а это означает, что программное обеспечение Python легко распространять и использовать в этих системах без специальных интерпретаторов
2.5 Взаимодействие ИИС с пользователем
Взаимодействие с ЭС осуществляют различные типы пользователей: пользователи-неспециалисты, пользователи-специалисты, эксперты, пользователи-студенты, инженеры по знаниям.
Задача пользователей, не являющихся специалистами в области экспертизы, состоит в получении от ЭС решения некоторой задачи. Задача пользователей-специалистов в области экспертизы заключается в использовании ЭС для сокращения трудоемкости получения результата или повышения его качества. Задача пользователей-студентов состоит в обучении с помощью ЭС методам решения задач из области экспертизы. Задача экспертов, т.е. высококвалифицированных специалистов, заключается в обнаружении недостающих знаний и вводе их в систему, т.е. осуществлении отладки знаний. Задача инженеров по знаниям заключается в отладке управляющего механизма, анализе и модификации ЭС
Общая схема компоненты взаимодействия приведена на рисунке 1.
Рисунок 2.1. Общая схема компоненты взаимодействия.
В разрабатываемой системе взаимодействие между пользователем и системой будет осуществляться при помощи консольного интерфейса.
2.5 Интегрирование экспертной системы в торговлю
Для интеграции экспертной системы в работу магазина электроники следует выполнить ряд действий, предполагающих успешное решение данного вопроса:
1. Проанализировать, какая продукция пользуется наибольшим спросом на рынке. В настоящее время покупатели выбирают технику, исходя из цены, надежности и долговечности, следовательно, в процессе разработки должны учитываться такие параметры как: материалы корпуса и время поддержки операционной системы устройства компанией-разработчиком.
2. Составить ассортимент, исходя из спроса на предоставляемую продукцию. Следует учитывать, что наибольшим спросом пользуются устройства с высоким соотношением цены/качества.
Также, в процессе успешной интеграции обязательно следует учитывать опыт взаимодействия пользователя с экспертной системой. Поскольку взаимодействие пользователя с экспертной системой будет происходить при помощи интерфейса, то упор нужно сделать именно на этот элемент системы. Интерфейс должен быть приятным, не перегруженным информацией (лаконичным). Также не следует упускать такой параметр как интуитивность, то есть пользователь должен понимать, как взаимодействовать с интерфейсом, не имея подобного опыта.
2.6 Среда разработки
В ходе разработки приложения была использована среда разработки Pycharm. В качестве сильных сторон среды можно выделить следующие: помощь при написание кода - при взаимодействии среда разработки обеспечивает разработчика функциями автодополнения, анализа кода, быстрым исправлением; удобная навигация - встроенная система навигации позволяет быстро перейти к любой функции, классу или файлу, находящемуся в составе проекта.
Также Pycharm предлагает большой набор инструментов «из коробки», что также делает её наиболее предпочтительной средой разработки приложений на языке программирования Python.
ГЛАВА 3. ПРАКТИЧЕСКАЯ РЕАЛИЗАЦИЯ ЗАДАЧИ
3.1 Создание классов
В языке программирования Python классы используются для создания объектно-ориентированной структуры кода. Они позволяют объединять данные и функции в единый объект, называемый экземпляром класса. Классы предоставляют механизм для создания объектов с определенными свойствами (атрибутами) и поведением (методами). В разрабатываемой программе присутствует два класса и 3 функции.
Класс «Quest» инициализирует метод «quest», задающий пользователю вопросы и получающий на них ответы. В Python метод -- это функция, связанная с объектом. Методы определяются внутри класса и используются для выполнения операций с данными объекта.
Рисунок 3.1. Класс «Qest» и метод «qest»
Метод «qest» имеет следующую логику работы: в консоль выводится вопрос с двумя вариантами ответа - да/нет. Пользователь отвечает на вопрос, после чего программа считывает ответ пользователя
Класс «KnowledgeEngine» является рекурсивной машиной обратного вывода. Класс инициализирует объект базы знаний с правилами и выделяет память для вычисленных ранее значений.
Метод «get» используется для получения значений по имени из памяти. Если значение имеется в памяти на момент выполнения метода, то он возвращает найденное значение. Если же значение не найдено, то метод сохраняет его.
Рисунок 3.2. Класс «KnowledgeEngine» и метод «get»
Класс «KnowledgeEngine» также содержит метод «calc», использующийся для вычисления выражения или правила из базы знаний.
Данный метод работает сравнивает значение, полученное от пользователя с данными, хранящимися в базе знаний и на их основе возвращает результат. То есть данный метод реализует логические ИЛИ и И: если полученное из метода «Ask» выражение равно И, и все операции в базе знаний выполнены успешно, то выражение будет считаться истинным.
Если же полученное выражение равно ИЛИ, то для признания истинным все его операции должны быть выполнены успешно. Если полученное из базы знаний значение неизвестно, то метод выведет сообщение об ошибке.
Рисунок 3.3. Метод «calc»
3.2 Создание базы знаний
В разработанной базе знаний содержатся правила, согласно которым программа приложение выводит желаемый для пользователя ответ. База знаний представлена на рисунке 3.4:
Рисунок 3.4. База знаний
3.3 Взаимодействие с пользователем
Приложение взаимодействует с пользователем при помощи вывода в консоль вопросов и вариантов ответа. По принципу действия напоминает игру «Акинатор», за исключением того, что в данном случае приложение имеет только два варианта ответа. Интерфейс приложения представлен на рисунке 3.5:
Рисунок 3.5. Интерфейс приложения
3.4 Тестирование приложения
В рамках тестирования приложения будет отработана два сценария работы приложения: позитивный и негативный: если в результате работы приложения пользователь получит искомый ответ, то сценарий будет считаться позитивным, если же приложение выдаст сообщение об ошибке, то сценарий будет негативным. Позитивный сценарий работы приложения представлен на рисунке 3.6:
Рисунок 3.6. Позитивный сценарий работы приложения
Негативный результат работы приложения представлен на рисунке 3.7: