CN117112593A - Sql语句生成方法、介质和计算机设备 - Google Patents
Sql语句生成方法、介质和计算机设备 Download PDFInfo
- Publication number
- CN117112593A CN117112593A CN202310754535.7A CN202310754535A CN117112593A CN 117112593 A CN117112593 A CN 117112593A CN 202310754535 A CN202310754535 A CN 202310754535A CN 117112593 A CN117112593 A CN 117112593A
- Authority
- CN
- China
- Prior art keywords
- target
- data table
- information
- natural language
- sql
- 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 45
- 238000003058 natural language processing Methods 0.000 claims description 24
- 238000012549 training Methods 0.000 claims description 23
- 238000003860 storage Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 6
- 238000004891 communication Methods 0.000 description 11
- 238000013507 mapping Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- QVFWZNCVPCJQOP-UHFFFAOYSA-N chloralodol Chemical compound CC(O)(C)CC(C)OC(O)C(Cl)(Cl)Cl QVFWZNCVPCJQOP-UHFFFAOYSA-N 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- 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
- 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/36—Creation of semantic tools, e.g. ontology or thesauri
- G06F16/367—Ontology
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Animal Behavior & Ethology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种SQL语句生成方法、介质和计算机设备,所述方法包括:获取用户输入的目标自然语言,所述目标自然语言用于对目标数据表执行数据库操作;基于所述目标数据表的信息获取所述目标数据表对应的目标提示信息,所述目标提示信息包括所述目标数据表对应的自然语言描述信息以及所述自然语言描述信息对应的SQL语言描述信息;基于所述目标提示信息将所述目标自然语言转换为目标SQL语句。
Description
技术领域
本公开涉及数据库技术领域,尤其涉及SQL语句生成方法、介质和计算机设备。
背景技术
在相关技术中,需要通过结构化查询语句(Structured Query Language,SQL)对数据库进行操作。SQL语言的编写容易出错,用户需要注意SQL语句中的括号、引号、逗号等符号的使用,以及表名、列名、条件等参数的正确性,否则可能导致SQL语句执行失败或返回错误的结果。为了解决上述问题,一些相关技术建立了用户的输入信息与SQL语句之间的映射关系,并基于该映射关系将输入信息映射为SQL语句。然而,这种方式需要用户按照事先定义好的方式进行信息输入,生成SQL语句的方式灵活性较差。
发明内容
第一方面,本公开实施例提供一种SQL语句生成方法,所述方法包括:获取用户输入的目标自然语言,所述目标自然语言用于对目标数据表执行数据库操作;基于所述目标数据表的信息获取所述目标数据表对应的目标提示信息,所述目标提示信息包括所述目标数据表对应的自然语言描述信息以及所述自然语言描述信息对应的SQL语言描述信息;基于所述目标提示信息将所述目标自然语言转换为目标SQL语句。
在一些实施例中,所述基于所述目标数据表的信息获取所述目标数据表对应的目标提示信息,包括:获取所述目标数据表所在的数据库对应的知识图谱,所述知识图谱用于记录所述数据库中各个数据表之间的关系模式;基于所述目标数据表从所述知识图谱中提取所述目标数据表的关联数据表的信息;基于所述目标数据表的信息和所述关联数据表的信息生成所述目标数据表对应的目标提示信息。
在一些实施例中,所述基于所述目标数据表的信息和所述关联数据表的信息生成所述目标数据表对应的目标提示信息,包括:基于所述目标数据表的信息生成第一提示信息;所述第一提示信息用于对所述目标数据表对应的自然语言描述信息和SQL语言描述信息进行提示;基于所述关联数据表的信息生成第二提示信息;所述第二提示信息用于对所述关联数据表对应的自然语言描述信息和SQL语言描述信息进行提示;对所述第一提示信息和所述第二提示信息进行组合得到第三提示信息;将所述第一提示信息、所述第二提示信息和所述第三提示信息确定为所述目标数据表对应的目标提示信息。
在一些实施例中,所述基于所述目标数据表的信息获取所述目标数据表对应的目标提示信息,包括:基于所述目标数据表的信息生成所述自然语言描述信息和所述SQL语言描述信息;对所述自然语言描述信息和所述SQL语言描述信息分别进行标记;将标记后的所述自然语言描述信息和标记后的所述SQL语言描述信息拼接成所述目标提示信息。
在一些实施例中,所述基于所述目标提示信息将所述目标自然语言转换为目标SQL语句,包括:将所述目标提示信息和所述目标自然语言输入目标自然语言处理模型,以使所述目标自然语言处理模型基于所述目标提示信息将所述目标自然语言转换为目标SQL语句。
在一些实施例中,所述方法还包括:基于目标语料库中的第一自然语言样本对初始自然语言处理模型进行训练,得到中间自然语言处理模型;基于第二自然语言样本、所述第二自然语言样本对应的样本SQL语言以及样本数据表对应的样本提示信息,对所述中间自然语言处理模型进行训练,得到所述目标自然语言处理模型,所述第二自然语言样本用于对样本数据表执行数据库操作,所述样本提示信息包括样本数据表对应的样本自然语言描述信息以及所述样本自然语言描述信息对应的样本SQL语言描述信息。
在一些实施例中,所述方法还包括:将所述目标SQL语言发送至数据库管理系统,以使所述数据库管理系统基于所述目标SQL语言返回对所述目标数据表的操作结果;基于预先确定的输出形式,对所述操作结果进行输出展示。
在一些实施例中,所述方法还包括:基于以下至少一种信息确定所述输出形式:用户输入的输出形式信息,和/或;所述操作结果的类型。
第二方面,本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本公开任一实施例所述的方法。
第三方面,本公开实施例提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本公开任一实施例所述的方法。
在本公开实施例中,将目标数据表对应的自然语言描述信息以及该自然语言描述信息对应的SQL语言描述信息作为目标提示信息,在用户输入目标自然语言之后,可以基于目标提示信息,准确地将目标自然语言转换为目标SQL语句。这样,用户可以按照自然语言的表达习惯较为灵活地输入目标自然语言,而无需按照事先定义好的方式进行信息输入,提高了SQL语句生成方式的灵活性。
应当理解,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。
附图说明
此处的附图被并入说明书中并构成本公开的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
图1A和图1B分别是本公开实施例的数据表的示意图。
图2是本公开实施例的SQL语句生成方法的流程图。
图3是本公开实施例的知识图谱的示意图。
图4是本公开实施例的总体流程的示意图。
图5是本公开实施例的SQL语言生成模块的示意图。
图6是本公开实施例的计算机设备的示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
需要说明的是,本公开所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
为了使本技术领域的人员更好的理解本公开实施例中的技术方案,并使本公开实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本公开实施例中的技术方案作进一步详细的说明。
SQL语言是一种用于操作和查询关系型数据库的标准语言,具有简单、易用、高效等特点。SQL语言可以实现对数据库中数据的增删改查等操作,满足各种复杂的查询需求。然而,SQL语言的使用也存在一些问题和挑战,主要有以下几个方面:
(1)学习成本较高,用户需要掌握SQL语法规则、关键字、函数等知识,才能编写正确有效的SQL语句;
(2)SQL语言的使用依赖于数据库的schema信息,用户需要了解数据库中各个表的名称、结构、关系等信息,才能构造合适的SQL语句;
(3)SQL语言的编写容易出错,用户需要注意SQL语句中的括号、引号、逗号等符号的使用,以及表名、列名、条件等参数的正确性,否则可能导致SQL语句执行失败或返回错误的结果。
为了降低SQL语句的学习和使用门槛,一些相关技术建立了户的输入信息与SQL语句之间的映射关系,这样,用户无需输入SQL语句,而是通过输入与SQL语句具有映射关系的输入信息来进行数据库操作。例如,图1A所示的数据表A为学生成绩单,其中记录了各个学生的姓名(name)、学号(ID)、科目(subject)和分数(score),用户需要查询出表A中姓名为“李四”的学生的语文成绩,对应的SQL语句为“select score from A,where student name=‘李四’”。可以预先建立该SQL语与输入信息"表名=A,姓名=‘李四’,分数=‘?’”的映射关系。这样,在用户输入"表名=A,姓名=‘李四’,分数=‘?’”这一输入信息之后,可以基于该映射关系将上述输入信息转换为对应的SQL语句,从而用户无需掌握SQL语句即可实现数据查询功能。
然而,上述方式对用户输入信息的格式和词汇、字符等有严格的格式要求,例如,在上述查询语句中,用户需要按照预先定义的顺序依次输入表名和列名,且需要严格地通过“=”这一连接符来连接字段和对应的字段值,否则无法理解用户的输入信息,因此输入方式比较局限。此外,用户的查询需求是多种多样的,有时需要从一个数据表中查询出多个字段,有时需要对多个数据表进行查询,在不同的情况下输入的SQL语句往往是有差别的,需要提前配置好数据库中各个表的名称、结构、关系等信息,并为不同的SQL语句与对应的输入信息生成映射关系。因此,上述基于映射关系生成SQL语句的方式灵活性和扩展性都比较差。
基于此,本公开实施例提供一种SQL语句生成方法,参见图2,所述方法包括:
步骤S2:获取用户输入的目标自然语言,该目标自然语言用于对目标数据表执行数据库操作;
步骤S4:基于目标数据表的信息获取目标数据表对应的目标提示信息,目标提示信息包括目标数据表对应的自然语言描述信息以及该自然语言描述信息对应的SQL语言描述信息;
步骤S6:基于目标提示信息将目标自然语言转换为目标SQL语句。
本公开实施例的方法可以由SQL语言生成模块执行,其中,SQL语言生成模块可以安装在数据库管理系统所在的设备上,或者,也可以安装在与数据库管理系统所在的设备通信连接的其他设备上。
在步骤S2中,目标自然语言可以是用户向SQL语言生成模块输入的自然语言。自然语言是一种自然地随文化演化的、符合人类表达习惯的语言。不同地区可以有不同的自然语言,例如,在中国,自然语言为中文;在英国、美国等国家,自然语言为英语。在一些实施例中,SQL语言生成模块可以提供一输入界面,用于输入目标自然语言。用户可以通过SQL语言生成模块所在设备上的输入装置(例如,键盘、触摸屏、语音输入装置等),将目标自然语言输入到SQL语言生成模块的输入界面上。
在一些实施例中,目标自然语言中可以包括目标数据表的信息以及针对目标数据表所执行的数据库操作的类别。其中,目标数据表的信息用于唯一标识目标数据表。目标数据表的信息可以包括目标数据表的名称(即表名),还可以包括数据表所在数据库的标识信息(例如,数据库名称)。数据库操作可以是增、删、改、查等操作。"增”可以是在数据表中增加一个字段或一条记录。“删”可以是从数据库中删除数据表、从数据表中删除一个字段或一条记录。“改”可以是修改数据表的名称,或者修改数据表中至少一个字段的字段名、字段值等。“查”可以是从数据库中查询至少一张数据表、从至少一张数据表中查找至少一个字段的字段值,或者从至少一张数据表中查找至少一条记录等。
例如,目标自然语言为“在数据表A中增加一列”或者“删除数据表A”。其中,“数据表A”即为目标数据表的信息,“增加”和“删除”即为数据库操作的类别。
进一步地,目标自然语言中还可以包括数据库操作所涉及的目标字段的信息。例如,目标自然语言为“查询数据表A中的学生的姓名”。其中,“数据表A”即为目标数据表的信息,“查询”即为数据库操作的类别,“姓名”即为目标字段的信息。
进一步地,目标自然语言中还可以包括数据库操作的执行条件。例如,目标自然语言为“查询数据表A中成绩大于90分的学生的姓名”。其中,“数据表A”即为目标数据表的信息,“查询”即为数据库操作的类别,“姓名”即为目标字段的信息,“成绩大于90分”即为数据库操作的执行条件。
上述实施例中示出了目标数据表的数量为1的情况,在实际应用中,目标数据表的数量、数据库操作的类型、目标字段的数量和/或执行条件的数量也可以大于1。例如,数据库中包括图1B所示的联系方式表,该联系方式表中包括学生的姓名(name)、学号(ID)和电话号码(TEL),用户可以输入目标自然语言“查询成绩大于90分的学生的学号和电话号码”。在上述目标自然语言中,目标字段包括“学号”和“电话号码”,即目标字段的数量大于1。同时,上述数据库操作分别涉及图1A所示的学生成绩单和图1B所示的该联系方式表,因此,目标数据表的数量也大于1。又例如,在目标自然语言“查询成绩大于90分,且姓张的学生的学号”中,执行条件的数量大于1。再例如,在目标自然语言“查询学号为1001的学生的分数,并将查询到的分数减去5”中,执行的数据库操作包括查询和修改,即数据库操作的类型大于1。
以上实施例中列举了目标自然语言的一些实施例,本领域技术人员可以理解,除了以上列举的情况之外,用户还可以根据实际需要输入其他的目标自然语言,此处不再一一列举。
在步骤S4中,目标提示信息用于描述目标数据表的模式(schema)信息,例如,目标数据表的表名、列名、数据类型、主键和/或外键等。目标提示信息包括目标数据表对应的自然语言描述信息以及自然语言描述信息对应的SQL语言描述信息。其中,自然语言描述信息用于通过自然语言描述目标数据表的模式信息,而SQL语言描述信息用于通过SQL语言描述目标数据表的模式信息。仍以图1A所示的目标数据表为例,则自然语言描述信息可以包括但不限于“表名为A”、“列名为科目”、“科目这一列的数据类型为汉字”、“分数这一列的类型为数字”、“主键为学号”等。上述各项自然语言描述信息对应的SQL语言描述信息依次为“Table.Name=A”、“Key.name=subject”、“Type.subject=character”、“Type.score=number”、“Primary key=ID”。
在一些实施例中,可以通过对目标数据表的信息进行提示工程(promptengineering)处理,从而得到目标数据表对应的目标提示信息。提示工程是一种利用问题和答案对作为输入的技术,用于指导模型理解用户输入和生成输出。通过进行提示工程处理,可以自动或手动地生成适合的目标提示信息。通过提示工程的方式可以更灵活地适应不同的数据库和领域,并生成更通用和更简洁的目标SQL语句。
在一些实施例中,可以获取目标数据表所在的数据库对应的知识图谱,知识图谱用于记录所述数据库中各个数据表之间的关系模式;基于目标数据表从知识图谱中提取目标数据表的关联数据表的信息;基于目标数据表的信息和上述关联数据表的信息生成目标数据表对应的目标提示信息。
其中,知识图谱可包括多个节点,每个节点对应于目标数据表所在的数据库中的一张数据表。节点之间的边用于表示目标数据表所在的数据库中各数据表之间的关系模式。更具体地说,如果一张数据表的主键是另一张数据表的外键,则在知识图谱中这两张数据表对应的节点通过边进行连接,用于表示这两张数据表之间的主键和外键关系。如果两张数据表之间不存在上述主键和外键关系,则在知识图谱中这两张数据表对应的节点不通过边进行连接。图3示出了一些实施例中的知识图谱的示意图,图中A1、A2、A3、A4和A5表示节点,a1、a2和a3表示数据表中的字段。边的参数值表示数据表之间的主键和外键关系,以节点A1和节点A2为例,边的箭头所指向的节点表示主键所在的数据表,边上的字段a1表示字段a1为节点A1对应的数据表的外键,同时也是节点A2对应的数据表的主键。同理,节点A2与节点A5之间的边表示字段a2为节点A2对应的数据表的外键,同时也是节点A5对应的数据表的主键。节点A1与节点A3之间的边表示字段a3为节点A1对应的数据表的外键,同时也是节点A3对应的数据表的主键。节点A4与其他数据表均未通过边进行连接,表示节点A4中的字段不是其他任意一张数据表的主键,也不是其他任意一张数据表的外键。
可以预先从数据库中读取各个数据表之间的关系模式,并基于该关系模式生成知识图谱。在接收到用户输入的目标自然语言之后,从目标自然语言中提取出目标数据表的信息,并基于目标数据表的信息从知识图谱中提取出与目标数据表相关联的关联数据表的信息。其中,关联数据表的主键为目标数据表的外键,或者关联数据表的外键为目标数据表的主键。
在一些实施例中,可以基于目标数据表的信息生成第一提示信息;第一提示信息用于对目标数据表对应的自然语言描述信息和SQL语言描述信息进行提示;基于关联数据表的信息生成第二提示信息;第二提示信息用于对关联数据表对应的自然语言描述信息和SQL语言描述信息进行提示;对第一提示信息和第二提示信息进行组合得到第三提示信息;将第一提示信息、第二提示信息和第三提示信息确定为目标数据表对应的目标提示信息。
以图1A和图1B所示的数据表为例,假设图1A所示的学生成绩单为目标数据表,图1B所示的联系方式表为关联数据表,则提取出的第一提示信息可以包括学生成绩单的表名、各个字段的字段名(姓名、学号、科目、分数)和主键(学号),提取出的第二提示信息可以包括联系方式表的表名、各个字段的字段名(姓名、学号、电话号码)、主键(电话号码)和外键(学号)。组合得到的第三提示信息可以包括{姓名、分数、电话号码}、{姓名、科目、分数、电话号码}等。
在一些实施例中,可以基于目标数据表的信息生成自然语言描述信息和SQL语言描述信息;对自然语言描述信息和SQL语言描述信息分别进行标记;将标记后的自然语言描述信息和标记后的SQL语言描述信息拼接成目标提示信息。
例如,对图1A所示的目标数据表中表名的自然语言描述信息和SQL语言描述信息分别为“表名为A”和“Table.Name=A”,可以为自然语言描述信息“表名为A”添加第一标记,并为SQL语言描述信息“Table.Name=A”添加第二标记。例如,第一标记和第二标记均可以是1比特的二进制数。假设第一标记为“1”,第二标记为“0”,则可以将标记后的自然语言描述信息和标记后的SQL语言描述信息拼接成如下形式的目标提示信息:
{(“表名为A”,1);(“Table.Name=A”,0)}。
可以理解,以上仅为示例性说明,并非用于限制本公开。在其他实施例中,第一标记和第二标记的形式以及具体的拼接方式不限于上述实施例中所述的情况。
在步骤S6中,可以将目标提示信息和目标自然语言都输入到目标自然语言处理模型,以使目标自然语言处理模型基于目标提示信息将目标自然语言转换为目标SQL语句。其中,目标自然语言处理模型可以基于样本自然语言、样本自然语言对应的样本SQL语句以及样本数据表对应的样本提示信息预先训练得到。样本自然语言用于对样本数据表执行数据库操作。样本自然语言所包括的信息的种类与目标自然语言所包括的信息的种类类似,此处不再赘述。样本自然语言对应的样本SQL语句可以由用户手动生成,或者通过其他方式自动生成。在生成样本SQL语句之后,还可以由用户对生成的样本SQL语句进行校正处理。样本数据表对应的样本提示信息可以包括各个样本数据表对应的样本自然语言描述信息以及该样本自然语言描述信息对应的样本SQL语言描述信息。
在一些实施例中,可以采用两阶段训练方式训练得到目标自然语言模型。在第一训练阶段,采用大量样本数据进行模型训练,在该训练阶段可以不限制样本数据的数据域,这样,能够获得数量较多的样本数据,从而使训练出的模型具有较好的自然语言处理能力。在第二训练阶段,采用用于对样本数据表执行数据库操作的样本数据及其对应的SQL语句对第一训练阶段训练好的模型进行微调,使微调后的模型适在SQL语句生成这一应用场景中具有较好的性能,从而提高模型输出的SQL语句的准确度。具体训练过程如下:
首先,在第一训练阶段,基于目标语料库中的第一自然语言样本对初始自然语言处理模型进行训练,得到中间自然语言处理模型;然后,在第二训练阶段,基于第二自然语言样本、第二自然语言样本对应的样本SQL语言以及样本数据表对应的样本提示信息,对中间自然语言处理模型进行训练,得到目标自然语言处理模型,第二自然语言样本用于对样本数据表执行数据库操作。其中,第一自然语言样本的数量可以大于第二自然语言样本的数量。目标语料库可以是各种网站,例如,新闻网站、论文网站、书籍网站等。
可选地,在第二训练阶段中,可以采用局部随机注意力(Local RandomAttention,LORA)机制对中间自然语言处理模型进行训练(即微调)。LORA微调方式可以有效地降低计算复杂度和内存消耗,提高模型的SQL生成和自然语言理解的能力。
进一步地,还可以将第二阶段获取的第二自然语言样本按照一定的比例划分为训练集、验证集和测试集。其中,训练集中的第二自然语言样本用于进行第二阶段训练,从而优化模型参数;验证集中的第二自然语言样本用于对第二阶段训练后得到的目标自然语言处理模型进行评估,计算其性能指标(如准确率和/或召回率等);测试集中的第二自然语言样本用于对第二阶段训练后得到的目标自然语言处理模型进行测试,从而验证模型的泛化能力。如果验证或测试的性能较差,可以重新进行第一阶段训练和/或第二阶段训练。
在一些实施例中,在生成目标SQL语句之后,还可以将目标SQL语言发送至数据库管理系统,以使数据库管理系统基于目标SQL语言对目标数据库表执行数据库操作,并返回对目标数据表的操作结果。在接收到操作结果之后,还可以基于预先确定的输出形式,对操作结果进行输出展示。其中,输出形式包括但不限于表格、图表、地图和/或文本等形式。
可选地,可以基于用户输入的输出形式信息确定输出形式。例如,用户可以发送控制指令,该控制指令中可以携带输出形式信息。SQL语言生成模块在接收到数据库管理系统返回的操作结果之后,可以基于控制指令中携带的输出形式信息确定操作结果的输出形式。
或者,可以基于操作结果的类型确定输出形式。例如,若操作结果的类型包括结构化或半结构化的数据,则输出形式包括表格形式;若操作结果的类型包括数据之间的关系或趋势,则输出形式包括图表形式;若操作结果的类型包括数据的地理分布,则输出形式包括地图形式;若操作结果的类型包括非结构化的数据或自然语言的回答,则输出形式包括文本形式。除此之外,还可以根据操作结果的类型确定其他输出形式,此处不再一一列举。
参见图4和图5,本公开实施例的总体流程如下:
首先,用户向SQL语言生成模块输入目标自然语言。SQL语言生成模块将目标自然语言转换为目标SQL语句,并将目标SQL语句发送到数据库管理系统。数据库管理系统基于目标SQL语句执行数据库操作,并获取操作结果。然后,数据库管理系统将操作结果返回至SQL语言生成模块进行展示输出。其中,SQL语言生成模块包括提示工程模块和ChatGLM模块。提示工程模块可以获取目标数据表所在数据库中各个数据表的模式(schema)信息以及用户输入的目标自然语言,基于目标自然语言和schema信息生成目标数据表对应的目标提示信息,并将目标提示信息发送给ChatGLM模块。ChatGLM模块可以获取目标自然语言,并基于目标自然语言和目标提示信息输出目标SQL语句。
本公开实施例的方案具有以下优点:
(1)可以根据用户的自然语言输入,自动地生成相应的SQL语句,并执行数据库操作,返回结果给用户,无需用户学习和编写SQL语法规则,只需用自然语言输入查询需求即可。本公开实施例可以基于chatglm技术实现,相比于传统的基于映射规则的方式,可以更好地理解用户输入的自然语言,并生成更准确和更自然的SQL语句,降低了用户学习和使用SQL的门槛,提高了数据库操作的效率和便捷性。
(2)采用了提示工程技术实现了数据库的模式信息与自然语言之间的映射和对应,无需用户提前配置好数据库中各个数据表的名称、结构、关系等信息。
(3)利用LORA微调技术实现了对模型的优化,提高了其SQL生成和自然语言理解的能力,可以处理复杂或模糊的自然语言(例如,涉及多个表、多个条件、多个聚合函数等情况下的查询需求,或者涉及否定、比较、排序等情况)的查询需求。
(4)实现了数据库查询结果的多样化和友好化的展示,可以根据用户输入或数据库操作结果中包含的信息类型,选择合适的输出形式,提高了用户体验和满意度。
本公开实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现前述任一实施例所述的方法。
图6示出了本公开实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器602、存储器604、输入/输出接口606、通信接口608和总线610。其中处理器602、存储器604、输入/输出接口606和通信接口608通过总线610实现彼此之间在设备内部的通信连接。
处理器602可以采用通用的中央处理器(Central Processing Unit,CPU)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本公开实施例所提供的技术方案。处理器602还可以包括显卡。
存储器604可以采用只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、静态存储设备,动态存储设备等形式实现。存储器604可以存储操作系统和其他应用程序,在通过软件或者固件来实现本公开实施例所提供的技术方案时,相关的程序代码保存在存储器604中,并由处理器602来调用执行。
输入/输出接口606用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口608用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线610包括一通路,在设备的各个组件(例如处理器602、存储器604、输入/输出接口606和通信接口608)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器602、存储器604、输入/输出接口606、通信接口608以及总线610,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本公开实施例方案所必需的组件,而不必包含图中所示的全部组件。
本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述任一实施例所述的方法。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本公开实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本公开实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机装置或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本公开中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本公开实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本公开实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本公开实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本公开实施例的保护范围。
Claims (10)
1.一种SQL语句生成方法,所述方法包括:
获取用户输入的目标自然语言,所述目标自然语言用于对目标数据表执行数据库操作;
基于所述目标数据表的信息获取所述目标数据表对应的目标提示信息,所述目标提示信息包括所述目标数据表对应的自然语言描述信息以及所述自然语言描述信息对应的SQL语言描述信息;
基于所述目标提示信息将所述目标自然语言转换为目标SQL语句。
2.根据权利要求1所述的方法,所述基于所述目标数据表的信息获取所述目标数据表对应的目标提示信息,包括:
获取所述目标数据表所在的数据库对应的知识图谱,所述知识图谱用于记录所述数据库中各个数据表之间的关系模式;
基于所述目标数据表从所述知识图谱中提取所述目标数据表的关联数据表的信息;
基于所述目标数据表的信息和所述关联数据表的信息生成所述目标数据表对应的目标提示信息。
3.根据权利要求2所述的方法,所述基于所述目标数据表的信息和所述关联数据表的信息生成所述目标数据表对应的目标提示信息,包括:
基于所述目标数据表的信息生成第一提示信息;所述第一提示信息用于对所述目标数据表对应的自然语言描述信息和SQL语言描述信息进行提示;
基于所述关联数据表的信息生成第二提示信息;所述第二提示信息用于对所述关联数据表对应的自然语言描述信息和SQL语言描述信息进行提示;
对所述第一提示信息和所述第二提示信息进行组合得到第三提示信息;
将所述第一提示信息、所述第二提示信息和所述第三提示信息确定为所述目标数据表对应的目标提示信息。
4.根据权利要求1所述的方法,所述基于所述目标数据表的信息获取所述目标数据表对应的目标提示信息,包括:
基于所述目标数据表的信息生成所述自然语言描述信息和所述SQL语言描述信息;
对所述自然语言描述信息和所述SQL语言描述信息分别进行标记;
将标记后的所述自然语言描述信息和标记后的所述SQL语言描述信息拼接成所述目标提示信息。
5.根据权利要求1所述的方法,所述基于所述目标提示信息将所述目标自然语言转换为目标SQL语句,包括:
将所述目标提示信息和所述目标自然语言输入目标自然语言处理模型,以使所述目标自然语言处理模型基于所述目标提示信息将所述目标自然语言转换为目标SQL语句。
6.根据权利要求5所述的方法,所述方法还包括:
基于目标语料库中的第一自然语言样本对初始自然语言处理模型进行训练,得到中间自然语言处理模型;
基于第二自然语言样本、所述第二自然语言样本对应的样本SQL语言以及样本数据表对应的样本提示信息,对所述中间自然语言处理模型进行训练,得到所述目标自然语言处理模型,所述第二自然语言样本用于对样本数据表执行数据库操作,所述样本提示信息包括样本数据表对应的样本自然语言描述信息以及所述样本自然语言描述信息对应的样本SQL语言描述信息。
7.根据权利要求1所述的方法,所述方法还包括:
将所述目标SQL语言发送至数据库管理系统,以使所述数据库管理系统基于所述目标SQL语言返回对所述目标数据表的操作结果;
基于预先确定的输出形式,对所述操作结果进行输出展示。
8.根据权利要求7所述的方法,所述方法还包括:
基于以下至少一种信息确定所述输出形式:
用户输入的输出形式信息,和/或;
所述操作结果的类型。
9.一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现权利要求1至8任意一项所述的方法。
10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现权利要求1至8任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310754535.7A CN117112593A (zh) | 2023-06-25 | 2023-06-25 | Sql语句生成方法、介质和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310754535.7A CN117112593A (zh) | 2023-06-25 | 2023-06-25 | Sql语句生成方法、介质和计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117112593A true CN117112593A (zh) | 2023-11-24 |
Family
ID=88806228
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310754535.7A Pending CN117112593A (zh) | 2023-06-25 | 2023-06-25 | Sql语句生成方法、介质和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117112593A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117827885A (zh) * | 2023-12-25 | 2024-04-05 | 天云融创数据科技(北京)有限公司 | 数据库语句生成方法、装置、设备及介质 |
CN118585537A (zh) * | 2024-08-07 | 2024-09-03 | 超云数字技术集团有限公司 | Sql查询语句的生成系统及方法 |
-
2023
- 2023-06-25 CN CN202310754535.7A patent/CN117112593A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117827885A (zh) * | 2023-12-25 | 2024-04-05 | 天云融创数据科技(北京)有限公司 | 数据库语句生成方法、装置、设备及介质 |
CN118585537A (zh) * | 2024-08-07 | 2024-09-03 | 超云数字技术集团有限公司 | Sql查询语句的生成系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN117112593A (zh) | Sql语句生成方法、介质和计算机设备 | |
Van Atteveldt et al. | Computational analysis of communication | |
CN104657346A (zh) | 智能交互系统中的问题匹配方法和系统 | |
CN109241525B (zh) | 关键词的提取方法、装置和系统 | |
CN103248658A (zh) | 服务推荐装置、服务推荐方法和移动设备 | |
CN110969012A (zh) | 文本纠错方法、装置、存储介质及电子设备 | |
CN111353037A (zh) | 一种题目生成方法、装置以及计算机可读存储介质 | |
US20220083577A1 (en) | Information processing apparatus, method and non-transitory computer readable medium | |
CN111159220A (zh) | 用于输出结构化查询语句的方法和装置 | |
CN110347999A (zh) | 一种表格数据校验的方法和装置 | |
CN108268637A (zh) | 一种智能语音矫正识别方法、装置和用户终端 | |
CN113032520A (zh) | 信息分析方法及装置、电子设备和计算机可读存储介质 | |
CN117252217A (zh) | 一种翻译文本的校验方法和相关装置 | |
CN113377963B (zh) | 一种基于知识图谱的井场试验数据处理方法及装置 | |
CN117332282B (zh) | 一种基于知识图谱的事件匹配的方法及装置 | |
CN117932022A (zh) | 一种智能问答方法、装置、电子设备及存储介质 | |
CN101727451A (zh) | 信息提取方法和装置 | |
CN115964465A (zh) | 一种智能问答方法、装置及电子设备 | |
CN116108133A (zh) | 一种基于bert模型的文本数据处理方法及装置 | |
CN113255374B (zh) | 问答管理方法及系统 | |
CN114817510A (zh) | 问答方法、问答数据集生成方法及装置 | |
CN112651230B (zh) | 融合语言模型生成方法和装置、单词纠错方法和电子设备 | |
CN110516246B (zh) | 一种沟通辅助方法、装置及存储介质 | |
CN113672699A (zh) | 基于知识图谱的nl2sql生成方法 | |
CN112307748A (zh) | 用于处理文本的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Room 553, 5th Floor, Building 3, No. 969 Wenyi West Road, Wuchang Street, Yuhang District, Hangzhou City, Zhejiang Province, 311121 Applicant after: Hangzhou Alibaba Cloud Feitian Information Technology Co.,Ltd. Address before: Room 553, 5th Floor, Building 3, No. 969 Wenyi West Road, Wuchang Street, Yuhang District, Hangzhou City, Zhejiang Province, 311121 Applicant before: Hangzhou Alibaba Feitian Information Technology Co.,Ltd. |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |