【知识图谱】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

相关文章

Flutter打包APK的几种方式小结

《Flutter打包APK的几种方式小结》Flutter打包不同于RN,Flutter可以在AndroidStudio里编写Flutter代码并最终打包为APK,本篇主要阐述涉及到的几种打包方式,通... 目录前言1. android原生打包APK方式2. Flutter通过原生工程打包方式3. Futte

Docker镜像pull失败两种解决办法小结

《Docker镜像pull失败两种解决办法小结》有时候我们在拉取Docker镜像的过程中会遇到一些问题,:本文主要介绍Docker镜像pull失败两种解决办法的相关资料,文中通过代码介绍的非常详细... 目录docker 镜像 pull 失败解决办法1DrQwWCocker 镜像 pull 失败解决方法2总

Java异常架构Exception(异常)详解

《Java异常架构Exception(异常)详解》:本文主要介绍Java异常架构Exception(异常),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. Exception 类的概述Exception的分类2. 受检异常(Checked Exception)

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Ollama Python 使用小结

《OllamaPython使用小结》Ollama提供了PythonSDK,使得开发者能够在Python环境中轻松集成和使用本地运行的模型进行自然语言处理任务,具有一定的参考价值,感兴趣的可以了解一... 目录安装 python SDK启动本地服务使用 Ollama 的 Python SDK 进行推理自定义客

java String.join()的使用小结

《javaString.join()的使用小结》String.join()是Java8引入的一个实用方法,用于将多个字符串按照指定分隔符连接成一个字符串,本文主要介绍了javaString.join... 目录1. 方法定义2. 基本用法2.1 拼接多个字符串2.2 拼接集合中的字符串3. 使用场景和示例3

Qt 中 isHidden 和 isVisible 的区别与使用小结

《Qt中isHidden和isVisible的区别与使用小结》Qt中的isHidden()和isVisible()方法都用于查询组件显示或隐藏状态,然而,它们有很大的区别,了解它们对于正确操... 目录1. 基础概念2. 区别清见3. 实际案例4. 注意事项5. 总结1. 基础概念Qt 中的 isHidd

SQL中的CASE WHEN用法小结

《SQL中的CASEWHEN用法小结》文章详细介绍了SQL中的CASEWHEN函数及其用法,包括简单CASEWHEN和CASEWHEN条件表达式两种形式,并通过多个实际场景展示了如何使用CASEWH... 目录一、简单CASE WHEN函数:二、CASE WHEN条件表达式函数三、常用场景场景1:不同状态展

Linux find 命令完全指南及核心用法

《Linuxfind命令完全指南及核心用法》find是Linux系统最强大的文件搜索工具,支持嵌套遍历、条件筛选、执行动作,下面给大家介绍Linuxfind命令完全指南,感兴趣的朋友一起看看吧... 目录一、基础搜索模式1. 按文件名搜索(精确/模糊匹配)2. 排除指定目录/文件二、根据文件类型筛选三、时间

国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)

《国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)》本文给大家利用deepseek模型搭建私有知识问答库的详细步骤和遇到的问题及解决办法,感兴趣的朋友一起看看吧... 目录1. 第1步大家在安装完ollama后,需要到系统环境变量中添加两个变量2. 第3步 “在cmd中