CN111104423B - Sql语句生成方法、装置、电子设备和存储介质 - Google Patents

Sql语句生成方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN111104423B
CN111104423B CN201911311193.1A CN201911311193A CN111104423B CN 111104423 B CN111104423 B CN 111104423B CN 201911311193 A CN201911311193 A CN 201911311193A CN 111104423 B CN111104423 B CN 111104423B
Authority
CN
China
Prior art keywords
grammar
matrix
sql
components
argument
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.)
Active
Application number
CN201911311193.1A
Other languages
English (en)
Other versions
CN111104423A (zh
Inventor
张帅
张傲
王丽杰
孙珂
李婷婷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201911311193.1A priority Critical patent/CN111104423B/zh
Publication of CN111104423A publication Critical patent/CN111104423A/zh
Application granted granted Critical
Publication of CN111104423B publication Critical patent/CN111104423B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2452Query translation
    • G06F16/24522Translation of natural language queries to structured queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/243Natural language query formulation

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Machine Translation (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种SQL语句生成方法、装置、电子设备和存储介质,涉及自然语言处理技术领域。具体实现方案为:获取待处理的自然语句;对自然语句进行分词处理以得到多个词片段;依据数据库的结构化信息,将多个词片段进行成分识别,得到多个词片段所对应的多个成分;基于自底向上的文法分析,根据预先设定的文法和多个成分,生成自然语句对应的SQL语句。本申请实施例可以实现自然语言到SQL语句的生成,进而实现了基于结构化知识的自动问答,在自底向上的SQL语句生成中,每一个变元都会与附近的变元基于文法进行组合,因此在每一步的生成过程中都可以看到更多信息,提高生成SQL语句的准确性;并且,在真实用户场景中可以获得较优的效果。

Description

SQL语句生成方法、装置、电子设备和存储介质
技术领域
本申请涉及自然语言处理技术领域,尤其涉及一种SQL语句生成方法、装置、电子设备以及一种计算机可读存储介质。
背景技术
在日常的生活和工作中,人们已经习惯使用自然语言和计算机交互来解决问题。如人们会通过自然语音交互的方式使用智能助手查看天气、邮件、电话等,同时人们也会在搜索引擎中用自然语言输入查询词,希望得到与查询词相匹配的答案。
在多数场景中,用户输入的查询词可以通过搜索引擎的传统方法解决,然而在一些特殊场景中(如知识库搜索、智能客服、结构化问答等)数据是以结构化的形式存储的,尤其是大量的企业数据库,数据存储在关系型数据库的表格中,需要通过规范化的SQL语句执行查询操作。在这些场景下需要将用户的自然语言输入转化为机器可以理解并执行的规范语义SQL语句,这种表示可以在某个环境中被执行并返回结果。由于自然语言的表述方式是灵活多变的,如何将用户输入的查询词准确转化为规范化意义表示的方法是至关重要。
发明内容
本申请目的旨在至少在一定程度上解决上述的技术问题之一。
为此,本申请的第一个目的在于提出一种SQL语句生成方法。该方法可以实现自然语言到SQL语句的生成,进而实现了基于结构化知识的自动问答,可以提高生成SQL语句的准确性;并且,在真实用户场景中可以获得较优的效果。
本申请的第二个目的在于提出一种SQL语句生成装置。
本申请的第三个目的在于提出一种电子设备。
本申请的第四个目的在于提出一种计算机可读存储介质。
为达到上述目的,本申请第一方面实施例提出的SQL语句生成方法,包括:获取待处理的自然语句;对所述自然语句进行分词处理以得到多个词片段;依据数据库的结构化信息,将所述多个词片段进行成分识别,得到所述多个词片段所对应的多个成分;基于自底向上的文法分析,根据预先设定的文法和所述多个成分,生成所述自然语句对应的SQL语句。
根据本申请的一个实施例,所述基于自底向上的文法分析,根据预先设定的文法和所述多个成分,生成所述自然语句对应的SQL语句,包括:根据预先设定的文法,将所述多个成分分别转换为对应的变元符号;基于所述自底向上的文法分析,利用所述文法对所述多个成分所对应的多个变元符号进行文法组合,以生成二维矩阵;从所述二维矩阵中找出代表所述自然语句的目标变元符号,并根据代表所述自然语句的目标变元符号从所述二维矩阵中确定出所述目标变元符号的生成路径;根据所述生成路径中各矩阵元素所对应的变元符号,生成代表SQL语句的SQL符号;根据所述SQL符号和预先设定的变元符号含义,生成所述SQL语句。
根据本申请的一个实施例,基于所述自底向上的文法分析,利用所述文法对所述多个成分所对应的多个变元符号进行文法组合,以生成二维矩阵,包括:根据所述多个词片段的个数,生成一个空的二维矩阵,其中,所述二维矩阵的行数和列数均为N,所述N为所述词片段的个数;将所述多个成分所对应的多个变元符号作为所述二维矩阵中第一行对应矩阵元素的内容,填写至所述二维矩阵中的第一行;基于所述文法,对所述二维矩阵中第一行矩阵元素内容自底向上进行文法分析,得到所述二维矩阵中其他矩阵元素P(i,j)的内容;其中,1<i≤N,1≤j≤N,所述P(i,j)对应到句子中跨度范围内可能的非终结符号的集合;其中,i表示跨度包含词片段的数目,j表示跨度左侧第一个词片段的位置。
根据本申请的一个实施例,所述方法还包括:如果所述自然语句中存在不符合任何成分的词片段,则在生成所述其他矩阵元素P(i,j)时,判断欲用以生成所述其他矩阵元素P(i,j)的矩阵元素内容是否满足所述文法;若是,则将所述欲用以生成所述其他矩阵元素P(i,j)的矩阵元素所组成的集合内容确定为所述其他矩阵元素P(i,j)的内容;若否,则允许跳过不符合任何文法的矩阵元素,并通过自底向上从所述二维矩阵中找出所组成的集合内容存在满足条件的文法的两个矩阵元素,并将所述两个矩阵元素所组成的集合内容确定为所述其他矩阵元素P(i,j)的内容,以此类推,直至跳过词片段的数量超过允许最大跳数或矩阵元素位置超过矩阵边界。
根据本申请的一个实施例,所述方法还包括:当所述自然语句中所包含的多个成分之间存在字符交叉现象时,将成分切分为最小粒度的词片段;其中,将所述多个成分所对应的多个变元符号作为所述二维矩阵中第一行对应矩阵元素的内容,填写至所述二维矩阵中的第一行,包括:判断所述多个成分中是否存在包含多个最小粒度的词片段的第一成分;若是,则将所述第一成分对应的变元符号填写到目标位置,其中,所述目标位置的横坐标值为所述多个最小粒度的词在所述二维矩阵的坐标中的最大纵坐标值,所述目标位置的纵坐标值为所述多个最小粒度的词片段中位于第一位置的词片段的横坐标值;将所述多个成分中的其他成分所对应的变元符号填写到所述第一行的对应位置。
根据本申请的一个实施例,在根据所述SQL符号和预先设定的变元符号含义,生成所述SQL语句的过程中,所述方法还包括:从所述SQL符号中,剪除不符合语法规范的组合所生成的变元符号。
根据本申请的一个实施例,在基于自底向上的文法分析,根据预先设定的文法和所述多个成分,生成所述自然语句对应的SQL语句之前,所述方法还包括:依据所述数据库的结构化信息,判断所述自然语句是否有缺少成分信息的情况;若是,则确定出被缺少的成分,并将所述被缺少的成分补充至所述多个成分中。
为达到上述目的,本申请第二方面实施例提出的SQL语句生成装置,包括:自然语句获取模块,用于获取待处理的自然语句;分词处理模块,用于对所述自然语句进行分词处理以得到多个词片段;成分识别模块,用于依据数据库的结构化信息,将所述多个词片段进行成分识别,得到所述多个词片段所对应的多个成分;SQL语句生成模块,用于基于自底向上的文法分析,根据预先设定的文法和所述多个成分,生成所述自然语句对应的SQL语句。
为达到上述目的,本申请第三方面实施例提出的电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本申请第一方面实施例所述的SQL语句生成方法。
为达到上述目的,本申请第四方面实施例提出的存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行本申请第一方面实施例所述的SQL语句生成方法。
上述申请中的一个实施例具有如下优点或有益效果:可获取待处理的自然语句,并对自然语句进行分词处理以得到多个词片段,依据数据库的结构化信息,将多个词片段进行成分识别,得到多个词片段所对应的多个成分,然后,基于自底向上的文法分析,根据预先设定的文法和多个成分,生成自然语句对应的SQL语句。即通过自底向上的文法分析来生成自然语句的SQL查询语句,实现了自然语言到SQL语句的生成,进而实现了基于结构化知识的自动问答,在自底向上的SQL语句生成中,每一个变元都会与附近的变元基于文法进行组合,因此在每一步的生成过程中都可以看到更多信息,提高生成SQL语句的准确性;并且,本申请采用自底向上的SQL语句生成技术,包含了从成分分析到SQL语句生成的完整技术路线,在真实用户场景中可以获得较优的效果;另外,由于生成过程是自底向上进行的,并且引入了规则和模型两种方式剪除符合语法规范的组合,保证了局部正确性,所以即使在生成过程中某一子句生成错误,但依然有可能执行SQL语句后返回的结果符合预期,保证了结果的可控性。
上述可选方式所具有的其他效果将在下文中结合具体实施例加以说明。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是根据本申请一个实施例的SQL语句生成方法的流程图;
图2是根据本申请一个具体实施例的SQL语句生成方法的流程图;
图3是根据本申请实施例的一种CYK算法伪代码的实现示例图;
图4是根据本申请实施例的预先设定的文法的示例图;
图5a是根据本申请实施例的二维矩阵中第一行矩阵元素内容的示例图;
图5b是根据本申请实施例的生成的二维矩阵的示例图;
图6是根据本申请实施例的另一种CYK算法伪代码的实现示例图;
图7是根据本申请实施例的另一个生成的二维矩阵的示例图;
图8是根据本申请一个实施例的SQL语句生成装置的结构示意图;
图9是根据本申请一个具体实施例的SQL语句生成装置的结构示意图;
图10是根据本申请另一个具体实施例的SQL语句生成装置的结构示意图;
图11是根据本申请一个实施例的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
现有技术中,通常一种方法是通过神经网络由自然语句端到端的生成SQL语句,另一种方法也是依赖于神经网络,但它是基于设计好的语法规则,利用抽象语法树自顶向下生成SQL语句。但是,上述端到端的方法和自顶向下的方法有以下明显的缺陷:1)两者方法都是由一个初始状态生成整个SQL语句,这意味如果初始状态生成错误,则整个SQL语句都将与目标结果偏离,造成生成的结果不可控;2)两者方法都是由前一个节点生成下一个节点,在生成过程中接受的信息只和临近的节点有关,无法更好的利用全局信息;3)现有技术多多使用基于现有数据集训练的模型,无法在真实用户场景中达到理想效果。
为解决上述技术问题,本申请提出了一种基于自底向上的SQL语句生成方法、装置、电子设备和计算机可读存储介质,可以实现自然语言到SQL查询语句的生成,进而实现基于结构化知识的自动问答。具体地,下面参照附图来描述根据本申请实施例提出的SQL语句生成方法、装置、电子设备和计算机可读存储介质。
图1是根据本申请一个实施例的SQL语句生成方法的流程图。需要说明的是,本申请实施例的SQL语句生成方法可应用于本申请实施例的SQL语句生成装置。该SQL语句生成装置可被配置于电子设备上。如图1所示,该SQL语句生成方法可以包括:
步骤110,获取待处理的自然语句。
举例而言,假设本申请实施例的SQL语句生成方法可应用于结构化问答场景中,可为用户提供问题输入框,用户可通过该输入框输入查询词。由此,可以通过该输入框来获得用户输入的查询词,该查询词可作为待处理的自然语句。
步骤120,对自然语句进行分词处理以得到多个词片段。
例如,可通过分词模型对所述自然语句进行分词处理,得到该自然语句所对应的多个词片段。举例而言,以所述自然语句为“中国建筑2018年的净利润”为例,可通过分词模型对该自然语句进行分词处理,得到对应的多个词片段,如“中国建筑”、“2018年”、“的”、“净利润”。
步骤130,依据数据库的结构化信息,将多个词片段进行成分识别,得到多个词片段所对应的多个成分。
可以理解,SQL语句的执行依赖于结构化的数据库,在生成SQL语句前需要将用户输入的自然语句中与数据库有关的词片段识别为具体成分。其中,成分类别可为数据库表名(Table Name)、表头(Column Header)和表中的值(Cell)等,例如,在自然语句“中国建筑2018年的净利润”中,“中国建筑”和“2018年”都是数据库表中的属性值,“净利润”是数据库表中的表头。
步骤140,基于自底向上的文法分析,根据预先设定的文法和多个成分,生成自然语句对应的SQL语句。
可选地,在得到自然语句中多个词片段所对应的多个成分之后,可基于CYK(Cocke–Younger–Kasami algorithm,一种用来对上下文无关文法进行语法分析的算法)算法,根据预先设定的文法将所述多个成分转化为SQL符号,进而基于该SQL符号生成该自然语句的SQL语句。具体实现过程可参见后续实施例的描述。
需要说明的是,在用户的自然语句中,常会省略一些成分信息,这些被省略的信息不会影响人的理解和认知,但是在将自然语句转化为SQL语句后,这些缺少的成分会影响到执行SQL语句后返回结果的准确性,甚至导致生成的SQL语句无法被执行。为了保证生成的SQL语句可以被执行,且能够返回准确的执行结果,可选地,在本申请的一个实施例中,在基于自底向上的文法分析,根据预先设定的文法和多个成分,生成自然语句对应的SQL语句之前,可依据数据库的结构化信息,判断自然语句是否有缺少成分信息的情况;若是,则确定出被缺少的成分,并将被缺少的成分补充至多个成分中。
举例来讲,大多用户查询词中都不会提及表名这一成分,但这个成分是SQL子句中不可或缺的一部分。例如,“中国银行的股票价格”和“建设银行的年净利润”这两个查询词,基于文法可以将这两个查询词都表示为“C_S A_S”,这时由于缺少必要的T_S导致无法生成最终“SQL”符号。从成分分析结果可知查询词中出现的表头和属性值分别是属于哪些表的字段,因此可将用户省却的表名字段补充到所述多个成分中中。由上述例子可知在基于自底向上的文法分析,根据预先设定的文法和多个成分,生成自然语句对应的SQL语句之前,可以将用户省去的成分通过规则的方法添加到所述多个成分中,比如表名、返回数量,排序方式等等。
根据本申请实施例的SQL语句生成方法,可获取待处理的自然语句,并对自然语句进行分词处理以得到多个词片段,依据数据库的结构化信息,将多个词片段进行成分识别,得到多个词片段所对应的多个成分,然后,基于自底向上的文法分析,根据预先设定的文法和多个成分,生成自然语句对应的SQL语句。即通过自底向上的文法分析来生成自然语句的SQL查询语句,实现了自然语言到SQL语句的生成,进而实现了基于结构化知识的自动问答,在自底向上的SQL语句生成中,每一个变元都会与附近的变元基于文法进行组合,因此在每一步的生成过程中都可以看到更多信息,提高生成SQL语句的准确性;并且,本申请采用自底向上的SQL语句生成技术,包含了从成分分析到SQL语句生成的完整技术路线,在真实用户场景中可以获得较优的效果。
图2是根据本申请一个具体实施例的SQL语句生成方法的流程图。如图2所示,该SQL语句生成方法可以包括:
步骤210,获取待处理的自然语句。
步骤220,对自然语句进行分词处理以得到多个词片段。
步骤230,依据数据库的结构化信息,将多个词片段进行成分识别,得到多个词片段所对应的多个成分。
需要说明的是,在本申请的实施例中,上述步骤210-步骤230的实现过程可参见上述步骤110-130的实现过程的描述,在此不再赘述。
步骤240,根据预先设定的文法,将多个成分分别转换为对应的变元符号。
可以理解,SQL语句的生成在底层需依赖于文法设计,通过事先设计好的文法将各个成分组合为变元,以便后续对不同的变元在依次基于文法组合,最终生成代表SQL语句的SQL符号。文法的样例可如下表1所示:
表1文法词典样例
文法
SQL->SQL_NO_TABLE T_S
T_S->T_S T_S
SQL_NO_TABLE->A_S C_S|C_S A_S
SQL_NO_TABLE->A_S C_S_NO_OP|C_S_NO_OP A_S
SQL_NO_TABLE->SQL_NO_TABLE C_S
A_S->AGG COL|COL AGG
C_S->COL_OP CELL|CELL COL_OP
C_S_NO_OP->COL CELL|CELL COL
C_S->C_S_NO_OP C_S|C_S C_S_NO_OP
C_S->C_S C_S
C_S->C_S_NO_OP C_S_NO_OP
COL_OP->COL OP|OP COL
完整的文法应包括SQL语句的各个成分,设计的原则应该足够通用和灵活。上表1中的内容为部分文法样例,只包括SQL语句中的SELECT,WHERE,FROM三个部分,未涉及嵌套部分,多种不同的文法生成同一个变元的时可使用“|”符号分割。
在本申请的实施例中,可将通过下面的简单例子对文法中符号做出解释:
SQL:SELECT公司名,地点WHERE行业=互联网FROM公司表查询词:查询互联网公司名和地点?
SQL语句中的SELECT子句用于从表中选取数据,当需要选取多个列时可以使用“,”分割。在文法中可使用A_S(aggregation sub-SQL)符号表示SQL中的SELECT字句,对aggregation(max,min,avg,sum,count)使用AGG符号表示,对于表头使用COL或A_S表示。当表头前存在aggregation修饰时,即可通过文法”A_S->AGG COL”可以表示A_S,对于多个A_S可以通过文法“A_S->A_S A_S”。对于上述的例子,公司名和地点分别为表头,可用“A_S”表示,即可转化为“公司名和地点”->“A_S A_S”->“A_S”。
SQL语句中的WHERE子句用于提取那些满足指定条件的记录,多个条件使用逻辑运算符(and、or)连接。在文法中C_S(condition sub-SQL)符号表示WHERE子句。WHERE中的操作符operator(=,<,>,<>)使用OP表示,属性值使用CELL表示。
WHERE子句的表示比SELECT复杂,可以分为三种情况。第一,当用户查询词中包含operator时,可由文法“COL_OP->COL OP|OP COL”生成COL_OP符号,再由文法“C_S->COL_OPCELL|CELL COL_OP”生成C_S符号。第二,当operator为“=”时,用户通常在自然语句的表述中会将其省去,如“价格10元的套餐”。这种情况可使用文法“C_S_NO_OP->COL CELL”将价格和10元表示为C_S_NO_OP,即不存在OP的C_S(C_S_NO_OP在文法的设计上和C_S基本等价)。第三,用户的查询词中有可能会连表头都省略,如“10元的套餐”,这种情况下虽然用户已经省略了表头,但是通过成分分析的结果确定属性值“10元”对应的属性是价格,因此属性值也可以表示为C_S符号。例子中的“互联网”为属性值,可表示为“C_S”。
SQL语句中FROM表示从哪个表中读取数据,当需要使用多个表才能满足查询的需求时,使用“,”符号分割表名。在文法中可使用T_S(Table sub-SQL)表示FROM字句,多个表时满足“T_S->T_S T_S”文法生成T_S符号。
步骤250,基于自底向上的文法分析,利用文法对多个成分所对应的多个变元符号进行文法组合,以生成二维矩阵。
例如,可采用CYK算法和预先设定的文法,对多个成分所对应的多个变元符号自底向上进行文法组合,以得到二维矩阵,即CYK矩阵。作为一种示例,CYK算法伪代码实现可如图3所示。本步骤中,可利用该CYK算法来对多个成分所对应的多个变元符号进行文法组合,以生成CYK矩阵。
作为一种示例,所述基于自底向上的文法分析,利用文法对多个成分所对应的多个变元符号进行文法组合,以生成二维矩阵的具体实现过程可如下:可根据多个词片段的个数,生成一个空的二维矩阵,其中,二维矩阵的行数和列数均为N,N为词片段的个数,之后,将多个成分所对应的多个变元符号作为二维矩阵中第一行对应矩阵元素的内容,填写至二维矩阵中的第一行,并基于文法,对二维矩阵中第一行矩阵元素内容自底向上进行文法分析,得到二维矩阵中其他矩阵元素P(i,j)的内容;其中,1<i≤N,1≤j≤N,P(i,j)对应到句子中跨度范围内可能的非终结符号的集合;其中,i表示跨度包含词片段的数目,j表示跨度左侧第一个词片段的位置。
举例而言,以查询词为“中国建筑2018年财报”为例,该查询词对应的词片段分别为“中国建筑”、“2018年”、“财报”,由于该查询词省去了“财报表”的表名,所以在成分识别时,需将该表名成分进行补充,从而可以得到4个词片段,即“中国建筑”、“2018年”、“财报”和“company_financialReport”,对应成分依次为属性值、属性值、表头和表名。此时,可根据词片段的个数,生成一个空的4*4的二维矩阵。之后,可将“中国建筑”、“2018年”、“财报”和“company_financialReport”这四个成分转化为对应的变元符号,依次为“C_S”、“C_S”、“A_S”、“T_S”,将这些变元符合作为二维矩阵中第一行对应矩阵元素的内容,填写到二维矩阵中的第一行,如图5a所示。然后,可基于预先设定的如图4所示的文法,对二维矩阵中第一行矩阵元素内容自底向上进行文法分析,得到二维矩阵中其他矩阵元素P(i,j)的内容,其中,1<i≤N,1≤j≤N,P(i,j)对应到句子中跨度范围内可能的非终结符号的集合;其中,i表示跨度包含词片段的数目,j表示跨度左侧第一个词片段的位置。例如,基于预先设定的文法,对如图5a所示的二维矩阵中第一行矩阵元素内容自底向上进行文法分析,得到如图5b所示其他矩阵元素P(i,j)的内容。
需要说明的是,由于CYK算法要求每一个词片段都为非终结符,并可转化为变化,如Col<-name,A_S<-name。但是,在真实场景下用户的查询词中会包含“的”、“查询”等不属于任何成分的词,因此本申请基于现有的CYK算法做出了改进,即在生成其他矩阵元素P(i,j)的过程中,允许跳过不符合任何文法的节点。可选地,在本申请的一个实施例中,如果自然语句中存在不符合任何成分的词片段,则在生成其他矩阵元素P(i,j)时,判断欲用以生成其他矩阵元素P(i,j)的矩阵元素内容是否满足文法;若是,则将欲用以生成其他矩阵元素P(i,j)的矩阵元素所组成的集合内容确定为其他矩阵元素P(i,j)的内容;若否,则允许跳过不符合任何文法的矩阵元素,并通过自底向上从二维矩阵中找出所组成的集合内容存在满足条件的文法的两个矩阵元素,并将两个矩阵元素所组成的集合内容确定为其他矩阵元素P(i,j)的内容,以此类推,直至跳过词片段的数量超过允许最大跳数或矩阵元素位置超过矩阵边界。
还需要说明的是,在CYK算法中非终结符都在第0维,即词片段与非终结符一一对应。但是在真实场景下查询词中可能包含多个成分,不同成分间存在字符交叉现象,因此需要将成分切为最小粒度的词片段,成分可以包含多个最小粒度的词片段,并且成分边界不会横跨在所述最小粒度的词片段上,这种情况下该最小粒度的词片段与成分无法一一对应。为此,本申请基于现有的CYK算法做出了第二改进,即允许非终结符由多个最小粒度的词片段组成,即如果一个成分对应的变元是A_S,其由三个最小粒度的词片段组成,第一个最小粒度的词片段的索引为0,则该成分所对应的变元符号需要填写到CYK矩阵中的目标位置,该目标位置的横坐标值为三个最小粒度的词片段在CYK矩阵的坐标中的最大纵坐标值,所述目标位置的纵坐标值为三个最小粒度词片段中位于第一位置的最小粒度的词片段的横坐标值,比如,三个最小粒度的词片段分别在CYK二维矩阵的[0,0]、[0,1]、[0,2]则需在CYK二维矩阵[2,0]位置处填上A_S,而非在[0,0]处填写。具体地,在本申请的一个实施例中,当自然语句中所包含的多个成分之间存在字符交叉现象时,可将成分切分为最小粒度的词片段。其中,在本申请的实施例中,所述将多个成分所对应的多个变元符号作为二维矩阵中第一行对应矩阵元素的内容,填写至二维矩阵中的第一行的具体实现过程可如下:判断多个成分中是否存在包含多个最小粒度的词片段的第一成分;若是,则将第一成分对应的变元符号填写到目标位置,其中,目标位置的横坐标值为多个最小粒度的词片段在所述二维矩阵的坐标中的最大纵坐标值,所述目标位置的纵坐标值为所述多个最小粒度的词片段中位于第一位置的词片段的横坐标值;将多个成分中的其他成分所对应的变元符号填写到第一行的对应位置。
举例而言,假设本申请基于现有的CYK算法进行了改进之后,改进后的CYK算法伪代码可如图6所示。以查询词“中国建筑2018年的财报”(在查询词后补充了两个T_S成分)为例,预先设定的文法如图4所示,则基于改进的CYK算法生成的二维矩阵可如图7所示。例如,在生成二维矩阵的过程中,由于查询词中所包含的多个成分之间可能存在字符交叉现象,所以可将查询词中的成分切分为最小粒度的词片段,比如,上述查询词所对应的词片段分别为“中国”、“建筑”、“2018”、“年”、“的”、“财报”、“company”、“company_financialReport”。在将多个成分所对应的多个变元符号作为二维矩阵中时,需先判断多个成分中是否存在包含多个最小粒度的词片段的第一成分,比如属性值“中国建筑”包含了两个最小粒度的词片段“中国”和“建筑”,此时,需要将“中国建筑”这一成分所对应的变元符号“C_S”填写到二维矩阵的P[1,0]位置上,而并非是P[0,0]位置上,而所述多个成分中其他仅包含一个最小粒度的词片段的成分,只需将将该成分所对应的变元符号填写到第一行的对应位置上即可,比如“财报”成分对应的变元符号“A_S”填写到第一行P[0,5]处。
在生成其他矩阵元素P(i,j)时,还需判断自然语句中是否存在不符合任何成分的词片段。例如,以“中国建筑2018年的财报”为例,可见该自然语句中存在不符合任何成分的词片段“的”,此时在生成其他矩阵元素P(i,j)时,可判断欲用以生成其他矩阵元素P(i,j)的矩阵元素内容是否满足文法;若是,则将欲用以生成其他矩阵元素P(i,j)的矩阵元素所组成的集合内容确定为其他矩阵元素P(i,j)的内容;若否,则允许跳过不符合任何文法的矩阵元素,并通过自底向上从二维矩阵中找出所组成的集合内容存在满足条件的文法的两个矩阵元素,并将两个矩阵元素所组成的集合内容确定为其他矩阵元素P(i,j)的内容,以此类推,直至跳过词片段的数量超过允许最大跳数或矩阵元素位置超过矩阵边界。例如,以如图7所示为例,原本矩阵元素P[5,0]节点可由P[0,0]节点和P[4,1]节点使用对应文法组成变元符号,其不存在满足条件的文法,可考虑使用P[0,0]节点和P[3,2]节点组成变元符号,若存在满足条件的文法则停止,将这两个节点所组成的变元符号填写到P[5,0]节点,若不满足文法,则继续考虑使用P[0,0]节点和P[2,3]节点组合,以此类推,直至跳过词片段的数量超过允许最大跳数或矩阵元素位置超过矩阵边界。
由此可见,可基于自底向上的文法分析即可完成SQL符号的生成,但若想得到可以执行的SQL语句,还需要将该SQL符号转化为对应的可执行的SQL语句。具体可参见后续步骤的描述。
步骤260,从二维矩阵中找出代表自然语句的目标变元符号,并根据代表自然语句的目标变元符号从二维矩阵中确定出目标变元符号的生成路径。
其中,在本申请的实施例中,所述目标变元符号可理解为能够代表整个自然语句的变元符号。例如,以如图5b所示为例,图中的[4,1]矩阵元素的“SQL”即为能够代表整个自然语句的变元符号,即其跨越了整个句子。在找出该能够代表自然语句的目标变元符号之后,可根据该代表自然语句的目标变元符号,从二维矩阵中确定出生成该目标变元符号的路径。
例如,以如图5b所示为例,图中的[4,1]矩阵元素的“SQL”确定为能够代表整个自然语句的目标变元符号,此时,可从二维矩阵中确定出该目标变元符号的生成路径为:P[4,1]->P[3,1]P[1,4],P[3,1]->P[2,1]P[1,3],P[2,1]->P[1,1]P[1,2]。
步骤270,根据生成路径中各矩阵元素所对应的变元符号,生成代表SQL语句的SQL符号。
例如,以目标变元符号的生成路径为:P[4,1]->P[3,1]P[1,4],P[3,1]->P[2,1]P[1,3],P[2,1]->P[1,1]P[1,2]为例,可根据生成路径中各矩阵元素所对应的变元符号,生成代表SQL语句的SQL符号为:SQL->SQL_NO_TABLE T_S,SQL_NO_TABLE->A_S C_S|C_S A_S,C_S->C_S C_S。
步骤280,根据SQL符号和预先设定的变元符号含义,生成SQL语句。
也就是说,在得到代表SQL语句的SLQ符号之后,可基于预先设定的变元符号含义,将所述SQL符号中的变元符号转化为对应的SQL元素,从而可得到可执行的SQL语句。
为了保证生成的SQL语句的局部正确性,保证执行SQL语句后返回的结果能够符合预期,保证结果的可控性,可选地,在本申请的一个实施例中,在根据SQL符号和预先设定的变元符号含义,生成SQL语句的过程中,可从SQL符号中,剪除不符合语法规范的组合所生成的变元符号。
也就是说,若想得到可以执行的SQL语句,还需要添加基于文法规则组合成分的操作并且在组合过程中执行剪枝操作。例如,基于文法规则组合成分是在生成SQL语句过程中基于文法规则将成分拼接为SQL语句,如对于文法“SQL_NO_TABLE->A_S C_S|C_S A_S”,在“A_S”和“C_S”组合时,可直接生成对应的SQL子句“SELECT A_S WHERE C_S”,之后将A_S和C_S对应的SQL子句填入即可。在本步骤中,剪枝操作是为了去除不符合语义或者语法的组合。举例来说,假设属性名“公司名”对应变元“COL”,属性值“100.00”对应变元“CELL”,按照文法两者可以生成变元“C_S_NO_OP”,但是从语义上看两者明显不符合语法规范,因此需要将它们生成的变元从CYK矩阵中剪除。剪枝过程可以使用文法规则和模型两种方法,使最终生成的SQL的准确性得到大幅度提高。其中,在本申请的实施例中,该模型可以是分类模型,该分类模型可理解预先设定的文法规则进行训练而得到的模型。由此,通过引入了规则和模型两种方式剪除不符合语法规范的组合,保证了局部正确性,所以即使在生成过程中某一子句生成错误,但依然有可能执行SQL后返回的结果符合预期,保证了结果的可控性。
与上述几种实施例提供的SQL语句生成方法相对应,本申请的一种实施例还提供一种SQL语句生成装置,由于本申请实施例提供的SQL语句生成装置与上述几种实施例提供的SQL语句生成方法相对应,因此在前述SQL语句生成方法的实施方式也适用于本实施例提供的SQL语句生成装置,在本实施例中不再详细描述。图8是根据本申请一个实施例的SQL语句生成装置的结构示意图。如图8所示,该SQL语句生成装置800可以包括:自然语句获取模块810、分词处理模块820、成分识别模块830和SQL语句生成模块840。
具体地,自然语句获取模块810用于获取待处理的自然语句。
分词处理模块820用于对自然语句进行分词处理以得到多个词片段。
成分识别模块830用于依据数据库的结构化信息,将多个词片段进行成分识别,得到多个词片段所对应的多个成分。
SQL语句生成模块840用于基于自底向上的文法分析,根据预先设定的文法和多个成分,生成自然语句对应的SQL语句。
在本申请的一个实施例中,如图9所示,该SQL语句生成模块840可以包括:转换单元841、矩阵生成单元842、生成路径确定单元843、SQL符号生成单元844和SQL语句生成单元845。其中,转换单元841用于根据预先设定的文法,将多个成分分别转换为对应的变元符号;矩阵生成单元842用于基于自底向上的文法分析,利用文法对多个成分所对应的多个变元符号进行文法组合,以生成二维矩阵;生成路径确定单元843用于从二维矩阵中找出代表自然语句的目标变元符号,并根据代表自然语句的目标变元符号从二维矩阵中确定出目标变元符号的生成路径;SQL符号生成单元844用于根据生成路径中各矩阵元素所对应的变元符号,生成代表SQL语句的SQL符号;SQL语句生成单元845用于根据SQL符号和预先设定的变元符号含义,生成SQL语句。
在本申请的一个实施例中,矩阵生成单元842具体用于:根据多个词片段的个数,生成一个空的二维矩阵,其中,二维矩阵的行数和列数均为N,N为词片段的个数;将多个成分所对应的多个变元符号作为二维矩阵中第一行对应矩阵元素的内容,填写至二维矩阵中的第一行;基于文法,对二维矩阵中第一行矩阵元素内容自底向上进行文法分析,得到二维矩阵中其他矩阵元素P(i,j)的内容;其中,1<i≤N,1≤j≤N,P(i,j)对应到句子中跨度范围内可能的非终结符号的集合;其中,i表示跨度包含词片段的数目,j表示跨度左侧第一个词片段的位置。
在本申请的一个实施例中,矩阵生成单元842还用于:如果自然语句中存在不符合任何成分的词片段,则在生成其他矩阵元素P(i,j)时,判断欲用以生成其他矩阵元素P(i,j)的矩阵元素内容是否满足文法;若是,则将欲用以生成其他矩阵元素P(i,j)的矩阵元素所组成的集合内容确定为其他矩阵元素P(i,j)的内容;若否,则允许跳过不符合任何文法的矩阵元素,并通过自底向上从二维矩阵中找出所组成的集合内容存在满足条件的文法的两个矩阵元素,并将两个矩阵元素所组成的集合内容确定为其他矩阵元素P(i,j)的内容,以此类推,直至跳过词片段的数量超过允许最大跳数或矩阵元素位置超过矩阵边界。
在本申请的一个实施例中,成分识别模块830还用于在自然语句中所包含的多个成分之间存在字符交叉现象时,将成分切分为最小粒度的词片段。其中,在本申请的实施例中,矩阵生成单元842具体用于:判断多个成分中是否存在包含多个最小粒度的词片段的第一成分;若是,则将第一成分对应的变元符号填写到目标位置,其中,目标位置的横坐标值为多个最小粒度的词片段在所述二维矩阵的坐标中的最大纵坐标值,所述目标位置的纵坐标值为所述多个最小粒度的词片段中位于第一位置的词片段的横坐标值;将多个成分中的其他成分所对应的变元符号填写到第一行的对应位置。
在本申请的一个实施例中,SQL语句生成单元845还可用于:在根据SQL符号和预先设定的变元符号含义,生成SQL语句的过程中,从SQL符号中,剪除不符合语法规范的组合所生成的变元符号。
在本申请的一个实施例中,如图10所示,该SQL语句生成装置800还可包括:判断模块850和候选成分补充模块860。其中,判断模块850用于依据所述数据库的结构化信息,判断所述自然语句是否有缺少成分信息的情况。候选成分补充模块860用于在判断所述自然语句有缺少成分信息的情况时,确定出被缺少的成分,并将所述被缺少的成分补充至所述多个成分中。
根据本申请实施例的SQL语句生成装置,可通过自然语句获取模块获取待处理的自然语句,分词处理模块对自然语句进行分词处理以得到多个词片段,成分识别模块依据数据库的结构化信息,将多个词片段进行成分识别,得到多个词片段所对应的多个成分,SQL语句生成模块基于自底向上的文法分析,根据预先设定的文法和多个成分,生成自然语句对应的SQL语句。即通过自底向上的文法分析来生成自然语句的SQL查询语句,实现了自然语言到SQL语句的生成,进而实现了基于结构化知识的自动问答,在自底向上的SQL语句生成中,每一个变元都会与附近的变元基于文法进行组合,因此在每一步的生成过程中都可以看到更多信息,提高生成SQL语句的准确性;并且,本申请采用自底向上的SQL语句生成技术,包含了从成分分析到SQL语句生成的完整技术路线,在真实用户场景中可以获得较优的效果。
根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。
如图11所示,是根据本申请实施例的用于生成SQL语句的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图11所示,该电子设备包括:一个或多个处理器1101、存储器1102,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图11中以一个处理器1101为例。
存储器1102即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的SQL语句生成方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的SQL语句生成方法。
存储器1102作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的SQL语句生成方法对应的程序指令/模块(例如,附图8所示的自然语句获取模块810、分词处理模块820、成分识别模块830和SQL语句生成模块840)。处理器1101通过运行存储在存储器1102中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的SQL语句生成方法。
存储器1102可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据用于生成SQL语句的电子设备的使用所创建的数据等。此外,存储器1102可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器1102可选包括相对于处理器1101远程设置的存储器,这些远程存储器可以通过网络连接至用于生成SQL语句的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
用于生成SQL语句的电子设备还可以包括:输入装置1103和输出装置1104。处理器1101、存储器1102、输入装置1103和输出装置1104可以通过总线或者其他方式连接,图11中以通过总线连接为例。
输入装置1103可接收输入的数字或字符信息,以及产生与用于生成SQL语句的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置1104可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

