CN115292448A - 语言转义方法、装置、设备及存储介质 - Google Patents
语言转义方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115292448A CN115292448A CN202210873471.8A CN202210873471A CN115292448A CN 115292448 A CN115292448 A CN 115292448A CN 202210873471 A CN202210873471 A CN 202210873471A CN 115292448 A CN115292448 A CN 115292448A
- Authority
- CN
- China
- Prior art keywords
- target
- target sub
- clause
- keyword
- statement
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 239000013598 vector Substances 0.000 claims description 54
- 230000006870 function Effects 0.000 claims description 32
- 230000002776 aggregation Effects 0.000 claims description 25
- 238000004220 aggregation Methods 0.000 claims description 25
- 230000015654 memory Effects 0.000 claims description 21
- 238000012545 processing Methods 0.000 claims description 17
- 238000012937 correction Methods 0.000 claims description 16
- 238000004458 analytical method Methods 0.000 claims description 5
- 238000012216 screening Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000003062 neural network model Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 230000005291 magnetic effect Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- OLDXRTOEUPVZKB-UHFFFAOYSA-N B1CCCC1 Chemical compound B1CCCC1 OLDXRTOEUPVZKB-UHFFFAOYSA-N 0.000 description 1
- 102100038367 Gremlin-1 Human genes 0.000 description 1
- 101001032872 Homo sapiens Gremlin-1 Proteins 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000004804 winding Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
- G06F16/3344—Query execution using natural language analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
- G06F40/211—Syntactic parsing, e.g. based on context-free grammar [CFG] or unification grammars
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Databases & Information Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Machine Translation (AREA)
Abstract
本申请实施例提供语言转义方法、装置、设备及存储介质。所述方法包括:对获取到的目标语句进行拆分,得到至少一个目标子语句;确定所述目标子语句中包含的关键词类型和关键词子句;根据所述目标子语句中包含的关键词类型对应的语义约束规则,对所述目标子语句中的关键词子句进行修正;对修正后的目标子语句进行组合,生成可被执行的机器语言。通过上述方式,能够有效提高自然语言转义准确性以及用户使用数据库查询的工作效率,同时降低对使用数据库查询工作人员的技术能力要求。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及自然语言转义方法、装置、设备及存储介质。
背景技术
数据库作为很多数据服务的核心基础技术,为各种数据服务需求提供支持。在数据库的管理和使用当中,往往需要专业的人员参与数据库的使用、交互工作。
在现有技术中,虽然有一些技术实现了通过人类自然语言到数据库中进行数据查询。比如,可以是用户输入自然语言给神经网络,进而由神经网络输出对应的查询语句(比如,结构化查询语句(Structured Query Language,SQL))。然而,这些查询语句的可执行效果不佳。
发明内容
为解决或改善现有技术中存在的问题,本申请各实施例提供了语言转义方法、装置、设备及存储介质。
第一方面,在本申请的一个实施例中,提供了一种语言转义方法。该方法包括:
对获取到的目标语句进行拆分,得到至少一个目标子语句;
确定所述目标子语句中包含的关键词类型和关键词子句;
根据所述目标子语句中包含的关键词类型对应的语义约束规则,对所述目标子语句中的关键词子句进行修正;
对修正后的目标子语句进行组合,生成可被执行的机器语言。
第二方面,在本申请的一个实施例中,提供了一种电子设备,包括存储器及处理器;其中,
所述存储器,用于存储程序;
所述处理器,与所述存储器耦合,用于执行所述存储器中存储的所述程序,以用于实现第一方面所述的一种语言转义方法。
第三方面,在本申请的一个实施例中,提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如第一方面所述的一种语言转义方法。
第四方面,在本申请的一个实施例中,提供了一种数据库***,所述***包括:
编码器,用于获取到的自然语言进行编码处理得到的语义特征向量;
解码器,用于所述编码器输出的所述语义特征向量进行解码处理,生成目标语句;
拆分模块,用于对获取到的所述目标语句进行拆分,得到至少一个目标子语句;
修正模块,用于根据所述目标子语句中包含的关键词类型对应的语义约束规则,对所述目标子语句中的关键词子句进行修正;
组合模块,用于对修正后的目标子语句进行组合,生成可被执行的机器语言;
数据库,用于基于所述可被执行的机器语言执行数据查询任务。
本申请实施例提供的技术方案中,当用户提供查询作用的自然语言后,可以由编码器对自然语言进行编码处理从而得到该自然语言的语义特征向量。利用解码器对语言特征向量进行进一步处理,得到自然语言对应的可被数据库识别的目标语句。对目标语句进行拆分处理,得到包含至少一个目标子语句的序列。在每个目标子语句中都包含有关键词,在对目标子语句进行修正的时候,基于目标子语句中包含的关键词类型和对应的语义约束规则,对目标子语句进行修正,并对修正后的目标子语句进行组合,得到能够被数据库识别的机器语言。通过上述方式,能够有效提高自然语言转义准确性以及用户使用数据库查询的工作效率,同时降低对使用数据库查询工作人员的技术能力要求。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的语言转义方法的流程示意图;
图2为本申请实施例提供的语言转义***的结构示意图;
图3为本申请实施例提供的对目标语句进行拆分方法的流程视图;
图4为本申请实施例举例说明的数据表结构示意图;
图5为本申请实施例举例说明的有向图的示意图;
图6为本申请实施例提供的一种语言转义装置的结构示意图;
图7为本申请实施例提供的一种电子设备的结构示意图;
图8为本申请实施例提供的一种数据库***的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
在本申请的说明书、权利要求书及上述附图中描述的一些流程中,包含了按照特定顺序出现的多个操作,这些操作可以不按照其在本文中出现的顺序来执行或并行执行。操作的序号如101、102等,仅仅是用于区分各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。此外,下文描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
数据库是信息产业绝大多数数据服务的核心基础设施,数据处理过程中时刻需要数据库的支撑。现阶段终端用户和数据库运维人员仍然主要通过数据库查询机器语言(如SQL、Gremlin等)与数据库进行交互,这需要使用者有较强的数据库专业知识、运维经验、以及对相关数据库实例有较深的了解。因此,在数据库的管理、使用、运维过程中需要大量专业工作人员参与到数据库交互工作中,技术门槛要求高,人工成本也高。随着人工智能技术的发展,可以利用机器学习技术,将工作人员提供的自然语言转换成为机器语言,以便计算机能够理解工作人员真实意图,并执行相应任务。然而,在实际应用中,利用自然语言处理、机器学习算法等技术实现自然语言到数据库查询语言的转义(NL2SQL)所得到的机器语言往往存在一些语法错误、语义错误等问题,导致数据库没法很好的执行转义得到的机器语言,还需要具有一定技术基础的工作人员对得到的机器语言进行调整后才能够被顺利执行。因此,本申请方案提出对经过转义得到的机器语言进行优化调整,从而实现工作人员通过自然语言与数据库的无障碍交互的方案。转义得到的机器语言准确率更高,更容易被成功执行。能够有效降低对工作人员技术能力要求,降低人工成本,提升工作效率。
在本申请技术方案中,具体工作过程,将在下述实施例中说明。
如图1为本申请实施例提供的语言转义方法的流程示意图。该语言转义方法的执行主体可以是本地计算机、云服务设备等。如图1所示,该语言转义方法包括如下步骤:
步骤101:对获取到的目标语句进行拆分,得到至少一个目标子语句。
步骤102:确定所述目标子语句中包含的关键词类型和关键词子句;
步骤103:根据所述目标子语句中包含的关键词类型对应的语义约束规则,对所述目标子语句中的关键词子句进行修正。
步骤104:对修正后的目标子语句进行组合,生成可被执行的机器语言。
这里所说的目标语句可以理解为利用编码器和解码器进行编码以及解码处理后所得到的机器语言(比如,SQL)。一般来说,在得到的目标语句当中可能会包含有多个具有嵌套关系的目标子语句。
在对目标语句进行修正的时候,需要对目标语句进行拆分,使得拆分后所得到的目标子语句均不具有嵌套关系。换言之,若经过一次拆分后得到两个目标子语句,其中一个目标子语句中还包含有嵌套关系,则需要针对该目标子语句进行进一步拆分,直到不再包含有任何嵌套关系为止。具体拆分过程和拆分方案,将在下述实施例中进行举例说明。
这里所说的关键词类型包括:SELECT类型、WHERE类型、FROM类型、HAVING类型、ORDER BY类型、GROUP BY类型、LIMIT类型等。这里所说的关键词子句,可以理解为关键词及其上下文关联得到的句子。在一个目标子语句中,可能同时包含有多种的关键词类型和对应的多个关键词子句。关键词类型可以根据用户需要进行定义、调整的,比如,可以新增某个关键词类型或减少某个关键词类型。
需要说明的是,不同关键词类型对应不同的语义约束规则。这里所说的语义约束规则可以理解为不同计算机语言中所采用的语法所具有的语义约束规则。比如,某类值能够支持哪些类型操作符,哪些词或句所支持的嵌套关系,某个操作符在语句中的位置等等。在实际应用中,为了获得更加准确的修正效果,以关键词子句作为最小修正单元根据语义约束规则进行修正。在修正的时候,可以按照目标子语句中的各个关键词的逻辑关系进行修正,也可以按照先后顺序进行修正。
在对各个目标子语句中的关键词子句进行修正后,得到修正后的目标子语句,进而,对多个修正后的目标子语句进行组合。在组合的时候,按拆分是的嵌套关系进行组合,得到机器语言(比如,SQL等)。
在本申请的一个或者多个实施例中,所述对获取到的目标语句进行拆分,得到至少一个目标子语句,包括:利用解码器对基于用户提供的自然语言编码得到的语义特征向量进行解码处理,得到包含有关键词、操作内容和预测值的目标语句;根据嵌套关系对所述目标语句进行拆分,生成无嵌套关系的所述至少一个目标子语句。
如图2为本申请实施例提供的语言转义***的结构示意图。下面将结合附图2对本申请技术方案的整体架构进行说明。在本申请技术方案中,包括两个模型编码器和解码器。其中,编码器模型通常由长短期记忆网络(Long Short-Term Memory,LSTM)、Transformer等网络结构构成,将输入的自然语言转化为一系列的抽象的语义特征向量。解码器通常使用另一个独立的LSTM或Tree-LSTM构成。需要说明的是,这里所说的编码器和解码器都是预先训练好的各种神经网络模型。
当用户或工作人员通过口语方式或者文字输入方式提供自然语言(这里所说的自然语言通常是指一种自然地随文化演化的语言。例如,汉语、英语、日语等等),进一步将自然语言以文字形式输入到编码器当中,输出语义特征向量。
在编码器出去语义特征向量之后,将该语义特征向量输入到解码器当中,进一步由解码器对该语义特征向量进行解码处理,得到目标语句。在目标语句中,包含有至少一个关键词,以及操作符(比如,=、!=、==等)和预测值(利用机器学习模型预测得到的值)。
如前文所述可知,在得到目标语句之后,将进一步对目标语句进行拆分,拆分的最终目的是使得每个目标子语句都不再有嵌套关系。当然,若目标语句不包含有任何嵌套关系,则可以不对其进行拆分,将该不具有任何嵌套关系的语句作为子语句进行处理,根据其中包含的关键字类型对应的语义约束规则,对关键字子句进行修正。
例如,用户输入的自然语言问题为:“告诉我官方语言不为英语的国家的居民平均寿命分别是多少?”。直接使用解码器(比如,神经网络模型)生成的目标语句SQL为:SELECTavg(life_expectancy)FROM country WHERE country_name!=(SELECT isofficial FROMcountry_language WHERE language!=“英语”)。在该目标语句中,可以看到包括关键词类型有:SELECT类型、FROM类型、WHERE类型。其中,外层目标子语句中得到的关键词子句有:SELECT avg(life_expectancy)、FROM country、WHERE country_name!=。在WHERE子句中操作符有!=,预测值country_name。
对上述目标语句进行拆分后,得到不具有嵌套关系的两个目标子语句分别为:①SELECT avg(life_expectancy)FROM country WHERE country_name!=和②SELECTisofficial FROM country_language WHERE language!=“英语”。
在本申请的一个或者多个实施例中,如图3为本申请实施例提供的对目标语句进行拆分方法的流程视图。从图3中可以看到,所述根据嵌套关系对所述目标语句进行拆分,生成无嵌套关系的所述至少一个目标子语句,包括如下步骤:
步骤301:根据所述目标语句中包含的嵌套标识,确定存在嵌套关系的第一目标子语句和第二目标子语句;其中,所述第二目标子语句嵌套在所述第一目标子语句中。
步骤302:在所述第一目标子语句中所述嵌套标识所在的嵌套位置添加位置标识。
步骤303:生成由所述第一目标子语句和所述第二目标子语句按照嵌套关系中的层级顺序组成的序列。
在实际应用中,对目标语句进行拆分的时候,基于嵌套标识进行拆分。这里所说的嵌套标识,可以是特定符号,比如括号()、{}等。还可以是集合操作符,比如,INTERSECT、UNION、EXCEPT等。
由于第二目标子语句嵌套在第一目标子语句中,若通过对第二目标子语句进行检查,发现其中还包含有其他子语句,则还需要对第二目标子语句进行进一步拆分。反之,若第二目标子语句中不再包含有任何嵌套内容,则不需要对第二目标子语句进行进一步拆分。
继续假设在第二目标子语句中不再包含任何嵌套关系,则需要在第一目标子语句中嵌套标识的位置添加位置标识,以便后续对第一目标子语句和第二目标子语句进行组合。在组合的是,需要对修正后的按照此前嵌套关系进行复原,因此,需要根据位置标识将修改后的第一目标子语句和第二目标子语句进行组合。
经过拆分可以得到第一目标子语句和第二目标子语句,可以进一步基于第一目标子语句和第二目标子语句之间的嵌套关系中的层级顺序进行组合,得到子语句序列。
例如,用户输入的自然语言问题为:“告诉我官方语言不为英语的国家的居民平均寿命分别是多少?”。直接使用解码器(比如,神经网络模型)生成的目标语句SQL为:SELECTavg(life_expectancy)FROM country WHERE country_name!=(SELECT isofficial FROMcountry_language WHERE language!=“英语”)。在该目标语句中,可以看到包括关键词类型有:SELECT类型、FROM类型、WHERE类型。
对上述目标语句进行拆分后,得到不具有嵌套关系的两个目标子语句分别为:①SELECT avg(life_expectancy)FROM country WHERE country_name!=和②SELECTisofficial FROM country_language WHERE language!=“英语”。由于第二目标子语句嵌入到第一目标子语句当中,因此,可以得到序列为[SELECT avg(life_expectancy)FROMcountry WHERE country_name!=NESTEDVALUE,SELECT isofficial FROM country_language WHERE language!=“英语“]。其中,NESTEDVALUE可以作为位置标识。
然而,此SQL语句是不能执行的,因为存在多个语法、语义错误,正确的SQL英为:SELECT avg(life_expectancy)FROM country WHERE country_name not in(SELECTcountry_name FROM country_language WHERE language!=“English”and isofficial=1)。在下述实施例中,将对修正过程进行具体说明。
在本申请的一个或者多个实施例中,得到至少一个目标子语句之后,还包括:根据所述目标子语句中包含的关键词类型,确定对应的所述语义约束规则。
不同的关键词类型所采用的用于对关键词子句进行修正的语法约束规则不同。举例来说:WHERE子句中的预测值进行修正,将预测值与数据库中存储的数据表中的值进行相似度计算,从而判断是否需要对预测值进行修改。HAVING子句中,在确定聚合函数与列名匹配的情况下,根据聚合函数不同类型采用不同的修正方式,比如,若聚合函数为max、min等保持数值类型不变的函数,处理方式可以是将预测值与数据库中存储的数据表中的值进行相似度计算,从而判断是否需要对预测值进行修改;若聚合函数为count、avg等聚合结果为计算数值,则将预测值替换为常量,比如,将预测值single替换为1。在无法合理转义的情况下,则可以舍弃该HAVING子句。
需要说明的是,在修正的时候,需要借助数据库进行修正。在一可选实施例当中,可以在数据库中建立数据表。如图4为本申请实施例举例说明的数据表结构示意图。从图4中可以看到,在数据表1中存储有列名、值等。其中,列名可以根据需要设定,比如,列名为country_name等,对应的值有:China、American、Japan等。在数据表2中存储有列名、值,比如,列名为city_name,country_name,…,对应的第一行值:Beijing,China,…;第二行值:Shanghai,China,…;第三行值:New York,USA,…等。
在本申请的一个或者多个实施例中,当所述关键词类型为SELECT类型时,所述利用解码器对基于用户提供的自然语言编码得到的语义特征向量进行解码处理,得到包含有关键词、操作内容和预测值的目标语句,包括:获取数据库提供的数据表;对所述语义特征向量进行解码得到的所述SELECT关键词关联的操作内容与所述数据表中数据列进行匹配度分析;根据所述匹配度大小从所述数据表中确定与所述操作内容匹配的目标数据列;基于所述目标数据列中的数据,生成包含SELECT关键词、所述操作内容和所述预测值的目标语句。
为了使得解码器在解码过程中所得到更加准确的解码结果,可以将解码得到的聚合函数与数据表中的列名进行匹配度分析,例如,列名varchar与聚合函数max/min不匹配,可以将该位置匹配度设置概率值为零;若该聚合函数max/min与某个列名匹配,根据匹配度设置对应的概率值;进而,从多个列中选择概率值最大的。并根据所选择的列中所包含的值和/或操作内容生成SELECT子句。
在本申请的一个或者多个实施例中,当所述关键词类型为WHERE类型时。所述利用解码器对基于用户提供的自然语言编码得到的语义特征向量进行解码处理,得到包含有关键词、操作内容和预测值的目标语句,包括:获取数据库提供的数据表;根据所述语义特征信息进行解码得到的WHERE关键词关联的预测值,从所述数据表中筛选出操作内容;根据所述预测值与所述筛选出操作内容的匹配度大小,确定与所述预测值匹配的所述筛选出操作内容,以得到包含WHERE关键词、所述预测值和所述筛选出操作内容的目标语句。
在解码过程中,若解码得到WHERE子句,其中包含有预测值。根据WHERE关键词关联的预测值,选择对应的数据表,进而计算预测值与数据表中的操作符的匹配度,若不匹配,则将对应数据表中数据列位置设置概率值为零。进而,将预测值与其他数据列中的操作符进行匹配度计算,从而选择出概率值高的数据列以便得到所需的WHERE子句。在实际应用中,计算预测值与操作符之间匹配度的时候,可以根据预测值的类型对操作符进行进一步限制。例如,得到的预测值为字符串abc,则限定的操作符范围为{=,<>,like,not like},其他类型操作符的位置概率值置为0。
下面将结合具体实施例对各种关键字类型对应的关键字子句修正过程进行说明。
当关键词类型为WHERE类型时,若所述预测值为非嵌套值,则计算所述预测值的第一特征向量与所述数据表中第一数据列中任意一个值的第二特征向量之间的第一相似度值;若所述第一相似度值大于第一阈值,则用所述任意一个值替换所述预测值以得修正后的目标子语句。若所述相似度值小于第一阈值,则计算所述数据表中除所述第一数据列之外的任意一列中任意一个值的第三特征向量与所述第一特征向量之间的第二相似度值;若所述第二相似度值大于第二阈值,则将所述任意一列中任意一个值替换所述预测值以得到修正后的目标子语句。
举例来说,当WHERE类型子句中的预测值为非嵌套值,比如预测值为字符串,则获取其对应的word2vec向量,并与数据表中对应数据列的所有值的word2vec向量计算余弦相似度,并找到余弦相似度最大的值。若最大余弦相似度大于第一阈值M1,则用数据表中的值替换预测值;若数据表对应数据列中所有值与预测值的余弦相似度值均小于第一阈值M1,则对比数据表中其他数据列的值,若存在某一数据列的值与预测值的余弦相似度大于第二阈值M2,则用该数据列中的值替换该预测值,并将WHERE子句中的列名修改为该数据流的列名,若所有值与预测值的余弦相似度均小于M2,则保持原语句不变。
当所述关键词类型为HAVING类型时,若执行所述操作内容时的执行结果为数值常量,则将HAVING子句中的所述预测值替换为常量。例如,当操作内容为聚合函数count、avg等,执行该聚合函数后所得到的执行结果是数值形式的常量,则在修正的时候,可以对与该操作内容(聚合函数)具有上下文关系的预测值替换为常量(比如,1)。
当执行操作内容不会改变预测值的时候,若所述预测值为非嵌套值,则计算所述预测值的第一特征向量与所述数据表中第一数据列中任意一个值的第二特征向量之间的第一相似度值;若所述第一相似度值大于第一阈值,则用所述任意一个值替换所述预测值以得修正后的目标子语句。若所述相似度值小于第一阈值,则计算所述数据表中除所述第一数据列之外的任意一列中任意一个值的第三特征向量与所述第一特征向量之间的第二相似度值;若所述第二相似度值大于第二阈值,则将所述任意一列中任意一个值替换所述预测值以得到修正后的目标子语句。
举例来说,若HAVING子句中的聚合函数为max、min等保持类型不变的函数的时候,计算预测值(比如,字符串abc)的word2vec向量,并与数据表中对应数据列的所有值的word2vec向量计算余弦相似度,找到计算后余弦相似度值最大的值。若余弦相似度最大值大于第一阈值M1,则用数据表中的值替换预测值;若数据表中对应数据列中所有值与预测值的余弦相似度值均小于第一阈值M1,则对比数据表中其他数据列的值,若存在某一数据列的值与预测值的余弦相似度大于第二阈值M2,则用该数据列中的值替换该预测值,并将WHERE子句中的列名修改为该数据流的列名,若所有值与预测值的余弦相似度均小于M2,则保持原语句不变。
在本申请的一个或者多个实施例中,所述根据所述目标子语句中包含的关键词类型对应的语义约束规则,对所述目标子语句中各所述关键词子句进行修正,包括:当所述关键词类型为ORDER BY类型时,若所述目标子语句中除ORDER BY子句外的其他子句包含有聚合函数,则将所述ORDER BY子句转换为嵌套查询语句。
ORDER BY用于对查询结果进行排序。在对ORDER BY子句修正时,需要检查当前目标子语句当中的其他关键词子句是否包含有聚合函数、ORDER BY子句中是否含有聚合函数。若目标子语句中其他关键词子句不具有聚合函数,或者目标子句中的其他关键词子句与ORDER BY子句同时具有聚合函数且有GROUP BY语句,则可以不对ORDER BY子句做任何修正处理。
若目标子语句中除了ORDER BY子句外的其他关键词子句都含有聚合函数,则需要进行修正处理。举例来说,若其他子句中包含聚合函数,则将其转化为嵌套查询,转化的规则为:在WHERE子句的部分中增加一条子句,形式为WHERE c=(SELECT c ORDER BY c),其中c为原ORDER BY语句中的列名。若ORDER BY中包含聚合函数且没有GROUP BY语句,则删除ORDER BY语句。
在本申请的一个或者多个实施例中,所述根据所述目标子语句中包含的关键词类型对应的语义约束规则,对所述目标子语句中各所述关键词子句进行修正,包括:当所述关键词类型为GROUP BY类型时,若SELECT子句不包含聚合函数和GROUP BY子句对应的数据列的列名,则将所述GROUP BY的列名替换为主键;若未查找到所述主键,则将所述SELECT子句对应的数据列复制到所述GROUP BY对应的数据列。
如前文所述,为了提升对自然语言的转义速度和效率,会预先建立用于数据表,在数据表中存储有数据列,包含列名和多个值。这些值有的可以作为外键,同时作为另一个数据表的主键,从而方便两个数据表之间加强链接,方便数据的查找、管理。如图4所示,在数据表1中,country_name为数据表1的主键,同时country_name为数据表2的的外键,主键和外键在这里(关系型数据库)本质上是同一列。从而使得数据表1与数据表2建立关联关系。
举例来说,若SELECT子句中存在不包含聚合函数且不出现在GROUP BY中的列名,则将GROUP BY的列名替换为Unique Key(如主键等)。若没有Unique Key,则将SELECT子句中的列复制到GROUP BY子句中。
在本申请的一个或者多个实施例中,当所述关键词类型为FROM类型时,基于所述修正后的目标子语句对应的数据表和其中的数据列生成有向图;基于所述有向图中的所述数据表和所述数据列,以所述数据列或外键为根节点构造最小生成树。
例如,如图5为本申请实施例举例说明的有向图的示意图。从图5中可以看到,首先构造关系模式图(Schema Graph),关系模式图中的每个节点为一个表或一列,标准的关系模式为有向图,边有四种形式:
a.起始节点为一列,终止节点为列所属的表
b.起始节点为外键,终止节点为对应的主键
c.与a反向的边
d.与b反向的边
将解码器预测的FROM子句中的表名和所有其他关键字子句涉及的表作为节点构造最小生成树,为了避免歧义,树中使用的边只有a和b这两种形式。在得到树之后,需要进一步对其进行剪枝处理,不断删除生成树中所有出度为0的表直至树中所有表的出度均大于0。
在本申请的一个或者多个实施例中,所述对修正后的目标子语句进行组合,包括:若修改后的所述目标子语句中的SELECT子句与WHERE子句具有相同的列名或主外键关系,则对修改后的目标子语句进行组合;或者,若修改后的所述目标子语句中的SELECT子句与WHERE子句不具有相同的列名或主外键关系,则将WHERE子句对应的列名复制到所述SELECT子句,对修改后的目标子语句进行组合。
例如,在完成对目标语句中各个关键字子句的修正操作后,进一步对这些修正后的关键字语句重新组合得到修正后的目标语句。对于WHERE子句中的嵌套查询内层的SQL需要保证SELECT子句的列名与外层的条件(WHERE子句)的列名相同或存在主键-外键关系,若不满足上述条件,则把外层的列名复制到内层的SELECT子句。特别地,若内层SELECT子句中的列为boolean属性,则在内层WHERE子句中添加条件:WHERE c=1,其中c为该boolean属性的列名。在进行组合的时候,可以根据拆分时候标记的位置标识进行组合,能够有效提高组合效率。
为了便于理解,下面将通过具体实施例对本方案进行举例说明。
首先,利用编码器和解码器中预先训练好的神经网络模型直接预测的SQL:SELECTavg(life_expectancy)FROM country WHERE country_name!=(SELECT isofficial FROMcountry_language WHERE language!=“英语”)会被拆分为序列:
[
SELECT avg(life_expectancy)FROM country WHERE country_name!=NESTEDVALUE,
SELECT isofficial FROM country_language WHERE language!=“英语“
]
对于序列中第一个目标子语句中的每个关键词子句进行处理,其中WHERE子句中country_name!=NESTEDVALUE中的!=由于操作符与值类型不匹配,因此!=会被重新预测为not in。
对序列中第二个目标子语句中的每个关键词子句进行处理,其中WHERE子句中的language!=“英语”中的值“英语”会通过词向量相似度计算替换为“English”。
拼接两个修正后关键词子句,其中内层SELECT子句中的isofficial与外层条件中的列名country_name不同且不具备主键外键关系,因此将country_name复制到内层SELECT子句中,并且由于isofficial是boolean类型,因此在内层WHERE子句中加入条件isofficial=1。
最终得到修正后的目标语句,也就是可被计算机执行的机器语言:SELECT avg(life_expectancy)FROM country WHERE country_name not in(SELECT country_nameFROM country_language WHERE language!=“English”and isofficial=1)。通过上述方式,对编码、解码处理得到的SQL语句进行拆分,然后,针对拆分得到的关键词子句进行修正,由于每个关键词都有其特有的执行语义约束规则,这些规则是由机器语言特性所决定的,而且这些规则在自然语言中是不具的,无法通过自然语句转义直接得到的。此外,由于规则不具有很强的规律性,关键词种类也很多,是神经网络模型无法学习到的。因此,为了确保SQL语句能够被正确执行,具体针对每个关键词子句中的值进行逐一修正,使得修正效果更准确。
基于同样的思路,本申请实施例还提供一种语言转义装置。如图6为本申请实施例提供的一种语言转义装置的结构示意图。该语言转义装置包括:
拆分模块61,用于对获取到的目标语句进行拆分,得到至少一个目标子语句。
确定模块62,用于确定所述目标子语句中包含的关键词类型和关键词子句。
修正模块63,用于根据所述目标子语句中包含的关键词类型对应的语义约束规则,对所述目标子语句中的关键词子句进行修正。
组合模块64,用于对修正后的目标子语句进行组合,生成可被执行的机器语言。
可选地,拆分模块61,用于利用解码器对基于用户提供的自然语言编码得到的语义特征向量进行解码处理,得到包含有关键词、操作内容和预测值的目标语句;
根据嵌套关系对所述目标语句进行拆分,生成无嵌套关系的所述至少一个目标子语句。
可选地,拆分模块61,用于根据所述目标语句中包含的嵌套标识,确定存在嵌套关系的第一目标子语句和第二目标子语句;其中,所述第二目标子语句嵌套在所述第一目标子语句中;
在所述第一目标子语句中所述嵌套标识所在的嵌套位置添加位置标识;
生成由所述第一目标子语句和所述第二目标子语句按照嵌套关系中的层级顺序组成的序列。
可选地,确定模块62,还用于根据所述目标子语句中包含的关键词类型,确定对应的所述语义约束规则。
可选地,还包括解码模块65,当所述关键词类型为SELECT类型时,解码模块65用于获取数据库提供的数据表;
对所述语义特征向量进行解码得到的所述SELECT关键词关联的操作内容与所述数据表中数据列进行匹配度分析;
根据所述匹配度大小从所述数据表中确定与所述操作内容匹配的目标数据列;
基于所述目标数据列中的数据,生成包含SELECT关键词、所述操作内容和所述预测值的目标语句。
可选地,当所述关键词类型为WHERE类型时;
解码模块65用于获取数据库提供的数据表;
根据所述语义特征信息进行解码得到的WHERE关键词关联的预测值,从所述数据表中筛选出操作内容;
根据所述预测值与所述筛选出操作内容的匹配度大小,确定与所述预测值匹配的所述筛选出操作内容,以得到包含WHERE关键词、所述预测值和所述筛选出操作内容的目标语句。
修正模块63,用于当所述关键词类型为HAVING类型时,若执行所述操作内容时的执行结果为数值常量,则将HAVING子句中的所述预测值替换为常量。
修正模块63,用于若所述预测值为非嵌套值,则计算所述预测值的第一特征向量与所述数据表中第一数据列中任意一个值的第二特征向量之间的第一相似度值;
若所述第一相似度值大于第一阈值,则用所述任意一个值替换所述预测值以得修正后的目标子语句。
修正模块63,用于若所述相似度值小于第一阈值,则计算所述数据表中除所述第一数据列之外的任意一列中任意一个值的第三特征向量与所述第一特征向量之间的第二相似度值;
若所述第二相似度值大于第二阈值,则将所述任意一列中任意一个值替换所述预测值以得到修正后的目标子语句。
修正模块63,用于当所述关键词类型为ORDER BY类型时,若所述目标子语句中除ORDER BY子句外的其他子句包含有聚合函数,则将所述ORDER BY子句转换为嵌套查询语句。
修正模块63,用于当所述关键词类型为GROUP BY类型时,若SELECT子句不包含聚合函数和GROUP BY子句对应的数据列的列名,则将所述GROUP BY的列名替换为主键;
若未查找到所述主键,则将所述SELECT子句对应的数据列复制到所述GROUP BY对应的数据列。
可选地,还包括生成模块66,用于当所述关键词类型为FROM类型时,基于所述修正后的目标子语句对应的数据表和其中的数据列生成有向图;
基于所述有向图中的所述数据表和所述数据列,以所述数据列或外键为根节点构造最小生成树。
可选地,组合模块64用于若修改后的所述目标子语句中的SELECT子句与WHERE子句具有相同的列名或主外键关系,则对修改后的目标子语句进行组合;或者,若修改后的所述目标子语句中的SELECT子句与WHERE子句不具有相同的列名或主外键关系,则将WHERE子句对应的列名复制到所述SELECT子句,对修改后的目标子语句进行组合。
本申请一个实施例还提供一种电子设备。如图7为本申请实施例提供的一种电子设备的结构示意图。该电子设备包括存储器701、处理器702及通信组件703;其中,
所述存储器701,用于存储程序;
所述处理器702,与所述存储器耦合,用于执行所述存储器中存储的所述程序,以用于:
对获取到的目标语句进行拆分,得到至少一个目标子语句;
确定所述目标子语句中包含的关键词类型和关键词子句;
根据所述目标子语句中包含的关键词类型对应的语义约束规则,对所述目标子语句中的关键词子句进行修正;
对修正后的目标子语句进行组合,生成可被执行的机器语言。
可选地,处理器702用于利用解码器对基于用户提供的自然语言编码得到的语义特征向量进行解码处理,得到包含有关键词、操作内容和预测值的目标语句;
根据嵌套关系对所述目标语句进行拆分,生成无嵌套关系的所述至少一个目标子语句。
可选地,处理器702用于根据所述目标语句中包含的嵌套标识,确定存在嵌套关系的第一目标子语句和第二目标子语句;其中,所述第二目标子语句嵌套在所述第一目标子语句中;
在所述第一目标子语句中所述嵌套标识所在的嵌套位置添加位置标识;
生成由所述第一目标子语句和所述第二目标子语句按照嵌套关系中的层级顺序组成的序列。
可选地,处理器702用于根据所述目标子语句中包含的关键词类型,确定对应的所述语义约束规则。
可选地,当所述关键词类型为SELECT类型时,处理器702用于获取数据库提供的数据表;
对所述语义特征向量进行解码得到的所述SELECT关键词关联的操作内容与所述数据表中数据列进行匹配度分析;
根据所述匹配度大小从所述数据表中确定与所述操作内容匹配的目标数据列;
基于所述目标数据列中的数据,生成包含SELECT关键词、所述操作内容和所述预测值的目标语句。
可选地,当所述关键词类型为WHERE类型时;
处理器702用于获取数据库提供的数据表;
根据所述语义特征信息进行解码得到的WHERE关键词关联的预测值,从所述数据表中筛选出操作内容;
根据所述预测值与所述筛选出操作内容的匹配度大小,确定与所述预测值匹配的所述筛选出操作内容,以得到包含WHERE关键词、所述预测值和所述筛选出操作内容的目标语句。
处理器702用于当所述关键词类型为HAVING类型时,若执行所述操作内容时的执行结果为数值常量,则将HAVING子句中的所述预测值替换为常量。
处理器702用于若所述预测值为非嵌套值,则计算所述预测值的第一特征向量与所述数据表中第一数据列中任意一个值的第二特征向量之间的第一相似度值;
若所述第一相似度值大于第一阈值,则用所述任意一个值替换所述预测值以得修正后的目标子语句。
处理器702用于若所述相似度值小于第一阈值,则计算所述数据表中除所述第一数据列之外的任意一列中任意一个值的第三特征向量与所述第一特征向量之间的第二相似度值;
若所述第二相似度值大于第二阈值,则将所述任意一列中任意一个值替换所述预测值以得到修正后的目标子语句。
处理器702用于当所述关键词类型为ORDER BY类型时,若所述目标子语句中除ORDER BY子句外的其他子句包含有聚合函数,则将所述ORDER BY子句转换为嵌套查询语句。
处理器702用于当所述关键词类型为GROUP BY类型时,若SELECT子句不包含聚合函数和GROUP BY子句对应的数据列的列名,则将所述GROUP BY的列名替换为主键;
若未查找到所述主键,则将所述SELECT子句对应的数据列复制到所述GROUP BY对应的数据列。
处理器702用于当所述关键词类型为FROM类型时,基于所述修正后的目标子语句对应的数据表和其中的数据列生成有向图;
基于所述有向图中的所述数据表和所述数据列,以所述数据列或外键为根节点构造最小生成树。
处理器702用于若修改后的所述目标子语句中的SELECT子句与WHERE子句具有相同的列名或主外键关系,则对修改后的目标子语句进行组合;或者,
若修改后的所述目标子语句中的SELECT子句与WHERE子句不具有相同的列名或主外键关系,则将WHERE子句对应的列名复制到所述SELECT子句,对修改后的目标子语句进行组合。
上述存储器701可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令。存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
进一步地,本实施例中的所述处理器702可以具体是:可编程交换处理芯片,该可编程交换处理芯片中配置有数据复制引擎,能对接收到的数据进行复制。
上述处理器702在执行存储器中的程序时,除了上面的功能之外,还可实现其它功能,具体可参见前面各实施例的描述。进一步,如图7所示,电子设备还包括:电源组件704等其它组件。
本申请实施例还提供一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行图1对应实施例所述的方法。
本申请实施例还提供一种计算机程序产品,包括计算机程序/指令,当所述计算机程序/指令被处理器执行时,致使所述处理器能够实现图1对应实施例所述的方法。
如图8为本申请实施例提供的一种数据库***的示意图。从图8中可以看到,所述***包括:
编码器81,用于获取到的自然语言进行编码处理得到的语义特征向量;
解码器82,用于所述编码器输出的所述语义特征向量进行解码处理,生成目标语句;
拆分模块83,用于对获取到的所述目标语句进行拆分,得到至少一个目标子语句;
修正模块84,用于根据所述目标子语句中包含的关键词类型对应的语义约束规则,对所述目标子语句中的关键词子句进行修正;
组合模块85,用于对修正后的目标子语句进行组合,生成可被执行的机器语言;
数据库86,用于基于所述可被执行的机器语言执行数据查询任务。
在实际应用中,编码器81获取基于用户提供的自然语言进行编码处理得到的语义特征向量;利用解码器82对编码器81提供的语义特征向量进行解码处理,得到不可执行的目标语句。进而,利用拆分模块83对目标语句进行拆分处理,得到至少一个目标子语句。将至少一个目标子语句发送给修正模块84,根据所述目标子语句序列中包含的关键词类型对应的语义约束规则,对所述目标子语句进行修正。由组合模块85对修正后的目标子语句进行组合,生成所述自然语言对应的机器语言。数据库86在接收到可被执行的机器语言后,执行相应的数据查询任务,并将查询结果反馈给用户。当然,在实际应用中,编码器、解码器、拆分模块、修正模块和组合模块可以集成在一个工作节点,数据库作为另一个单独节点工作;当然也可以将所有模块和数据库集成在同一本地服务器或者云端服务器中。
基于上述实施例,当用户提供查询作用的自然语言后,可以由编码器对自然语言进行编码处理从而得到该自然语言的语义特征向量。利用解码器对语言特征向量进行进一步处理,得到自然语言对应的可被数据库识别的目标语句。对目标语句进行拆分处理,得到包含至少一个目标子语句的序列。在每个目标子语句中都包含有关键词,在对目标子语句进行修正的时候,基于目标子语句中包含的关键词类型和对应的语义约束规则,对目标子语句进行修正,并对修正后的目标子语句进行组合,得到能够被数据库识别的机器语言。通过上述方式,能够有效提高自然语言转义准确性以及用户使用数据库查询的工作效率,同时降低对使用数据库查询工作人员的技术能力要求。
由于每个关键词都有其特有的执行语义约束规则,这些规则是由机器语言特性所决定的,而且这些规则在自然语言中是不具的,无法通过自然语句转义直接得到的。此外,由于规则不具有很强的规律性,关键词种类也很多,是神经网络模型无法学习到的。因此,为了确保SQL语句能够被正确执行,具体针对每个关键词子句中的值进行逐一修正,使得修正效果更准确。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (16)
1.一种语言转义方法,所述方法包括:
对获取到的目标语句进行拆分,得到至少一个目标子语句;
确定所述目标子语句中包含的关键词类型和关键词子句;
根据所述目标子语句中包含的关键词类型对应的语义约束规则,对所述目标子语句中的关键词子句进行修正;
对修正后的目标子语句进行组合,生成可被执行的机器语言。
2.根据权利要求1所述的方法,所述对获取到的目标语句进行拆分,得到至少一个目标子语句,包括:
利用解码器对基于用户提供的自然语言编码得到的语义特征向量进行解码处理,得到包含有关键词、操作内容和预测值的目标语句;
根据嵌套关系对所述目标语句进行拆分,生成无嵌套关系的所述至少一个目标子语句。
3.根据权利要求2所述的方法,所述根据嵌套关系对所述目标语句进行拆分,生成无嵌套关系的所述至少一个目标子语句,包括:
根据所述目标语句中包含的嵌套标识,确定存在嵌套关系的第一目标子语句和第二目标子语句;其中,所述第二目标子语句嵌套在所述第一目标子语句中;
在所述第一目标子语句中所述嵌套标识所在的嵌套位置添加位置标识;
生成由所述第一目标子语句和所述第二目标子语句按照嵌套关系中的层级顺序组成的序列。
4.根据权利要求2所述的方法,得到至少一个目标子语句之后,还包括:
根据所述目标子语句中包含的关键词类型,确定对应的所述语义约束规则。
5.根据权利要求2所述的方法,当所述关键词类型为SELECT类型时,
所述利用解码器对基于用户提供的自然语言编码得到的语义特征向量进行解码处理,得到包含有关键词、操作内容和预测值的目标语句,包括:
获取数据库提供的数据表;
对所述语义特征向量进行解码得到的所述SELECT关键词关联的操作内容与所述数据表中数据列进行匹配度分析;
根据所述匹配度大小从所述数据表中确定与所述操作内容匹配的目标数据列;
基于所述目标数据列中的数据,生成包含SELECT关键词、所述操作内容和所述预测值的目标语句。
6.根据权利要求2所述的方法,当所述关键词类型为WHERE类型时;
所述利用解码器对基于用户提供的自然语言编码得到的语义特征向量进行解码处理,得到包含有关键词、操作内容和预测值的目标语句,包括:
获取数据库提供的数据表;
根据所述语义特征信息进行解码得到的WHERE关键词关联的预测值,从所述数据表中筛选出操作内容;
根据所述预测值与所述筛选出操作内容的匹配度大小,确定与所述预测值匹配的所述筛选出操作内容,以得到包含WHERE关键词、所述预测值和所述筛选出操作内容的目标语句。
7.根据权利要求4所述的方法,所述根据所述目标子语句中包含的关键词类型对应的语义约束规则,对所述目标子语句中的关键词子句进行修正,包括:
当所述关键词类型为HAVING类型时,若执行所述操作内容时的执行结果为数值常量,则将HAVING子句中的所述预测值替换为常量。
8.根据权利要求1至7中任一项所述的方法,所述根据所述目标子语句中包含的关键词类型对应的语义约束规则,对所述目标子语句中各所述关键词子句进行修正,包括:
若所述预测值为非嵌套值,则计算所述预测值的第一特征向量与所述数据表中第一数据列中任意一个值的第二特征向量之间的第一相似度值;
若所述第一相似度值大于第一阈值,则用所述任意一个值替换所述预测值以得修正后的目标子语句。
9.根据权利要求8所述的方法,所述方法还包括:若所述相似度值小于第一阈值,则计算所述数据表中除所述第一数据列之外的任意一列中任意一个值的第三特征向量与所述第一特征向量之间的第二相似度值;
若所述第二相似度值大于第二阈值,则将所述任意一列中任意一个值替换所述预测值以得到修正后的目标子语句。
10.根据权利要求5或6所述的方法,所述根据所述目标子语句中包含的关键词类型对应的语义约束规则,对所述目标子语句中各所述关键词子句进行修正,包括:
当所述关键词类型为ORDER BY类型时,若所述目标子语句中除ORDER BY子句外的其他子句包含有聚合函数,则将所述ORDER BY子句转换为嵌套查询语句。
11.根据权利要求5或6所述的方法,所述根据所述目标子语句中包含的关键词类型对应的语义约束规则,对所述目标子语句中各所述关键词子句进行修正,包括:
当所述关键词类型为GROUP BY类型时,若SELECT子句不包含聚合函数和GROUP BY子句对应的数据列的列名,则将所述GROUP BY的列名替换为主键;
若未查找到所述主键,则将所述SELECT子句对应的数据列复制到所述GROUP BY对应的数据列。
12.根据权利要求5或6所述的方法,还包括:
当所述关键词类型为FROM类型时,基于所述修正后的目标子语句对应的数据表和其中的数据列生成有向图;
基于所述有向图中的所述数据表和所述数据列,以所述数据列或外键为根节点构造最小生成树。
13.根据权利要求5或6所述的方法,所述对修正后的目标子语句进行组合,包括:
若修改后的所述目标子语句中的SELECT子句与WHERE子句具有相同的列名或主外键关系,则对修改后的目标子语句进行组合;或者,
若修改后的所述目标子语句中的SELECT子句与WHERE子句不具有相同的列名或主外键关系,则将WHERE子句对应的列名复制到所述SELECT子句,对修改后的目标子语句进行组合。
14.一种电子设备,包括存储器及处理器;其中,
所述存储器,用于存储程序;
所述处理器,与所述存储器耦合,用于执行所述存储器中存储的所述程序,以用于实现上述权利要求1至13中任一项所述的方法。
15.一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求1至13中任一项所述的方法。
16.一种数据库***,所述***包括:
编码器,用于获取到的自然语言进行编码处理得到的语义特征向量;
解码器,用于所述编码器输出的所述语义特征向量进行解码处理,生成目标语句;
拆分模块,用于对获取到的所述目标语句进行拆分,得到至少一个目标子语句;
修正模块,用于根据所述目标子语句中包含的关键词类型对应的语义约束规则,对所述目标子语句中的关键词子句进行修正;
组合模块,用于对修正后的目标子语句进行组合,生成可被执行的机器语言;
数据库,用于基于所述可被执行的机器语言执行数据查询任务。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210873471.8A CN115292448A (zh) | 2022-07-22 | 2022-07-22 | 语言转义方法、装置、设备及存储介质 |
PCT/CN2023/108849 WO2024017386A1 (zh) | 2022-07-22 | 2023-07-24 | 语言转义方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210873471.8A CN115292448A (zh) | 2022-07-22 | 2022-07-22 | 语言转义方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115292448A true CN115292448A (zh) | 2022-11-04 |
Family
ID=83824048
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210873471.8A Pending CN115292448A (zh) | 2022-07-22 | 2022-07-22 | 语言转义方法、装置、设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115292448A (zh) |
WO (1) | WO2024017386A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024017386A1 (zh) * | 2022-07-22 | 2024-01-25 | 阿里云计算有限公司 | 语言转义方法、装置、设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111177178B (zh) * | 2019-12-03 | 2023-06-06 | 腾讯科技(深圳)有限公司 | 一种数据处理方法及相关设备 |
CN111177184A (zh) * | 2019-12-24 | 2020-05-19 | 深圳壹账通智能科技有限公司 | 基于自然语言的结构化查询语言转换方法、及其相关设备 |
CN113536741B (zh) * | 2020-04-17 | 2022-10-14 | 复旦大学 | 中文自然语言转数据库语言的方法及装置 |
CN114265858A (zh) * | 2021-12-09 | 2022-04-01 | 阿里巴巴(中国)有限公司 | 一种自然语言到sql的转义方法、设备及存储介质 |
CN115292448A (zh) * | 2022-07-22 | 2022-11-04 | 阿里云计算有限公司 | 语言转义方法、装置、设备及存储介质 |
-
2022
- 2022-07-22 CN CN202210873471.8A patent/CN115292448A/zh active Pending
-
2023
- 2023-07-24 WO PCT/CN2023/108849 patent/WO2024017386A1/zh unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024017386A1 (zh) * | 2022-07-22 | 2024-01-25 | 阿里云计算有限公司 | 语言转义方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2024017386A1 (zh) | 2024-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10719662B2 (en) | Knowledge map-based question-answer method, device, and storage medium | |
CN110543552B (zh) | 对话交互方法、装置及电子设备 | |
CN109446221B (zh) | 一种基于语义分析的交互式数据探查方法 | |
CN109445834A (zh) | 基于抽象语法树的程序代码相似性快速比较方法 | |
CN109933602B (zh) | 一种自然语言与结构化查询语言的转换方法及装置 | |
CN108804428A (zh) | 一种译文中术语错译的纠正方法、***及相关装置 | |
IES20020647A2 (en) | A data quality system | |
CN110147544B (zh) | 一种基于自然语言的指令生成方法、装置以及相关设备 | |
CN111104423B (zh) | Sql语句生成方法、装置、电子设备和存储介质 | |
US11537448B1 (en) | Adapting application programming interfaces with schema mappings | |
CN112416778A (zh) | 测试用例推荐方法、装置和电子设备 | |
WO2024017386A1 (zh) | 语言转义方法、装置、设备及存储介质 | |
CN110555205A (zh) | 否定语义识别方法及装置、电子设备、存储介质 | |
CN115543437B (zh) | 一种代码注释生成方法和*** | |
CN114625748A (zh) | Sql查询语句的生成方法、装置、电子设备及可读存储介质 | |
CN113672628A (zh) | 数据血缘分析方法、终端设备及介质 | |
CN113297251A (zh) | 多源数据检索方法、装置、设备及存储介质 | |
CN112883022A (zh) | 一种基于xml模板的对象数据清洗转换方法 | |
CN112800737B (zh) | 自然语言文本生成方法和装置以及对话*** | |
CN115470232A (zh) | 模型训练和数据查询方法、装置、电子设备和存储介质 | |
US20230185639A1 (en) | Mapping application programming interface schemas with semantic representations | |
CN117251455A (zh) | 一种基于大模型的智能报表生成方法及其*** | |
Li et al. | Toward less hidden cost of code completion with acceptance and ranking models | |
CN115617954B (zh) | 问答方法、装置、电子设备及存储介质 | |
CN114116779A (zh) | 基于深度学习的电网调控领域信息检索方法、***和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |