在上一篇文章中,我简单的叙述了下人机交互的基本内容以及人机交互中涉及到的NLP技术,接下来的文章中,我将侧重于实践部分,本篇文章将从一个简单的DEMO(其实也不是那么简单)——一个基于知识图谱和AIML模板的知识问答。实际上基于模板的知识库问答在工业中比较常见(经过一定调研),接下来,我将从知识图谱和问答架构这两方面的建立开始论述。这个框架见下图。
这部分内容和上一篇一样,甚至更简单,这里就不详细说明了,这篇博客主要讲一下我使用AIML的使用过程。
啥是AIML?
对于AIML的安装,这里建议不要安装中文版本,直接pip install aiml,然后将中文分词然后转换为Unicode编码格式。
2.接下来讲一下我们设置的实现功能
KGQA支持查询的问题(提问模式不唯一):
(1).单人电影查询:
章子怡演过什么电影?
(2).双人电影查询:
周星驰和巩俐合作过什么电影?
(3).电影评分查询:
夜宴这部电影多少分?
(4).电影介绍查询:
功夫讲的什么
(5).电影上映日期查询
(6).电影主要演员查询
先来展示一下最终的实验效果:
接下来讲一下AIML的使用过程:
1.启动AIML并调用模板库:
2.输入问题,AIML响应,搜索模板库做出回应
代码真就这么简单,实际上AIML的模板在这里一次性完成了意图识别和实体识别两个任务,我举个例子:
1.输入“甄子丹和周润发合作过什么电影”
2.分词结果:
3.接下来AIML就会去刚才加载的模板库里寻找这句话匹配的模板,就是下面这个:
这里返回的response就是这个
这里面0代表就是意图,%就是我自己在模板中设置的一些符号,用来提取实体。
4.根据意图识别结果查询图谱
对应的查询语句长这样:
最后就得到结果啦!!
这只是一个相对简单的Demo,用于入门AIML吧,实际上模板的方法挺实用的,毕竟生成式的问答在工程上的难度成本都挺大的,后面我会介绍sequence to sequence模型,就是一个经典的生成式模型!