手动问答的流程
我们的手动问答主要流程按问题的具象与分类、问题的扩充与抽取、答案的生成展开。问题的具象与分类主要用于确立问题的意图,问题的扩充与抽取主要是将问题扩充并转化为标准模板,便于抽取。答案的生成主要是将抽取的实体建立实体链,之后访问图形数据库,以求答案。
问题的具象
首先开源智能问答系统,我们主要采以Hanlp提供的通用型命名实体工具包,并添加部份人工标明的命名实体,其添加的条例如下表所示:
问题的具象主要是为问题的分类做前期的预处理工作。因为用户可能的问题会涉及到不同的影片名称、电影角色等,为了便捷问题的分类,须要将特定的影片名称具象到统一的概念,以下边的事例为例:
源问题:但丁密码中出演罗伯特兰登的艺人是谁?
具象问题:nm中扮演nnt的艺人是谁?
如前面的事例,问题中涉及到专有的影片名称会转化为他的动词nm。这样做的用处在于能让分类器减少特点的选定工作量,也可以削减训练集的规模。
问题的分类
按知识图谱的内容,我们将问题分成以下不同的类型影片的基本属性、主题、制作、内容、角色等,具体的内容分类如下表所示:
对于影片的分类,我们主要借助了spark建立了贝叶斯分类器,通过人工标明的方式产生少量的训练集,右图为分类模型建立的流程图:
问题的扩充
自然语言问句可能的叙述有简单也有复杂的,但总体上都是描述代词与主语的关系,而图是一个才能通过边来描述结点与结点之间关系的模型。语序图是一个有向图,是一个通过主语作为联接、由副词指向代词的有向图。将每位代词或副词看作是一个实体,将主语看作是属性关系。以下边的问句为例:
问句:但丁密码中出演罗伯特兰登的人是谁?
转化为对应的语序图如下:
因为自然语言中常常出现抒发不完整的情况,为了对问题的扩张而抽取出完整的语序图,我们建立了一系列的问题模板,通过分类器的标明,确定问题的意图,并映射对应的问题模板,在模板中产生对应的语序图。问题模板如下表所示:
答案的生成
答案生成的过程主要是将语序图转化为Neo4j的查询句子,之后在数据库中进行查询。但因为查询语言中通配符查询是确切匹配的,而用户输入常常是模糊查询的。因而,本系统主要借助估算查询词与检索词之间的莱文斯坦相像度来完成链接对齐的工作。
实现的疗效图:
杂记
具体实现的流程开源智能问答系统linux培训机构linux操作系统原理,我放置我的github上:
参考的文献主要有:
[1]贺樑.基于英文知识图谱的电商领域问答算法设计与系统实现[D].华南师范学院.2016.
[2]朱敏.面向多领域大规模知识库的自然语言手动问答研究[D].东北交通学院.2015.
[4]宗成庆.统计自然语言处理[M].复旦学院出版社.2008
[3]HoldenKarau,AndyKonwinski[著],王道远[译].Spark快速大数据剖析[M].人民邮电出版
社.2015