论文浅尝 | 将复杂知识图谱问答对齐为约束代码生成(COLING2025)
笔记整理:康家溱,东南大学在读硕士,研究方向为代码大语言模型
论文链接:https://aclanthology.org/2025.coling-main.267.pdf
发表会议:COLING 2025
1. 动机
近年来,随着大语言模型(LLM)展现出强大的推理能力,越来越多的专家学者利用大语言模型增强知识问答任务的可靠性。基于图谱的知识问答(KGQA)是指通过在图谱上执行逻辑形式(Logic Form)如SPARQL,S-Expression等生成用户需要的答案。
随着用户提问的复杂程度不断提升,大语言模型的推理能力涌现,以及上下文学习这种不需要训练的方式极大减小了开销,从而利用大语言模型生成逻辑形式完成复杂知识问答的形式备受青睐。
逻辑形式是连接自然语言问题与知识图谱的桥梁,由于预训练阶段接触到的逻辑形式较少,面对复杂查询如非单调推理,逻辑组合,数值计算等情况,直接生成LF(如SPARQL、S-Expression)容易出现语法错误,且复杂知识问答常常需要组合推理和数值计算等过程,这需要大模型逐步解析推理过程从而提高推理的透明度。
KoPL是一种符号化的逻辑形式,由模块化函数组成,每个函数有明确的输入/输出类型约束。同理,Python等语言同样通过函数组合完成任务,且遵守严格的语法和类型规则。由于知识导向的编程语言(KoPL)与通用编程语言(如Python)在结构上具有本质相似性,因此本文将逻辑形式(LF)生成任务重新定义为Python代码生成任务。
2. 贡献
(1)本文提出了CodeAlignKGQA框架,将KoPL生成任务对齐为Python代码生成任务,利用Code LLMs的模块化编程能力,增强了鲁棒性。
(2)本文提出了一种动态感知的方法,基于BFS和语义相似度提取问题的相关子图,作为代码生成的上下文约束,无需感知图谱全部信息。
(3)本文设计一种动态的纠错机制,通过检查生成代码的输入输出类型,指导LLM生成正确代码。
3. 方法
本文提出 CodeAlignKGQA 框架,通过将知识图谱问答中的逻辑形式生成任务重新定义为 Python代码生成任务,利用代码大语言模型的编程能力提升生成质量。其核心方法分为三步:
(1)知识感知的提示生成:动态提取问题相关的子图信息,包括实体,关系等,从而构建包含指令、函数定义和示例的提示。
(2)约束代码生成:通过引导代码大语言模型生成符合KoPL语法和子图类型约束的Python风格代码。
(3)动态自纠正:通过语法验证和程序结构检索修复错误代码,最终将生成的代码解析为KoPL并在知识图谱上执行。
图1 模型框架图
3.1 知识感知的提示生成
子图提取:首先利用命名体识别(NER)对问题中的实体和关系进行过滤,掩码后生成n个候选,接着利用BERT进行编码,采用余弦相似度匹配KG中的关系或属性,得到初步子图,广度优先搜索(BFS)扩展该子图得到最终子图。
提示合成:预先明确代码生成规则,将KoPL的27种操作映射为Python函数,再人工从训练集数据中挑选少量样本,合成完整上下文。
图2 复杂问题子图匹配
3.2 约束代码生成
通过将知识图谱的KoPL操作预定义为Python函数(如FIND()、RELATE()),并嵌入动态断言(assert)强制检查输入输出类型(如entities、int),引导LLM生成符合语法和语义规则的代码。生成时,要求模型分步输出Python风格的KoPL程序再通过解释运行代码和链式调用检查保证逻辑连贯,最终将代码解析为可执行的KoPL查询。
3.3 动态代码纠正
当生成的代码未通过语法检查或类型确认时,要求系统从预构建的函数覆盖池中检索与错误代码结构相似的Top-K正确示例(利用余弦相似度进行匹配),替换原提示中的少样本示例,并重新生成代码。
3.4 图谱映射执行
该过程首先对生成的代码中的文本输入(如实体名、关系名)进行语义链接,从知识图谱中通过向量相似度从KG中提取Top-10候选,再由LLM基于问题上下文选择最优项,按依赖关系排序执行步骤,最后将Python代码解析为标准KoPL程序,执行解析后的KoPL程序获得答案。
4. 实验
4.1 评测
本文选择了三个具有不同复杂程度的KGQA数据集进行评测,分别是KQA Pro,MetaQA和WebQSP。
其中KQA Pro包含94K训练集,11K测试集,最多可达10跳推理,涉及到组合推理、数值比较、多跳查询等复杂问题。MetaQA为电影领域多跳问答。WebQSP则是基于真实数据构建。
基准方法:本文对比了两类不同的基线方法,分别是全监督方法,和少样本方法进行对比,此外还对不同的代码大语言模型实现了消融实验。
表1说明了实验数据集的多样性和规模,为后续实验提供了有力支撑,同时也分析了利用大语言模型和现有SOTA基于符号化生成的性能差异。
表 1 分类性能表现
表2展示了KQA-Pro评测结果,从命中率来看,相比于全监督模式,CodeALignKGQA展现出极大潜力,但略逊于通过少样本的方式Gemini Pro 1.0的表现。从句法错误率角度(Syntax Error Rate (SER%))来看,该方案取得明显优势。
表 2 KQA Pro评测结果
表3展示了MetaQA的评测结果,从命中率来看,模型在单跳推理和双跳推理任务上稳居第一,效果略强于Gemini Pro 1.0,在三跳推理任务上取得第二,效果略低于Gemini Pro 1.0。
表 3 MetaQA 评测结果
表4展示了WebQSP的评测结果,从WebQSP的结果来看,模型的F1指数位列第一,说明模型有着不错的精准度和召回率,且几乎未产生句法错误,这符合该方案的设计动机。
表 4 WebQSP 评测结果
与GPT4的对比试验:
该实验对比了四个不同的LLM在三个数据集上实验效果,GPT-4仅在KQA Pro上表现最优,在其它两个数据集上表现逊色于CodeLlama Instruct和 Gemini Pro 1.0,可能由于GPT4具有更强的推理能力和丰富的通用知识,但在简单场景下,面对特定领域相关的知识问答场景无法充分发挥自身通用推理的能力,这也进一步表明更强的模型并不一定在所有场景下的表现都是最优的。
表 5 与GPT性能对比
表6分析了该框架中知识感知模块的性能,通过设计不同的相似度阈值,可以看到该模块在三个数据集上的检索性能良好,这极大降低了输入的成本。
表 6 子图检索性能
由KQA-Pro和WebQSP的效果可推测,动态纠正对复杂查询至关重要,但对简单问题可省略以降低计算开销, 而图谱映射确保生成的代码语义可执行,缺失这一模块会导致性能崩溃。
表 7 消融实验结果
5. 总结
本文提出了CodeAlignKGQA框架,分析了逻辑形式(Logic Form)生成任务和代码生成任务的结构相似性,旨在利用代码大语言模型强大的编程能力提升生成质量,增强模型生成逻辑形式的稳定性和鲁棒性,减少句法错误率,从而更好的实现复杂知识问答任务的性能。
这一转变不仅仅适用于逻辑形式生成,近年来,越老越多学者尝试利用代码大语言模型的模块化编程能力,将传统非代码任务转换成代码生成任务,进一步提升效果。Li et al. (2023) 提出了CodeIE,巧妙的将传统的信息抽取任务如命名实体识别和关系抽取等,重新构建为代码生成任务。Puerto et al. (2024) 提出一种链式提示方法,将自然语言问题转换为代码,并直接使用生成的代码提示模型,无需外部代码执行。Wang et al. (2023) 将结构化预测任务, 如事件论元抽取, 转换为代码生成任务,使用 Python 类或函数来表示输出结构。
将结构化的信息生成的任务统一转化为代码生成任务,以编程语言的规则弥补纯文本生成的多样性。未来可探索更多领域的代码化对齐,同时考虑解决计算开销与领域适配的平衡问题。
OpenKG
OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。
点击阅读原文,进入 OpenKG 网站。
相关文章:

