KBQA是个啥?

什么是KBQA?

KBQA的全称是基于知识库问答(Knowledge Base Question Answering),即给定自然语言问题,通过对问题进行语义理解和解析,进而利用知识库进行查询、推理得出答案。

知识库是用于知识管理的一种特殊的数据库,用于相关领域知识的采集、整理及提取。知识库中的知识源于领域专家,是求解问题所需领域知识的集合,包括一些基本事实、规则和其他相关信息。

知识库中蕴含着丰富的信息及各种关系连接,将其构建成知识图谱,将得到一个信息量极大的知识网络。

KBQA有什么用?

KBQA是一个问答系统,所以功能是可以回答用户提出的一些问题,比如,

  • 用户问:距离春节还有几天?

  • 回答:45天。

  • 用户问:国庆节是哪一天?

  • 回答:每年10月1日。

KBQA如何实现?

(一)数据部分

(1)原始数据准备

  • 原始三元组数据或其他类型的数据收集

  • 筛选出需要的数据

(2)数据处理

  • 将原始数据转化为统一的数据导入格式

  • 区分不同实体类型并打上标签

  • 如有需要,对实体、属性、关系进行相关编辑

(3)存入图数据库

  • 将数据导入图数据库,图数据库可以选择Neo4j、Dgraph等

KBQA是个啥?_第1张图片

(二)问答部分

(1)流程图

KBQA是个啥?_第2张图片

(2)意图识别

  • 句子预处理

    • 视情况对去除一些字和符号,如“的”、“?”等

  • 实体抽取、属性抽取、时间抽取等

    • 通过同义词表或规则将问句中的实体词、属性词、时间词抽取出来

    • 实体链接,将实体词对应到数据库中的实体,目前是简单的名称匹配

  • 根据以下信息进行意图分类,目前是基于词表和规则去做的

    • 抽取的元素类型,如一个或多个实体、有无属性等

    • 关键词,如“有多少”、“有几个”等

    • 上文信息,如当前是澄清状态需要澄清实体等

    • 正则模板匹配

  • 意图识别返回结果,包含意图及上下文信息

(3)回答生成

  • 依次处理意图

    • 根据意图生成对应的查询语句并进行查询

    • 根据数据库查询结果及意图期望的答案,选择以下方式继续处理

    • 无结果,尝试下一个意图

    • 结果符合要求,返回结果

    • 结果需要澄清,则需要用户澄清

    • 非KBQA,未涉及到知识图谱的意图,如时间转化等,通过对应模块进行处理

    • KBQA

  • 回答生成返回结果,包含回答及新的上下文信息

你可能感兴趣的:(知识图谱)