事实库
一、是什么
Fact Base是一个事实集合,里面存放的是推理过程中可用的已知断言,可以包括:
- 显式提供的领域事实(例如“张三是学生”、“A是B的父亲”等);
- 从外部系统(例如“三库系统”)动态导入的事实(尚在开发);
- 推理过程中不断推导出来的新事实。
在实现中,Fact Base维护了两层集合:
facts:系统已知的“全部事实”;cur_facts:本次解题真正参与推理的事实子集。
常见流程是:
- 给出问题
Question; - 引擎调用
initial_fact_base(question, topn=...):- 按启发式,从
facts中挑选与当前问题最相关的一部分; - 向外部系统请求与该问题关联的补充事实;
- 统一放入
cur_facts,作为本轮推理的起点。
- 按启发式,从
二、录入方式
2.1 字符串形式
WIP
2.2 python代码
一般通过Assertion类进行录入。