基于知识图谱的电影自动问答系统(二)自动问答实现

自动问答的流程

我们的自动问答主要流程按问题的抽象与分类、问题的扩展与抽取、答案的生成展开。问题的抽象与分类主要用于确立问题的意图,问题的扩展与抽取主要是将问题扩展并转化为标准模板,以便抽取。答案的生成主要是将抽取的实体构建实体链,然后访问图形数据库,以求答案。

问题的抽象

首先,我们主要采以 Hanlp 提供的通用型命名实体工具包,并添加部分人工标注的命名实体,其添加的细则如下表所示:
这里写图片描述
问题的抽象主要是为问题的分类做前期的预处理工作。由于用户可能的问题会涉及到不同的电影名称、电影角色等,为了方便问题的分类,需要将特定的电影名称抽象到统一的概念,以下面的例子为例:
源问题:但丁密码中饰演罗伯特兰登的演员是谁?
抽象问题:nm 中饰演 nnt 的演员是谁?
如上面的例子,问题中涉及到专有的电影名称会转化为他的词性 nm。这样做的好处在于能让分类器减轻特征的选取工作量,也可以缩减训练集的规模。

问题的分类

按知识图谱的内容,我们将问题分成以下不同的类型电影的基本属性、主题、制作、内容、角色等,具体的内容分类如下表所示:
这里写图片描述
对于电影的分类,我们主要利用了 spark 构建了贝叶斯分类器,通过人工标注的方法形成少量的训练集,下图为分类模型构建的流程图:
这里写图片描述

问题的扩展

自然语言问句可能的表述有简单也有复杂的,但总体上都是描述主语与宾语的关系,而图是一个能够通过边来描述结点与结点之间关系的模型。语序图是一个有向图,是一个通过谓语作为连接、由主语指向宾语的有向图。将每个主语或宾语看作是一个实体,将谓语看作是属性关系。以下面的问句为例:
问句:但丁密码中饰演罗伯特兰登的人是谁?
转化为对应的语序图如下:
这里写图片描述

由于自然语言中经常出现表达不完整的情况,为了对问题的扩张而抽取出完整的语序图,我们构建了一系列的问题模板,通过分类器的标注,确定问题的意图,并映射对应的问题模板,在模板中形成对应的语序图。问题模板如下表所示:
这里写图片描述

答案的生成

答案生成的过程主要是将语序图转化为 Neo4j 的查询语句,然后在数据库中进行查询。但由于查询语言中键值查询是准确匹配的,而用户输入往往是模糊查询的。因此,本系统主要利用计算查询词与检索词之间的莱文斯坦相似度来完成链接对齐的工作。

实现的效果图:
这里写图片描述

后记

具体实现的流程,我放置我的github上:
https://github.com/Quincy1994/Beatles/blob/master/QueryProcess.java

参考的文献主要有:
[1]贺樑.基于中文知识图谱的电商领域问答算法设计与系统实现[D].华东师范大学.2016.
[2]朱敏.面向多领域大规模知识库的自然语言自动问答研究[D].西南交通大学.2015.
[4]宗成庆.统计自然语言处理[M].清华大学出版社.2008
[3]Holden Karau,Andy Konwinski[著],王道远[译].Spark 快速大数据分析[M].人民邮电出版
社.2015

  • 19
    点赞
  • 118
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值