Claims (14)

1.一种SQL语句生成方法,其特征在于,包括:
获取待处理的自然语句;
对所述自然语句进行分词处理以得到多个词片段;
依据数据库的结构化信息,将所述多个词片段进行成分识别,得到所述多个词片段所对应的多个成分;
基于自底向上的文法分析,根据预先设定的文法和所述多个成分,生成所述自然语句对应的SQL语句;其中,所述基于自底向上的文法分析,根据预先设定的文法和所述多个成分,生成所述自然语句对应的SQL语句,包括:
根据预先设定的文法,将所述多个成分分别转换为对应的变元符号;
基于所述自底向上的文法分析,利用所述文法对所述多个成分所对应的多个变元符号进行文法组合,以生成二维矩阵;
从所述二维矩阵中找出代表所述自然语句的目标变元符号,并根据代表所述自然语句的目标变元符号从所述二维矩阵中确定出所述目标变元符号的生成路径;
根据所述生成路径中各矩阵元素所对应的变元符号,生成代表SQL语句的SQL符号;
根据所述SQL符号和预先设定的变元符号含义,生成所述SQL语句。
2.根据权利要求1所述的SQL语句生成方法,其特征在于,基于所述自底向上的文法分析,利用所述文法对所述多个成分所对应的多个变元符号进行文法组合,以生成二维矩阵,包括:
根据所述多个词片段的个数,生成一个空的二维矩阵,其中,所述二维矩阵的行数和列数均为N,所述N为所述词片段的个数;
将所述多个成分所对应的多个变元符号作为所述二维矩阵中第一行对应矩阵元素的内容,填写至所述二维矩阵中的第一行;
基于所述文法,对所述二维矩阵中第一行矩阵元素内容自底向上进行文法分析,得到所述二维矩阵中其他矩阵元素P(i,j)的内容;其中,1<i≤N,1≤j≤N,所述P(i,j)对应到句子中跨度范围内可能的非终结符号的集合;其中,i表示跨度包含词片段的数目,j表示跨度左侧第一个词片段的位置。
3.根据权利要求2所述的SQL语句生成方法,其特征在于,还包括:
如果所述自然语句中存在不符合任何成分的词片段,则在生成所述其他矩阵元素P(i,j)时,判断欲用以生成所述其他矩阵元素P(i,j)的矩阵元素内容是否满足所述文法;
若是,则将所述欲用以生成所述其他矩阵元素P(i,j)的矩阵元素所组成的集合内容确定为所述其他矩阵元素P(i,j)的内容;
若否,则允许跳过不符合任何文法的矩阵元素,并通过自底向上从所述二维矩阵中找出所组成的集合内容存在满足条件的文法的两个矩阵元素,并将所述两个矩阵元素所组成的集合内容确定为所述其他矩阵元素P(i,j)的内容,以此类推,直至跳过词片段的数量超过允许最大跳数或矩阵元素位置超过矩阵边界。
4.根据权利要求2所述的SQL语句生成方法,其特征在于,还包括:
当所述自然语句中所包含的多个成分之间存在字符交叉现象时,将成分切分为最小粒度的词片段;
其中,将所述多个成分所对应的多个变元符号作为所述二维矩阵中第一行对应矩阵元素的内容,填写至所述二维矩阵中的第一行,包括:
判断所述多个成分中是否存在包含多个最小粒度的词片段的第一成分;
若是,则将所述第一成分对应的变元符号填写到目标位置,其中,所述目标位置的横坐标值为所述多个最小粒度的词片段在所述二维矩阵的坐标中的最大纵坐标值,所述目标位置的纵坐标值为所述多个最小粒度的词片段中位于第一位置的词片段的横坐标值;
将所述多个成分中的其他成分所对应的变元符号填写到所述第一行的对应位置。
5.根据权利要求2所述的SQL语句生成方法,其特征在于,在根据所述SQL符号和预先设定的变元符号含义,生成所述SQL语句的过程中,所述方法还包括:
从所述SQL符号中,剪除不符合语法规范的组合所生成的变元符号。
6.根据权利要求1至5中任一项所述的SQL语句生成方法,其特征在于,在基于自底向上的文法分析,根据预先设定的文法和所述多个成分,生成所述自然语句对应的SQL语句之前,所述方法还包括:
依据所述数据库的结构化信息,判断所述自然语句是否有缺少成分信息的情况;
若是,则确定出被缺少的成分,并将所述被缺少的成分补充至所述多个成分中。
7.一种SQL语句生成装置,其特征在于,包括:
自然语句获取模块,用于获取待处理的自然语句;
分词处理模块,用于对所述自然语句进行分词处理以得到多个词片段;
成分识别模块,用于依据数据库的结构化信息,将所述多个词片段进行成分识别,得到所述多个词片段所对应的多个成分;
SQL语句生成模块,用于基于自底向上的文法分析,根据预先设定的文法和所述多个成分,生成所述自然语句对应的SQL语句;其中,所述SQL语句生成模块包括:
转换单元,用于根据预先设定的文法,将所述多个成分分别转换为对应的变元符号;
矩阵生成单元,用于基于所述自底向上的文法分析,利用所述文法对所述多个成分所对应的多个变元符号进行文法组合,以生成二维矩阵;
生成路径确定单元,用于从所述二维矩阵中找出代表所述自然语句的目标变元符号,并根据代表所述自然语句的目标变元符号从所述二维矩阵中确定出所述目标变元符号的生成路径;
SQL符号生成单元,用于根据所述生成路径中各矩阵元素所对应的变元符号,生成代表SQL语句的SQL符号;
SQL语句生成单元,用于根据所述SQL符号和预先设定的变元符号含义,生成所述SQL语句。
8.根据权利要求7所述的SQL语句生成装置,其特征在于,所述矩阵生成单元具体用于:
根据所述多个词片段的个数,生成一个空的二维矩阵,其中,所述二维矩阵的行数和列数均为N,所述N为所述词片段的个数;
将所述多个成分所对应的多个变元符号作为所述二维矩阵中第一行对应矩阵元素的内容,填写至所述二维矩阵中的第一行;
基于所述文法,对所述二维矩阵中第一行矩阵元素内容自底向上进行文法分析,得到所述二维矩阵中其他矩阵元素P(i,j)的内容;其中,1<i≤N,1≤j≤N,所述P(i,j)对应到句子中跨度范围内可能的非终结符号的集合;其中,i表示跨度包含词片段的数目,j表示跨度左侧第一个词片段的位置。
9.根据权利要求8所述的SQL语句生成装置,其特征在于,所述矩阵生成单元还用于:
如果所述自然语句中存在不符合任何成分的词片段,则在生成所述其他矩阵元素P(i,j)时,判断欲用以生成所述其他矩阵元素P(i,j)的矩阵元素内容是否满足所述文法;
若是,则将所述欲用以生成所述其他矩阵元素P(i,j)的矩阵元素所组成的集合内容确定为所述其他矩阵元素P(i,j)的内容;
若否,则允许跳过不符合任何文法的矩阵元素,并通过自底向上从所述二维矩阵中找出所组成的集合内容存在满足条件的文法的两个矩阵元素,并将所述两个矩阵元素所组成的集合内容确定为所述其他矩阵元素P(i,j)的内容,以此类推,直至跳过词片段的数量超过允许最大跳数或矩阵元素位置超过矩阵边界。
10.根据权利要求8所述的SQL语句生成装置,其特征在于,
所述成分识别模块还用于:在所述自然语句中所包含的多个成分之间存在字符交叉现象时,将成分切分为最小粒度的词片段;
其中,所述矩阵生成单元具体用于:
判断所述多个成分中是否存在包含多个最小粒度的词片段的第一成分;
若是,则将所述第一成分对应的变元符号填写到目标位置,其中,所述目标位置的横坐标值为所述多个最小粒度的词片段在所述二维矩阵的坐标中的最大纵坐标值,所述目标位置的纵坐标值为所述多个最小粒度的词片段中位于第一位置的词片段的横坐标值;
将所述多个成分中的其他成分所对应的变元符号填写到所述第一行的对应位置。
11.根据权利要求8所述的SQL语句生成装置,其特征在于,所述SQL语句生成单元还用于:
在根据所述SQL符号和预先设定的变元符号含义,生成所述SQL语句的过程中,从所述SQL符号中,剪除不符合语法规范的组合所生成的变元符号。
12.根据权利要求7至11中任一项所述的SQL语句生成装置,其特征在于,还包括:
判断模块,用于依据所述数据库的结构化信息,判断所述自然语句是否有缺少成分信息的情况;
候选成分补充模块,用于在判断所述自然语句有缺少成分信息的情况时,确定出被缺少的成分,并将所述被缺少的成分补充至所述多个成分中。
13.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1至6中任一项所述的SQL语句生成方法。
14.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1至6中任一项所述的SQL语句生成方法。
CN201911311193.1A 2019-12-18 2019-12-18 Sql语句生成方法、装置、电子设备和存储介质 Active CN111104423B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911311193.1A CN111104423B (zh) 2019-12-18 2019-12-18 Sql语句生成方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911311193.1A CN111104423B (zh) 2019-12-18 2019-12-18 Sql语句生成方法、装置、电子设备和存储介质

