规则库
一、是什么
Rule Base用来存储一组抽象规则,每条规则是“在什么条件下可以推出什么结论”的形式,在代码中由 Rule 类描述:
body(前提) → head(结论)
例如(仅作类比,不是实际语法):
- 如果「一个人是学生」并且「这门课是必修课」, 那么「这个人必须修这门课」。
在本实现中:
RuleBase会统一接收初始规则列表;- 在初始化时会通过
RuleSpliter(DNF转换器)将复合规则拆分为多个子析取规则,方便后续推理。 - 规则中的变量会在内部自动重命名(
_rename_rule_vars),以避免多个规则之间变量名称冲突。
这些处理对初次使用者来说是透明的,你只需要事先编写规则并交给引擎。
与 Fact Base 不同:
- Fact Base 在一次推理过程中是不断增量变化的(新事实会加入);
- Rule Base 中的规则在一个应用场景下通常是相对固定的领域知识,一般不会在推理过程中频繁改变。
Rule Base主要做两件事:
- 存储全部规则;
- 在给定问题
Question时,选出一部分可能相关的规则来参与本轮推理(initial_rule_base(question, topn=...))。
因此,从使用者视角,你可以理解为:
Rule Base = 领域专家的“经验总结”和“业务逻辑”。
二、录入方式
2.1 字符串形式
WIP
2.2 python代码
通过Rule类进行录入。