CN112182022B - 基于自然语言的数据查询方法、装置及翻译模型 - Google Patents
基于自然语言的数据查询方法、装置及翻译模型 Download PDFInfo
- Publication number
- CN112182022B CN112182022B CN202011215342.7A CN202011215342A CN112182022B CN 112182022 B CN112182022 B CN 112182022B CN 202011215342 A CN202011215342 A CN 202011215342A CN 112182022 B CN112182022 B CN 112182022B
- Authority
- CN
- China
- Prior art keywords
- field
- query
- quasi
- condition
- labeling
- 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
Links
- 238000013519 translation Methods 0.000 title claims abstract description 70
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000012216 screening Methods 0.000 claims abstract description 20
- 239000013598 vector Substances 0.000 claims description 128
- 238000002372 labelling Methods 0.000 claims description 72
- 239000011159 matrix material Substances 0.000 claims description 19
- 238000004364 calculation method Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 9
- 238000012549 training Methods 0.000 description 26
- 238000004458 analytical method Methods 0.000 description 12
- 238000006243 chemical reaction Methods 0.000 description 9
- 230000035515 penetration Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 238000012937 correction Methods 0.000 description 4
- 238000003062 neural network model Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000013526 transfer learning 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/24—Querying
- G06F16/245—Query processing
- G06F16/2452—Query translation
- G06F16/24522—Translation of natural language queries to structured queries
-
- 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/245—Query processing
- G06F16/2453—Query optimisation
-
- 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/245—Query processing
- G06F16/2455—Query execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了基于自然语言的数据查询方法、装置及翻译模型,该方法包括将用户输入的自然语言查询语句,输入至预先构建的翻译模型中,通过该翻译模型从自然语言查询语句中提取出拟查询字段及拟条件字段,并从预设的表字段中筛选出与拟查询字段距离最近的字段作为最终查询字段,以及从表字段中筛选出与拟条件字段距离最近的字段作为最终条件字段,将最终查询字段及最终条件字段拼接成SQL查询语句;根据翻译模型输出的SQL查询语句进行数据查询。上述方法通过提取拟查询字段及拟条件字段,识别出自然语言查询语句与翻译模型中预存的语言存在差异的字段,并对这些字段进行修正以进行后续的数据查询,能够有效防止出现无法查询的现象。
Description
技术领域
本申请涉及数据查询技术领域,尤其涉及基于自然语言的数据查询方法、装置及翻译模型。
背景技术
结构化查询语言(Structured Query Language,SQL)是一种用于存取数据以及查询、更新和管理关系数据库系统的编程语言。技术用户可以通过SQL与数据库中存储的结构化数据进行交互,实现数据的查询。
但是,SQL是一种专业性较强的编程语言,其使用难度限制了非技术用户。为了使非技术用户能够通过自然语言便可与结构化数据进行交互,目前已普遍采用神经网络模型实现自然语言与SQL语句之间的翻译。数据查询过程中,用户只需输入自然语言查询语句,神经网络模型在对接收到自然语言查询语句时,对其进行翻译,获取SQL语句,然后通过该SQL语句从数据库中查询相应的结构化数据反馈给用户。其中所采用的神经网络模型为包含自然语言与SQL语句之间映射关系的翻译模型。
但是实际应用中,用户在输入自然语言查询语句时,其措辞有很大可能性会与翻译模型中预设的自然语言语句之间存在不一样的地方,例如,若用户输入的是“来源端口等于80的攻击类型有哪些”,但是翻译模型中预存的语言为“源端口等于80的攻击类型有哪些”,虽然这两种表达方式属于一种语义,但是翻译模型却无法识别出用户究竟想查询什么内容,将无法将其转换为SQL语句,造成无法查询的后果。
发明内容
为了解决用于在输入自然语言查询语句时,其措辞有很大可能性会与翻译模型中预设的自然语言语句之间存在不一样的地方,导致翻译模型却无法识别出用户究竟想查询什么内容,将无法将其转换为SQL语句,造成无法查询的问题,本申请通过以下实施例公开了基于自然语言的数据查询方法、装置及翻译模型。
本申请第一方面公开了一种基于自然语言的数据查询方法,所述数据查询方法包括:
获取用户输入的自然语言查询语句;
将所述自然语言查询语句输入至预先构建的翻译模型中,所述翻译模型用于从所述自然语言查询语句中提取出拟查询字段及拟条件字段,并从预设的表字段中筛选出与所述拟查询字段距离最近的字段作为最终查询字段,以及从所述表字段中筛选出与所述拟条件字段距离最近的字段作为最终条件字段,最后将所述最终查询字段及所述最终条件字段拼接成SQL查询语句,其中,所述拟查询字段及所述拟条件字段均不属于所述表字段中的任意字段;
根据所述翻译模型输出的SQL查询语句进行数据查询。
可选的,所述翻译模型用于通过以下操作,从所述自然语言查询语句中提取出拟查询字段及拟条件字段:
对所述自然语言查询语句中每个字段进行向量编码,获取对应的字段向量序列;
对所述字段向量序列中的每个字段向量进行类型标注,其中,所述类型标注包括有效标注和无效标注,所述有效标注包括条件标注、操作符标注、条件值标注及查询字段标注;
将所述查询字段标注对应的字段设为所述拟查询字段,将所述条件标注对应的字段设为所述拟条件字段。
可选的,所述翻译模型用于通过以下操作,从预设的表字段中筛选出与所述拟查询字段距离最近的字段作为最终查询字段,以及从所述表字段中筛选出与所述拟条件字段距离最近的字段作为最终条件字段:
对所述表字段中的任意字段进行向量编码,获取对应的表字段向量序列;
分别针对所述表字段向量序列中每个表字段向量,与所述拟查询字段对应的字段向量进行相似度计算,并将相似度最高的表字段向量对应的字段设为最终查询字段;
分别针对所述表字段向量序列中每个表字段向量,与所述拟条件字段对应的字段向量进行相似度计算,并将相似度最高的表字段向量对应的字段设为最终条件字段。
可选的,所述对所述字段向量序列中的每个字段向量进行类型标注之前,所述翻译模型还用于执行以下操作:
针对所述自然语言查询语句中的任一查询短句,在所述查询短句的前端插入连接标识符,以及在所述查询短句的末端插入结尾标识符,其中,所述连接标识符用于表示所述查询短句与前一个查询短句之间的连接关系。
可选的,所述对所述字段向量序列中的每个字段向量进行类型标注,包括:
将所述字段向量序列中的每个字段向量输入至预设的CRF矩阵中,所述CRF矩阵中预设有多种字段类型;
针对任一字段向量,获取所述CRF矩阵输出的所有字段类型的概率值,并根据概率值最大的字段类型,对该字段向量进行类型标注;
针对类型标注为有效标注且类型标注结果相同的多个字段向量,分别在它们的类型标注结果后面添加后缀标识符,所述后缀标识符为起始标识符或后续标识符;
根据所述起始标识符及所述后续标识符,将所述类型标注为有效标注且类型标注结果相同的多个字段向量进行拼接,得到该类型标注对应的字段。
可选的,所述翻译模型用于通过以下操作,将所述最终查询字段及所述最终条件字段拼接成SQL查询语句:
获取所述操作符标注对应的字段和所述条件值标注对应的字段;
将所述最终查询字段拼接为select字段,将所述最终条件字段、所述操作符标注对应的字段和所述条件值标注对应的字段组合拼接为where字段;
将select字段与where字段连接起来,获取所述SQL查询语句。
本申请第二方面公开了一种基于自然语言的数据查询装置,所述基于自然语言的数据查询装置应用于本申请第一方面所述的基于自然语言的数据查询方法,所述基于自然语言的数据查询装置包括:
语句获取模块,用于获取用户输入的自然语言查询语句;
输入模块,用于将所述自然语言查询语句输入至预先构建的翻译模型中,所述翻译模型用于从所述自然语言查询语句中提取出拟查询字段及拟条件字段,并从预设的表字段中筛选出与所述拟查询字段距离最近的字段作为最终查询字段,以及从所述表字段中筛选出与所述拟条件字段距离最近的字段作为最终条件字段,最后将所述最终查询字段及所述最终条件字段拼接成SQL查询语句,其中,所述拟查询字段及所述拟条件字段均不属于所述表字段中的任意字段;
查询模块,用于根据所述翻译模型输出的SQL查询语句进行数据查询。
本申请第三方面公开了一种用于数据查询的翻译模型,所述翻译模型用于从接收到的自然语言查询语句中提取出拟查询字段及拟条件字段,并从预设的表字段中筛选出与所述拟查询字段距离最近的字段作为最终查询字段,以及从所述表字段中筛选出与所述拟条件字段距离最近的字段作为最终条件字段,最后将所述最终查询字段及所述最终条件字段拼接成SQL查询语句,其中,所述拟查询字段及所述拟条件字段均不属于所述表字段中的任意字段。
本申请第四方面公开了一种计算机设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如本申请第一方面所述的基于自然语言的数据查询方法的步骤。
本申请第五方面公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理执行时实现如本申请第一方面所述的基于自然语言的数据查询方法的步骤。
本申请实施例公开了基于自然语言的数据查询方法、装置及翻译模型,该方法包括将用户输入的自然语言查询语句,输入至预先构建的翻译模型中,通过该翻译模型从自然语言查询语句中提取出拟查询字段及拟条件字段,并从预设的表字段中筛选出与拟查询字段距离最近的字段作为最终查询字段,以及从表字段中筛选出与拟条件字段距离最近的字段作为最终条件字段,将最终查询字段及最终条件字段拼接成SQL查询语句;根据翻译模型输出的SQL查询语句进行数据查询。上述方法通过提取拟查询字段及拟条件字段,识别出自然语言查询语句与翻译模型中预存的语言存在差异的字段,并对这些字段进行修正以进行后续的数据查询,能够有效防止出现无法查询的现象。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例公开的一种基于自然语言的数据查询方法的工作流程示意图;
图2为本申请实施例公开的一种基于自然语言的数据查询装置的结构示意图;
图3为本申请实施例公开的一种基于自然语言的数据查询方法的原理示意图。
具体实施方式
为了解决用于在输入自然语言查询语句时,其措辞有很大可能性会与翻译模型中预设的自然语言语句之间存在不一样的地方,导致翻译模型却无法识别出用户究竟想查询什么内容,将无法将其转换为SQL语句,造成无法查询的问题,本申请通过以下实施例公开了基于自然语言的数据查询方法、装置及翻译模型。
本申请第一实施例公开了一种基于自然语言的数据查询方法,该方法应用于分析平台,分析平台能够存储、检索、分析日志数据。本申请中的翻译模型、执行代码等均部署于分析平台上。在查询之前,将需要检索的日志传输到分析平台,用户在分析平台交界面输入要查询的表名和查询语句,模型会将查询语句转换为中间数据结构,进一步转换为SQL,并查询数据表,获取符合条件的数据,返回给用户。本申请中查询语句特指将要使用翻译模型转换为SQL的自然语言。
参见图1所示的工作流程示意图,所述基于自然语言的数据查询方法包括:
步骤S101,获取用户输入的自然语言查询语句。
通常,在获取自然语言查询语句之前,分析平台中预先存储有所要检索的数据表,以安全日志数据为例:数据表分为入侵渗透表、暴力破解表等多种日志表。其中,每个表均包含时间、源IP、目的IP、源端口、目的端口这五个字段。每个表还包含了特定的表字段,例如,针对入侵渗透表,其表名为入侵渗透表,表字段包括:时间、源IP、目的IP、源端口、目的端口、攻击类型、国家码、风险等级、分析引擎等。
步骤S102,将所述自然语言查询语句输入至预先构建的翻译模型中,所述翻译模型用于从所述自然语言查询语句中提取出拟查询字段及拟条件字段,并从预设的表字段中筛选出与所述拟查询字段距离最近的字段作为最终查询字段,以及从所述表字段中筛选出与所述拟条件字段距离最近的字段作为最终条件字段,最后将所述最终查询字段及所述最终条件字段拼接成SQL查询语句,其中,所述拟查询字段及所述拟条件字段均不属于所述表字段中的任意字段。
本申请实施例采用Bert-CRF模型作为上述公开的翻译模型,训练Bert-CRF模型,能够通过自然语言查询语句和预存的数据表表字段,转换出与自然语言查询语句对应的SQL语句。Bert-CRF模型包括Bert模型(Bert Encoder)及CRF矩阵。Bert模型是google开源的一种自然语言处理模型,用于对自然语言查询语句中的字段进行向量编码。CRF矩阵是指条件随机场,可以用于构造在给定一组输入随机变量的条件下,另一组输出随机变量的条件概率分布模型。
需要说明的是,为提高翻译模型将自然语言查询语句转化为SQL语句的准确性,本申请仅支持select关键字和where关键字,即转换后的SQL语句均为select列名1,列名2,...from表名where条件1=值1,条件2=值2,...。
具体的,所述翻译模型用于通过以下操作,从所述自然语言查询语句中提取出拟查询字段及拟条件字段:
对所述自然语言查询语句中每个字段进行向量编码,获取对应的字段向量序列。
Bert模型具有将文字编码为向量的功能,其中中文的每个字编码为一个字向量,英文每个单词编码为一个词向量。编码后向量间可以计算距离。语义相近的字编码后,距离向量相近。语义区别较大的字编码后,距离向量较远。
针对所述自然语言查询语句中的任一查询短句,在所述查询短句的前端插入连接标识符,以及在所述查询短句的末端插入结尾标识符,其中,所述连接标识符用于表示所述查询短句与前一个查询短句之间的连接关系。
实际应用中,一个查询语句中通常被逗号或句号分割成多个查询短句,将查询短句采用[CLS]、[SEP]括住,(即写作[CLS]查询短句[SEP]),多个查询短句连接后形如:[CLS]查询短句1[SEP][CLS]查询短句2[SEP]...。[CLS]为连接标识符(分类变量),[SEP]为结尾标识符(句结尾向量),Bert-CRF模型给出语句编码,得到一系列编码向量,即字段向量序列。其中,字向量得到组合称为字段向量。
编码时,分割的句子分别采用[CLS]、[SEP]向量包裹编码。每个查询短句前的[CLS]向量用于计算查询语句条件间的关系,CLS包含三种:空、and、or。Bert编码后每个查询短句前的[CLS]向量,是这条查询语句的句向量,用它来预测condition字段中的连接符,为空(‘’)时表示不需要条件连接符。
以查询入侵渗透表为例,查询语句为:“源端口等于80,并且目的端口等于90的攻击类型有哪些?”该查询语句包括两个查询短句,插入连接标识符和句尾标识符后的结果为:“[CLS]源端口等于80[SEP],[CLS]并且目的端口等于90的攻击类型有哪些[SEP]?”
CLS用于表示查询短句间的连接关系。针对上述示例中的第一个CLS,前面无语句,那么与之前的语句(无)之间必然没有关系,这时CLS即为空。针对第二个CLS,从语义上可以看出,与前一个短句之间是并且(and)关系,此时,模型将对语义进行学习,并标记在CLS变量中,即第二个CLS将被编码为and。or类型的语义,编码原理类似于and,此处不再赘述。
对所述字段向量序列中的每个字段向量进行类型标注,其中,所述类型标注包括有效标注和无效标注,所述有效标注包括条件标注、操作符标注、条件值标注及查询字段标注。
本实施例采用9个字段类型,包括COND_B、COND_I、OPR_B、OPR_I、VAL_B、VAL_I、SEL_B、SEL_I、O,其中,O为无效标注,其余为有效标注。
COND表示where语句的条件字段(条件标注),OPR表示where语句的操作符(操作符标注),VAL字段表示where语句的值(条件值标注),后缀B为起始标识符,后缀I为后续标识符(即非起始字符)。标注为OPR和VAL的字段即为最终SQL语句where条件中的操作符和值。
将经过Bert模型编码所得的字段向量序列中的每个字段向量输入至预设的CRF矩阵中,进行序列标注。作为示例,CRF矩阵为9行*9列的向量矩阵,预设有多种字段类型。
针对任一字段向量,获取所述CRF矩阵输出的所有字段类型的概率值,并根据概率值最大的字段类型,对该字段向量进行类型标注。也就是说,CRF矩阵将输出每个字段向量的所有类型的标注概率,概率最大的类型作为此字段向量的标注结果。
针对类型标注为有效标注且类型标注结果相同的多个字段向量,分别在它们的类型标注结果后面添加后缀标识符,所述后缀标识符为起始标识符或后续标识符。
根据所述起始标识符及所述后续标识符,将所述类型标注为有效标注且类型标注结果相同的多个字段向量进行拼接,得到该类型标注对应的字段。即,将同类型标注结果的后缀B对应的字符和后缀I对应的字符拼接后,组成此类型的字段。
将所述查询字段标注对应的字段设为所述拟查询字段,将所述条件标注对应的字段设为所述拟条件字段。即,将标注为SEL的字段和标注为COND的字段分别设为拟查询字段和拟条件字段。
Bert-CRF模型存有数据库中数据表的表头字段,这些表头字段中的任意字段,在模型训练过程中已被向量编码成对应的表字段向量序列。
将标记为SEL的字段(拟查询字段)与每个表字段向量计算距离,距离向量最近的表字段即为最终查询字段。将标注为COND的字段(拟条件字段)分别与表字段向量计算距离,距离向量最近的表字段即为最终条件字段。详细说明如下:
查询过程中,用户措辞会出现词语语义与表头数据类似,而用词不同的情况。采用用户输入的语言直接查询数据库,会出现数据库无法识别并报错的情况,导致查询不能用,本申请采用拟字段修正机制对这些字段进行修正。
例如:查询“源端口等于80的攻击类型有哪些”。用户很可能输入为:来源端口等于80的攻击类型有哪些。若直接采用“select攻击类型from入侵渗透表where来源端口=80”语句进行查询,由于“来源端口”与“源端口”不一致,数据库将报错。
此时,采用拟字段修正机制,将提取到的拟查询字段与每个表字段向量计算距离,距离向量最近的表字段即为最终查询字段。将提取到的拟条件字段分别与表字段向量计算距离,距离向量最近的表字段即为最终条件字段。
作为示例,若表字段包括:时间、源IP、目的IP、源端口、目的端口、攻击类型、国家码、风险等级、分析引擎。而用户输入的“来源端口”不在表字段中,这时将“来源端口”确认为拟查询字段,对此字段进行修正。
分别针对所述表字段向量序列中每个表字段向量,与所述拟查询字段对应的字段向量进行相似度计算,并将相似度最高的表字段向量对应的字段设为最终查询字段。
分别针对所述表字段向量序列中每个表字段向量,与所述拟条件字段对应的字段向量进行相似度计算,并将相似度最高的表字段向量对应的字段设为最终条件字段。
实际应用中,在使用模型对查询语句进行编码时,“来源端口”将被编码为向量“x”。表字段中的每个字段被编码为“y1”,“y2”等。将向量“x”与向量“y1”,“y2”等分别进行相似度计算,相似度最大的表字段即为修正后的得到的最终查询字段。
相似度计算公式为:i=max(cosine_similarity(x,yi)),其中,i表示相似度。
经过上述计算修正,“来源端口”将被修正为“源端口”。基于修正后的字段,进行SQL语句的转换,将能正确进行查询。
获取所述操作符标注对应的字段和所述条件值标注对应的字段。
将所述最终查询字段拼接为select字段,将所述最终条件字段、所述操作符标注对应的字段和所述条件值标注对应的字段组合拼接为where字段。
将select字段与where字段连接起来,获取所述SQL查询语句。
针对上述示例,将修正后的SEL字段拼接为SQL语句中的select语句、将修正后的COND字段、OPR字段VAL字段组合拼接为where子句,采用查询语句的CLS将多个where子句拼接成where语句,select语句与where语句拼接成完整SQL。也就是说,用户输入的:来源端口等于80的攻击类型有哪些,经过修正及拼接之后,得到“select攻击类型from入侵渗透表where源端口=80”SQL语句,利用该SQL语句进行查询,能得到正确结果。
步骤S103,根据所述翻译模型输出的SQL查询语句进行数据查询。
利用转换得到的SQL语句查询数据表,获取符合条件的数据,进而将数据返回给用户,实现数据查询的目的。
本申请将训练好的翻译模型部署于分析平台,该分析平台用于接收用户输入的自然语言查询语句,并将其输入翻译模型中进行标注及修正,然后使用标注结果和修正结果将字段拼接为SQL语句,进而采用此SQL语句,在平台内预设的数据库中进行查询,最终将查询结果返回给用户。
本申请实施例公开了基于自然语言的数据查询方法、装置及翻译模型,该方法包括将用户输入的自然语言查询语句,输入至预先构建的翻译模型中,通过该翻译模型从自然语言查询语句中提取出拟查询字段及拟条件字段,并从预设的表字段中筛选出与拟查询字段距离最近的字段作为最终查询字段,以及从表字段中筛选出与拟条件字段距离最近的字段作为最终条件字段,将最终查询字段及最终条件字段拼接成SQL查询语句;根据翻译模型输出的SQL查询语句进行数据查询。上述方法通过提取拟查询字段及拟条件字段,识别出自然语言查询语句与翻译模型中预存的语言存在差异的字段,并对这些字段进行修正以进行后续的数据查询,能够有效防止出现无法查询的现象。
本申请第二实施例公开了一种基于自然语言的数据查询装置,所述基于自然语言的数据查询装置应用于本申请第一实施例所述的基于自然语言的数据查询方法,所述基于自然语言的数据查询装置设置于分析平台中,参见图2所示的结构示意图,所述装置包括:
语句获取模块10,用于获取用户输入的自然语言查询语句。
输入模块20,用于将所述自然语言查询语句输入至预先构建的翻译模型中,所述翻译模型用于从所述自然语言查询语句中提取出拟查询字段及拟条件字段,并从预设的表字段中筛选出与所述拟查询字段距离最近的字段作为最终查询字段,以及从所述表字段中筛选出与所述拟条件字段距离最近的字段作为最终条件字段,最后将所述最终查询字段及所述最终条件字段拼接成SQL查询语句,其中,所述拟查询字段及所述拟条件字段均不属于所述表字段中的任意字段。
查询模块30,用于根据所述翻译模型输出的SQL查询语句进行数据查询。
目前,无论是结构化查询,还是表达式查询,都规定了用户的查询格式,用户学习成本高,用户体验差,灵活性差。采用智能转换技术的类RNN模型,由于模型本身是循环训练的,难以多线程训练,训练效率低,训练时间长。模型在循环过程中,上下文语意权重相同,导致模型性能较低,实际的NL2SQL转换成功率与准确率低。之前的智能转换采用端到端的训练方式,即将查询语句直接转换为SQL,对转换出的SQL正确性,可使用性和语句中的字段是否存在表字段中无法保证。
本申请第三实施例公开了一种用于数据查询的翻译模型,采用Bert-CRF模型,通过训练Bert-CRF模型,能够通过自然语言查询语句和预存的数据表表字段,转换出与自然语言查询语句对应的SQL语句。
所述翻译模型用于从接收到的自然语言查询语句中提取出拟查询字段及拟条件字段,并从预设的表字段中筛选出与所述拟查询字段距离最近的字段作为最终查询字段,以及从所述表字段中筛选出与所述拟条件字段距离最近的字段作为最终条件字段,最后将所述最终查询字段及所述最终条件字段拼接成SQL查询语句,其中,所述拟查询字段及所述拟条件字段均不属于所述表字段中的任意字段。
具体的,为了解决现有的模型在训练过程中效率低及时间长的问题,本实施例通过以下方法对Bert-CRF模型进行训练及验证:
1、首先对训练数据及验证数据进行说明:训练数据包含查询表名、查询语句、类型标注、SQL语句。测试数据仅包含查询表名、自然语言查询语句。
查询语句的每个字对应一个类型标注。类型标注分为COND(条件标注)、OPR(操作符标注)、VAL(条件值标注)、SEL(查询字段标注)四个有效标注,以及O这个无效标注。其中针对有效标注,采用后缀标识符B和I区分是这个类型标注的起始字还是非起始字。将同类型标注的起始标识符B对应的字段和后续标识符I对应的字段拼接后,成为此类型标注对应的完整字段。
作为示例,若查询入侵渗透表,查询语句为"源端口等于80的攻击类型有哪些?",则其对应的训练数据包括:
查询表名:“入侵渗透表”。
查询语句:“源端口等于80的攻击类型有哪些”。
标注:“COND_B、COND_I、COND_I、OPR_B、OPR_I、VAL_B、VAL_I、O、SEL_B、SEL_I、SEL_I、SEL_I、O、O、O”。
SQL语句:“select攻击类型from入侵渗透表where源端口=80”。
2、接下来,对训练数据及验证数据进行准备:
采用人工编写的方式,编写常用的7000条查询语句,并格式化为上述结构。作为训练数据,用于训练模型。再编写1000条查询语句(不包含sql_struct),作为验证数据,用于验证模型的转换准确性和可用性。将防火墙日志实时传输至分析平台对应的数据表,用于检测模型训练结果和实际使用。
3、开始训练:
服务器部署Bert-CRF模型,训练原理与流程与上述实施例中解释的翻译模型将自然语言查询语句转换为SQL语句的过程一致,此处不再赘述。
训练过程中,语句最大长度128个字,不足512个字的语句采用字符0进行补全,超过128个字的查询语句则不支持。每个字编码为一个向量。向量长度128位,采用随机初始化的方式初始化全部向量。每轮使用10条语句进行训练。每轮训练,对向量进行了修正,采用修正后的向量继续下一轮训练。
以查询入侵渗透表,查询语句为例:源端口等于80的攻击类型有哪些?整体原理流程参见图3所示,注:为清晰说明,图中表头仅展示了源IP、源端口、攻击类型三列。实际使用中,应为表的全部表头。
将训练数据与模型代码部署于服务器,执行训练代码,进行训练。每一轮训练后,模型输出的标注结果将与训练数据中的标注结果进行比较。同时,将修正字段与SQL语句中的字段进行比较。计算准确率,准确率大于阈值时得到模型,否则继续训练。采用测试数据测试此模型并人工检测,计算准确率,准确率高于阈值,则输出模型,否则继续训练。
使用大量数据,对Bert-CRF模型进行训练,使模型能够对自然语言进行标注。使用Bert-CRF模型进行标注时。标注为COND和SEL的字段采用与表头向量进行距离向量计算进行修正。将修正后的SEL字段拼接为SQL语句中的select语句、将修正后的COND字段、OPR字段VAL字段组合拼接为where子句,采用查询语句的CLS将多个where子句拼接成where语句,select语句与where语句拼接成完整SQL,采用生成的SQL语句,对数据表进行检索。
在高性能的Bert-CRF模型的基础上进行迁移学习,并通过数据表表头字段对标注结果进行修正,有效的提高了模型的训练速度和转换准确性,并满足了自然语言查询数据库的需求,提高了用户体验,打通非技术人员与结构化数据间的壁垒,增强用户的体验,使非技术人员可以采用自然语言对数据库进行查询。在NL2SQL转换时,相较之前的类RNN转换方案,准确率大大提高,采用自然语言查询数据库,为语音查询数据库提供了可能。
本申请第四实施例公开了一种计算机设备,包括:
存储器,用于存储计算机程序。
处理器,用于执行所述计算机程序时实现如本申请第一实施例所述的基于自然语言的数据查询方法的步骤。
本申请第五实施例公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理执行时实现如本申请第一实施例所述的基于自然语言的数据查询方法的步骤。
以上结合具体实施方式和范例性实例对本申请进行了详细说明,不过这些说明并不能理解为对本申请的限制。本领域技术人员理解,在不偏离本申请精神和范围的情况下,可以对本申请技术方案及其实施方式进行多种等价替换、修饰或改进,这些均落入本申请的范围内。本申请的保护范围以所附权利要求为准。
Claims (8)
1.一种基于自然语言的数据查询方法,其特征在于,所述数据查询方法包括:
获取用户输入的自然语言查询语句;
将所述自然语言查询语句输入至预先构建的翻译模型中,所述翻译模型用于从所述自然语言查询语句中提取出拟查询字段及拟条件字段,并从预设的表字段中筛选出与所述拟查询字段距离最近的字段作为最终查询字段,以及从所述表字段中筛选出与所述拟条件字段距离最近的字段作为最终条件字段,最后将所述最终查询字段及所述最终条件字段拼接成SQL查询语句,其中,所述拟查询字段及所述拟条件字段均不属于所述表字段中的任意字段;
根据所述翻译模型输出的SQL查询语句进行数据查询;
所述翻译模型用于通过以下操作,从所述自然语言查询语句中提取出拟查询字段及拟条件字段:
对所述自然语言查询语句中每个字段进行向量编码,获取对应的字段向量序列;
对所述字段向量序列中的每个字段向量进行类型标注,其中,所述类型标注包括有效标注和无效标注,所述有效标注包括条件标注、操作符标注、条件值标注及查询字段标注;
将所述查询字段标注对应的字段设为所述拟查询字段,将所述条件标注对应的字段设为所述拟条件字段;
所述对所述字段向量序列中的每个字段向量进行类型标注,包括:
将所述字段向量序列中的每个字段向量输入至预设的CRF矩阵中,所述CRF矩阵中预设有多种字段类型;
针对任一字段向量,获取所述CRF矩阵输出的所有字段类型的概率值,并根据概率值最大的字段类型,对该字段向量进行类型标注;
针对类型标注为有效标注且类型标注结果相同的多个字段向量,分别在它们的类型标注结果后面添加后缀标识符,所述后缀标识符为起始标识符或后续标识符;
根据所述起始标识符及所述后续标识符,将所述类型标注为有效标注且类型标注结果相同的多个字段向量进行拼接,得到该类型标注对应的字段。
2.根据权利要求1所述的基于自然语言的数据查询方法,其特征在于,所述翻译模型用于通过以下操作,从预设的表字段中筛选出与所述拟查询字段距离最近的字段作为最终查询字段,以及从所述表字段中筛选出与所述拟条件字段距离最近的字段作为最终条件字段:
对所述表字段中的任意字段进行向量编码,获取对应的表字段向量序列;
分别针对所述表字段向量序列中每个表字段向量,与所述拟查询字段对应的字段向量进行相似度计算,并将相似度最高的表字段向量对应的字段设为最终查询字段;
分别针对所述表字段向量序列中每个表字段向量,与所述拟条件字段对应的字段向量进行相似度计算,并将相似度最高的表字段向量对应的字段设为最终条件字段。
3.根据权利要求1所述的基于自然语言的数据查询方法,其特征在于,所述对所述字段向量序列中的每个字段向量进行类型标注之前,所述翻译模型还用于执行以下操作:
针对所述自然语言查询语句中的任一查询短句,在所述查询短句的前端插入连接标识符,以及在所述查询短句的末端插入结尾标识符,其中,所述连接标识符用于表示所述查询短句与前一个查询短句之间的连接关系。
4.根据权利要求1所述的基于自然语言的数据查询方法,其特征在于,所述翻译模型用于通过以下操作,将所述最终查询字段及所述最终条件字段拼接成SQL查询语句:
获取所述操作符标注对应的字段和所述条件值标注对应的字段;
将所述最终查询字段拼接为select字段,将所述最终条件字段、所述操作符标注对应的字段和所述条件值标注对应的字段组合拼接为where字段;
将select字段与where字段连接起来,获取所述SQL查询语句。
5.一种基于自然语言的数据查询装置,其特征在于,所述基于自然语言的数据查询装置包括:
语句获取模块,用于获取用户输入的自然语言查询语句;
输入模块,用于将所述自然语言查询语句输入至预先构建的翻译模型中,所述翻译模型用于从所述自然语言查询语句中提取出拟查询字段及拟条件字段,并从预设的表字段中筛选出与所述拟查询字段距离最近的字段作为最终查询字段,以及从所述表字段中筛选出与所述拟条件字段距离最近的字段作为最终条件字段,最后将所述最终查询字段及所述最终条件字段拼接成SQL查询语句,其中,所述拟查询字段及所述拟条件字段均不属于所述表字段中的任意字段;
查询模块,用于根据所述翻译模型输出的SQL查询语句进行数据查询
所述翻译模型用于通过以下操作,从所述自然语言查询语句中提取出拟查询字段及拟条件字段:
对所述自然语言查询语句中每个字段进行向量编码,获取对应的字段向量序列;
对所述字段向量序列中的每个字段向量进行类型标注,其中,所述类型标注包括有效标注和无效标注,所述有效标注包括条件标注、操作符标注、条件值标注及查询字段标注;
将所述查询字段标注对应的字段设为所述拟查询字段,将所述条件标注对应的字段设为所述拟条件字段;
所述对所述字段向量序列中的每个字段向量进行类型标注,包括:
将所述字段向量序列中的每个字段向量输入至预设的CRF矩阵中,所述CRF矩阵中预设有多种字段类型;
针对任一字段向量,获取所述CRF矩阵输出的所有字段类型的概率值,并根据概率值最大的字段类型,对该字段向量进行类型标注;
针对类型标注为有效标注且类型标注结果相同的多个字段向量,分别在它们的类型标注结果后面添加后缀标识符,所述后缀标识符为起始标识符或后续标识符;
根据所述起始标识符及所述后续标识符,将所述类型标注为有效标注且类型标注结果相同的多个字段向量进行拼接,得到该类型标注对应的字段。
6.一种用于数据查询的翻译模型,其特征在于,所述翻译模型用于从接收到的自然语言查询语句中提取出拟查询字段及拟条件字段,并从预设的表字段中筛选出与所述拟查询字段距离最近的字段作为最终查询字段,以及从所述表字段中筛选出与所述拟条件字段距离最近的字段作为最终条件字段,最后将所述最终查询字段及所述最终条件字段拼接成SQL查询语句,其中,所述拟查询字段及所述拟条件字段均不属于所述表字段中的任意字段;
所述翻译模型用于通过以下操作,从所述自然语言查询语句中提取出拟查询字段及拟条件字段:
对所述自然语言查询语句中每个字段进行向量编码,获取对应的字段向量序列;
对所述字段向量序列中的每个字段向量进行类型标注,其中,所述类型标注包括有效标注和无效标注,所述有效标注包括条件标注、操作符标注、条件值标注及查询字段标注;
将所述查询字段标注对应的字段设为所述拟查询字段,将所述条件标注对应的字段设为所述拟条件字段;
所述对所述字段向量序列中的每个字段向量进行类型标注,包括:
将所述字段向量序列中的每个字段向量输入至预设的CRF矩阵中,所述CRF矩阵中预设有多种字段类型;
针对任一字段向量,获取所述CRF矩阵输出的所有字段类型的概率值,并根据概率值最大的字段类型,对该字段向量进行类型标注;
针对类型标注为有效标注且类型标注结果相同的多个字段向量,分别在它们的类型标注结果后面添加后缀标识符,所述后缀标识符为起始标识符或后续标识符;
根据所述起始标识符及所述后续标识符,将所述类型标注为有效标注且类型标注结果相同的多个字段向量进行拼接,得到该类型标注对应的字段。
7.一种计算机设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1-4任一项所述的基于自然语言的数据查询方法的步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理执行时实现如权利要求1-4任一项所述的基于自然语言的数据查询方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011215342.7A CN112182022B (zh) | 2020-11-04 | 2020-11-04 | 基于自然语言的数据查询方法、装置及翻译模型 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011215342.7A CN112182022B (zh) | 2020-11-04 | 2020-11-04 | 基于自然语言的数据查询方法、装置及翻译模型 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112182022A CN112182022A (zh) | 2021-01-05 |
CN112182022B true CN112182022B (zh) | 2024-04-16 |
Family
ID=73917142
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011215342.7A Active CN112182022B (zh) | 2020-11-04 | 2020-11-04 | 基于自然语言的数据查询方法、装置及翻译模型 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112182022B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113064997B (zh) * | 2021-04-22 | 2024-05-07 | 中国平安财产保险股份有限公司 | 基于bert模型的意图分析方法、装置、设备及介质 |
CN113392124B (zh) * | 2021-06-15 | 2024-03-22 | 中国工商银行股份有限公司 | 一种基于结构化语言的数据查询方法及装置 |
CN113886420B (zh) * | 2021-09-29 | 2024-06-25 | 平安国际智慧城市科技股份有限公司 | Sql语句的生成方法、装置、电子设备及存储介质 |
CN114048312B (zh) * | 2021-11-09 | 2024-06-21 | 中国人民银行清算总中心 | 一种自然语言查询任务的模型输入信息处理方法及装置 |
WO2024120610A1 (en) * | 2022-12-06 | 2024-06-13 | Huawei Technologies Co., Ltd. | Devices and methods for generating an sql query based on a natural language query |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109766355A (zh) * | 2018-12-28 | 2019-05-17 | 上海汇付数据服务有限公司 | 一种支持自然语言的数据查询方法和系统 |
CN111259724A (zh) * | 2018-11-30 | 2020-06-09 | 塔塔顾问服务有限公司 | 从图像中提取相关信息的方法和系统及计算机程序产品 |
CN111324631A (zh) * | 2020-03-19 | 2020-06-23 | 成都海天数联科技有限公司 | 一种将查询数据的人类自然语言自动生成sql语句的方法 |
CN111813802A (zh) * | 2020-09-11 | 2020-10-23 | 杭州量之智能科技有限公司 | 一种基于自然语言生成结构化查询语句的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9280535B2 (en) * | 2011-03-31 | 2016-03-08 | Infosys Limited | Natural language querying with cascaded conditional random fields |
-
2020
- 2020-11-04 CN CN202011215342.7A patent/CN112182022B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111259724A (zh) * | 2018-11-30 | 2020-06-09 | 塔塔顾问服务有限公司 | 从图像中提取相关信息的方法和系统及计算机程序产品 |
CN109766355A (zh) * | 2018-12-28 | 2019-05-17 | 上海汇付数据服务有限公司 | 一种支持自然语言的数据查询方法和系统 |
CN111324631A (zh) * | 2020-03-19 | 2020-06-23 | 成都海天数联科技有限公司 | 一种将查询数据的人类自然语言自动生成sql语句的方法 |
CN111813802A (zh) * | 2020-09-11 | 2020-10-23 | 杭州量之智能科技有限公司 | 一种基于自然语言生成结构化查询语句的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112182022A (zh) | 2021-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112182022B (zh) | 基于自然语言的数据查询方法、装置及翻译模型 | |
CN104657439B (zh) | 用于自然语言精准检索的结构化查询语句生成系统及方法 | |
JP6238494B2 (ja) | 文法コンパイル方法、語義解析方法、及び装置 | |
CN109918640B (zh) | 一种基于知识图谱的中文文本校对方法 | |
CN101388012B (zh) | 带有易混淆音识别的拼音检查系统和方法 | |
US8275604B2 (en) | Adaptive pattern learning for bilingual data mining | |
CN109471793B (zh) | 一种基于深度学习的网页自动化测试缺陷定位方法 | |
CN104657440B (zh) | 结构化查询语句生成系统及方法 | |
CN114020768A (zh) | 中文自然语言的sql语句生成模型的构建方法及应用 | |
WO2022179149A1 (zh) | 基于翻译记忆库的机器翻译方法及装置 | |
CN111611452B (zh) | 搜索文本的歧义识别方法、系统、设备及存储介质 | |
CN110765277B (zh) | 一种基于知识图谱的移动端的在线设备故障诊断方法 | |
US9754083B2 (en) | Automatic creation of clinical study reports | |
CN105593845B (zh) | 基于自学排列的排列语料库的生成装置及其方法、使用排列语料库的破坏性表达语素分析装置及其语素分析方法 | |
CN111061882A (zh) | 一种知识图谱构建方法 | |
CN116910086B (zh) | 一种基于自注意力句法感知的数据库查询方法和系统 | |
CN113590784A (zh) | 三元组信息抽取方法、装置、电子设备、及存储介质 | |
CN110084323A (zh) | 端到端语义解析系统及训练方法 | |
CN114564912B (zh) | 一种文档格式智能检查校正方法及系统 | |
CN111859950A (zh) | 一种自动化生成讲稿的方法 | |
CN114860870A (zh) | 一种文本的纠错方法及装置 | |
CN112016299A (zh) | 计算机执行、利用神经网络生成依存句法树的方法及装置 | |
JP6558852B2 (ja) | 節同定装置、方法、及びプログラム | |
CN115115432B (zh) | 基于人工智能的产品信息推荐方法及装置 | |
CN114625759B (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 |