CN114328823A - 数据库自然语言查询方法及装置、电子设备、存储介质 - Google Patents
数据库自然语言查询方法及装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN114328823A CN114328823A CN202111496150.2A CN202111496150A CN114328823A CN 114328823 A CN114328823 A CN 114328823A CN 202111496150 A CN202111496150 A CN 202111496150A CN 114328823 A CN114328823 A CN 114328823A
- Authority
- CN
- China
- Prior art keywords
- data table
- determining
- connected component
- database
- target
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据库自然语言查询方法及装置、电子设备、存储介质,其中,方法包括:获取待查询的自然语言问题语句,确定问题语句对应的问题向量,然后计算问题向量与数据库中的各个数据表对应的表向量之间的相似度,接着根据相似度确定目标数据表,最后采用自然语言转义模型,从目标数据表中确定问题语句对应的查询结果。通过对数据库中的数据表进行筛选,将筛选出的目标数据表输入到自然语言转义模型中,以得到问题语句对应的查询结果;可以提高数据库自然语言查询过程的计算效率,使得数据库自然语言查询接口可以支持具有数百甚至数千个数据表的大型数据库。
Description
技术领域
本申请涉及数据处理技术领域,特别是涉及数据库自然语言查询方法及装置、电子设备、存储介质。
背景技术
数据库自然语言接口是一种关系型数据库的交互接口,狭义上,数据库自然语言接口是指数据库自然语言查询接口,通过数据库自然语言接口可以使用户直接以日常生活中使用的自然语言提出查询请求,获取数据库中的信息。
随着大数据技术发展,数据库应用的数据规模和复杂性也日益增长。现在有大量的应用使用大型的数据库,其中包含数以千计的数据表,覆盖了数百种子领域。而现有的数据库自然语言接口的数据库自然语言查询方案,受计算效率和现有网络模型表达能力的限制,导致无法支持具有数百个数据表的大型数据库。
发明内容
本申请实施例提供了一种数据库自然语言查询方法及装置、电子设备、存储介质,以解决或部分解决相关技术中数据库自然语言查询方案无法支持大型数据库的问题。
为了解决上述问题,本申请实施例公开了一种数据库自然语言查询方法,所述方法包括:
获取待查询的问题语句;所述问题语句为自然语言语句;
确定所述问题语句对应的问题向量;
计算所述问题向量与数据库中各个数据表对应的表向量之间的相似度;
根据所述相似度确定目标数据表;
采用自然语言转义模型,从所述目标数据表中确定所述问题语句对应的查询结果。
可选地,所述确定所述问题语句对应的问题向量,包括:
采用预训练编码器、注意力池化层以及前馈层依次处理所述问题语句,输出所述问题语句对应的问题向量。
可选地,在计算所述问题向量与数据库中各个数据表对应的表向量之间的相似度之前,所述方法还包括:
获取数据库中的各个数据表;
针对每个所述数据表,采用预训练编码器、注意力池化层以及前馈层依次处理所述数据表,输出所述数据表对应的表向量。
可选地,所述根据所述相似度确定目标数据表,包括:
根据所述数据库中的各个数据表生成所述数据库的模式图;所述模式图中包含多个连通分量,每个所述连通分量包含至少一个数据表;
针对每个所述连通分量,根据所述连通分量中的数据表对应的相似度,确定所述连通分量的连通分量分数;
将所述连通分量分数满足指定条件的连通分量确定为目标连通分量;
从所述目标连通分量包含的数据表中确定目标数据表。
可选地,所述根据所述连通分量中的数据表对应的相似度,确定所述连通分量的分数,包括:
针对所述连通分量中的各个所述数据表,根据所述数据表对应的相似度,确定所述数据表的数据表分数;
从所述连通分量的各个数据表的数据表分数中确定出最大的数据表分数;
将所述最大的数据表分数确定为所述连通分量的连通分量分数。
可选地,所述将所述连通分量分数满足指定条件的连通分量确定为目标连通分量,包括:
根据各个所述连通分量的连通分量分数,对多个所述连通分量进行排序;
将所述连通分量分数最高的、预设数量的连通分量确定为目标连通分量。
可选地,所述从所述目标连通分量包含的数据表中确定目标数据表,包括:
针对每个所述目标连通分量,判断所述目标连通分量中是否存在大于预设分数阈值的数据表分数的数据表;
若是,则将所述目标连通分量中,大于所述预设分数阈值的数据表分数对应的数据表,确定为目标数据表;
若否,则将所述目标连通分量中,最大的数据表分数对应的数据表确定为目标数据表。
本申请实施例还公开了一种数据库自然语言查询装置,所述装置包括:
问题语句获取模块,用于获取待查询的问题语句;所述问题语句为自然语言语句;
问题向量确定模块,用于确定所述问题语句对应的问题向量;
相似度计算模块,用于计算所述问题向量与数据库中各个数据表对应的表向量之间的相似度;
目标数据表确定模块,用于根据所述相似度确定目标数据表;
基于目标数据表查询模块,用于采用自然语言转义模型,从所述目标数据表中确定所述问题语句对应的查询结果。
可选地,所述问题向量确定模块,具体用于采用预训练编码器、注意力池化层以及前馈层依次处理所述问题语句,输出所述问题语句对应的问题向量。
可选地,所述装置还包括:
数据表获取模块,用于获取数据库中的各个数据表;
表向量确定模块,用于针对每个所述数据表,采用预训练编码器、注意力池化层以及前馈层依次处理所述数据表,输出所述数据表对应的表向量。
可选地,所述目标数据表确定模块,包括:
模式图生成模块,用于根据所述数据库中的各个数据表生成所述数据库的模式图;所述模式图中包含多个连通分量,每个所述连通分量包含至少一个数据表;
连通分量分数确定模块,用于针对每个所述连通分量,根据所述连通分量中的数据表对应的相似度,确定所述连通分量的连通分量分数;
目标连通分量确定模块,用于将所述连通分量分数满足指定条件的连通分量确定为目标连通分量;
基于目标连通分量确定目标数据表模块,用于从所述目标连通分量包含的数据表中确定目标数据表。
可选地,所述连通分量分数确定模块,包括:
数据表分数确定模块,用于针对所述连通分量中的各个所述数据表,根据所述数据表对应的相似度,确定所述数据表的数据表分数;
最大数据表分数确定模块,用于从所述连通分量的各个数据表的数据表分数中确定出最大的数据表分数;
基于最大数据表分数确定连通分量分数模块,用于将所述最大的数据表分数确定为所述连通分量的连通分量分数。
可选地,所述目标连通分量确定模块,包括:
连通分量分数排序模块,用于根据各个所述连通分量的连通分量分数,对多个所述连通分量进行排序;
基于排序确定目标连通分量模块,用于将所述连通分量分数最高的、预设数量的连通分量确定为目标连通分量。
可选地,所述基于目标连通分量确定目标数据表模块,包括:
数据表分数判断模块,用于针对每个所述目标连通分量,判断所述目标连通分量中是否存在大于预设分数阈值的数据表分数的数据表;
第一目标数据表确定模块,用于若是,则将所述目标连通分量中,大于所述预设分数阈值的数据表分数对应的数据表,确定为目标数据表;
第二目标数据表确定模块,用于若否,则将所述目标连通分量中,最大的数据表分数对应的数据表确定为目标数据表。
本申请实施例还公开了一种电子设备,包括:处理器;和存储器,其上存储有可执行代码,当所述可执行代码被执行时,使得所述处理器执行如本申请实施例中一个或多个所述的数据库自然语言查询方法。
本申请实施例还公开了一个或多个机器可读介质,其上存储有可执行代码,当所述可执行代码被执行时,使得处理器执行如本申请实施例中一个或多个所述的数据库自然语言查询方法。
与现有技术相比,本申请实施例包括以下优点:
在本申请实施例中,在自然语言处理过程中,尤其是在采用自然语言查询数据库的过程中,可以通过获取待查询的自然语言问题语句,确定问题语句对应的问题向量,然后计算问题向量与数据库中的各个数据表对应的表向量之间的相似度,接着根据相似度确定目标数据表,最后采用自然语言转义模型,从目标数据表中确定问题语句对应的查询结果。通过对数据库中的数据表进行筛选,将筛选出的目标数据表输入到自然语言转义模型中,以得到问题语句对应的查询结果;可以提高数据库自然语言查询过程的计算效率,使得数据库自然语言查询接口可以支持具有数百甚至数千个数据表的大型数据库。
附图说明
图1是本申请实施例中提供的一种数据库自然语言查询方法的步骤流程图;
图2是本申请实施例中提供的计算问题语句和数据表的相似度的流程示意图;
图3是本申请实施例中提供的模式图的示意图;
图4是本申请实施例中提供的一种数据库自然语言查询装置的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
随着大数据技术发展,数据库应用的数据规模和复杂性也日益增长。现在有大量的应用使用大型的数据库,其中包含数以千计的数据表,覆盖了数百种子领域。现有的数据库自然语言查询方法主要有两种:规则方法和神经网络方法。
其中,规则方法是先将用户输入的自然语言问题语句转化为语法树,再根据预先定义的规则和语言学知识(如知识图谱),将语法树中的节点转化为对应的SQL(StructuredQuery Language,结构化查询语言)语句中的成分。最后再根据预先定义的人工规则将不同SQL成分组装成完整的SQL语句。在将语法树节点转化为SQL成分的过程中,需要比较一个节点和数据库中所有数据表和列的相似性,当数据表的数量过多时,此方法的计算速率非常缓慢。另外,由于常用的相似性计算方法很难完整表示词的语义,因此该方法的准确率较低,且难以支持多样的提问方式。
而现有技术中的神经网络方法,通常是将自然语言问题语句和数据库中所有的数据表的表名和列名同时输入到一个神经网络模型中。然而,由于计算效率和现有网络模型表达能力的限制,该神经网络方法也不支持大型数据库。
对此,本申请实施例提供的数据库自然语言查询方法的核心发明点之一在于,在对自然语言问题语句进行转义之前,从数据库中选出与自然语言问题语句相关的表,从而减少后续输入到自然语言转义模型中的数据表的数量,可以提高计算效率,同时可以实现具有数百甚至数千个数据表的大型数据库的数据库自然语言查询。
参照图1,示出了本申请实施例中提供的一种数据库自然语言查询方法的步骤流程图,具体可以包括如下步骤:
步骤101,获取待查询的问题语句;所述问题语句为自然语言语句。
在本申请实施例中,待查询的问题语句一般是指用户采用自然语言输入的、用于获取数据库中相关信息的语句。其中,自然语言是相对于编程语言等为计算机而设的语言而言的,通常是指一种自然地随文化演化的语言,是人类交流和思维的主要工具。
也就是说,本申请实施例可以获取用户输入的、自然语言形式的问题语句,具体可以获取用户通过文本输入方式输入的问题语句,也可以获取用户通过语音输入方式输入的问题语句,等,本申请对用户输入问题语句的具体方式不作限定。
步骤102,确定所述问题语句对应的问题向量。
在本申请实施例中,当获取到用户输入的自然语言形式的问题语句后,需要将问题语句编码成对应的、计算机能够理解的向量形式,即需要确定问题语句对应的问题向量。
在本申请一可选实施例中,确定问题语句对应的问题向量的过程,包括:
采用预训练编码器、注意力池化层以及前馈层依次处理所述问题语句,输出所述问题语句对应的问题向量。
本实施例采用预训练编码器、注意力池化层以及前馈层依次处理问题语句,得到问题语句对应的问题向量,具体可以是,将问题语句按照特定的格式输入到预训练编码器中,然后将预训练编码器基于该问题语句的输出作为注意力池化层的输入,接着将注意力池化层的输出作为前馈层的输入,最后将前馈层的输出结果,作为问题语句对应的问题向量。
其中,预训练编码器可以是BERT(Bidirectional Encoder Representationsfrom Transformers,一种基于大规模语料预训练的,将句子或文章中的词表示成向量的方法),也可以是其他的预训练词向量模型,如word2vec模型、Glove模型、ELMo模型、RoBERTa模型等。
以BERT为例,如图2所示,首先将问题语句的每个词按序连接输入到BERT中,输入序列可以表示为:
[CLS],q_1,q_2,…,q_D,[SEP]
其中,D表示问题语句的长度,即q_1表示问题语句中的第一个词,q_2表示问题语句中的第二个词,q_D表示问题语句中的最后一个词;[CLS]和[SEP]为BERT使用的特殊符号,用于表示输入BERT的问题语句的开头和结尾,即[CLS]放在问题语句的开头,表示即将开始输入问题语句,[SEP]放在问题语句的结尾,表示问题语句输入完毕。
示例性地,当问题语句为“场均得分最高的运动员……?”时,则对应的输入序列表示为:
[CLS],场,均,得分,最高,的,运动员,……,?,[SEP]
问题语句在输入BERT后,可以输出对应的词向量,该词向量可以表示为:
h_([CLS]),h_(q_1),h_(q_2),…,h_(q_D),h_([SEP])
其中,h_()表示的是输入BERT中的各个词对应的向量。
在获取到BERT的输出后,将BERT的输出(即h_([CLS]),h_(q_1),h_(q_2),…,h_(q_D),h_([SEP]))作为注意力池化层的输入,通过注意力池化层中的注意力机制学习问题语句中最重要的若干词,并通过池化机制实现用单个向量表示整个句子。即通过注意力池化层可以输出用以表示整个问题语句的语义信息的向量。注意力池化层输出的向量表示为h_Q。
在获取到注意力池化层的输出后,将注意力池化层的输出(即h_Q)作为前馈层的输入,通过前馈层进行特征提取,输出问题语句对应的最终向量,即问题向量,可以表示为E_Q。
步骤103,计算所述问题向量与数据库中各个数据表对应的表向量之间的相似度。
在本申请实施例中,确定问题语句对应的问题向量和确定数据库中各个数据表对应的表向量的过程可以是相互独立的,因此,可以事先计算好数据库中各个数据表对应的表向量,例如,可以在获取问题语句之前,计算好数据库中各个数据表对应的表向量。本申请实施例通过解耦问题向量和表向量的计算过程,可以提高查询时的效率。
本申请实施例确定数据表对应的表向量的过程,具体可以包括:
获取数据库中的各个数据表;
针对每个所述数据表,采用预训练编码器、注意力池化层以及前馈层依次处理所述数据表,输出所述数据表对应的表向量。
在本实施例中,可以先获取数据库中的各个数据表,包括数据表的表名、数据表中所有列的列名;对每个数据表都采用预训练编码器、注意力池化层以及前馈层依次处理,得到数据表对应的表向量。具体可以是,将数据表按照特定的格式输入到预训练编码器中,然后将预训练编码器基于该数据表的输出作为注意力池化层的输入,接着将注意力池化层的输出作为前馈层的输入,最后将前馈层的输出结果,作为数据表对应的表向量。
其中,预训练编码器、注意力池化层以及前馈层,均可以与前文确定问题语句对应的问题向量过程中采用的预训练编码器、注意力池化层以及前馈层相同。
以BERT为例,如图2所示,首先将数据表的表名和列名按序输入到BERT中,输入序列可以表示为:
[CLS],t_1,t_2,…,t_i,…,t_(K_t),[SEP],c_1^1,c_2^1,…,c_j^1…,c_(K_1)^1,[SEP],…,c_1^i,…,c_(K_i)^i,[SEP],…,c_1^S,c_2^S,…,c_(K_S)^S,[SEP]
其中,t_i表示表名中的第i个词,K_t表示表名的长度,c_j^i表示数据表中第i列的列名中的第j个词,K_i表示第i列的列名长度,K_S表示第S列的列名中的词的个数(即将通用表示K_i的序号角标i替换为S),[CLS]和[SEP]为BERT使用的特殊符号。
示例性地,当数据表的表名为“球员技巧”,且数据表的列名依次为“球员姓名”、“球员年龄”、……、“球员国籍”时,对应的输入序列表示为:
[CLS],球员,技巧,[SEP],球员,姓名,[SEP],球员,年龄,[SEP]……球员,国籍,[SEP]
数据表在输入BERT后,可以输出对应的词向量,该词向量可以表示为:
h_([CLS]),h_(t_1),h_(t_2),…,h_(t_i),…,h_(t_(K_t)),h_([SEP]),h_(c_1^1),h_(c_2^1),…,h_(c_j^1)…,h_(c_(K_1)^1),h_([SEP]),…,h_(c_1^i),…,h_(c_(K_i)^i),h_([SEP]),…,h_(c_1^S),h_(c_2^S),…,h_(c_(K_S)^S),h_([SEP])
其中,h_()表示的是输入BERT中的各个词对应的向量。
在获取到BERT的输出后,将BERT的输出作为注意力池化层的输入,通过注意力池化层中的注意力机制学习问题语句中最重要的若干词,并通过池化机制实现用单个向量表示整个句子。即通过注意力池化层可以输出用以表示整个问题语句的语义信息的向量。注意力池化层输出的向量表示为h_T。
在获取到注意力池化层的输出后,将注意力池化层的输出(即h_T)作为前馈层的输入,通过前馈层进行特征提取,输出数据表对应的最终向量,即表向量,可以表示为E_T。
在确定问题语句对应的问题向量和数据库中各个数据表对应的表向量后,可以计算问题向量与各个表向量之间的相似度。该相似度可以是余弦相似度,也可以是其他相似度,例如皮尔逊相似度、动态时间弯曲、海明距离、欧氏距离等。
在本实施例中,采用训练好的相似度模型计算问题向量和各个表向量的相似度。该相似度模型在训练过程中,可以使用Triplet Loss(一种用于表示学习的度量学习方法)作为相似度模型的学习训练目标,对应的三元组的构建方式如下:
锚点:由于在余弦相似度模型的使用阶段是用户输入的问题语句作为查询,因此构建Triplet Loss时当前参考的样本实例为问题向量,即E_Q;
正实例:数据库中与锚点对应或同类别的样本示例,即数据表的表向量E_T;
负实例:数据库中与锚点无关的样本示例,即无关的表向量,记为E_T^*。
以余弦相似度为例,Triplet Loss构建为:relu(cos(E_Q,E_T^*)-cos〖(E_Q,E_T)+m〗),其中,relu()表示线性整流函数,cos()表示余弦相似度函数。
本实施例中,可以使用任何凸优化算法来实现Triplet Loss的优化,本申请对此不作限定。通过上述训练方式,相似度模型可以更好地解析问题和数据表之间的内在联系,以支持多样的提问方式,并提高准确率。
步骤104,根据所述相似度确定目标数据表。
在本申请实施例中,在获得问题向量和各个表向量的相似度后,可以根据相似度确定用于问题语句查询的目标数据表,以减少查询的数据表的数量,并提高查询的准确性。
在本申请一可选实施例中,上述根据相似度确定目标数据表的过程,具体可以包括:
根据所述数据库中的各个数据表,生成所述数据库的模式图;所述模式图中包含多个连通分量,每个所述连通分量包含至少一个数据表;
针对每个所述连通分量,根据所述连通分量中的数据表对应的相似度,确定所述连通分量的连通分量分数;
将所述连通分量分数满足指定条件的连通分量确定为目标连通分量;
从所述目标连通分量包含的数据表中确定目标数据表。
在本实施例中,先构建数据库的模式图,该模式图为有向图。具体的构建过程可以是,根据数据库中各个数据表的表名以及各个数据表包含的列名确定模式图的节点,即一个数据表的表名对应一个节点,每个数据表包含的各个列名分别对应一个节点。可以理解,模式图中的节点包括两种类型,一种是数据表的表名对应的节点,另一种是数据表的列名对应的节点。针对每个数据表,可以确定该数据表所包含的列名,因此,可以生成从该数据表的表名对应的节点指向其所包含的各个列名对应的节点的有向线段,作为模式图的边。两个数据表如果包含有公共关键字,即一个数据表的表名是另一个数据表的列名,此时,认为这两个数据表包含有公共关键字;可以确定该两个数据表的主外键关系,即确定表名为该公共关键字的数据表是主键表,而列名包含该公共关键字的数据表是外键表,并生成从外键表对应的节点指向主键表对应的节点的有向线段,也作为模式图的边。可以理解,模式图中的边包括两种类型,一种是从表名对应的节点指向该表名对应的数据表包含的列名对应的节点的有向线段,另一种是从外键表对应的节点指向对应的主键表对应的节点的有向线段。
为了使本领域技术人员更好地理解上述数据库模式图,下面结合图3所示的示例进行解释、说明:
假设数据库中有六个数据表,其中,第一个数据表的表名为Skill Scores,包含的列名有passing、dribbling、finishing、player_id;第二个数据表的表名为SoccerPlayer,包含的列名有Skill Scores、age、team_id、player_id、player_name、id、SoccerTeam;第三个数据表的表名为Soccer Team,包含的列名有team_id、team_name、country;第四个数据表的表名为Baseball Team,包含的列名有team_id、team_name;第五个数据表的表名为Baseball Player,包含的列名有Baseball Team、team_id、player_name、birthday、height、player_id、Batting;第六个数据表的表名为Batting,包含的列名有id、player_id、points_won。
根据各个数据表的表名和各个数据表包含的列名可以确定模式图的节点,同时确定从各个数据表的表名对应的节点指向该数据表的各个列名对应的节点的有向线段,并且根据两个二数据表的主外键关系,生成由外键表对应的节点指向主键表对应节点的有向线段。例如,第一个数据表中的表名Skill Scores,同时也是第二个数据表Soccer Player的其中一个列名,因此,可以将第二个数据表Soccer Player的列名Skill Scores对应的节点与第一个数据表的表名Skill Scores对应的节点合并,同时,确定第一个数据表与第二个数据表存在主外键关系,即第一个数据表是主键表,第二个数据表是外键表,生成由第二个数据表的表名对应的节点指向第一个数据表的表名对应节点的有向线段。
构建的模式图中包含多个连通分量,每个所述连通分量包含至少一个数据表;可以理解,同一个连通分量中的数据表存在关联关系。如图3所示的模式图中包含两个连通分量,其中一个连通分量包括表名为Skill Scores、Soccer Player以及Soccer Team这三个数据表;另一个连通分量包括表名为Baseball Team、Baseball Player以及Batting这三个数据表。可见,属于不同连通分量的节点之间不存在连接关系。而同一个连通分量中的任意一个节点都存在至少一个其他节点与该节点连接。由于模式图中,表名对应的节点和该表名对应的数据表中的各个列名对应的节点必然存在连接关系,因此,模式图中对应于同一个数据表的所有节点必然属于同一个连通分量,因此,可以确定一个连通分量包含至少一个数据表。
在确定目标数据表的过程中,可以先确定目标数据表所在的目标连通分量,在确定目标连通分量时,可以根据模式图中的各个连通分量的连通分量分数来确定目标连通分量。即,在本实施例中,在构建好数据库的模式图后,可以确定模式图包含的连通分量,以及每个连通分量包含的数据表,进而根据连通分量包含的数据表对应的相似度,确定各个连通分量的连通分量分数,然后将连通分量分数满足指定条件的连通分量确定为目标连通分量,最后从目标连通分量包含的数据表中确定出目标数据表。
其中,上述根据连通分量中的数据表对应的相似度,确定连通分量的分数的过程,具体可以包括:
针对所述连通分量中的各个所述数据表,根据所述数据表对应的相似度,确定所述数据表的数据表分数;
从所述连通分量的各个数据表的数据表分数中,确定出最大的数据表分数;
将所述最大的数据表分数确定为所述连通分量的连通分量分数。
在本实施例中,通过上述计算的问题向量和各个表向量之间的相似度,可以确定每个数据表对应的相似度,进而将数据表对应的相似度确定为该数据表的数据表分数;对于每个连通分量,可以确定该连通分量中各个数据表的数据表分数,然后,从中确定出最大的数据表分数,将该最大的数据表分数作为该连通分量的连通分量分数。
示例性地,假设一个连通分量包含三个数据表,这三个数据表对应的相似度分别为70%、80%、90%,可以确定这三个数据表的数据表分数分别为70、80、90;其中,最大的数据表分数即为90,因此,该连通分量的连通分量分数为90。
在确定各个连通分量的连通分量分数后,可以根据连通分量分数来确定目标连通分量。可选地,上述将所述连通分量分数满足指定条件的连通分量确定为目标连通分量的过程,具体可以包括:
根据各个所述连通分量的连通分量分数,对多个所述连通分量进行排序;
将所述连通分量分数最高的、预设数量的连通分量确定为目标连通分量。
在本实施例中,在确定各个连通分量的连通分量分数后,可以对各个连通分量分数进行从小到大或从大到小的顺序排序,然后从连通分量分数最高的连通分量开始,选择预设数量的连通分量确定为目标连通分量。其中,预设数量可以根据实际情况设定,例如,预设数量可以为5个。
需要说明的是,本申请确定目标连通分量的方式并不限于上述示例描述的方式,例如,还可以将连通分量分数大于连通分量分数阈值的连通分量确定为目标连通分量,其中,连通分量分数阈值可以根据实际情况预先设定;均属于本申请保护的范围。
在确定目标连通分量后,在一示例中,可以直接将目标连通分量包含的数据表确定为目标数据表。本申请实施例为了提高查询效率,还可以从目标连通分量包含的数据表中进一步筛选出目标数据表,以进一步减少后续输入到自然语言转义模型中的数据表的数量。具体可以包括:
针对每个所述目标连通分量,判断所述目标连通分量中是否存在大于预设分数阈值的数据表分数的数据表;
若是,则将所述目标连通分量中,大于所述预设分数阈值的数据表分数对应的数据表,确定为目标数据表;
若否,则将所述目标连通分量中,最大的数据表分数对应的数据表确定为目标数据表。
在本实施例中,针对确定出的每个目标连通分量,首先判断目标连通分量中是否包括数据表分数大于预设分数阈值的数据表分数的数据表,若是,则将该大于预设分数阈值的数据表分数对应的数据表确定为目标数据表;若否,则将目标连通分量中,最大的数据表分数对应的数据表确定为目标数据表。
继续以上述例举的示例为例,假设一个目标连通分量包含三个数据表,这三个数据表的数据表分数分别为70、80、90;当预设分数阈值为85时,可以确定该目标连通分量中存在数据表分数大于预设分数阈值的数据表,即数据表分数为90的数据表,因此,将该数据表分数为90的数据表确定为目标数据表。当预设分数阈值为95时,可以确定该目标连通分量中不存在数据表分数大于预设分数阈值的数据表,因此,将该目标连通分量中,数据表分数最大的数据表确定为目标数据表,即数据表分数最大的是90,即该数据表分数为90的数据表确定为目标数据表。
需要说明的是,从目标连通分量的数据表中筛选出目标数据表的方式并不限于上述示例描述的方式,例如,还可以先判断目标连通分量包含的总的数据表的数量,但总的数据表的数量超过设定的数量阈值时,则按照各个数据表的数据表分数进行排序,选择数据表分数最高的、与数量阈值对应数量的数据表确定为目标数据表。还可以直接将每个目标连通分量中数据表分数最高的数据表确定为目标数据表,等等;均属于本申请保护的范围。
步骤105,采用自然语言转义模型,从所述目标数据表中确定所述问题语句对应的查询结果
在本实施例中,当确定出目标数据表后,可以将目标数据表和问题语句输入到自然语言转义模型中,该自然语言转义模型可以是现有的数据库自然语言查询方式中的神经网络方法使用的模型,用于将自然语言转成SQL,并用于从输入的目标数据表中,查找出与输入的问题语句对应的查询结果。由于目标数据表是从大型数据库中挑选出来的、较少数量的、且与问题语句相关性最大数据表,因此,在自然语言转义模型查找问题语句对应的查询结果时,既可以提高查询效率,又可以保证准确性,从而实现具有数百甚至数千个数据表的大型数据库的数据库自然语言查询。
可选地,还可以将查询结果反馈给用户。
示例性地,当用户想要查询一个关于球类运动的数据库,数据库包含数百个表涵盖数十个子领域,如足球、篮球、网球等等。每个子领域包含数十个数据表,如球员、队伍、场地、赛事、教练等等。若用户主要关心足球方面的信息,提出了:“场均盘带成功率最高的球员是谁?”的问题;采用本申请实施例提供的数据库自然语言查询方法,可以根据用户输入的问题,从球类运动的数据库中选择出足球相关的数据表,输入到自然语言转义模型中,以从选中的数据表中查询用户问题对应的结果,实现了大型数据库自然语言查询,同时提高了查询效率和准确率。
实际应用中,采用本申请实施例提供的数据库自然语言查询方法可以在80表的数据库(即80个数据表的数据库)中,以93%以上的准确率选择正确的表。在1000表的数据库(即1000个数据表的数据库)中,以90%以上的准确率找出正确的表。每秒可以支持数十条问题的选表,效率高且准确率高。
本申请实施例通过将问题向量和表向量的计算进行解耦,可以在获取待查询的问题语句之前,计算出数据库中各个数据表对应的表向量,以提高查询过程中的计算效率;通过使用Triplet Loss作为相似度模型的学习训练目标、结合构建数据库模式图的方式,得到目标数据表,可以更好地解析问题和数据表之间的内在联系,以支持多样的提问方式,并提高查询的准确率。通过对数据库中的数据表进行筛选,将筛选出的目标数据表输入到自然语言转义模型中,以得到问题语句对应的查询结果;可以提高数据库自然语言查询过程的计算效率,使得数据库自然语言查询接口可以支持具有数百甚至数千个数据表的大型数据库。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图4,示出了本申请的一种数据库自然语言查询装置实施例的结构框图,该装置与上述数据库自然语言查询方法实施例相对应,具体可以包括如下模块:
问题语句获取模块401,用于获取待查询的问题语句;所述问题语句为自然语言语句;
问题向量确定模块402,用于确定所述问题语句对应的问题向量;
相似度计算模块403,用于计算所述问题向量与数据库中各个数据表对应的表向量之间的相似度;
目标数据表确定模块404,用于根据所述相似度确定目标数据表;
基于目标数据表查询模块405,用于采用自然语言转义模型,从所述目标数据表中确定所述问题语句对应的查询结果。
在一种可选实施例中,所述问题向量确定模块402,具体用于采用预训练编码器、注意力池化层以及前馈层依次处理所述问题语句,输出所述问题语句对应的问题向量。
在一种可选实施例中,所述装置还包括:
数据表获取模块,用于获取数据库中的各个数据表;
表向量确定模块,用于针对每个所述数据表,采用预训练编码器、注意力池化层以及前馈层依次处理所述数据表,输出所述数据表对应的表向量。
在一种可选实施例中,所述目标数据表确定模块404,包括:
模式图生成模块,用于根据所述数据库中的各个数据表生成所述数据库的模式图;所述模式图中包含多个连通分量,每个所述连通分量包含至少一个数据表;
连通分量分数确定模块,用于针对每个所述连通分量,根据所述连通分量中的数据表对应的相似度,确定所述连通分量的连通分量分数;
目标连通分量确定模块,用于将所述连通分量分数满足指定条件的连通分量确定为目标连通分量;
基于目标连通分量确定目标数据表模块,用于从所述目标连通分量包含的数据表中确定目标数据表。
在一种可选实施例中,所述连通分量分数确定模块,包括:
数据表分数确定模块,用于针对所述连通分量中的各个所述数据表,根据所述数据表对应的相似度,确定所述数据表的数据表分数;
最大数据表分数确定模块,用于从所述连通分量的各个数据表的数据表分数中确定出最大的数据表分数;
基于最大数据表分数确定连通分量分数模块,用于将所述最大的数据表分数确定为所述连通分量的连通分量分数。
在一种可选实施例中,所述目标连通分量确定模块,包括:
连通分量分数排序模块,用于根据各个所述连通分量的连通分量分数,对多个所述连通分量进行排序;
基于排序确定目标连通分量模块,用于将所述连通分量分数最高的、预设数量的连通分量确定为目标连通分量。
在一种可选实施例中,所述基于目标连通分量确定目标数据表模块,包括:
数据表分数判断模块,用于针对每个所述目标连通分量,判断所述目标连通分量中是否存在大于预设分数阈值的数据表分数的数据表;
第一目标数据表确定模块,用于若是,则将所述目标连通分量中,大于所述预设分数阈值的数据表分数对应的数据表,确定为目标数据表;
第二目标数据表确定模块,用于若否,则将所述目标连通分量中,最大的数据表分数对应的数据表确定为目标数据表。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例还公开了电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的数据库自然语言查询方法的步骤。
本申请实施例还公开了计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的数据库自然语言查询方法的步骤。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种数据库自然语言查询方法及装置、设备和存储介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种数据库自然语言查询方法,其特征在于,所述方法包括:
获取待查询的问题语句;所述问题语句为自然语言语句;
确定所述问题语句对应的问题向量;
计算所述问题向量与数据库中各个数据表对应的表向量之间的相似度;
根据所述相似度确定目标数据表;
采用自然语言转义模型,从所述目标数据表中确定所述问题语句对应的查询结果。
2.根据权利要求1所述的方法,其特征在于,所述确定所述问题语句对应的问题向量,包括:
采用预训练编码器、注意力池化层以及前馈层依次处理所述问题语句,输出所述问题语句对应的问题向量。
3.根据权利要求2所述的方法,其特征在于,在计算所述问题向量与数据库中各个数据表对应的表向量之间的相似度之前,所述方法还包括:
获取数据库中的各个数据表;
针对每个所述数据表,采用预训练编码器、注意力池化层以及前馈层依次处理所述数据表,输出所述数据表对应的表向量。
4.根据权利要求1所述的方法,其特征在于,所述根据所述相似度确定目标数据表,包括:
根据所述数据库中的各个数据表生成所述数据库的模式图;所述模式图中包含多个连通分量,每个所述连通分量包含至少一个数据表;
针对每个所述连通分量,根据所述连通分量中的数据表对应的相似度,确定所述连通分量的连通分量分数;
将所述连通分量分数满足指定条件的连通分量确定为目标连通分量;
从所述目标连通分量包含的数据表中确定目标数据表。
5.根据权利要求4所述的方法,其特征在于,所述根据所述连通分量中的数据表对应的相似度,确定所述连通分量的分数,包括:
针对所述连通分量中的各个所述数据表,根据所述数据表对应的相似度,确定所述数据表的数据表分数;
从所述连通分量的各个数据表的数据表分数中确定出最大的数据表分数;
将所述最大的数据表分数确定为所述连通分量的连通分量分数。
6.根据权利要求5所述的方法,其特征在于,所述将所述连通分量分数满足指定条件的连通分量确定为目标连通分量,包括:
根据各个所述连通分量的连通分量分数,对多个所述连通分量进行排序;
将所述连通分量分数最高的、预设数量的连通分量确定为目标连通分量。
7.根据权利要求6所述的方法,其特征在于,所述从所述目标连通分量包含的数据表中确定目标数据表,包括:
针对每个所述目标连通分量,判断所述目标连通分量中是否存在大于预设分数阈值的数据表分数的数据表;
若是,则将所述目标连通分量中,大于所述预设分数阈值的数据表分数对应的数据表,确定为目标数据表;
若否,则将所述目标连通分量中,最大的数据表分数对应的数据表确定为目标数据表。
8.一种数据库自然语言查询装置,其特征在于,所述装置包括:
问题语句获取模块,用于获取待查询的问题语句;所述问题语句为自然语言语句;
问题向量确定模块,用于确定所述问题语句对应的问题向量;
相似度计算模块,用于计算所述问题向量与数据库中各个数据表对应的表向量之间的相似度;
目标数据表确定模块,用于根据所述相似度确定目标数据表;
基于目标数据表查询模块,用于采用自然语言转义模型,从所述目标数据表中确定所述问题语句对应的查询结果。
9.一种电子设备,其特征在于,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7中任一项所述的数据库自然语言查询方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的数据库自然语言查询方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111496150.2A CN114328823A (zh) | 2021-12-08 | 2021-12-08 | 数据库自然语言查询方法及装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111496150.2A CN114328823A (zh) | 2021-12-08 | 2021-12-08 | 数据库自然语言查询方法及装置、电子设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114328823A true CN114328823A (zh) | 2022-04-12 |
Family
ID=81050592
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111496150.2A Pending CN114328823A (zh) | 2021-12-08 | 2021-12-08 | 数据库自然语言查询方法及装置、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114328823A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114579605A (zh) * | 2022-04-26 | 2022-06-03 | 阿里巴巴达摩院(杭州)科技有限公司 | 表格问答数据处理方法、电子设备及计算机存储介质 |
-
2021
- 2021-12-08 CN CN202111496150.2A patent/CN114328823A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114579605A (zh) * | 2022-04-26 | 2022-06-03 | 阿里巴巴达摩院(杭州)科技有限公司 | 表格问答数据处理方法、电子设备及计算机存储介质 |
CN114579605B (zh) * | 2022-04-26 | 2022-08-09 | 阿里巴巴达摩院(杭州)科技有限公司 | 表格问答数据处理方法、电子设备及计算机存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111415740B (zh) | 问诊信息的处理方法、装置、存储介质及计算机设备 | |
CN102262634B (zh) | 一种自动问答方法及系统 | |
CN101470732B (zh) | 一种辅助词库的生成方法和装置 | |
CN108681574B (zh) | 一种基于文本摘要的非事实类问答答案选择方法及系统 | |
CN112035730B (zh) | 一种语义检索方法、装置及电子设备 | |
CN110188351A (zh) | 语句通顺度及句法评分模型的训练方法及装置 | |
CN108073568A (zh) | 关键词提取方法和装置 | |
CN109947952B (zh) | 基于英语知识图谱的检索方法、装置、设备及存储介质 | |
CN107608960B (zh) | 一种命名实体链接的方法和装置 | |
CN109213925B (zh) | 法律文本搜索方法 | |
CN108717459B (zh) | 一种面向用户评论信息的移动应用缺陷定位方法 | |
CN112328800A (zh) | 自动生成编程规范问题答案的系统及方法 | |
CN106997341A (zh) | 一种创新方案匹配方法、装置、服务器及系统 | |
CN111966810A (zh) | 一种用于问答系统的问答对排序方法 | |
CN112417119A (zh) | 一种基于深度学习的开放域问答预测方法 | |
CN112612875A (zh) | 一种查询词自动扩展方法、装置、设备及存储介质 | |
CN114328823A (zh) | 数据库自然语言查询方法及装置、电子设备、存储介质 | |
CN110750632B (zh) | 一种改进的中文alice智能问答方法及系统 | |
CN112667797A (zh) | 自适应迁移学习的问答匹配方法、系统及存储介质 | |
CN111858860B (zh) | 搜索信息处理方法及系统、服务器、计算机可读介质 | |
CN117131383A (zh) | 一种提高双塔模型搜索精排性能的方法 | |
CN113743539B (zh) | 一种基于深度学习的表格检索方法 | |
CN113468311B (zh) | 一种基于知识图谱的复杂问句问答方法、装置及存储介质 | |
CN109325099A (zh) | 一种自动检索的方法和装置 | |
JP2008282111A (ja) | 類似文書検索方法、プログラムおよび装置 |
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 |