Publications (2)

Publication Number Publication Date
CN111104423A CN111104423A (zh) 2020-05-05
CN111104423B true CN111104423B (zh) 2023-01-31

Family

ID=70422206

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911311193.1A Active CN111104423B (zh) 2019-12-18 2019-12-18 Sql语句生成方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN111104423B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111625554B (zh) * 2020-07-30 2020-11-03 武大吉奥信息技术有限公司 一种基于深度学习语义理解的数据查询方法及装置
CN112052255B (zh) * 2020-09-02 2022-05-03 福建天晴在线互动科技有限公司 一种自上而下拆分多表慢查询的sql解释方法及其装置
CN112463819A (zh) * 2020-11-26 2021-03-09 北京宏景世纪软件股份有限公司 基于中文表达式的计算方法、装置、设备及存储介质
CN112506949B (zh) * 2020-12-03 2023-07-25 北京百度网讯科技有限公司 结构化查询语言查询语句生成方法、装置及存储介质
CN113515955A (zh) * 2021-04-26 2021-10-19 太极计算机股份有限公司 基于语义理解的从文本序列到指令序列的在线翻译系统及方法
CN113177123B (zh) * 2021-04-29 2023-11-17 思必驰科技股份有限公司 文本转sql模型的优化方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104252533A (zh) * 2014-09-12 2014-12-31 百度在线网络技术(北京)有限公司 搜索方法和搜索装置
CN107451153A (zh) * 2016-05-31 2017-12-08 北京京东尚科信息技术有限公司 输出结构化查询语句的方法和装置
CN109522393A (zh) * 2018-10-11 2019-03-26 平安科技(深圳)有限公司 智能问答方法、装置、计算机设备和存储介质
CN110276080A (zh) * 2019-06-28 2019-09-24 第四范式(北京)技术有限公司 一种语义处理方法和系统
CN110309400A (zh) * 2018-02-07 2019-10-08 鼎复数据科技(北京)有限公司 一种智能理解用户查询意图的方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10282466B2 (en) * 2015-12-31 2019-05-07 Samsung Electronics Co., Ltd. Machine processing of search query based on grammar rules

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104252533A (zh) * 2014-09-12 2014-12-31 百度在线网络技术(北京)有限公司 搜索方法和搜索装置
CN107451153A (zh) * 2016-05-31 2017-12-08 北京京东尚科信息技术有限公司 输出结构化查询语句的方法和装置
CN110309400A (zh) * 2018-02-07 2019-10-08 鼎复数据科技(北京)有限公司 一种智能理解用户查询意图的方法及系统
CN109522393A (zh) * 2018-10-11 2019-03-26 平安科技(深圳)有限公司 智能问答方法、装置、计算机设备和存储介质
CN110276080A (zh) * 2019-06-28 2019-09-24 第四范式(北京)技术有限公司 一种语义处理方法和系统

