知识图谱自然语言处理

(七)图谱搜索——利用AIML进行图谱问答(下)

2018-12-06  本文已影响558人  天生smile

         在上一篇文章中,我简单的叙述了下人机交互的基本内容以及人机交互中涉及到的NLP技术,接下来的文章中,我将侧重于实践部分,本篇文章将从一个简单的DEMO(其实也不是那么简单)——一个基于知识图谱和AIML模板的知识问答。实际上基于模板的知识库问答在工业中比较常见(经过一定调研),接下来,我将从知识图谱和问答架构这两方面的建立开始论述。这个框架见下图。

         这个知识问答是我基于一个电影知识图谱做的,其实这个小Demo的实现时间是在金融图谱文章之前做的,所以用的是一个比较简单的图谱,而且这个图谱也是参照别人的例子做的,在这里先把数据贴出来,和上篇文章一样,把这个数据导入mysql,然后导入neo4j,就是下面这个样子:

这部分内容和上一篇一样,甚至更简单,这里就不详细说明了,这篇博客主要讲一下我使用AIML的使用过程。

啥是AIML?

        AIML,全名为Artificial Intelligence Markup Language(人工智能标记语言),是一种创建自然语言软件代理的XML语言,是由Richard Wallace和世界各地的自由软件社区在1995年至2002年发明的。

具体的AIML的语法就不详细讲了,具体的参见这篇博客https://blog.csdn.net/woowindice/article/details/302298,如果想了解更多这部分内容可以去网上搜,我的理解就是一个利用模板进行问答,对话的工具。

对于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模型,就是一个经典的生成式模型!

上一篇下一篇

猜你喜欢

热点阅读