Public Repository

Last pushed: 8 months ago
Short Description
montony inference engine
Full Description

单调推理机
本系统有2部分文件作为输入。输出是所有推理出的新事实。
在推理系统里,新加入的事实三元组,必须与已有的知识相一致,不引起矛盾。所以,随着运行时间的推移,系统内含的知识有增无减。推理系统作为组件嵌入在机器学习或决策系统里,可以节省的时间和空间消耗。

用途:
1.代指消解
解决问题:小明爸爸的姐姐的的妈妈的丈夫的女儿的丈夫是谁
2.比如金融期货底层商品价格涨价,几十万种原材料涨价,导致不同上层商品的价格变化的推理。

实现方法简介:
单调推理由N条三元组描述的一阶逻辑规则,M条事实,输入系统。计算后产生M1条新事实,自动加入系统并且推理出M2.。继续推理。。。。一直到系统不再有新的事实产生,则迭代结束,并输出结果。因此应注意循环次数的控制和避免规则逻辑导致推理发散。

使用方法:
在utunbu linux 64位系统14.04以上环境部署docker,下载镜像

docker pull zb1840/montony_inference

然后用命令启动:
docker run -it -v /opt/user:/opt/user -p 29990:29999 -p 3009:3000 -d zb1840/montony_inference /bin/bash &
会开启本地的3009端口作为rest测试端口, 和29999的ssh端口
ssh用户root,密码是六个空格。

推理机有2部分文件作为输入 :规则文件和事实文件
别名配置文件/mnt/sdb/shell2/rels/sydict_hash
称谓列表/mnt/sdb/shell2/rels/b2bdic
规则文件 /mnt/sdb/shell2/ruledemo内容如下:
.......
$v 的姥爷是 $v1 && $v1 的儿子是 $v2 => $v 的舅舅是 $v2
$v 的姥姥是 $v1 && $v1 的儿子是 $v2 => $v 的舅舅是 $v2
$v 的舅舅是 $v1 && $v1 的女儿是 $v2 => $v 的表姐妹是 $v2
$v 的舅舅是 $v1 && $v1 的儿子是 $v2 => $v 的表兄弟是 $v2
$v 的姐姐是 $v1 && $v1 的妈妈是 $v2 => $v 的妈妈是 $v2
$v 的姑姑是 $v1 && $v1 的女儿是 $v2 => $v 的堂兄妹是 $v2
$v 的姑姑是 $v1 && $v1 的儿子是 $v2 => $v2 的堂兄弟是 $v

事实文件例如:
丽丽 的妈妈是 童童
丽丽 性别 男性
童童 的妹妹是 兰兰
我 的姑姑是 兰兰
丽丽 年纪大于 我

常识性的事实三元组,可以从conceptnet5,各种rdf数据源抽取。

进入系统运行命令:
root@6545fca11912:/mnt/sdb/shell2# ./diedai4_n3.pl factdemo ruledemo
输出:
童童 年纪大于 兰兰
兰兰 性别 女性
童童 的儿子是 丽丽
丽丽 的阿姨是 兰兰
童童 的姐妹是 兰兰
童童 性别 女性
我 年纪小于 丽丽
丽丽 性别 男性
童童 的兄弟姐妹是 兰兰
丽丽 的妈妈是 童童
童童 的子女是 丽丽
兰兰 年纪小于 童童
兰兰 的姐姐是 童童
我 的姑姑是 童童
兰兰 的姐妹是 童童
童童 的妹妹是 兰兰
兰兰 的兄弟姐妹是 童童
丽丽 的堂兄弟是 我
我 的堂兄弟姐妹是 丽丽
我 的堂兄弟是 丽丽
兰兰 的外甥是 丽丽
丽丽 的堂弟是 我
我 的堂兄是 丽丽

推到出最后结果 我的堂兄是丽丽

