【知识图谱】KBQA核心架构小结

2023-10-17 09:04

本文主要是介绍【知识图谱】KBQA核心架构小结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

KBQA是指基于知识图谱的问答系统,是知识图谱的重要应用形式,基于知识图谱的问答和基于LLM的问答殊途同归。
KBQA是一个系统,由多种功能模块组成,其核心架构梳理如下:
在这里插入图片描述
下面对各个模块简单小结

文本清洗

只有是文本的领域都基本上要做一些清洗和预处理操作,比如标点符号统一,无效字符删除等。
另外,在这个阶段需要认真评估应用场景的问题描述方式和KG构建阶段的数据特点是否一致(专业化说叫数据分布是否一致),若不一致,则在实体链接阶段可能识别不出实体或识别错误(较大概率,特别是NER算法采用CRF类的,感觉对序列分布比较敏感),所以在清洗时要将数据处理成和训练阶段一致的数据。

意图识别

除开闲聊外,知识问答都是带有目的的,因此需要识别出用户的意图。
最简单的,用关键词加正则的方式来进行意图分类,前提是你能从问题中抽取出特定意图的特定表达方式。
在NLP领域,这里本质是也在做一个文本分类任务,因此文本分类的模型也可以上。

实体链接

这里比较难,是进行实体链接而不是实体抽取,因为抽取完成之后,有很多事情要做。对实体链接模块进行展开,其包括三个子模块:
(1)实体抽取模块
这个同知识图谱构建阶段,可以复用NER算法。或者基于词典进行识别(不推荐,因为用户的问题五花八门,词典很难覆盖全)
若存在前面说的数据分布不一致,则实体抽取可能有结果,可能无结果。
(2)候选实体生成及排序模块
针对有结果的实体进行候选实体生成,如抽取出“苹果”,此时知识库中可能存在相同指称的多个实体(类比不同),也可能不存在这个指称的实体,对于前者,属于有有链接的实体,若只有一个链接结果,则无歧义,若有多个,则需要进行实体消歧,已确定实体就是属于哪种类别。
这里可能需要算法来对每个候选实体进行打分排序。
(3)无链接实体预测模块
对于无链接实体,一种情况可能是因为输入或抽取错误,导致知识库中存在的实体二没有被准确链接到,还有一种情况就是输入和抽取是争取的,但知识库中不存在该实体(此时为新知识),因此在进行预测,需要分情况处理。
对于前者,则可以在知识库中召回一些候选实体,通过语义相似度或字符串相似度与待链接实体进行计算,将top1且大于一定阈值的作为链接实体,小于阈值,则则视为发现新知识。
可以借鉴推荐系统的召回算法及思路。

cypher构造/执行查询/话术模板填充

这几个部分都比较简单,就不展开了。

这篇关于【知识图谱】KBQA核心架构小结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/224359

相关文章

springboot中使用okhttp3的小结

《springboot中使用okhttp3的小结》OkHttp3是一个JavaHTTP客户端,可以处理各种请求类型,比如GET、POST、PUT等,并且支持高效的HTTP连接池、请求和响应缓存、以及异... 在 Spring Boot 项目中使用 OkHttp3 进行 HTTP 请求是一个高效且流行的方式。

mybatis映射器配置小结

《mybatis映射器配置小结》本文详解MyBatis映射器配置,重点讲解字段映射的三种解决方案(别名、自动驼峰映射、resultMap),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定... 目录select中字段的映射问题使用SQL语句中的别名功能使用mapUnderscoreToCame

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

Java Stream 并行流简介、使用与注意事项小结

《JavaStream并行流简介、使用与注意事项小结》Java8并行流基于StreamAPI,利用多核CPU提升计算密集型任务效率,但需注意线程安全、顺序不确定及线程池管理,可通过自定义线程池与C... 目录1. 并行流简介​特点:​2. 并行流的简单使用​示例:并行流的基本使用​3. 配合自定义线程池​示

Java实现复杂查询优化的7个技巧小结

《Java实现复杂查询优化的7个技巧小结》在Java项目中,复杂查询是开发者面临的“硬骨头”,本文将通过7个实战技巧,结合代码示例和性能对比,手把手教你如何让复杂查询变得优雅,大家可以根据需求进行选择... 目录一、复杂查询的痛点:为何你的代码“又臭又长”1.1冗余变量与中间状态1.2重复查询与性能陷阱1.

Go之errors.New和fmt.Errorf 的区别小结

《Go之errors.New和fmt.Errorf的区别小结》本文主要介绍了Go之errors.New和fmt.Errorf的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考... 目录error的基本用法1. 获取错误信息2. 在条件判断中使用基本区别1.函数签名2.使用场景详细对

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python进阶之列表推导式的10个核心技巧

《Python进阶之列表推导式的10个核心技巧》在Python编程中,列表推导式(ListComprehension)是提升代码效率的瑞士军刀,本文将通过真实场景案例,揭示列表推导式的进阶用法,希望对... 目录一、基础语法重构:理解推导式的底层逻辑二、嵌套循环:破解多维数据处理难题三、条件表达式:实现分支

深度解析Python yfinance的核心功能和高级用法

《深度解析Pythonyfinance的核心功能和高级用法》yfinance是一个功能强大且易于使用的Python库,用于从YahooFinance获取金融数据,本教程将深入探讨yfinance的核... 目录yfinance 深度解析教程 (python)1. 简介与安装1.1 什么是 yfinance?