CN111159330B - 一种数据库查询语句的生成方法及装置 - Google Patents
一种数据库查询语句的生成方法及装置 Download PDFInfo
- Publication number
- CN111159330B CN111159330B CN201811312956.XA CN201811312956A CN111159330B CN 111159330 B CN111159330 B CN 111159330B CN 201811312956 A CN201811312956 A CN 201811312956A CN 111159330 B CN111159330 B CN 111159330B
- Authority
- CN
- China
- Prior art keywords
- node
- data
- processed
- clause
- preset
- 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
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库查询语句的生成方法及装置,涉及自然语言处理技术领域,主要目的在于自然语言查询语句准确地转换为数据库可识别的结构化查询语句。本发明主要的技术方案为:将自然语言查询语句进行分词,得到待查询分词;在预置知识图谱中查找与所述待查询分词相匹配的数据节点;将匹配成功的数据节点按照预置优先级提取节点数据,并利用预置规则处理所述节点数据,生成结构化查询子句;按照数据库结构化查询语言的语句规则组装所述结构化查询子句,得到对应所述自然语言查询语句的结构化查询语句。
Description
技术领域
本发明涉及自然语言处理技术领域,尤其涉及一种数据库查询语句的生成方法及装置。
背景技术
随着互联网的不断发展,互联网中包含的信息量也在呈几何倍数的增长。而据统计,互联网中的数据大部分都是存放在数据库中的,所以对数据库进行有效的查询在当代Web数据分析中有着非常重要的地位。然而传统的对数据库的查询需要专业人员深入的理解数据库内部的模式息,并构建出适当的SQL查询语句;对非专业人员来说,由于不具备数据库的专业知识,对于庞大的数据库只能望洋兴叹。
数据库自然语言查询是自然语言理解与数据库技术结合的产物,近年来,作为人工智能中自然语言理解的智能接口技术而受到重视,尤其与汉语的手写体及语音识别的结合研究,具有很高的理论价值与广泛的应用前景。数据库自然语言接口可以使用户直接以日常生活中使用的自然语言提出查询请求,获取数据库中的信息,由系统自动的将其转换为数据库的操作语言,为用户的使用带来极大的方便。
然而,目前的数据库自然语言接口难以达到实用要求的主要原因在于如何准确的将用户输入自然语言搜索语句转化为数据库的操作语言,在国内所研制的多个系统中,所采用的技术包括基于数据库的E-R汉语理解模型、类关系代数逻辑式的中间语言转换、以条件为中心的句型匹配以及多语言组合模板等。这些或者是受限于系统所支持的表达句型有限、或者是受限于系统的词汇量导致的约束范围、歧义、成分省略等问题,使得用户依然无法通过自然语言快速、准确地将所要表达的自然查询语句转换为SQL查询语句。
发明内容
鉴于上述问题,本发明提出了一种数据库查询语句的生成方法及装置,主要目的在于将自然语言查询语句准确地转换为数据库可识别的结构化查询语句。
为达到上述目的,本发明主要提供如下技术方案:
一方面,本发明提供一种数据库查询语句的生成方法,具体包括:
将自然语言查询语句进行分词,得到待查询分词;
在预置知识图谱中查找与所述待查询分词相匹配的数据节点;
将匹配成功的数据节点按照预置优先级提取节点数据,并利用预置规则处理所述节点数据,生成结构化查询子句;
按照数据库结构化查询语言的语句规则组装所述结构化查询子句,得到对应所述自然语言查询语句的结构化查询语句。
另一方面,本发明提供一种数据库查询语句的生成装置,具体包括:
分词单元,用于将自然语言查询语句进行分词,得到待查询分词;
节点匹配单元,用于在预置知识图谱中查找与所述分词单元待查询分词相匹配的数据节点;
数据提取单元,用于将所述节点匹配单元匹配成功的数据节点按照预置优先级提取节点数据;
子句生成单元,用于利用预置规则处理所述数据提取单元提取的节点数据,生成结构化查询子句;
语句组装单元,用于按照数据库结构化查询语言的语句规则组装所述子句生成单元生成的结构化查询子句,得到对应所述自然语言查询语句的结构化查询语句。
另一方面,本发明提供一种存储介质,所述存储介质用于存储的计算机程序,其中,所述计算机程序运行时控制所述存储介质所在设备执行上述的数据库查询语句的生成方法。
另一方面,本发明提供一种电子设备,所述电子设备中包括处理器和存储器,所述处理器用于调用所述存储器中的程序指令,以执行上述的数据库查询语句的生成方法。
借由上述技术方案,本发明提供的一种数据库查询语句的生成方法及装置,通过使用结构简单的预置知识图谱对用户所使用的自然语言查询语句中的分词进行匹配,并将预置知识图谱中匹配成功的数据节点按照预置优先级提取节点数据,并对应生成结构化查询子句,最终将所有数据节点处理后得到的结构化查询子句组装为完整的一条结构化查询语句,以实现在数据库中查找用户所需的数据。相对现有的数据库自然语言接口技术,本发明在对自然语言查询语句进行翻译转换时,所使用的预置知识图谱是由具有多组键值对的节点所构成的,其结构十分简单,能够实现对待查询分词的快速匹配,同时,对匹配成功的数据节点进行处理时是按照预置优先级,将重要的数据节点优先处理并对应生成结构化查询子句,以确保最终翻译出的结构化查询语句能够准确地反映用户的查询意图。实现对用户使用的自然语言查询语句进行快速、准确地转换。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提出的一种数据库查询语句的生成方法的流程图;
图2示出了本发明实施例中构建预置知识图谱的方法流程图;
图3示出了本发明实施例中生成结构化查询子句的方法流程图;
图4示出了本发明实施例提出的一种数据库查询语句的生成装置的组成框图;
图5示出了本发明实施例提出的另一种数据库查询语句的生成装置的组成框图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
本发明实施例提供了一种数据库查询语句的生成方法,具体步骤如图1所示,该方法包括:
步骤101、将自然语言查询语句进行分词,得到待查询分词。
一般地,在自然语言处理技术中,对给定的句子进行句法语义分析的过程,包括对句子的分词,词性标记,命名实体识别和链接、句法分析、语义角色识别和多义词消歧等操作。
在本实施例中,对自然语言查询语句进行分词时,可以使用通用的词库进行分词,而对于一些存在专有词汇的自然语言查询语句,也可以使用指定的行业词库对其进行分词,以确保所获取的待查询分词的准确性。
步骤102、在预置知识图谱中查找与待查询分词相匹配的数据节点。
预置知识图谱是通过采集大量的用户查询过的自然语言查询语句,结合数据库中的元数据共同构建的。
该预置知识图谱的结构由大量的数据节点与边构成,其中,数据节点是由自然语言查询语句中的分词以及与其相匹配的元数据所构成,一般的,每个数据节点中的数据包括有多组的键值对(key-value结构的数据对),并且,这些键值对中至少会含有节点类型和节点名称这两组键值对数据。节点类型是根据分词所对应的元数据内容而确定的类型标识,比如可以针对不同的词性(如名词、动词等)标记不同的节点类型,也可以针对不同的操作(如查找、计算、统计等)标记不同的节点类型。而节点名称则一般是以分词为key,以该分词所对应的元数据为value,而两者之间的对应关系则是通过预置规则所确定。而在预置知识图谱中的边则是用于连接数据节点,通过边所连接的数据节点,一般是数据节点所对应的分词词义相近或具有包含关系,其中,边还可以具有方向性,比如,对应分词词义相近的两个数据节点,可以通过双向边连接,而对于分词词义相包含的数据节点,则可以通过单向边连接,比如下位概念的数据节点通过单向边指向上位概念的节点。
需要说明的是,在数据节点中所必须具有的两组键值对数据中,节点名称是关系到后续将自然语言转换为数据库查询语言的具体内容,即用户所要查询数据库中的具体数据内容,而节点类型则是用于确定将分词转换为数据库查询语言中的子句句型以及如何转换。
基于所构建的预置知识图谱,本步骤则是根据所得到的待查询分词在该预置知识图谱中查找各个数据节点的节点名称是否与待查询分词相匹配。具体的匹配方式可以是文字匹配,也可以语义匹配,本实施例中不做限定。
步骤103、将匹配成功的数据节点按照预置优先级提取节点数据,并利用预置规则处理该节点数据,生成结构化查询子句。
由于自然语言查询语句经过分词后,会有许多不具有实际意义的分词,比如一些助词、量词等分词,对于这些分词,在进行翻译时一般不会对数据库查询语言中的语句产生影响,因而,在构建预置知识图谱时,也不会为这些分词构建单独的数据节点,由此,步骤102的匹配结果就有可能存在一些匹配不到数据节点的分词。本实施例中,对于这些不存在匹配数据节点的分词也不再处理。
本步骤所处理的是存在匹配数据节点的待查询分词,具体的,就是提取出匹配成功的数据节点所含有的所有数据内容,即提取数据节点中的多组键值对数据。并且,在提取节点数据时,需要按照各个数据节点的预置优先级,由高到低依次处理。需要说明的是,该预置优先级是在创建各个数据节点时所设置的,比如,可以根据数据节点的节点类型设置优先级数据。
此外,预置规则用于确定结构化查询子句的句型,以及从节点数据中提取指定的数据内容生成结构化查询子句。
需要说明的是,本实施例中,预置规则是与数据节点的节点类型相对应的,也就是说,在处理某一个数据节点时,需要根据该数据节点的节点类型从多个预置规则中确定一个,并根据所确定的预置规则来处理节点数据,从而生成结构化查询子句。
步骤104、按照数据库结构化查询语言的语句规则组装结构化查询子句,得到对应自然语言查询语句的结构化查询语句。
由自然语言查询语句得到的多个分词经匹配后会得到多个对应的数据节点,再对各个数据节点中的节点数据处理后,将会得到多个结构化查询子句。而这些结构化查询子句并不是完整的结构化查询语句,无法执行数据库查询操作,因此,本步骤就是根据所得到的多个结构化查询子句,根据数据库结构化查询语言的语句规则对这些结构化查询子句进行拼装,从而得到一条完成的结构化查询语句。
通过上述实例可见,本发明实施例所提供的一种数据库查询语句的生成方法,可以将自然语言查询语句利用预置知识图谱实时地转换为可在数据库中执行的结构化查询语句。相对于现有的数据库自然语言接口技术的实现方式,本发明使用了结构更为简单的预置知识图谱,通过该图谱可以实现更快速地匹配待查询分词,而对于匹配出的数据节点,则根据不同数据节点的节点类型按照优先级顺序依次处理,生成结构化查询子句,最终将所有得到的结构化查询子句根据数据库结构化查询语言的语句规则组装成完整的一条结构化查询语句。该过程确保了优先处理自然语言查询语句中相对重要的分词,以提升结构化查询语句与自然语言查询语句的语义一致性。让用户能够使用自然语言查询语句实时地对数据库进行操作。
基于图1所示的实施例内容,在本发明实施例所提出的数据库查询语句的生成方法中,使用了预置知识图谱对待查询分词进行匹配,并且,说明了该预置知识图谱具有更为简化的结构,使得查询匹配过程更为简单、快速。因此,本发明将具体说明该预置知识图谱的构建过程,该过程具体如图2所示,包括:
步骤201、将用户进行查询的历史自然语言进行分词,得到对应的历史分词集合。
本步骤的目的是获取大量的语料,即获取大量用户曾经使用过的自然语言查询语句,并对这些语料进行分词,再对得到的历史分词去重后,得到对应的历史分词集合。
步骤202、利用历史分词集合中的历史分词与数据库中的元数据构建预置知识图谱。
具体的,构建预置知识图谱的过程包括:
首先,根据预置策略筛选历史分词集合中的历史分词,得到节点分词。
其中,预置策略用于确定需要创建数据节点的历史分词以及确定所创建数据节点的节点类型。此外,通过该预置策略还可以过滤掉一些无意义或对查询操作不产生影响的分词,如“你”,“我”,“的”等代词、助词等,还有一些不可穷举的分词,如数字、名字等。
第二,以节点分词的内容为节点名称创建图谱节点。
第三,根据图谱节点的节点类型确定该节点所包含的键值对。
第四,利用数据库中的元数据对键值对赋值。
可见,创建图谱节点的过程就是确定预置知识图谱中的一个数据节点内所包含的数据内容的过程,由于上述实施例中已说明每个图谱节点中都包含至少两组的键值对,因此,该创建过程就可以视为确定数据节点含有的键值对过程。
对于一个节点分词而言,首先需要根据该节点分词的内容确定所创建的图谱节点的节点类型,对应的键值对中key为“Type”,value为预设的类型标识,常见类型标识的如:operator,field_name,field_value,table,agg,prep等,需要说明的是,这些类型标识具有优先级标识。而在确定节点类型的同时,还确定了该图谱节点另一组必要的键值对,即节点名称,节点名称中的key为节点分词的内容,value则是对应的元数据,如数据表的表名、字段名、具体的数据值等,而节点分词的内容与元数据的对应关系则是预先设置的。
之后,在确定图谱节点的节点类型后,就可以根据该节点类型确定其所含有的其他键值对的内容,比如,对于field_value类型的节点,根据对应的处理策略还需添加表名对应的键值对。节点类型与数据节点中所包含的键值对的对应关系取决于预先定义的处理策略,对此,本实施例不做展开说明。
最后,利用数据库中的元数据对键值对赋值,即建立图谱节点与数据库中的数据之间的关系。
进一步的,在构建预置知识图谱时,除了创建图谱节点外,还包括创建边,而边的创建,则是在创建图谱节点的过程中实现的,本实施例中一种情况具体为:
根据待创建的图谱节点的节点名称判断该图谱节点是否存在语义近似的已创建图谱节点。该判断可通过自然语言处理技术实现,本实施例中不再详细说明。
若存在语义近似的已创建图谱节点,创建一条单向边指向已创建的图谱节点,同时,停止对该图谱节点中的键值对赋值。
若不存在语义近似的已创建图谱节点,则继续执行图谱节点的创建操作,即执行利用数据库中的元数据对所确定的键值对赋值的操作。
举例说明,假设数据库中有学生基本信息表std_tab,该信息表中所包含字段为:id,name,sex,age,分别代表学生的学号、姓名、性别、年龄,这些信息为数据库的元数据。所采集的用户的一个查询语句是:“15~18岁的女学生”。执行上述的构建预置知识图谱的操作,具体为:将查询语句分词,分为“15”,“~”,“18”,“岁”,“的”,“女学生”,经过筛选,得到的节点分词为“~”、“岁”、“女学生”3个知识节点,即会在图谱中生成3个图谱节点,且每个图谱节点中都包含多个key-value结构的数据对,其中key必须含有Type,Name两种,并且,其他的数据对由Type所确定。基于上述数据库的元数据,所创建的图谱节点如下所示:
对应“~”的图谱节点为:{Type:Operator,Name:~,Operator:>=;<=};
对应“岁”的图谱节点为:{Type:Field_name,Name:岁,Table_name:std_tab,Col_name:age};
对应“女学生”的图谱节点为:{Type:Field_value,Name:女学生,Table_name:std_tab,Col_name:sex,Col_value:0}(注:数据库中用0代表女学生,1代表男学生)。
进一步的,如果从其他用户的查询语句中还存在一个节点分词:“女生”,在创建该图谱节点时,会发现其与图谱节点“女学生”的语义是相同的,此时,将不再对该图谱节点中的键值对赋值,仅保留节点类型与节点名称的数据,即{Type:Field_value,Name:女生},并且,会在该图谱节点与“女学生”的图谱节点之间创建一条单向边,由“女生”指向“女学生”。
通过上述图2的各步骤即可实现对预置知识图谱的构建,而所采集的语料越多,所构建的知识图谱所覆盖的范围也就越大,因此,该预置知识图谱需要不断采集用户的自然语言查询语句进行更新维护,以确保该预置知识图谱中的数据内容的实用性、准确性。
进一步的,针对图1所示实施例中的步骤103,即“将匹配成功的数据节点按照预置优先级提取节点数据,并利用预置规则处理节点数据,生成结构化查询子句”,进行详细说明,具体步骤如图3所示,针对一个节点进行包括:
步骤301、选择预置优先级最高的数据节点为待处理数据节点。
其中,预置优先级是根据数据节点的节点类型所确定的,而当一个自然语言查询语句中具有多个相同预置优先级的数据节点时,所提取的顺序是根据自然语言查询语句中的分词顺序,由先到后确定待处理数据节点。
此外,对于处理多个具有不同预置优先级的数据节点的过程是一个循环过程,每处理完一个待处理数据节点后,会从剩下的多个未处理的数据节点中再确定一个待处理数据节点,执行下述步骤,直至将所有待产选分词所对应的数据节点全部处理。
步骤302、根据待处理数据节点的节点类型确定对应的结构化查询子句的句型。
需要说明的是,节点类型所对应的结构化查询子句的句型并不唯一,也可以是多个。当一个节点类型对应于多个句型时,该待处理数据节点具体使用哪一个句型则需要根据所获取的预置规则进一步确定。
步骤303、判断预置优先级低于待处理数据节点的其他数据节点是否存在与该待处理数据节点相同的结构化查询子句的句型。
本步骤的目的是判断所需要处理的数据节点中是否合并处理,即根据数据节点所对应的结构化查询子句的句型判断。
需要说明的是,由于每个数据节点对应的句型可以是多个,因此,不同节点类型的数据节点也有可能对应相同的结构化查询子句的句型。
经本步骤判断,若存在其他数据节点,则执行步骤304;若不存在其他数据节点,则执行步骤305。
步骤304、提取待处理数据节点和其他数据节点的节点数据,并标记该待处理数据节点和其他数据节点为已处理节点。
其中,其他数据节点的具体数量,本实施例中不做限定。
步骤305、提取待处理数据节点的节点数据,并标记该待处理数据节点为已处理节点。
以上步骤是针对一个待处理数据节点的处理过程,并判断是否存在需要与该待处理数据节点共同处理的其他数据节点,提取对应的节点数据,再处理完一个待处理数据节点后,重复上述步骤,直至将所有待查询分词所匹配出的数据节点全部处理完成。需要说明的是,当存在合并处理的低预置优先级数据节点时,由于其在处理完成后被标记为已处理节点,因此,在根据预置优先级顺序处理该数据节点时,会自动跳过该数据节点不再处理,以确保所有的数据节点不会被重复处理。
步骤306、根据待处理数据节点的节点类型获取预置规则。
其中,该预置规则用于确定结构化查询子句的句型,并将节点数据生成为符合该句型的结构化查询子句。以SQL语言(Structured Query Language,结构化查询语言)为例,SQL语句中的句型至少包括:having子句、group by子句、join子句、where子句、select子句、from子句等。那么,预置规则就是根据所对应的句型,从节点数据中获取生成结构化查询子句所需的数据内容。
需要说明的是,预置规则一般具有多个,并且,预置规则与节点类型的对应关系为,一个节点类型对应唯一的一个预置规则,而一个预置规则可以对应多个节点类型。
步骤307、利用预置规则处理待处理数据节点的节点数据,生成结构化查询子句。
在实际应用中,很少出现由一个节点生成结构化查询子句的情况,大多需要通过对至少两个节点中的数据内容共同生成结构化查询子句,如此可以确保查询语句的语义完整与准确。而至少两个节点的组合方式一般是根据待查询分词在自然语言查询语句中的位置确定的,认为距离越近的,其需要组合处理的概率也越大。
针对上述步骤举例说明,假设用户输入的自然语言查询语句为:“15~18岁的女学生”。根据上述说明,经过分词,以及与预置知识图谱的匹配后,会得到相匹配的3个数据节点,分别为:“~”、“岁”、“女学生”,其中,“~”是Operator类型,“岁”是Field_name类型,“女学生”是Field_value类型,如果节点类型的优先级由高到低的顺序为Field_name,Field_value,Operator,那么,优先处理数据节点“岁”,根据对应关系该数据节点对应的结构化查询子句的句型为where子句,此时,为了确保转换的准确性,将查找能够与该数据节点组合的其他数据节点,因此,将Field_value类型的节点,即“女学生”节点,与“岁”节点组合,用于生成where子句,此时,按照优先级次序处理“女学生”节点,但由于其已被处理过,将跳过该节点,处理Operator类型的数据节点“~”,而其对应的句型也为where子句时,则将该数据节点的数据内容与之前两个节点的数据内容共同生成为一个where子句。最终,得到的where子句为:
Where sex=1 and age>=15 and age<=18
而根据数据库结构化查询语言的语句规则所组装的结构化查询语句为:
Select id From std_tbl Where sex=1 and age>=15 and age<=18
其中,Select id From std_tbl中的“id”、“std_tbl”都是根据预置规则从节点数据中所提取得到的。
通过以上对图1至图3中各步骤的详细说明以及举例,介绍了将自然语言查询语句翻译为数据库查询语句的过程,以及构建预置知识图谱的过程,由此可以看出,本发明所提出的一种数据库查询语句的生成方法,利用所构建的预置知识图谱对用户所输入的自然语言查询语句进行分词、匹配,并获取匹配出的数据节点所记录的数据内容,利用这些数据内容按照预置规则生成结构化查询子句,再根据数据库查询语言的语句规则生成结构化查询语句,进而执行该结构化查询语句以反馈给用户查询结果。该方式通过使用结构简单的预置知识图谱可有效提高自然语言查询语句的实时翻译速度,让用户能够使用自然语言对数据库进行实时查询操作,同时,通过将多个节点共同生成结构化查询子句的方式,也可以将用户查询的语义进行准确的翻译,提高数据库查询语句的翻译准确性。
进一步的,作为对上述图1至图3所示方法的实现,本发明实施例提供了一种数据库查询语句的生成装置,该装置主要用于对自然语言查询语句实时地翻译为数据库可识别的结构化查询语句。为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。该装置如图4所示,具体包括:
分词单元41,用于将自然语言查询语句进行分词,得到待查询分词;
节点匹配单元42,用于在预置知识图谱中查找与所述分词单元41待查询分词相匹配的数据节点;
数据提取单元43,用于将所述节点匹配单元42匹配成功的数据节点按照预置优先级提取节点数据;
子句生成单元44,用于利用预置规则处理所述数据提取单元43提取的节点数据,生成结构化查询子句;
语句组装单元45,用于按照数据库结构化查询语言的语句规则组装所述子句生成单元44生成的结构化查询子句,得到对应所述自然语言查询语句的结构化查询语句。
进一步的,所述预置知识图谱中的数据节点中含有多组键值对数据,每个数据节点中至少含有节点类型和节点名称两组键值对的数据。
进一步的,如图5所示,所述装置还包括:
历史分词获取单元46,用于将用户进行查询的历史自然语言进行分词,得到对应的历史分词集合;
知识图谱构建单元47,用于利用所述历史分词获取单元得到的历史分词集合中的历史分词与数据库中的元数据构建所述预置知识图谱。
进一步的,如图5所示,所述知识图谱构建单元47包括:
分词筛选模块471,用于根据预置策略筛选所述历史分词集合,得到节点分词,所述预置策略用于确定需要创建数据节点的历史分词以及确定所创建数据节点的节点类型;
节点创建模块472,用于以所述分词筛选模块471得到的节点分词的内容为节点名称创建图谱节点;
所述节点创建模块472还用于,根据所述图谱节点的节点类型确定该图谱节点所包含的键值对;
赋值模块473,用于利用所述数据库中的元数据对所述节点创建模块472所确定的键值对赋值。
进一步的,如图5所示,所述知识图谱构建单元47包括:
判断模块474,用于在所述赋值模块472利用所述数据库中的元数据对所述键值对赋值之前,根据所述图谱节点的节点名称判断所述图谱节点是否存在语义近似的已创建图谱节点;
边创建模块475,用于当所述判断模块474确定存在语义近似的已创建图谱节点时,创建一条单向边指向所述已创建图谱节点,停止对所述图谱节点中的键值对赋值;
若所述判断模块474确定不存在语义近似的已创建图谱节点,则所述赋值模块473执行利用所述数据库中的元数据对所述键值对赋值的操作。
进一步的,如图5所示,所述数据提取单元43包括:
节点选择模块431,用于选择预置优先级最高的数据节点为待处理数据节点;
句型确定模块432,用于根据所述节点选择模块431选择的待处理数据节点的节点类型确定对应的结构化查询子句的句型;
句型判断模块433,用于判断预置优先级低于所述待处理数据节点的其他数据节点是否存在与所述句型确定模块432确定的待处理数据节点相同的结构化查询子句的句型;
数据提取模块434,用于当所述句型判断模块确定433存在其他数据节点时,提取所述待处理数据节点和所述其他数据节点的节点数据,并标记所述待处理数据节点和所述其他数据节点为已处理节点;
所述数据提取模块434还用于,当所述句型判断模块433确定不存在其他数据节点时,提取所述待处理数据节点的节点数据,并标记所述待处理数据节点为已处理节点。
进一步的,所述节点选择模块431还用于,选择预置优先级最高的未处理的数据节点为待处理数据节点。
进一步的,如图5所示,所述子句生成单元44包括:
获取模块441,用于根据所述待处理数据节点的节点类型获取所述预置规则,所述预置规则用于确定结构化查询子句的句型,并将所述节点数据转换为符合所述句型的结构化查询子句;
生成模块442,用于利用所述获取模块441得到的预置规则处理所述待处理数据节点和所述其他数据节点的节点数据,生成所述结构化查询子句。
进一步的,在数据库结构化查询语言中,所述结构化查询子句的句型至少包括:having子句、group by子句、join子句、where子句、select子句、from子句。
进一步的,本发明实施例还提供了一种存储介质,该存储介质用于存储的计算机程序,其中,所述计算机程序运行时控制所述存储介质所在设备执行上述的数据库查询语句的生成方法。
另外,本发明实施例还提供了一种电子设备,所述电子设备中包括处理器和存储器,所述处理器用于调用所述存储器中的程序指令,以执行上述的数据库查询语句的生成方法。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
此外,存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (12)
1.一种数据库查询语句的生成方法,其特征在于,所述方法包括:
将自然语言查询语句进行分词,得到待查询分词;
在预置知识图谱中查找与所述待查询分词相匹配的数据节点,其中,所述预置知识图谱中的数据节点中含有多组键值对数据,每个数据节点中至少含有节点类型和节点名称两组键值对的数据;
将匹配成功的数据节点按照预置优先级提取节点数据,并利用预置规则处理所述节点数据,生成结构化查询子句;
按照数据库结构化查询语言的语句规则组装所述结构化查询子句,得到对应所述自然语言查询语句的结构化查询语句;
所述方法还包括:
将用户进行查询的历史自然语言进行分词,得到对应的历史分词集合;
根据预置策略筛选所述历史分词集合,得到节点分词,所述预置策略用于确定需要创建数据节点的历史分词以及确定所创建数据节点的节点类型;
以所述节点分词的内容为节点名称创建图谱节点;
根据所述图谱节点的节点类型确定该图谱节点所包含的键值对;
根据所述图谱节点的节点名称判断所述图谱节点是否存在语义近似的已创建图谱节点;若存在,创建一条单向边指向所述已创建图谱节点,停止对所述图谱节点中的键值对赋值;若不存在,则执行利用所述数据库中的元数据对所述键值对赋值的操作;
利用所述数据库中的元数据对所述键值对赋值。
2.根据权利要求1所述的方法,其特征在于,所述将匹配成功的数据节点按照预置优先级提取节点数据,具体包括:
选择预置优先级最高的数据节点为待处理数据节点;
根据所述待处理数据节点的节点类型确定对应的结构化查询子句的句型;
判断预置优先级低于所述待处理数据节点的其他数据节点是否存在与所述待处理数据节点相同的结构化查询子句的句型;
若存在,则提取所述待处理数据节点和所述其他数据节点的节点数据,并标记所述待处理数据节点和所述其他数据节点为已处理节点;
若不存在,则提取所述待处理数据节点的节点数据,并标记所述待处理数据节点为已处理节点。
3.根据权利要求1所述的方法,其特征在于,选择预置优先级最高的数据节点为待处理数据节点,具体包括:
选择预置优先级最高的未处理的数据节点为待处理数据节点。
4.根据权利要求1所述的方法,其特征在于,所述利用预置规则处理所述节点数据,生成结构化查询子句,具体包括:
根据待处理数据节点的节点类型获取所述预置规则;
利用所述预置规则处理所述待处理数据节点和其他数据节点的节点数据,生成所述结构化查询子句。
5.根据权利要求1所述的方法,其特征在于,在数据库结构化查询语言中,所述结构化查询子句的句型至少包括:having子句、group by子句、join子句、where子句、select子句、from子句。
6.一种数据库查询语句的生成装置,其特征在于,所述装置包括:
分词单元,用于将自然语言查询语句进行分词,得到待查询分词;
节点匹配单元,用于在预置知识图谱中查找与所述分词单元待查询分词相匹配的数据节点,其中,所述预置知识图谱中的数据节点中含有多组键值对数据,每个数据节点中至少含有节点类型和节点名称两组键值对的数据;
数据提取单元,用于将所述节点匹配单元匹配成功的数据节点按照预置优先级提取节点数据;
子句生成单元,用于利用预置规则处理所述数据提取单元提取的节点数据,生成结构化查询子句;
语句组装单元,用于按照数据库结构化查询语言的语句规则组装所述子句生成单元生成的结构化查询子句,得到对应所述自然语言查询语句的结构化查询语句;
所述装置还包括创建单元,所述创建单元,用于将用户进行查询的历史自然语言进行分词,得到对应的历史分词集合;根据预置策略筛选所述历史分词集合,得到节点分词,所述预置策略用于确定需要创建数据节点的历史分词以及确定所创建数据节点的节点类型;以所述节点分词的内容为节点名称创建图谱节点;根据所述图谱节点的节点类型确定该图谱节点所包含的键值对;根据所述图谱节点的节点名称判断所述图谱节点是否存在语义近似的已创建图谱节点;若存在,创建一条单向边指向所述已创建图谱节点,停止对所述图谱节点中的键值对赋值;若不存在,则执行利用所述数据库中的元数据对所述键值对赋值的操作;利用所述数据库中的元数据对所述键值对赋值。
7.根据权利要求6所述的装置,其特征在于,所述数据提取单元包括:
节点选择模块,用于选择预置优先级最高的数据节点为待处理数据节点;
句型确定模块,用于根据所述节点选择模块选择的待处理数据节点的节点类型确定对应的结构化查询子句的句型;
句型判断模块,用于判断预置优先级低于所述待处理数据节点的其他数据节点是否存在与所述待处理数据节点相同的结构化查询子句的句型;
数据提取模块,用于当所述句型判断模块确定存在其他数据节点时,提取所述待处理数据节点和所述其他数据节点的节点数据,并标记所述待处理数据节点和所述其他数据节点为已处理节点;
所述数据提取模块还用于,当所述句型判断模块确定不存在其他数据节点时,提取所述待处理数据节点的节点数据,并标记所述待处理数据节点为已处理节点。
8.根据权利要求6所述的装置,其特征在于,节点选择模块还用于,选择预置优先级最高的未处理的数据节点为待处理数据节点。
9.根据权利要求6所述的装置,其特征在于,所述子句生成单元包括:
获取模块,用于根据待处理数据节点的节点类型获取所述预置规则,所述预置规则用于确定结构化查询子句的句型,并将所述节点数据转换为符合所述句型的结构化查询子句;
生成模块,用于利用所述获取模块得到的预置规则处理所述待处理数据节点和其他数据节点的节点数据,生成所述结构化查询子句。
10.根据权利要求6所述的装置,其特征在于,在数据库结构化查询语言中,所述结构化查询子句的句型至少包括:having子句、group by子句、join子句、where子句、select子句、from子句。
11.一种存储介质,其特征在于,所述存储介质用于存储计算机程序,其中,所述计算机程序运行时控制所述存储介质所在设备执行权利要求1-5中任意一项所述的数据库查询语句的生成方法。
12.一种电子设备,其特征在于,所述电子设备中包括处理器和存储器,所述处理器用于调用所述存储器中的程序指令,以执行权利要求1-5中任意一项所述的数据库查询语句的生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811312956.XA CN111159330B (zh) | 2018-11-06 | 2018-11-06 | 一种数据库查询语句的生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811312956.XA CN111159330B (zh) | 2018-11-06 | 2018-11-06 | 一种数据库查询语句的生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111159330A CN111159330A (zh) | 2020-05-15 |
CN111159330B true CN111159330B (zh) | 2023-06-20 |
Family
ID=70554359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811312956.XA Active CN111159330B (zh) | 2018-11-06 | 2018-11-06 | 一种数据库查询语句的生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111159330B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111831626A (zh) * | 2020-07-16 | 2020-10-27 | 平安科技(深圳)有限公司 | 数据库逻辑关系的图结构生成方法、数据查询方法及装置 |
CN112347121B (zh) * | 2020-11-02 | 2024-05-28 | 中科曙光南京研究院有限公司 | 一种可配置的自然语言转sql的方法及系统 |
CN112286958B (zh) * | 2020-11-16 | 2024-05-17 | 广州速威智能系统科技有限公司 | 数据库查询表达式的处理方法和系统 |
CN112463798B (zh) * | 2020-12-08 | 2024-05-28 | 中国人寿保险股份有限公司 | 跨数据库数据提取方法、装置、电子设备及存储介质 |
CN112800201B (zh) * | 2021-01-28 | 2023-06-09 | 杭州汇数智通科技有限公司 | 自然语言的处理方法、装置及电子设备 |
CN113495900B (zh) * | 2021-08-12 | 2024-03-15 | 国家电网有限公司大数据中心 | 基于自然语言的结构化查询语言语句获取方法及装置 |
CN113986876A (zh) * | 2021-10-20 | 2022-01-28 | 上海淇玥信息技术有限公司 | 一种开发数据查询管理的方法、装置及电子设备 |
CN114490709B (zh) * | 2021-12-28 | 2023-03-24 | 北京百度网讯科技有限公司 | 文本生成方法、装置、电子设备及存储介质 |
CN115098618A (zh) * | 2022-01-19 | 2022-09-23 | 支付宝(杭州)信息技术有限公司 | 基于自然语言数据进行查询、数据更新的方法及装置 |
CN114936271A (zh) * | 2022-06-27 | 2022-08-23 | 阿里云计算有限公司 | 自然语言转换数据库查询语句的方法、设备及介质 |
CN115080603B (zh) * | 2022-08-16 | 2023-01-17 | 广东省科技基础条件平台中心 | 一种数据库查询语言转换方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510221A (zh) * | 2009-02-17 | 2009-08-19 | 北京大学 | 一种用于信息检索的查询语句分析方法与系统 |
CN104866593A (zh) * | 2015-05-29 | 2015-08-26 | 中国电子科技集团公司第二十八研究所 | 一种基于知识图谱的数据库搜索方法 |
CN106997399A (zh) * | 2017-05-24 | 2017-08-01 | 海南大学 | 一种基于数据图谱、信息图谱、知识图谱和智慧图谱关联架构的分类问答系统设计方法 |
CN107451153A (zh) * | 2016-05-31 | 2017-12-08 | 北京京东尚科信息技术有限公司 | 输出结构化查询语句的方法和装置 |
WO2018149326A1 (zh) * | 2017-02-16 | 2018-08-23 | 阿里巴巴集团控股有限公司 | 一种自然语言问句答案的生成方法、装置及服务器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW476895B (en) * | 2000-11-02 | 2002-02-21 | Semcity Technology Corp | Natural language inquiry system and method |
-
2018
- 2018-11-06 CN CN201811312956.XA patent/CN111159330B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510221A (zh) * | 2009-02-17 | 2009-08-19 | 北京大学 | 一种用于信息检索的查询语句分析方法与系统 |
CN104866593A (zh) * | 2015-05-29 | 2015-08-26 | 中国电子科技集团公司第二十八研究所 | 一种基于知识图谱的数据库搜索方法 |
CN107451153A (zh) * | 2016-05-31 | 2017-12-08 | 北京京东尚科信息技术有限公司 | 输出结构化查询语句的方法和装置 |
WO2018149326A1 (zh) * | 2017-02-16 | 2018-08-23 | 阿里巴巴集团控股有限公司 | 一种自然语言问句答案的生成方法、装置及服务器 |
CN106997399A (zh) * | 2017-05-24 | 2017-08-01 | 海南大学 | 一种基于数据图谱、信息图谱、知识图谱和智慧图谱关联架构的分类问答系统设计方法 |
Non-Patent Citations (3)
Title |
---|
A generic model for Natural Language Interface to Database;B. Sujatha 等;《2016 6th International Advanced Computing Conference 2016 6th International Advanced Computing Conference 2016 IEEE 6th International Conference on Advanced Computing 2016 IEEE 6th International Conference on Advanced Computing 2016 IEEE 6th International Conference on Advanced Computing》;全文 * |
受限领域自然语言数据库查询接口研究;余正涛,樊孝忠,耿增民;昆明理工大学学报(理工版)(04);全文 * |
扩展知识图谱上的实体关系检索;王秋月;覃雄派;曹巍;覃飙;;计算机应用(04);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111159330A (zh) | 2020-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111159330B (zh) | 一种数据库查询语句的生成方法及装置 | |
CN109284363B (zh) | 一种问答方法、装置、电子设备及存储介质 | |
CN104361127B (zh) | 基于领域本体和模板逻辑的多语种问答接口快速构成方法 | |
CN107038207B (zh) | 一种数据查询方法、数据处理方法及装置 | |
CN111291161A (zh) | 法律案件知识图谱查询方法、装置、设备及存储介质 | |
CN107391677B (zh) | 携带实体关系属性的中文通用知识图谱的生成方法及装置 | |
CN107609052A (zh) | 一种基于语义三角的领域知识图谱的生成方法及装置 | |
CN109033314B (zh) | 内存受限情况下的大规模知识图谱的实时查询方法和系统 | |
CN111046656B (zh) | 文本处理方法、装置、电子设备及可读存储介质 | |
CN110097278B (zh) | 一种科技资源智能共享融合训练系统和应用系统 | |
CN108121739B (zh) | 数据收集方法和数据收集系统 | |
CN108664599A (zh) | 智能问答方法、装置、智能问答服务器及存储介质 | |
CN102087669A (zh) | 基于语义关联的智能搜索引擎系统 | |
CN103279458B (zh) | 一种领域本体的构建及实例化方法 | |
CN113190687B (zh) | 知识图谱的确定方法、装置、计算机设备及存储介质 | |
CN105760462A (zh) | 基于关联数据查询的人机交互方法及装置 | |
CN111831794A (zh) | 一种基于知识图谱的综合管廊行业知识问答系统构建方法 | |
CN110909126A (zh) | 一种信息查询方法及装置 | |
CN109063114B (zh) | 能源云平台的异构数据集成方法、装置、终端及存储介质 | |
CN114218472A (zh) | 基于知识图谱的智能搜索系统 | |
CN106202450A (zh) | 一种基于makefile文件依赖的源码分析方法 | |
CN102314464B (zh) | 歌词搜索方法及搜索引擎 | |
CN114625748A (zh) | Sql查询语句的生成方法、装置、电子设备及可读存储介质 | |
CN112507089A (zh) | 一种基于知识图谱的智能问答引擎及其实现方法 | |
CN111831624A (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 |