论文浅尝 | SpCQL: 一个自然语言转换Cypher的语义解析数据集

笔记整理:郭爱博,国防科技大学博士
论文发表会议:The 31th ACM International Conference on Information and Knowledge Management,CIKM 2022
动机
随着社交、电子商务、金融等行业的快速发展,现实世界编织出一张庞大而复杂的网络。然而,图(或网络)数据难以管理和挖掘,特别是对于经典的关系型数据库,这推动了图数据库的发展,Neo4j就是其中最流行的产品之一。Neo4j的查询语言Cypher(简称CQL)可实现对图的高效查询。但是CQL 的复杂操作和语法对用户的学习成本要求较高。因此,本文提出并定义了一种类似于Text-to-SQL的新任务Text-to-CQL。Text-to-CQL是一种新的语义解析任务,即将用户的自然语言查询转化为CQL查询,以帮助降低用户的学习和使用成本,提升图数据库与用户的交互友好度。同时,本文还为该任务构建了首个数据集SpCQL。
亮点
本文的亮点主要包括:
(1)提出并正式定义了Text-to-CQL任务,该任务目的是将用户自然语言查询自动转化为CQL查询,降低图数据库与使用者交互的学习和使用成本;
(2)构建了首个Text-to-CQL任务数据集SpCQL。
任务定义
Text-to-CQL 任务的目的是设计一个能够将自然语言查询转化为 CQL 查询的模型,如图 1 所示。

它可以正式表示为

其中
是给定的Neo4j数据库。数据库存储格式为
,其中E代表节点集,V代表关系集。q表示用户提出的自然语言查询,记为
。每个 表示自然语言查询的一个token,n表示token的总数。结果c是生成的CQL。
SpCQL数据集介绍
下面对SpCQL数据集进行介绍。
1.数据集概述
SpCQL包含两个主要部分:一个Neo4j图形数据库和10,000个NL查询-CQL对。在图2中展示的是一个查询对示例和对应的图数据。

2.数据采集
图数据库资源主体采用OwnThink。OwnThink是一个基于Neo4j的大规模开源知识图谱。这个知识图谱包含1.4亿个三元组,涵盖了人、组织、时间、活动和许多通用元素。
CQL查询通过网络爬虫从CSDN和Neo4j社区等技术论坛站点获取了Neo4j数据库中大约6,000个自然语言问题作为查询。为了确保数据库内容可以涵盖这些查询,作者调整了数据库中不存在的实体或关系。同时,还人工撰写了一些自然语言查询作为补充。
最后,经过数据清洗,获得10,000个自然语言查询。
3.CQL标注
为了准确地标注自然语言查询对应的CQL,邀请了10位精通Neo4j数据库和CQL语言的专业人员进行标注。为了确保NL查询-CQL对的多样性、自然性并且符合人类实际使用习惯,允许标注者在不改变语义的情况下进行微调。标注过程没有设计任何模板或脚本来生成CQL。标注后,进行交叉审查,以确保每个NL查询-CQL对满足使用和句法要求。
4.CQL分析
分三个部分介绍CQL查询的组件。
函数和运算符(Functions and Operators)
函数代表 CQL 查询中的主要功能关键字。最基本的有MATCH,WHERE和RETURN,它们与 SQL 的组成有些相似。其他包括但不限于OPTINAL MATCH,START,Aggregation,ORDER BY,LIMIT,SKIP。WITH,UNION等。
运算符可以对值、字符、列表等进行操作,也可以进行比较、匹配等操作。详情如表1所示。

模式(Patterns)
模式是 CQL 中最重要的概念,也是与 SQL 最大的区别。模式的引入不仅提高了用户路径查询的效率,而且相比 SQL 更加人性化。表 2 中列举出了所有模式及其相应的注释。

需要说明的是,CQL查询中存在方向规范,即有向关系查询。例如,(n)->(m)表示从n到m的关系。这种有向关系的查询对模型生成 CQL 提出了更大的挑战。
分类统计
本文分析了 SpCQL 数据集中的NL查询-CQL 对,以表明该数据集反映了真实世界的使用场景。首先统计每个查询中的函数和运算符的数量。直观地说,函数和运算符越多,对应于该查询的 CQL 就越复杂。统计结果见表3。

