Python 专家系统
项目描述
Experta 是一个 Python 库,用于构建受CLIPS强烈启发的专家系统。
from random import choice
from experta import *
class Light(Fact):
"""Info about the traffic light."""
pass
class RobotCrossStreet(KnowledgeEngine):
@Rule(Light(color='green'))
def green_light(self):
print("Walk")
@Rule(Light(color='red'))
def red_light(self):
print("Don't walk")
@Rule(AS.light << Light(color=L('yellow') | L('blinking-yellow')))
def cautious(self, light):
print("Be cautious because light is", light["color"])
>>> engine = RobotCrossStreet()
>>> engine.reset()
>>> engine.declare(Light(color=choice(['green', 'yellow', 'blinking-yellow', 'red'])))
>>> engine.run()
Be cautious because light is blinking-yellow
从 Pyknow 迁移
Experta 是一个 Pyknow 分支。只需将代码/示例中的任何pyknow引用替换为专家,一切都应该正常工作。
例子
您可以在GitHub 上找到更多示例。
去做
变更日志
1.9.4
已解决 #10。DepthStrategy 中的角落案例,其中议程的第一次激活没有被删除。
1.9.3
解决了与 #7 一起引入的 #11,它在不同条件下导致相同的行为。
1.9.2
已解决 #7。在某些情况下,最后一次激活在进入议程后立即被删除。
1.9.1
解决了#3。不应使用已撤回的事实调用规则。
1.9.0
放弃 Python 3.4 支持。
使用 setup.cfg 保存所有包元数据。
1.8.0-1.8.2
更名为 Experta。
1.7.0
实现了模板系统。
用观察者消息替换警告。
修复了冻结对象的 freeze()。
修复了未冻结对象的 unfreeze()。
通过 reset() kwargs 参数化 DefFacts。
1.6.0
提高了整体性能。
1.5.0
将 Python 3.7 版添加到 tox.ini。
猴子和香蕉的例子。
修复了错误,数字索引 args 以1.4.0中引入的奇怪方式重复。
在没有 kwargs 的情况下仅传递定义的 args。
1.4.0
制作副本后订购整数事实键。
事实的 as_dict 方法。
冻结和解冻方法文档。
pyknow.utils 中的解冻方法。
Clips 中的 Zebra 示例。
1.3.0
pyknow.operator模块。
嵌套匹配。
在 docs 文件夹中添加了 Talk 'Sistemas Expertos en Python con PyKnow - PyConES 2017'。
1.2.0
冻结事实值作为解决问题 #9 的默认行为。
添加了 pyknow.utils.anyof以缓解问题 #7。
如果在 declare() 之后修改了事实值,则引发 RuntimeError。
添加了 MATCH 和 AS 对象。
1.1.1
删除 P 场约束的博格优化。
在节点的排序中使用检查的哈希值始终生成网络的相同 alpha 部分。
1.1.0
在谓词字段约束 (P()) 中允许任何类型的可调用。
1.0.1
AND or Rule 中 OR 子句的 DNF 执行错误。
1.0.0
RETE匹配算法。
更好的规则装饰器系统。
事实就是字典。
文档。
<1.0.0
不稳定的 API。
错误的匹配算法。
表现不佳
请不要使用这个。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。