论文浅尝 | 将复杂知识图谱问答对齐为约束代码生成(COLING2025)
笔记整理:康家溱,东南大学在读硕士,研究方向为代码大语言模型 论文链接:https://aclanthology.org/2025.coling-main.267.pdf 发表会议:COLING 2025 1. 动机 近年来,随着大语言模型(LLM…...
【Linux命令】scp远程拷贝
文章目录 1. 基本语法与常用选项2. 使用场景和使用示例本地文件->远程主机远程主机文件->本地远程主机->另一台远程主机 3. 使用注意事项 scp(Secure Copy Protocol)是linux中基于ssh的安全文件传输工具,用于在本地和远程主机之前安…...

Golang|分布式搜索引擎中所使用到的设计模式
迭代器模式 定义:在遍历接口时,提供统一的方法函数供调用,保持一致性。核心思想:与大众习惯保持一致,方便第三方实现容器类时保持一致。常见方法:如next()方法,适用于所有集合类,简化…...

Ubuntu22.04通过命令行安装qt5
环境: VMware17Pro ubuntu-22.04.5-desktop-amd64.iso 步骤: 安装好虚拟机进入shell,或通过ssh登录,确保虚拟机能上外网,执行命令: sudo apt update sudo apt install build-essential sudo snap in…...
【仿生机器人】仿生机器人系统架构设计2.0——具备可执行性
结合我的需求后,来自Claude4.0 的结构设计 仿生机器人系统架构设计 一、系统总体架构 1.1 核心设计理念 涌现式情感:情感不是预设的规则,而是从环境感知、记忆关联和内在状态的复杂交互中涌现出来动态人格塑造:性格特质随着经…...