从统计数据可以看出,SpCQL 数据集中的查询通常包含多个函数和运算符。这使得 CQL 生成更加困难,因为涉及的组件更多。
此外,还统计到SpCQL数据集中总共 6,874 个查询涉及到模式。很容易理解,由于 Neo4j 数据库最大的特点是在图数据上查询路径(即模式),因此数据集中的大多数查询都与模式有关。模式查询相比于多函数/运算符的情况更具有挑战性。
考虑到模式的转换是一个更严峻的挑战,本文对涉及模式的查询进行了更深入的统计,分为三类,包括 1).无向边查询(Ud),2).有向边查询 (D) 和 3).限制路径长度查询和最短路径查询(RS)。三种类型的模式数量分别为 1,645、2,916 和 2,313。有向边查询的情况更多,因为用户通常指定一个人或组织作为查询的起点。此外,在查询过程中,对于限定路径(模式)长度的查询也是一种非常常见的使用场景。
实验分析
基线方法
该论文参考Text-to-SQL任务的基础解决方法,提供了三个Baseline,分别是Seq2Seq[1]、Seq2Seq+Attention[1]和Seq2Seq+Copying[2]。
测试指标
测试指标采用Text-to-SQL任务一致的Logical Accuracy和Execution Accuracy。
Logical Accuracy将模型生成的CQL查询与GOLDCQL的逻辑形式进行比较。它可能包含由条件顺序引起的误报,因为不排除WHERE子句中条件顺序的影响。它计算为

Execution Accuracy将模型生成的CQL查询结果与GOLDCQL执行结果进行比较。由于WHERE子句中的条件顺序不影响结果,因此可以忽略条件顺序的影响。它计算为

基线效果分析
表4中展示了上述三个Baseline的效果。

以Seq2Seq为基础的模型性能都很差,这是由于在解决复杂CQL查询场景时,无法正确地解码出CQL查询组件或内容。对于CQL包含模式甚至有向图关系的情况尤其如此,这是使用CQL进行查询时最常见的场景。此外,由于Seq2Seq模型存在重复解码等缺陷,因此及时添加注意力和复制机制并没有太大帮助。
本文还特意对模式查询问题进行了对比实验,比较了三种Baseline在三种模式查询下的性能,结果如表5所示。可以发现结果并不理想,尤其是在解析有向边CQL和限制边长和最短路径的查询等复杂查询时。

总结
本文构建了首个数据集SpCQL。SpCQL由两部分组成——存储在Neo4j中的图数据库和10000个NL查询-CQL对。基于这个数据集,正式定义了一个新的具有挑战性和现实意义的语义解析任务Text-to-CQL,即将自然语言查询转换为CQL查询。
基于此数据集可以推进此任务的研究,可以提升图数据库的用户友好性,并将降低学习和使用成本。考虑到SQL和CQL之间的根本差异,这一新数据集有望为Text-to-CQL任务提供研究基础。此外,Text-to-CQL的重要性不局限于Neo4j数据库,而是影响所有使用CQL作为操作语言的数据库。
参考文献
[1]DongL,LapataM.LanguagetoLogicalFormwithNeuralAttention[J].OfficeforOfficialPublicationsoftheEuropeanCommunities,2016.
[2]GuJ,LuZ,LiH,etal.IncorporatingCopyingMechanisminSequence-to-SequenceLearning[J].2016.
OpenKG
OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。

