System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于自然语言处理领域,涉及一种基于分层问句生成与自博弈的数据扩充方法。
技术介绍
1、医疗数据库由于其便利性在临床中越来越多地使用。然而,大多数情况下对数据的查询和分析要通过专业语言(如sql)或工具进行交互操作,对于医生而言存在一定的门槛。在此背景下,利用text-to-sql技术在会诊等医疗场景当中辅助医生使用自然语言来查询数据库就显得十分必要。
2、由于多轮对话查询的复杂性,多轮对话文本和sql对的标注成本很高,特别是在医疗等专业领域,需要经过训练的专家进行标注,这就使得医疗相关多轮对话text-to-sql数据极少。只能利用预训练的思想,在现有的多轮text-to-sql数据集上,如经典的sparc、cosql和chase等,训练出text-to-sql解析器后,再将其泛化到医疗场景的数据库中。但这种方法所训练的模型在有限的训练数据下泛化能力较差。
技术实现思路
1、本专利技术针对现有技术的不足,提出一种基于分层问句生成与自博弈的数据扩充方法,对多轮医疗text-to-sql模型训练的训练文本数据进行扩充,以实现更具有鲁棒性的泛化。
2、为了解决上述技术问题,本专利技术的技术方案为:
3、一种基于分层问句生成与自博弈的数据扩充方法,包括如下步骤:
4、步骤1.在当前已有的最优质的训练数据上,利用最小化负对数似然估计预训练一个端到端的text-to-sql模型,其公式表示如下:
5、
6、其中,
7、步骤2.利用数据集中标准的sql查询问句建立粗略的插槽模板,之后随机选取一个未见的数据库,将列名和值等信息对应插入模板的槽位,构造新的查询目标sql语句g。
8、步骤3.根据sql语句中的关键字将目标sql语句分解成多个子句。对于无嵌套的单层sql语句,按照关键词直接分解为子句形式。对于嵌套型sql语句,将where、having、group_by、limit和order_by等关键词依据语义成组地分配为一个子句。由此,将一个合法的sql语句q分解成为子句序列s。
9、步骤4.将输入的当前查询语句qt及查询目标g分别分解成当前子句集合st和目标子句集合sg,对比其差异后得到非目标序列和填补序列之后,按照如下规则预测下一问句的子句序列st+1:
10、差异序列替换:选取非目标序列和填补序列中相同类型的一个子句进行替换,若没有相同类型子句,则删除这个非目标子句;
11、数据库条件替换:选取非目标序列中的一个子句,从数据库d对应表中选取相同类型的列名或值进行替换;
12、填补序列插入:循环以下步骤至下一问句的子句序列st+1符合语法要求:
13、1)将序列st+1设为当前子句序列st;
14、从填补序列stg随机选取一个子句插入下一问句的子句序列st+1;之后以50%概率再次选取插入,再之后25%,以此类推;
15、2)结束条件:当非目标序列和填补序列均为空,st与sg相同,则在输出的预测序列st+1中添加特殊的停止交互符号。
16、步骤5.将自然语言问句拆分为子问句,基于字符串匹配将sql子句与子问句对齐,得到sql子句-子问句对数据。利用最小化负对数似然估计训练端到端的转换模型。其公式表示如下:
17、
18、输入所预测的下一问句子句序列st+1,得到对应的下一问句自然语言子问句序列特殊的停止交互符号保留至序列尾部。
19、步骤6.根据sql语句执行的顺序,将对应的自然语言子问句进行拼接,获得完整的所预测的下一句自然语言问句ut+1。将下一句自然语言问句ut+1输入到步骤1中训练的text-to-sql模型,生成对应的sql查询语句qt+1。
20、步骤7.将sql查询语句qt+1作为步骤3的输入,重复进行步骤3至步骤6的操作,直至步骤6拼接到包含特殊停止交互符号的序列。此时即获得完整的一组多轮对话问句文本及sql语句数据。
21、步骤8.将最终的自然语言问句对应的sql查询语句qt利用步骤3的方法分解为最终查询子句集合st,对照步骤4中生成的目标子句集合sg计算子句的平均准确率,将其作为最终问句与目标查询的相似度评分score(qt,g),评分低于所设准确率阈值时丢弃该轮次生成的数据。
22、步骤9.重复进行步骤2,构造不同的查询目标sql语句g,输入进步骤3至步骤8所叙述的循环中,获取大量的高质量多轮text-to-sql训练数据。
23、本专利技术具有以下的特点和有益效果:
24、采用上述技术方案,通过优化分层问句生成技术,首先建立一个分层sql-to-question生成模型,之后融合自博弈思想,利用该模型与text-to-sql模型通过自博弈的方法生成多轮对话文本与sql数据,经过滤后即可得到优质的扩充数据,从而对多轮医疗text-to-sql模型训练的训练文本数据进行扩充,以实现更具有鲁棒性的泛化。
本文档来自技高网...【技术保护点】
1.一种基于分层问句生成与自博弈的数据扩充方法,其特征在于,包括如下步骤:
2.根据权利要求1所述的一种基于分层问句生成与自博弈的数据扩充方法,其特征在于,所述步骤2中,构造新的查询目标SQL语句G的方法为:
3.根据权利要求1所述的一种基于分层问句生成与自博弈的数据扩充方法,其特征在于,所述步骤3中,分别将当前查询语句Qt及查询目标SQL语句G作为输入,对于无嵌套的单层SQL语句,按照关键词直接分解为子句形式;对于嵌套型SQL语句,根据关键词WHERE、HAVING、GROUP_BY、LIMIT和ORDER_BY依据语义成组地分配为一个子句,分别分解成当前子句集合St和目标子句集合SG。
4.根据权利要求1所述的一种基于分层问句生成与自博弈的数据扩充方法,其特征在于,所述步骤3中,预测下一问句的SQL子句序列St+1的方法为:
5.根据权利要求1所述的一种基于分层问句生成与自博弈的数据扩充方法,其特征在于,所述端到端的转换模型和端到端的Text-to-SQL模型均采用最小化负对数似然估计方法训练,表达式如下:
6.根据
7.根据权利要求1所述的一种基于分层问句生成与自博弈的数据扩充方法,其特征在于,所述步骤7中,重复进行步骤3至步骤6的操作,直至步骤6拼接到包含特殊停止交互符号的序列。
...【技术特征摘要】
1.一种基于分层问句生成与自博弈的数据扩充方法,其特征在于,包括如下步骤:
2.根据权利要求1所述的一种基于分层问句生成与自博弈的数据扩充方法,其特征在于,所述步骤2中,构造新的查询目标sql语句g的方法为:
3.根据权利要求1所述的一种基于分层问句生成与自博弈的数据扩充方法,其特征在于,所述步骤3中,分别将当前查询语句qt及查询目标sql语句g作为输入,对于无嵌套的单层sql语句,按照关键词直接分解为子句形式;对于嵌套型sql语句,根据关键词where、having、group_by、limit和order_by依据语义成组地分配为一个子句,分别分解成当前子句集合st和目标子句集合sg。
4.根据权利要...
【专利技术属性】
技术研发人员:席旭刚,马晶,杨健,林毓聪,聂雅卿,孟明,汪婷,
申请(专利权)人:杭州电子科技大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。