论文浅尝 | 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…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
【Linux】自动化构建-Make/Makefile
前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...
在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例
目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码:冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...
用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章
用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章 摘要: 操作系统内核的安全性、稳定性至关重要。传统 Linux 内核模块开发长期依赖于 C 语言,受限于 C 语言本身的内存安全和并发安全问题,开发复杂模块极易引入难以…...
基于Java项目的Karate API测试
Karate 实现了可以只编写Feature 文件进行测试,但是对于熟悉Java语言的开发或是测试人员,可以通过编程方式集成 Karate 丰富的自动化和数据断言功能。 本篇快速介绍在Java Maven项目中编写和运行测试的示例。 创建Maven项目 最简单的创建项目的方式就是创建一个目录,里面…...
比较数据迁移后MySQL数据库和ClickHouse数据仓库中的表
设计一个MySQL数据库和Clickhouse数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