点击阅读原文,进入 OpenKG 网站。
相关文章:
论文浅尝 | SpCQL: 一个自然语言转换Cypher的语义解析数据集
笔记整理:郭爱博,国防科技大学博士论文发表会议:The 31th ACM International Conference on Information and Knowledge Management,CIKM 2022动机随着社交、电子商务、金融等行业的快速发展,现实世界编织出一张庞大而…...
MongoDB 使用规范与限制及最佳实践
MongoDB 灵活文档的优势 灵活库/集合命名及字段增减同一字段可存储不同类型数据Json 文档可多层次嵌套文档对于开发而言最自然的表达 MongoDB 灵活文档的烦恼 数据库集合字段名千奇百怪同一字段数据类型各不一样业务异常可能写入“脏”数据 1.1 库命名规范 不能为空字符串 &…...
第五十六章 树状数组(一)
第五十六章 树状数组一、前缀和的缺陷二、树状数组1、作用2、算法分析3、算法实现(1)lowbits()(2)插入(3)查询三、例题1、问题题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示2、代码一、前缀和…...
kubernetes教程 --Pod控制器详解
Pod控制器详解 介绍 Pod是kubernetes的最小管理单元,在kubernetes中,按照pod的创建方式可以将其分为两类: 自主式pod:kubernetes直接创建出来的Pod,这种pod删除后就没有了,也不会重建控制器创建的pod&am…...
N2750A Agilent Keysight HP 差分探头1.5GHz
N2750A Agilent Keysight HP 差分探头13554860890 N2750A 是 Agilent Keysight HP 的 1.5 GHz 差分探头。 特征: N2750A:1.5 GHz 衰减比:2:1 或 10:1(可切换) 动态范围: 5 V 或 10 Vpp(10:1 时…...
一文搞懂Linux内核进程CPU调度基本原理
为什么需要调度 进程调度的概念比较简单,我们假设在一个单核处理器的系统中,同一时刻只有一个进程可以拥有处理器资源,那么其他的进程只能在就绪队列中等待,等到处理器空闲之后才有计划获得处理器资源来运行。在这种场景下&#…...
java ssm爱宠宠物医院挂号预约系统管理系统设计与实现
本课题所实现的宠物医院网站是基于网页,它可以实现网上预约挂号,评价等基本功能。用户只要手边有一部手机或者一台电脑,可以上网浏览网页,便可以使用本系统,没有时间和地点的限制,使得就医预约,…...
自动化测试工具_Jmeter
【课程简介】 接口测试是测试系统组件间接口的一种测试,接口测试天生为高复杂性的平台带来高效的缺陷监测和质量监督能力,平台越复杂,系统越庞大,接口测试的效果越明显。在接口测试大行其道的今天,测试工具也愈发重要,Jmeter作为一款纯 Java 开发的测试…...
不是所有人都适合职场
一个读者的提问: 洋哥,我目前工作五年在一家大厂,属于那种什么事情上手都很快的人,并且搞定新问题能产生沉浸般的快感。我的本职是程序员,但运营思路产品方法也都会一些,甚至有时候提出的方案效果比产品&a…...
JSP 和 JSTL
文章目录🍓摘要🍓一、JSP🍉1.1 JSP的基础语法🍫1.1.1 简介🍫1.1.2 依赖🍫1.1.3 注释🍫1.1.4 Scriptlet 脚本🍉1.2 JSP的指令标签🍫1.2.1 include 静态包含🍫1…...
数据分析| Pandas200道练习题,使用Pandas连接MySQL数据库
文章目录使用Pandas连接数据库编码环境依赖包read_sql_query()的使用read_sql_table()的使用read_sql() 函数的使用to_sql()写入数据库的操作删除操作更新操作总结:使用Pandas连接数据库 通过pandas实现数据库的读,写操作时,首先需要进行数据…...
【Node.js】全局可用变量、函数和对象
文章目录前言_dirname和_filename变量全局函数setTimeout(cb,ms)clearTimeout(t)setInterval(cb,ms)clearInterval(t)setImmediate(cb)clearImmediate()console对象console.info([data][,...])console.error([data][,...])console.warn([data][,...])console.dir(obj[,options]…...
package.json 开发依赖与运行时依赖
文章目录前言一、生产环境与开发环境二、dependencies二、devDependencies总结前言 我已经使用npm接近两年了, 但对于package.json内的dependencies 和devDependencies也只是知道什么依赖该放什么部分, 至于为什么放到这个部分, 我不是很了解… 呃, 还是去了解一下. 一、生产环…...
关于最短路径算法中边的权值的思考
关于最短路径算法中边的权值的思考 不管是单源最短路径算法:Dijkstra Bellman-ford 还是多源最短路径算法:floyed Johnson 我们都绕不开的一件事就是,边的权值wi,jw_{i,j}wi,j 下面我们从多个角度谈边的权值 1.权值恒定 它是指对于每条边…...
LVGL开发教程:二、ESP-IDF 使用CmakeList管理自己的文件以及文件夹
本文需要已经安装了Vscode+IDF插件没有安装的请提前安装一下,IDF插件为乐鑫的插件不需要翻墙。需要环境搭建请看下面链接。 环境搭建: VScode+platformIO和Vscode+ESP-IDF两种开发环境搭建 项目例程下载地址: IDF-CmakeTes,密码:8888 另外,由于你和我的路径不一致,下载的工…...
与感受野相关的几种网络结构
一、Inception 1. Inception v1 目的 通过设计一个稀疏网络结构,但是能够产生稠密的数据,既能增加神经网络表现,又能保证计算资源的使用效率。 结构 图1-1 Inception v1结构图 特点 共4个通道,其中3个卷积通道分别使用111111…...
day19_抽象类丶接口
由来 当我们声明一个几何图形类:圆、矩形、三角形类等,发现这些类都有共同特征:求面积、求周长、获取图形详细信息。那么这些共同特征应该抽取到一个公共父类中。但是这些方法在父类中又无法给出具体的实现,而是应该交给子类各自…...
【网安神器篇】——系统指纹探测工具finger
作者名:白昼安全主页面链接: 主页传送门创作初心: 以后赚大钱座右铭: 不要让时代的悲哀成为你的悲哀专研方向: web安全,后渗透技术每日鸡汤: 我不想停下,因为这次出发的感觉太好了一…...
Prometheus离线tar包安装
Prometheus离线tar包安装实验环境一、部署前操作二、Master2.1下载2.2解压2.3更改服务目录名称2.4创建系统服务启动文件2.5配置修改2.6启动并设置开机自启2.7访问2.8添加node节点2.8.1 添加方法2.8.2修改Prometheus配置(Master)————————————…...
PostgreSQL查询引擎——SELECT STATEMENTS SelectStmt
SelectStmt: select_no_parens %prec UMINUS| select_with_parens %prec UMINUS select_with_parens:( select_no_parens ) { $$ $2; }| ( select_with_parens ) { $$ $2; } 该规则返回单个SelectStmt节点或它们的树,表示集合操作树(set-operation tree…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
