![](https://picx.zhimg.com/v2-3fbf72b9ef2f18b58afad36a138e3737_qhd.jpg?source=57bbeac9)
Prolog
用ChatGPT学习冷门编程语言(二):实体识别
虽然有 Standford NLP 工具包,但还是想利用 Prolog 的模式匹配特性从头做一个白箱的实体识别程序。在定义完已知的实体后,从句子中提取出来。我们来看看挑战是什么吧: 首先,有一个句子: Master Chief hunts the Prophet of Regret,够难吧,英文分词首先要用空格分割单词,但是这样也把Master Chief和the Prophet of Regret打碎成单词了,我们把不符合主谓宾结构的情况排除掉,就能得到符合语言习惯的三元组了。 其次,有以…
个人写一下自己的体会吧。正如我们不要求 CPU 和 GPU 必须只能二选一,我觉得 Prolog 适合逻辑复杂度比批处理要求更高的场景。数据量多,我们自然能够找到规律,整合起来做一个数据库进行高性能并行检索,就像 GPU 用于机器学习就比 CPU 好得多,但是 CPU 为什么没有被取代呢?这值得思考。 用 Prolog 后潜意识中最兴奋的体验是:if、for 这样的嵌套好像能少写很多的样子,主要得益于对不定长不定深逻辑链的简单表示,我觉得这就…
用ChatGPT学习冷门编程语言(一):三元组
自打ChatGPT爆火以后,给程序员带来的一大便利就是冷门过气编程语言的学习不再痛苦。拿逻辑编程语言SWI-Prolog来说,其文档看起来都相当复杂,术语多而实例少,想实现一个对热门编程语言再简单不过的功能,可能在网上都难以找到解决方案。 作为测试之一,既然逻辑编程语言的一大特点是逻辑关系的检索,我提出这样的需求:有一存储三元组的csv文件 demo.csv,内容如下:John,loves,Cortana Halsey,loves,Cortana Anders,hates,Hal…
目前用在用prolog做专家系统做疾病诊断,先实现mycin swi-prolog版,再升级实现主观贝叶斯推理,应该就可以开发成专家系统了。 不能广泛应用的原因主要是忒难懂了,而且学习资料非常之少,官网英文描述也非常不友好。 规则推理全是递归,全是递归,学到崩溃。在swi-prolog环境开发,还好最后结合Amzi复现了mycin。主攻下一关,主观贝叶斯。 至于性能一说,对于规则推理,不确定推理,性能本来就是个大问题,最好用!来提前结束递…
swi-prolog的确定性声明
swi-prolog系统中的确定性声明swi-prolog吸收了一点Mercury语言的设计,你可以标记一个谓词的"确定性" det - 确定性的转换(例如算术),明确只成功一次。semidet - 明确只成功/失败一次,如var/1这种类型判断谓词或者测试failure - 永远失败nondet - 不限制成功次数multi - 会有多次选择,且至少能成功一次,和nndet一般用于数据生成器undefined - 不真也不假的第三值确定性往往和某个谓词被实例化的参数有关 - 所以还要配合参数…
Prolog进阶教程(二)
写在前面,后面的例子显示的是 yes 和 no ,但是有些机器上会显示 true 和 false ,其实是同一个意思(后文有时候会混用)。本文是我自己的学习笔记,转载请注明出处。注意:每次修改了代码后,记得点击 File-Consult 重新读取下文件! [文章: Prolog进阶教程(一)] a2b/2我们再来实现一个名为 a2b/2 的谓词 (predicate) ,其参数有两个。第一个参数是由很多个 a 组成的列表,第二个参数是由很多个 b 组成的列表。 a2b/2 将会…
Prolog进阶教程(一)
写在前面,后面的例子显示的是 yes 和 no ,但是有些机器上会显示 true 和 false ,其实是同一个意思(后文有时候会混用)。本文是我自己的学习笔记,转载请注明出处。注意:每次修改了代码后,记得点击 File-Consult 重新读取下文件! 列表列表是一系列有限的元素。一些例子: [A, a, b, c] [] [[], dead(z), [2, [b, c]], c]其中 [ ] 空列表是一个特殊的列表。对于一个非空列表来说,由以下两个部分组成: The headThe tailhea…
仅讨论 Prolog 的话,我觉得 Prolog 的一个很大的缺点是这个语言没有类型的概念。也许是时代限制在性能和实现方面的 tradeoff,但是这个问题的直接后果就是用 Prolog 来构建稍微大一点的项目都极度痛苦。相比较大部分语言中得益于开发者都可以享受到的静态分析、编译时错误警告和基于上下文的补全,用 Prolog 开发应用的体验完全是三十年前的。而这一切工具链很大程度上都基于静态强类型语言的类型系统(或者弱类型/动态语言中虽…