STM32:ESP8266 + MQTT 云端与报文全解析
知识点1【MQTT的概述】 1、概述 MQTT是一种基于发布/订阅模式的轻量级应用层协议,运行在TCP/IP协议之上,专用物联网(IoT)和机器对机器(M2M)设计,其核心目标是低带宽,高延迟或不稳定…...

HTML5 Canvas 星空战机游戏开发全解析
HTML5 Canvas 星空战机游戏开发全解析 一、游戏介绍 这是一款基于HTML5 Canvas开发的2D射击游戏,具有以下特色功能: 🚀 纯代码绘制的星空动态背景✈️ 三种不同特性的敌人类型🎮 键盘控制的玩家战机📊 完整的分数统…...

箱式不确定集
“箱式不确定集(Box Uncertainty Set)”可以被认为是一种 相对简单但实用的不确定集建模方式。 ✅ 一、什么是“简单的不确定集”? 在鲁棒优化领域,“简单不确定集”通常指的是: 特点描述形式直观数学表达简洁&#…...

内存管理 : 04段页结合的实际内存管理
一、课程核心主题引入 这一讲,我要给大家讲的是真正的内存管理,也就是段和页结合在一起的内存管理方式。之前提到过,我们先学习了分段管理内存的工作原理,知道操作系统采用分段的方式,让用户程序能以分段的结构进行编…...
不使用绑定的方法
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); // 初始设置 A 控件的宽度 ControlA.Width ControlB.Width / 2; // 监听 B 控件的 SizeChanged 事件 ControlB.SizeChanged (sender, e) > { ControlA.Width ControlB.Actual…...
Spring Boot 中的 Web 应用与 Reactive Web 应用
该判断题表述为:“Spring Boot启动过程中会判断当前应用类型是Web应用还是Reactive Web应用。” 这个说法是 正确的。Spring Boot 的自动配置机制会检查类路径,以确定是将应用程序配置为传统的 Servlet Web 应用还是 Reactive Web 应用。 Spring Boot 中…...
基于 stm32 的农用车控制系统设计
一、系统功能需求分析 农用车控制系统需实现多方面功能,以满足农业生产多样化需求。在动力控制方面,要实现发动机转速调节、挡位自动切换;作业控制涵盖农机具升降、播种施肥量调节、喷洒农药的流量与压力控制等;同时,还需具备车辆状态监测功能,实时监控发动机温度、油压…...

vue3: baidusubway using typescript
项目结构: <!--npm install -D tailwindcss-3d BaiduSubwayMap.vue npm install -D tailwindcss postcss autoprefixer--> <template><div class"relative w-full h-screen"><!-- 地图容器 --><div id"subway-container…...

