目录
简介
KBQA()基于知识图谱的问答系统,大体流程是根据问句查询知识谱曲,然后根据知识图谱的信息生成一句答案返回给用户。
1、nlu(自然语言理解)
对于问答系统来说,自然语言理解就是要从自然语言当中提取query所提问的信息。
1、意图识别
匹配法:
预先定义好一些意图类别,根据正则匹配出指定的意图,从而判断出query的意图。
分类法:
预先将意图分类并训练好分类器,将query用分类器分类。判断意图
2、提取实体
1、匹配法
预先定义好需要抽取的实体的类型和字典,通过正则匹配的方法类提取实体。
优点:在小规模特定数据集上效率和准确行都比较高
缺点:1、在大规模数据集上需要准备的类别和字典都需要人工校验,工作量大。有些实体,如地名、人名几乎无法穷尽,或者穷尽的成本太大。
2、命名实体识别
能够解决实体无法穷尽的情况,但是精度是有限的,目前在特定领域的精度还不能超过匹配法。
2、信息处理
当系统理解了自然语言的信息以后,系统会根据指定或者提取的意图来分析问句的信息,得到结果。
例如:姚明的老婆是谁?
intent=“who”
entity1=“姚明”
entity2=“老婆”或者“妻子”
根据意图,我们判断问句问的是人,我们可以在任务关系的知识图谱中进行查询,然后查询的实体是“姚明”,关系是“夫妻”。就可以查到对应的人名了。
信息处理的方式有很多种,需要根据实际需要选择一种或者多种。
1、信息检索
2、知识图谱
知识图谱可以存储关系型的数据,存储复杂的信息。
查询知识图谱用sparql语句就可以了。
3、nlg(自然语言生成)
模板法:
通过意图选择固定的模板生成答案
例如:姚明,老婆,是,{{人名}}