规则的说明:$v1 是变量 &&表示并列,可以并列3个三元组特征,规则内可以有两个变量,或者三个常量。 ” =>“表是推理出右侧的结果,变量常量之间必须用空格间隔。$v 的姑姑是 $v1 作为一个线索 ,线索之间用&& 拼接,系统检测全局事实中,同时多个线索则推理成立,退出结果。变量$v,可以支持若干约束条件,在demo文件里可以看到一些约束例子,用“|”间隔。不满足的,认为不能匹配变量。线索之间顺序无关结果, 线索内的顺序与计算结果相关。 三元组事实可以是任意三个中英文词或数字,可以根据需要灵活约定。

测试方法:
运行命令

#time wget http://127.0.0.1:3009/api/res/我姐姐的哥哥的爸爸是谁 -O 777 ;cat 777
输出:
。。。。。。。
vn0 的姐姐是 vn1
vn1 的哥哥是 vn2
vn2 的爸爸是 vn3

vn0 vn3 姐姐
now------ vn2 性别 男性
vn3 性别 男性
vn1 的兄弟是 vn2
vn0 的姐妹是 vn1
vn2 年纪大于 vn1
vn1 年纪大于 vn0
vn1 性别 女性
vn3 的儿子是 vn2
vn0 的兄弟姐妹是 vn1
vn1 的兄弟姐妹是 vn2
vn0 的姐姐是 vn1
vn2 年纪大于 vn0
vn1 年纪小于 vn2
vn0 年纪小于 vn1
vn1 的哥哥是 vn2
vn2 的妹妹是 vn1
vn2 的爸爸是 vn3
vn1 的爸爸是 vn3
vn0 的兄弟姐妹是 vn2
vn3 的子女是 vn2
vn0 年纪小于 vn2
vn3 的女儿是 vn1
vn2 的兄弟姐妹是 vn1
vn0 的爸爸是 vn3
vn2 的兄弟姐妹是 vn0
vn1 的兄弟姐妹是 vn0
vn3 的子女是 vn1
vn0 的兄弟是 vn2
vn0 的哥哥是 vn2
vn3 的子女是 vn0

tpc vn2 性别 男性
tpc vn3 性别 男性
tpc vn1 的兄弟是 vn2
tpc vn0 的姐妹是 vn1
tpc vn2 年纪大于 vn1
tpc vn1 年纪大于 vn0
tpc vn1 性别 女性
tpc vn3 的儿子是 vn2
tpc vn0 的兄弟姐妹是 vn1
tpc vn1 的兄弟姐妹是 vn2
tpc vn0 的姐姐是 vn1
tpc vn2 年纪大于 vn0
tpc vn1 年纪小于 vn2
tpc vn0 年纪小于 vn1
tpc vn1 的哥哥是 vn2
tpc vn2 的妹妹是 vn1
tpc vn2 的爸爸是 vn3
tpc vn2 的姐妹是 vn1
tpc vn1 的爸爸是 vn3
tpc vn0 的兄弟姐妹是 vn2
tpc vn3 的子女是 vn2
tpc vn0 年纪小于 vn2
tpc vn3 的女儿是 vn1
tpc vn2 的兄弟姐妹是 vn1
tpc vn0 的爸爸是 vn3
tpc vn2 的兄弟姐妹是 vn0
tpc vn1 的兄弟姐妹是 vn0
tpc vn3 的子女是 vn1
tpc vn0 的兄弟是 vn2
tpc vn0 的哥哥是 vn2
tpc vn3 的子女是 vn0
tpc
return 我 爸爸,
我 爸爸,

基于GPL v3许可,大家可以自由使用。欢迎多多指正,同时希望开发者编写各自领域的专业规则,常识规则,分享出来,合力提高人工智能应用中单调推理的效果。
本软件的其他版本应用在狗尾草智能科技公司的人工智能琥珀和公子小白等产品中,你可以体验实时推理用于生成式聊天内容。感谢王昊奋博士提出的性能优化建议。感谢开源社区提供的各种基础软件。
如果有其他问题可以发送邮件到75926462@qq.com,或者加张博微信号zb1840

Docker Pull Command
Owner
zb1840