AI-比赛-语义解析:2022 WAIC 黑客松蚂蚁财富赛道:AntSQL大规模金融语义解析中文Text-to-SQL挑战赛

任务和主题

任务背景

基于结构化数据的智能问答和信息检索技术是NLP领域研究的重要方向,因其数据较规范化、数据量大、方便维护和易查询等特点,在近年来受到了学术界和工业界的广泛关注;需要机器对用户的查询做正确的识别、解析和响应,解析过程是对用户Query(Natural Language, NL)做槽位识别、词法分析、句法分析和语义理解,一种直接的方式是将NL解析为查询关系型数据库/RDF图/图数据库等的查询语言,进而衍生了NL2SQL、NL2SparQL、NL2Gremlin等NL2API的语义解析任务;自然语言生成查询语句之后,建立了与底层数据库直接交互的桥梁,提升了检索效率和结构化数据的应用价值,查询语句具有较好的范式和语法特性,增加了黑盒模型的可解释性,降低了运营成本也有助于提升用户体验。考虑到查询语言的通用性和对应技术社区的成熟度,我们重点关注NL2SQL任务。比较有代表性的基于单表复杂查询WikiSQL数据集、基于多表复杂查询的Spider数据集等均在业内产生了一定的影响力,也吸引了众多高校和研究机构的关注。但是,现有的公开数据集大多是英文数据集且涵盖领域较宽泛,无法直接应用在垂直领域。为此,我们打造了一个基于金融领域的大规模中文数据集。

目前,蚂蚁集团财富技术部支小宝项目组依托在金融领域积累的海量数据沉淀了一整套结构化数据检索的解决方案;基于NL2SQL的金融检索问答也在支小宝落地,陆续上线了条件选基金、基金信息查询等能力,支持单条件查询,多条件、排序、并列、聚合、比较、嵌套等复杂查询,取得了较好的反馈,在比赛的同时,也欢迎大家直接在线上体验和交流讨论;


不同于其它数据集,我们的数据集是对线上真实用户问法归纳总结后得到的,来源于支小宝金融领域多轮对话数据,具有强金融属性和对话属性,比如基金经理、基金、行业、重仓等是多对多的关系;属性值和基金之间也是多对多关系;每只基金有众多不同的维度;具有一个或者多个相同属性不能唯一确定某一只基金;这些特点是用户通过不同的维度或者属性去筛选基金的一个重要原因。
本数据集特点如下:
1)强金融属性:比如基金经理、基金、行业、重仓等是多对多的关系;
2)属性值和基金之间也是多对多关系;
3)每只基金有众多不同的未读;
4)具有一个或者多个相同属性不能唯一确定某一只基金;

为了推动领域发展,我们公开了部分金融语义解析数据集用于学术研究和交流。

任务定义

支小宝中文NL2SQL数据集采用金融领域的表格作为数据源,涵盖了基金的产品和属性,提供在此基础上的标注的Query-SQL对,希望选手们能在此基础上训练深度学习模型,将自然语言准确的转换为可查询的SQL语句。

比赛数据

数据集来源于支小宝智能理财助理对话机器人线上真实用户查询和基于专家模板和线上查询分布生成的金融领域数据;其中,生成的数据经过了多位标注人员的改写和修正。本次比赛基于单数据表提供10.6万+数据,其中7.8万+条标注数据作为训练集,1.2万条数据作为A榜测试集,1.6万条数据集作为B榜测试集,最终排名以B榜成绩为准。
数据统计:

数据量文件备注
训练集78520waic_nl2sql_testa_public.jsonl比赛数据集
A榜测试集11927waic_nl2sql_testb_public.jsonl比赛数据集
B榜测试集16210/比赛数据集

数据集格式:

{
	"id": 830061772,
	"question": "诊断下持有酒鬼酒的基金",
	"table_id": "FundTable",
	"sql": {
		"sel": [1],  # 查询列,对应基金表的列,如本例中代表的是第一列(以0开始)
		"agg": [0],  # 查询列对应的聚合类型
		"limit": 0,
		"orderby": [],
		"asc_desc": 0, 
		"cond_conn_op": 0,
		"conds": [
			[51, 4, "%酒鬼酒%"]  # [基金表的条件列, 条件操作符, 条件值]
		]
	},
	"keywords": {
		"sel_cols": ["基金名称"],
		"values": ["%酒鬼酒%"]
	}
}

操作符和关键词字典如下:
op = {'>': 0, '<': 1, '==': 2, '!=': 3, 'like': 4, '>=': 5, '<=': 6}
agg = {'none': 0, 'avg': 1, 'max': 2, 'min': 3, 'count': 4, 'sum': 5}
connect_op = {'none': 0, 'and': 1, 'or': 2}

需要注意的是,query中包含条件片段,sql查询的结果是对该条件片段的解析,是一种隐含槽位的获取,比如“诊断下张坤管理的基金”,这个case是在问“基金诊断”,但是我们需要先知道“基金名称”这个槽位,这就需要解析“张坤管理的基金”这个片段。