Redis最佳实践——性能优化技巧之集群与分片
Redis集群与分片在电商应用中的性能优化技巧 一、Redis集群架构模式解析 1. 主流集群方案对比 方案核心原理适用场景电商应用案例主从复制读写分离数据冗余中小规模读多写少商品详情缓存Redis Sentinel自动故障转移监控高可用需求场景订单状态缓存Redis Cluster原生分布式分片…...
vue或者前端适配makedown推荐开源依赖
在 Vue 或前端项目中处理 Markdown 格式,以下是一些推荐的开源依赖和工具,根据需求分类整理: 1. 基础 Markdown 解析与渲染 Vue 专用库 vueuse/markdown VueUse 生态的 Markdown 工具,轻量且集成度高。 适合快速在 Vue 项目中渲…...
打打基础 | 从翻转链表到寄存器、汇编与内存
我作为软件工程师在美国工作了三年,期间接触和浸泡过不少的技术栈,罗列一番的话有 AWS cloud, frontend (React, TypeScript), backend (Django, Springboot, ECS, GraphQL), JVM (Java, Scala, Kotlin), data pipelines (Spark, Snowflake, Prefect, DB…...
深入解析 Dotnet-Boxed.Framework:提升 .NET 开发效率的利器
在现代 .NET 开发中,框架和工具的选择对项目的开发效率和长期维护至关重要。Dotnet-Boxed.Framework 是一个开源框架,旨在简化开发流程,提高生产力。它通过一组实用的工具和自动化功能,帮助开发者快速构建高质量的应用程序。本文将…...

常见相机的ISP算法
常见的ISP算法 3A算法 去雾算法 图像增强算法 图像宽动态算法 图像的电子缩放算法,无极电子缩放 图像降噪算法 相机常见问题 1.相机启动速度问题,启动速度较慢 2.相机扛不住高低温问题 3.相机散热问题问题 4.相机高低温芯片保护掉电 5.相机的成像效果或者…...

2024 CKA模拟系统制作 | Step-By-Step | 8、题目搭建-创建 Ingress
目录 免费获取题库配套 CKA_v1.31_模拟系统 一、题目 二、核心考点 Ingress 资源定义 Ingress Controller 依赖 服务暴露验证 网络层次关系 三、搭建模拟环境 1.创建命名空间 2.安装ingress ingress-nginx-controller 3.创建hello.yaml并部署 四、总结 …...

OldRoll复古胶片相机:穿越时光,定格经典
在数字摄影盛行的今天,复古胶片相机的独特魅力依然吸引着无数摄影爱好者。OldRoll复古胶片相机这款软件,以其独特的复古风格和丰富的胶片滤镜效果,让用户仿佛穿越回了那个胶片摄影的黄金时代。它不仅模拟了胶片相机的操作界面,还提…...

通俗易懂的 JS DOM 操作指南:从创建到挂载
目录 🧩 1. 创建元素:document.createElement / createElementNS 📝 2. 创建文本:document.createTextNode ✏️ 3. 修改文本:node.nodeValue 🗑️ 4. 移除元素:el.removeChild() …...

CSS Day07
1.搭建项目目录 2.网页头部SEO三大标签 3.Favicon图标与版心 (1)Favicon图标 (2)版心 4.快捷导航 5.头部-布局 6.头部-logo 7.头部-导航 8.头部-搜索 9头部-购物车 10.底部-布局 11.底部-服务区域 12.底部-帮助中心 13.底部-版权…...
爬虫框架:scrapy使用心得
文章目录 前言一、scrapy是什么?二、使用步骤1.安装和创建2.请求以及参数3.代理池4.请求错误处理5.采集数据入库6.日志及其他配置 总结 前言 有些时候我们需要采集大量数据时,我们需要程序的运行效率高,当然如果有时候不想写请求代码的时候,这些情况我都…...

RV1126-OPENCV 交叉编译
一.下载opencv-3.4.16.zip到自己想装的目录下 二.解压并且打开 opencv 目录 先用 unzip opencv-3.4.16.zip 来解压 opencv 的压缩包,并且进入 opencv 目录(cd opencv-3.4.16) 三. 修改 opencv 的 cmake 脚本的内容 先 cd platforms/linux 然后修改 arm-gnueabi.to…...

【深度学习】 19. 生成模型:Diffusion Models
Diffusion Models Diffusion Models 简介 Diffusion 模型是一类通过逐步添加噪声并再逆向还原的方式进行图像生成的深度生成模型。其基本流程包括: 前向过程(Forward Process):将真实图像逐步加噪,最终变为高斯噪声…...

JMeter 直连数据库
1.直连数据库的使用场景 1.1 参数化,例如登录使用的账户名密码都可以从数据库中取得 1.2 断言,查看实际结果和数据库中的预期结果是否一致 1.3 清理垃圾数据,例如插入一个用户,它的ID不能相同,在测试插入功能后将数据删…...

易路 iBuilder:解构企业 AI 落地困境,重构智能体时代生产力范式
一、从大模型到智能体的产业跃迁 2024 年堪称中国人工智能产业的 "战略拐点" 之年。当 DeepSeek R1 模型以 "技术 价格" 双重普惠模式掀起行业震荡时,各企业纷纷意识到,大模型的真正价值不在于技术炫技,而在于成为企业…...
数据库,Spring Boot,数据源
您是对的,我之前的回答解释了Spring Boot在操作MySQL时不一定需要显式配置指定的数据源类型,因为它有自动配置机制,但没有直接点明在自动配置情况下“数据源是什么”。 在Spring Boot自动配置机制下,这个“数据源”指的是一个连接…...
Linux 第三阶段课程:数据库基础与 SQL 应用
数据库定义 数据库是按一定规则存储数据的仓库,可存储海量数据(百万级至亿级),数据来源包括文本、图像、音视频等多种形式,如出行记录、消费数据等。 数据库分类 关系型数据库:基于二维表格模型࿰…...

计算机网络之路由表更新
1.解题思路 对新接收到的路由表进行更新,全部"距离"1,且"下一跳路由器"都写成发送方路由器的名称。 开始对比新表和原来的路由表 1.看目的网络 如果是新的目的网络,则直接把对应的各项信息填入表中;如果是相同…...