Рисунок 3.7. Негативный результат работы приложения
ЗАКЛЮЧЕНИЕ
Развитие информационных технологий, в том числе всемирной паутины, настоятельно требует наличия всё новых и новых возможностей получения и обработки информации и знаний, которые предприятия и физические лица могут использовать в рамках своей деятельности.
Благодаря развитию языков программирования появилось большое количество возможностей для решения различных задач в сфере интеллектуальных информационных систем.
В результате выполнения поставленной задачи я на практике убедился в гибкости и мощности языка программирования Python и попрактиковался в создании экспертных систем.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. «Искусственный интеллект в розничной торговле» - сайт - URL: https://cloudmakers.ru/iskusstvennyj-intellekt-v-roznichnaya-torgovli/
2. «Среда разработки Pycharm» - сайт - URL: https://www.jetbrains.com/ru-ru/pycharm/features/
3. «The Python tutorial» - сайт - URL: https://docs.python.org/3/tutorial/index.html
4. Бхаргава, А. Грокаем алгоритмы[Текст]: учебное пособие
ПРИЛОЖЕНИЯ
class Qest:
def __init__(self, choices=['Y', 'N']):
self.choices = choices
def qest(self):
if max([len(a) for a in self.choices]) > 3:
for i, a in enumerate(self.choices):
print("{0}. {1}".format(i, a))
a = int(input())
return self.choices[a]
else:
print("/".join(self.choices))
return input()
rules = {
'default': Qest(['Y', 'N']),
'техника:iphone 14': If(['смартфон', 'производитель: US', 'диагональ: 5.5', 'ligtning']),
'техника:xiaomi 12': If(['смартфон', 'производитель: CN', 'диагональ: 6.5', 'type c']),
'техника:google pixel 6': If(['смартфон', 'производитель: US', 'диагональ: 6', 'type c']),
'техника:ipad pro': If(['планшет', 'производитель: US', 'диагональ: 10', 'ligtning']),
'техника:ipad 2020': If(['планшет', 'производитель: US', 'диагональ: 10.5', 'ligtning']),
'техника:google pixel 5a': If(['смартфон', 'производитель: US', 'диагональ: 5.5', 'type c']),
'техника:hp spectre': If(['ноутбук', 'type c', 'производитель: CN', 'диагональ: 15']),
'техника:macbook pro 13': If(['ноутбук', 'type c', 'производитель: US', 'диагональ: 13']),
'техника:macbook pro 15': If(['ноутбук', 'type c', 'производитель: US', 'диагональ: 15']),
'техника:msi stealth 15m': If(['ноутбук', 'разъём: другое', 'производитель: CN', 'диагональ: 16']),
'техника:thunderobot ': If(['ноутбук', 'разъём: другое', 'производитель: PRC', 'диагональ: 16']),
'техника:iphone 15 pro max': If(['смартфон', 'производитель: US', 'диагональ: 6', 'ligtning']),
'техника:bq 5565': If(['смартфон', 'производитель: PRC', 'диагональ: 6', 'micro usb']),
'техника:poco c51': If(['смартфон', 'производитель: PRC', 'диагональ: 5.5', 'micro usb']),
}
class KnowledgeEngine:
def __init__(self, rules):
self.rules = rules
self.memory = {}
def get(self, name):
if name in self.memory.keys():
return self.memory[name]
for fld in self.rules.keys():
if fld == name or fld.startswith(name + ":"):
value = 'y' if fld == name else fld.split(':')[1]
res = self.calc(self.rules[fld], field=name)
if res == 'y':
self.memory[name] = value
return value
res = self.calc(self.rules['default'], field=name)
self.memory[name] = res
return res
def calc(self, expr, field=None):
if isinstance(expr, Qest):
print(field)
return expr.qest()
elif isinstance(expr, If):
return self.calc(expr.x)
elif isinstance(expr, AND) or isinstance(expr, list):
expr = expr.x if isinstance(expr, AND) else expr
for x in expr:
if self.calc(x) == 'n':
return 'n'
return 'y'
elif isinstance(expr, OR):
for x in expr.x:
if self.calc(x) == 'y':
return 'y'
return 'y'
elif isinstance(expr, str):
return self.get(expr)
else:
print("Неизвестное выражение: {}".format(expr))
ke = KnowledgeEngine(rules)
ke.get('техника')