规则库


一、是什么

Rule Base用来存储一组抽象规则,每条规则是“在什么条件下可以推出什么结论”的形式,在代码中由 Rule 类描述:

body(前提)  →  head(结论)

例如(仅作类比,不是实际语法):

  • 如果「一个人是学生」并且「这门课是必修课」, 那么「这个人必须修这门课」。

在本实现中:

  • RuleBase 会统一接收初始规则列表;
  • 在初始化时会通过 RuleSpliter(DNF转换器) 将复合规则拆分为多个子析取规则,方便后续推理。
  • 规则中的变量会在内部自动重命名(_rename_rule_vars),以避免多个规则之间变量名称冲突。

这些处理对初次使用者来说是透明的,你只需要事先编写规则并交给引擎。

与 Fact Base 不同:

  • Fact Base 在一次推理过程中是不断增量变化的(新事实会加入);
  • Rule Base 中的规则在一个应用场景下通常是相对固定的领域知识,一般不会在推理过程中频繁改变。

Rule Base主要做两件事:

  1. 存储全部规则;
  2. 在给定问题 Question 时,选出一部分可能相关的规则来参与本轮推理(initial_rule_base(question, topn=...))。

因此,从使用者视角,你可以理解为:

Rule Base = 领域专家的“经验总结”和“业务逻辑”。

二、录入方式

2.1 字符串形式

WIP

2.2 python代码

通过Rule类进行录入。