Also Published As

Publication number Publication date
CN111104423A (zh) 2020-05-05

Similar Documents

Publication Publication Date Title
CN111104423B (zh) Sql语句生成方法、装置、电子设备和存储介质
CN103268313B (zh) 一种自然语言的语义解析方法及装置
CN104657440B (zh) 结构化查询语句生成系统及方法
US20210390260A1 (en) Method, apparatus, device and storage medium for matching semantics
CN111460787A (zh) 一种话题提取方法、装置、终端设备及存储介质
CN113807098A (zh) 模型训练方法和装置、电子设备以及存储介质
CN113220836B (zh) 序列标注模型的训练方法、装置、电子设备和存储介质
CN104657439A (zh) 用于自然语言精准检索的结构化查询语句生成系统及方法
US11704326B2 (en) Generalization processing method, apparatus, device and computer storage medium
CN108563629B (zh) 一种日志解析规则自动生成方法和装置
CN114281968B (zh) 一种模型训练及语料生成方法、装置、设备和存储介质
CN112559552B (zh) 数据对生成方法、装置、电子设备及存储介质
CN112528001B (zh) 一种信息查询方法、装置及电子设备
CN111708800A (zh) 查询方法、装置及电子设备
CN111767334A (zh) 信息抽取方法、装置、电子设备及存储介质
CN113553414A (zh) 智能对话方法、装置、电子设备和存储介质
CN103886053A (zh) 一种基于短文本评论的知识库构建方法
CN114860942B (zh) 文本意图分类方法、装置、设备及存储介质
CN114579104A (zh) 数据分析场景的生成方法、装置、设备及存储介质
CN113220835A (zh) 文本信息处理方法、装置、电子设备以及存储介质
CN111783861A (zh) 数据分类方法、模型训练方法、装置和电子设备
CN111241302B (zh) 职位信息图谱生成方法、装置、设备和介质
CN113779062A (zh) Sql语句生成方法、装置、存储介质及电子设备
CN114625748A (zh) Sql查询语句的生成方法、装置、电子设备及可读存储介质
CN114495143A (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
GR01 Patent grant
GR01 Patent grant