基金表的列的说明如下:

| 列名0 | 列名1 | 列名2 | 列名3 | ... | 列名n |
| 004646 | 股票型 | 中风险 | -0.23 | ... | 消费 |
| 004657 | 混合型 | 高风险 | 1.52 | ... | 科技 |
  ...
| 004669 | 指数型 | 中高风险 | 0.73 | ... | 制造 |

结果提交

在测评集合上进行预测,每个样本占一行,每行都是json格式的数据(无需使用indent缩紧),提交评估数据结构:

{样本1结果}  
{样本2结果}  
{样本3结果}  
...  

每行结构如下:

{  
"id": int,  
"question": String,  
"table_id": String,  
"sql": {  # Dict  
"sel": List[int],  
"agg": List[int],  
"limit": int,  
"orderby": List[int],  
"asc_desc": int,  
"cond_conn_op": int,  
"conds": List[List[int, int, String]]  
},  
"keywords": {  
"sel_cols": List[String],  
"values": List[String]  
}  
}  

提交文件大小为1G内。

评价指标

本次比赛的提交评测,在主办方提供的评测平台上进行。A榜和B榜的评估函数按照以下方式计算,包含两项指标:Exact Set Match without Values(Logic Acc): 预测完全正确的SQL语句。其中,列的顺序并不影响准确率的计算。Execution with Values(Exec Acc): 预测的SQL的执行结果与真实SQL的执行结果一致。

比赛数据

1、比赛正式开始后,参赛队伍通过天池平台下载训练数据,本地调试代码,在线提交结果。

2、采用AB榜,提供训练数据集,供参赛选手训练算法模型,选手在对应时间内分别下载A、B榜测试集并提交结果进行评测。
训练集 :waic_nl2sql_train.jsonl.zip(比赛正式开始后,在赛题页最上方可下载)
基金表: fundTable.xlsx(比赛正式开始后,在赛题页最上方可下载)

3、A榜:8月2日10:00 -8月23日 12:00(UTC+8)起系统实时评测,每小时更新排行榜,队伍一天内有2次提交机会;按照评测指标排序;(排行榜将选择选手在本阶段的历史最优成绩进行排名展示,不做最终排名计算),测评时间:大约在5-10分钟后返回结果。
A榜测试集:waic_nl2sql_testa_public.jsonl.zip(比赛正式开始后,在赛题页最上方可下载)

4、A榜淘汰:8月23日18:00(UTC+8),A榜未产出成绩队伍或未按要求完成实名认证队伍,将被取消B榜参赛资格。

5、B榜:8月24日10:00 - 8月25日 15:00(UTC+8)。系统将在8月24日10:00(UTC+8)公布B榜测试数据,参赛队伍需再次下载数据文件。本阶段提供2次评测机会,系统进行实时评测并返回成绩,排行榜每小时进行更新,并选择参赛队伍在本阶段的历史最优成绩进行排名展示。
B榜测试集:waic_nl2sql_testb_public.jsonl.zip(比赛正式开始后,在赛题页最上方可下载)

6、最终以B榜成绩作为成绩依照

评分规则解释及评测脚本

评分规则

其中Logic Acc为主指标对选手进行排序,当主指标相同时Exec Acc作为辅助评判指标。
测评时间:大约在5-10分钟后返回结果。

代码审核

选手需要提交训练好的模型,所使用到的源码,以及能够针对测试集产出预测结果的预测部分代码。所有文件请打包在zip压缩包内,对提交文件的组织形式要求如下:
代码结构示例(供参考,选手提交相关内容即可)

your project  
|--README.md  # 请选手在README.md(或其他文件格式如pdf等皆可)文件中介绍自己的解决方案及算法。若选手提交的代码在运行时有需要特殊注意的内容,也请在该文件中一并说明。  
|--data  
|--code  
  |-- main.py  # 需要注明每个脚本作用  
  |-- ...  
|--submit  # 结果输出文件夹,需要在此文件夹中产出针对测试集的预测结果,预测结果文件的格式与竞赛中的提交要求一致。  
  |-- test_submit.jsonl  

选手需要注意以下代码规范:

1、要求选手比赛结束后提交源代码,赛题方可以从天池下载选手代码进行复现,对比选手直接提交的结果。
2、选手需要明确注明代码的入口文件和所需要的环境,所提交代码需要能在所声明的环境运行。
3、代码中需要有载入模型、读入数据集并在数据集上进行训练/预测的动作,一切凭空构造输出的行为,一经查实,成绩无效。
4、选手提交的代码,输出格式需要和提交的答案格式一致。
5、建议选手以python语言和主流的深度学习框架完成本任务,并良好的注释代码。
6、引用、调用他人代码需要声明出处。




2022 WAIC 黑客松蚂蚁财富赛道:AntSQL大规模金融语义解析中文Text-to-SQL挑战赛_算法大赛_赛题与数据_天池大赛-阿里云天池

AntSQL大规模金融语义解析数据集_数据集-阿里云天池 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值