CN109947794A - 一种交互式自然语言查询转换方法 - Google Patents
一种交互式自然语言查询转换方法 Download PDFInfo
- Publication number
- CN109947794A CN109947794A CN201910129037.7A CN201910129037A CN109947794A CN 109947794 A CN109947794 A CN 109947794A CN 201910129037 A CN201910129037 A CN 201910129037A CN 109947794 A CN109947794 A CN 109947794A
- Authority
- CN
- China
- Prior art keywords
- query
- node
- natural language
- database
- clause
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000006243 chemical reaction Methods 0.000 title claims abstract description 24
- 230000002452 interceptive effect Effects 0.000 title claims abstract description 23
- 230000006870 function Effects 0.000 claims abstract description 45
- 238000013507 mapping Methods 0.000 claims abstract description 40
- 230000003993 interaction Effects 0.000 claims abstract description 12
- 238000012216 screening Methods 0.000 claims description 29
- 238000010586 diagram Methods 0.000 claims description 13
- 230000011218 segmentation Effects 0.000 claims description 13
- 230000000750 progressive effect Effects 0.000 claims description 7
- 230000002776 aggregation Effects 0.000 claims description 6
- 238000004220 aggregation Methods 0.000 claims description 6
- 238000012163 sequencing technique Methods 0.000 claims description 5
- 238000012935 Averaging Methods 0.000 claims description 3
- 239000000463 material Substances 0.000 claims description 3
- 238000012545 processing Methods 0.000 claims description 3
- 230000001960 triggered effect Effects 0.000 claims description 3
- 230000008713 feedback mechanism Effects 0.000 abstract description 3
- 206010020850 Hyperthyroidism Diseases 0.000 description 9
- 238000012360 testing method Methods 0.000 description 7
- 238000003745 diagnosis Methods 0.000 description 6
- 102000001554 Hemoglobins Human genes 0.000 description 4
- 108010054147 Hemoglobins Proteins 0.000 description 4
- 238000007689 inspection Methods 0.000 description 3
- PEDCQBHIVMGVHV-UHFFFAOYSA-N Glycerine Chemical compound OCC(O)CO PEDCQBHIVMGVHV-UHFFFAOYSA-N 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001575 pathological effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 238000001356 surgical procedure Methods 0.000 description 2
- 229930091371 Fructose Natural products 0.000 description 1
- RFSUNEUAIZKAJO-ARQDHWQXSA-N Fructose Chemical compound OC[C@H]1O[C@](O)(CO)[C@@H](O)[C@@H]1O RFSUNEUAIZKAJO-ARQDHWQXSA-N 0.000 description 1
- 239000005715 Fructose Substances 0.000 description 1
- 208000001647 Renal Insufficiency Diseases 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 235000011187 glycerol Nutrition 0.000 description 1
- 230000002631 hypothermal effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 201000006370 kidney failure Diseases 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000002271 resection Methods 0.000 description 1
- 210000001685 thyroid gland Anatomy 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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
技术领域
本发明涉及一种交互式将自然语言查询转换为结构化查询语言SQL的方法,属于大数据处理技术领域。
背景技术
随着数据规模的不断增大和数据开放程度的不断提高,如何提升公众,尤其是非专业人员,使用数据的能力,提供友好方便的查询检索服务,成为有待解决的关键问题。这一问题的研究对于推进我国数据开放进程、推进大数据发展具有重要意义。
目前,关系数据集的标准查询语言为结构化查询语言(Structured QueryLanguage,SQL)。结构化查询语言虽然可以精确表达用户的查询意图,然而书写结构化查询语句需要用户熟练掌握所用的查询语言,并且对数据库中表的结构等较为熟悉。
即使对于专业用户来说,了解复杂专业的查询语言语法尚十分困难,更不用说面向应用的普通用户。另一方面,自然语言是人们表达需求的自然形式。若能将自然语言查询自动转换为SQL,可方便的满足用户的查询需求。然而,自然语言在表达上的模糊性和抽象性与结构化查询语言的准确性、确定性为准确的查询转换带来了极大挑战。一方面,自然语言查询描述往往具有简洁性和模糊性,而SQL将被转换为查询执行计划,包含准确具体的信息,两者之间存在强烈的语义不对等性,直接的一对一转换准确度必然不佳,特别是对于包含子查询等的复杂查询意图直接转换十分困难。更为重要的是,SQL语言适用于确定的查询意图,而对于普通用户来说,并非数据的产生者,不了解数据的前提下很难提前确定查询意图,往往需要复杂的交互式查询才可实现。为此,设计并实现交互式的自然语言查询转换十分必要。
发明内容
本发明要解决的技术问题是:针对用户自然语言描述的查询意图,如何自动将自然语言查询转换为SQL语句,在转换的过程中设计交互函数及结果反馈机制,提升复杂查询转换的准确度和高效性,提升非数据库专业用户访问数据的便利程度。
为了解决上述技术问题,本发明的技术方案是提供一种交互式自然语言查询转换方法,其特征在于,包括如下步骤:
步骤1、语义解析;
将用户输入的自然语言查询语句切分成单独的词语,查询语句经过自然语言解析工具解析处理后,得到一棵能表述复杂语义关系的语义依赖树,其中叶子节点为语句中的词汇,而非叶子结点则表示节点间存在语义依赖关系;
步骤2、结点映射;
将语义树中节点映射至对应节点类型,同时将没有意义的分词舍弃;
步骤3、模式匹配;
根据提前存储的数据库结构建立完成映射的节点间的联系,找到表之间的连接关系;
步骤4、生成基础查询的模板Tbq;
步骤5、预定义函数操作;
根据SQL的句法,定义5种函数操作类型,包括选择字段操作、筛选条件操作、分组操作、分组后筛选操作、排序操作;
步骤6、查询交互;
用户以自然语言形式输入添加的操作描述,通过分词和节点映射方法得到映射对,系统将映射对根据定义的语法规则转化为特定函数操作,在前置查询的基础上,进一步转换得到增量查询,通过不断交互迭代,得到最终查询;
步骤7、结果交互;
系统将每一步操作添加的情况返回给用户,用户通过查看转换后的SQL以及该SQL在数据库中执行返回的结果,从一定程度上判断自然语言转化的正确性,包括转化的SQL是否是符合句法的正确SQL以及是否是满足用户语义需求的SQL;通过中间查询结果的交互和反馈,用户能够知道当前查询返回的数据,并据此来进行下一步的添加操作,以渐进式的信息获取模式来辅助用户获取信息。
优选地,所述步骤1中,为确保所用的数据库中特定词汇能正确切分,根据数据库构造相应的辅助语料库,语料库中包含数据库中出现但分词工具会将其切成不止一个词的特殊词汇。
优选地,所述步骤2具体包括:
步骤2.1:将语义树中节点映射至对应节点类型;
首先将语义树上的节点类型进行分类,包括选择节点SN、操作节点ON、逻辑节点LN、函数节点FN、排序节点ODN、分组节点GN、分组后筛选节点 HN、表名节点TN、字段名节点AN和值节点VN,使其对应到SQL中相应的部分;
步骤2.2:对值节点创建“值-属性”倒排索引;
获取数据库中各字段的值,并记录每个值对应的字段,得到倒排列表项集合,按照值的字典序进行排序,得到一级倒排索引,对一级倒排索引进行归类,并用 B+树的数据结构存储索引;
步骤2.3、节点类型映射;
对于分词结果,先判断该词是不是枚举类型节点,再判断该词是不是数据库表名或属性名节点,若仍不是,最后判断其是否为值节点;对于值节点,根据基于倒排索引的“值-属性”映射方法查找得到值所对应的字段,建立值到属性的映射;经过节点映射阶段,确定每个分词的节点类型以及查询所涉及的数据表。
优选地,所述步骤3具体包括:
步骤3.1:提取并存储所用数据库的结构,定义数据库模式图DSG,用于表示各表拥有的主键、字段以及表与表之间主外键的连接关系;
DSG表示为:其中,表示数据库概念的集合,由两部分组成,数据库中表名节点和属性节点同样的,表示概念间的关系,包括从属关系边和主外键关系边两种类型,由表名指向该表所包含的字段由字段指向表名用于表示两个表之间存在主外键关系,而该字段为所指向表的外键;
步骤3.2、获取当前查询的模式图
默认原始DSG的每条边的权重为0,对于一个查询的节点映射对集合,当某字段出现时,为指向该字段的从属关系边设权重为1;当出现两个及以上表时,将表间的主外键关系边设权重为1;若出现两个表之间的连接需要第三个表作为中介,则将中介表相应的连接边也设其权重为1,根据权重为1的边得到当前查询对应的模式图并根据此图来生成基础查询Basic-query。
优选地,所述步骤4中,基础查询的模板Tbq见表1;
表1基础查询模板
表1中,tablei表示数据库中表名,tablei.PKey表示tablei的连接字段。
根据步骤3生成的确定From子句后查询所涉及的表,而Where字句中,根据查询结构图中的主外键边得到表之间的Join关系,生成基础查询 Basic-query。
优选地,所述步骤5具体包括:
步骤5.1、定义选择字段操作:Select(F||Func(F),Pre_Q);
在前置查询Pre_Q的基础上,添加选择的字段F或者对字段F的聚合操作结果Func(F),Func(F)操作根据SQL中聚合函数分为:SUM()求和函数,COUNT() 计数函数,MAX()最大值函数,MIN()最小值函数和AVG()求平均函数;定义如公式(4-1)所示选择子句(SeleClause)语法规则;
SeleClause=SN+AN|SN+AN+FN|SN+FN+AN (4-1)
步骤5.2、定义筛选条件操作:Filter(F OP value||F OP Sub_Q,Pre_Q);
Where操作分为显性筛选条件和嵌套子查询条件两种,OP表示操作符号, Sub_Q表示嵌套子查询;定义如公式(4-2)所示条件子句(CondClause)语法规则;
CondClause=AN+ON+VN|ON+VN|CondClause
+LN+CondClause|AN+ON+SubQ (4-2)
若Pre_Q中不存在Where子句,添加Where子句以及新得到的筛选条件,若Pre_Q中已经存在Where子句,则直接将新得到的条件添加至原条件的后面,通过逻辑词判断筛选条件以“and”或是“or”的连接;
步骤5.3、定义分组操作:Group by(F,Pre_Q);
在Pre_Q的基础上,添加分组操作,将生成Group by子句,若Pre_Q中不存在Groupby子句,添加Group by()子句,否则,直接添加新的字段至原Group by子句中;定义如公式(4-3)所示分组操作(GroClause)语法规则:
GroClause=AN+GN (4-3);
步骤5.4、定义分组后筛选操作:Having(Fun(F)OP value,Pre_Q);
在Pre_Q的基础上,选择添加分组后的筛选操作,将得到Having子句,添加至Groupby子句后面;考虑常用的带聚合函数的Having子句,value为一个具体的数NUM,定义如公式(4-4)分组后筛选子句(HavingClause)所示语法规则:
HavingClause=HN+FN+AN+ON+NUM (4-4);
步骤5.5、定义排序操作:Order by(F||Func(F),Pre_Q);
对于SQL语法中的排序操作,定义排序函数,在用户输入的交互操作为选择结果按某个字段进行排序时,将触发排序函数,并且排序子句在整个SQL语句的最后,定义如公式(4-5)所示排序操作(OrderClause)语法规则:
OrderClause=ODN+AN+ACS|DESC (4-5)。
本发明提供了一种交互式将自然语言查询转换为结构化查询语言SQL的方法,针对在面向大数据的数据开放共享应用中,非专业用户查询和使用数据库的困难性,以及自然语言在表达上的模糊性和抽象性与结构化查询语言的准确性和确定性存在的语义鸿沟,采用对用户输入的自然语言查询描述进行解析,建立其原义与数据库表与字段的对应关系,生成基础查询,并在此基础上添加函数操作以得到最终查询的方式,将传统自然语言查询接口和交互式查询结合,使得普通用户能通过自然语言描述的方式查询数据库,同时更好地捕捉用户查询意图。通过定义交互函数与结果反馈机制,提升复杂查询转换的准确度和高效性。
附图说明
图1为数据库DSG图;
图2为查询Q对应的模式图
图3为基础查询的模板;
图4为渐进式查询示例图;
图5为渐进式查询结果示意图。
具体实施方式
下面结合具体实施例,进一步阐述本发明。
本实施例提供了一种交互式自然语言查询转换方法,首先对用户输入的自然语言查询描述进行解析,建立其原义与数据库表与字段的对应关系,生成基本查询。在基本查询的基础上,再引入用户交互,用户输入交互函数,系统自动产生新的查询,并向用户返回查询结果。用户可以根据查询结果更新查询。总体步骤如下:
步骤1、语义解析。将用户输入的自然语言查询语句切分成单独的词语。查询语句经过自然语言解析工具解析处理后,得到一棵能表述复杂语义关系的语义依赖树,其中叶子节点为语句中的词汇,而非叶子结点则表示节点间存在语义依赖关系。为确保所用的数据库中特定词汇能正确切分,根据数据库构造相应的辅助语料库,语料库中包含数据库中出现但分词工具会将其切成不止一个词的特殊词汇。例如医疗数据集中存在许多专业医学术语,类似“甲状腺切除术”、“肾功能衰竭”、“甘油果糖针”等,预先对所采用数据集中各字段属性值进行分析,提取专业性较强词语的字段,建立专门的医学词典辅助语料库,提高分词的准确率。对于查询语句Q——查询甲状腺机能亢进的患者中血红蛋白含量偏低的患者,在提前建立辅助语料库后,“甲状腺”、“机能”和“亢进”不会被分成三个词而能被识别为一个专业词汇。查询例句Q经过第一步语义解析后可以得到:查询/甲状腺机能亢进/的/患者/中/血红蛋白/指标/含量/偏低/的/患者。
步骤2、结点映射。将语义树中节点映射至对应节点类型,同时将没有意义的分词如“的”、“中”舍弃。该步骤包括:
步骤2.1、为了更好地从数据库角度理解语义树,将语义树中节点映射至对应节点类型,首先将语义树上的节点类型进行分类,包括选择节点SN、操作节点ON、逻辑节点LN、函数节点FN、排序节点ODN、分组节点GN、分组后筛选节点HN、表名节点TN、字段名节点AN和值节点VN,使其可以对应到SQL 中相应的部分。
步骤2.2、对值节点创建“值-属性”倒排索引。获取数据库中各字段的值,并记录每个值对应的字段,得到倒排列表项集合,按照值的字典序进行排序,得到一级倒排索引,对一级倒排索引进行归类,并用B+树的数据结构存储索引。如:{甲状腺机能亢进->(诊断.ICD名称、病理报告.主要诊断、病理报告.门急诊诊断),白细胞->检验指标.指标名称,3.8778->检验指标.检测结果}。
步骤2.3、节点类型映射。对于分词结果,先判断该词是不是枚举类型节点,再判断该词是不是数据库表名或属性名节点,若仍不是,最后判断其是否为值节点,对于值类型节点,根据基于倒排索引的“值-属性”映射方法查找得到值所对应的字段,建立值到属性的映射。经过节点映射阶段,确定每个分词的节点类型以及查询所涉及的数据表。例如对于步骤1中查询Q的分词结果,可以得到映射对:①查询->Select,②甲状腺机能亢进->就诊.ICD名称,③血红蛋白->检验指标.指标名称,④偏低->检验指标.异常提示,⑤患者->患者基本信息表。其中,①属于枚举关键字映射ValueSN,②③④属于值节点映射ValuevN,⑤属于表名节点映射ValueTN,同时,根据映射结果确定查询涉及患者表基本信息表、就诊表和检验指标表。
步骤3、模式匹配。根据提前存储的数据库结构建立完成映射的节点间的联系,找到表之间的Join连接关系。该步骤包括:
步骤3.1、提取并存储所用数据库的结构,定义数据库模式图DSG(DatabaseSchema Graph),用于表示各表拥有的主键、字段以及表与表之间主外键的连接关系。DSG可以表示为:其中,表示数据库概念的集合,由两部分组成,数据库中表名节点和属性节点同样的,表示概念间的关系,包括从属关系边和主外键关系边两种类型,由表名指向该表所包含的字段由字段指向表名用于表示两个表之间存在主外键关系,而该字段为所指向表的外键。如图1为一个简单数据库的DSG(为使图更简洁清晰,图中各表所包含字段未全部给出)。
步骤3.2、获取当前查询的模式图默认原始DSG的每条边的权重为0,对于一个查询的节点映射对集合,当某字段出现时,为指向该字段的从属关系边设权重为1,当出现两个及以上表时,将表间的主外键关系边设权重为1,若出现两个表之间的连接需要第三个表作为中介,则将中介表相应的连接边也设其权重为1,根据权重为1的边可以得到当前查询对应的模式图并根据此图来生成基础查询Basic-query。例如步骤1中查询Q对应的模式图如图2所示。
步骤4、生成基础查询。基础查询的模板Tbq可见图3。根据步骤3生成的可以确定From子句后查询所涉及的表,而Where字句中,根据查询结构图中的主外键边可以得到表之间的Join关系,生成基础查询Basic-query。
例如查询语句Q根据基础查询模板以及步骤3中生成的图可以得到其对应基础查询:
Select*
From患者表基本信息,就诊,检查报告,检验指标
Where患者表基本信息.医疗卡号=就诊.医疗卡号
And就诊.就诊流水号=检查报告.就诊流水号
And检查报告.报告单号=检验指标.报告单号
步骤5、预定义函数操作。根据SQL的句法,定义5种函数操作类型,包括选择字段操作、筛选条件操作、分组操作、分组后筛选操作、排序操作。该步骤如下:
步骤5.1、定义选择字段操作:Select(F||Func(F),Pre_Q)
在前置查询Pre_Q(即在此查询的基础上添加操作)的基础上,添加选择的字段F或者对字段F的聚合操作结果Func(F),该操作会将选择的字段添加到“Select”字句中,定义如公式4-1所示语法规则。
SeleClause=SN+AN|SN+AN+FN|SN+FN+AN (4-1)
Func(F)操作根据SQL中聚合函数分为:SUM()求和函数,COUNT()计数函数,MAX()最大值函数,MIN()最小值函数和AVG()求平均函数。例如用户输入“选择患者的年龄”,根据分词和节点映射结果,将得到“Select患者基本信息. 年龄”子句。
步骤5.2、定义筛选条件操作:Filter(F OP value||F OP Sub_Q,Pre_Q)
Where操作分为显性筛选条件和嵌套子查询条件两种,OP表示操作符号, Sub_Q表示嵌套子查询。定义如公式4-2所示语法规则。
CondClause=AN+ON+VN|ON+VN|CondClause
+LN+CondClause|AN+ON+SubQ (4-2)
若Pre_Q中不存在Where子句,添加Where子句以及新得到的筛选条件,若Pre_Q中已经存在Where子句,则直接将新得到的条件添加至原条件的后面,通过逻辑词判断筛选条件以“and”或是“or”的连接。例如用户输入“手术名称为双甲次全切术的患者”,可以得到“Where手术.手术名称=双甲次全切术”筛选条件,添加Where子句。
步骤5.3、定义分组操作:Group by(F,Pre_Q)
在Pre_Q的基础上,添加分组操作,将生成Group by子句,若Pre_Q中不存在Groupby子句,添加Group by()子句,否则,直接添加新的字段至原Group by子句中。定义如公式4-3所示语法规则。
GroClause=AN+GN (4-3)
例如用户输入“对科室进行分组”,将得到“Group by(诊断.科室)”子句。
步骤5.4、定义分组后筛选操作:Having(Fun(F)OP value,Pre_Q)
在Pre_Q的基础上,选择添加分组后的筛选操作,将得到Having子句,添加至Groupby子句后面。考虑常用的带聚合函数的Having子句,value为一个具体的数NUM,定义如公式4-4所示语法规则。
HavingClause=HN+FN+AN+ON+NUM (4-4)
例如用户输入“用药超过3种的患者”,可以得到“Having count(用药.药品名称>3)”,并添加至Group by子句后面。
步骤5.5、定义排序操作:Orderby(F||Func(F),Pre_Q)
对于SQL语法中的排序操作,定义排序函数,在用户输入的交互操作为选择结果按某个字段进行排序时,将触发排序函数,并且排序子句在整个SQL语句的最后,定义如公式4-5所示语法规则。
OrderClause=ODN+AN+ACS|DESC (4-5)
例如用户输入“按患者的年龄降序排序”,将得到“Order by患者基本信息. 年龄Desc”子句。
步骤6、查询交互。用户以自然语言形式输入添加的操作描述,通过分词和节点映射方法得到映射对,系统根据定义的语法规则将映射对转化为特定函数操作,在前置查询的基础上,进一步转换得到增量查询,通过不断交互迭代,得到最终查询。例如对于查询语句“查询甲状腺机能亢进的患者中血红蛋白含量偏低的患者姓名”,通过步骤1、步骤2和步骤3可以得到基础查询Pre_Q:
“Select*
From患者表基本信息,就诊,检查报告,检验指标
Where患者表基本信息.医疗卡号=就诊.医疗卡号
And就诊.就诊流水号=检查报告.就诊流水号
And检查报告.报告单号=检验指标.报告单号”
用户通过交互输入添加的操作描述,如“选择患者的姓名”,“筛选ICD名称为甲状腺机能亢进”,“指标名称为血红蛋白”,“异常提示偏低”,可以根据操作的语法规则得到对应选择条件“Select患者表基本信息.姓名”,筛选条件“就诊.ICD名称=‘甲状腺机能亢进’”、“检验指标.指标名称=‘血红蛋白’”和“检验指标.异常提示=‘偏低’”,依次添加至前置查询中,可得到最终查询:
“Select患者表基本信息.姓名
From患者表基本信息,就诊,检查报告,检验指标
Where患者表基本信息.医疗卡号=就诊.医疗卡号
And就诊.就诊流水号=检查报告.就诊流水号
And检查报告.报告单号=检验指标.报告单号
And就诊.ICD名称=‘甲状腺机能亢进’
And检验指标.指标名称=‘血红蛋白’
And检验指标.异常提示=‘偏低’”
步骤7、结果交互。系统可以将每一步操作添加的情况返回给用户,用户通过查看转换后的SQL以及该SQL在数据库中执行返回的结果,从一定程度上判断自然语言转化的正确性,包括转化的SQL是否是符合句法的正确SQL以及是否是满足用户语义需求的SQL。通过中间查询结果的交互和反馈,用户可以知道当前查询返回的数据,并据此来进行下一步的添加操作,以渐进式的信息获取模式来辅助用户获取信息。
例如图4中的渐进式查询示例,用户在得到查询Q1“查询做过甲状腺检甲超过2次的甲亢患者检查记录”的SQL语句后,可以在数据库中执行并返回结果,通过在查询结果上的简单分析,用户可以在该查询上继续添加操作,图3中 Q2和Q3即在Q1的基础上分别添加“检验指标.指标名称=‘TRAB’”以及“检验指标.异常提示=‘异常偏高’”函数操作所得。而图5为Q1、Q2、Q3在系统中执行的部分查询结果,通过结果的交互更好地辅助用户以渐进的方法得到最终想要的查询结果。
以上所述,仅为本发明的较佳实施例,并非对本发明任何形式上和实质上的限制,应当指出,对于本技术领域的普通技术人员,在不脱离本发明方法的前提下,还将可以做出若干改进和补充,这些改进和补充也应视为本发明的保护范围。凡熟悉本专业的技术人员,在不脱离本发明的精神和范围的情况下,当可利用以上所揭示的技术内容而做出的些许更动、修饰与演变的等同变化,均为本发明的等效实施例;同时,凡依据本发明的实质技术对上述实施例所作的任何等同变化的更动、修饰与演变,均仍属于本发明的技术方案的范围内。
Claims (6)
1.一种交互式自然语言查询转换方法,其特征在于,包括如下步骤:
步骤1、语义解析;
将用户输入的自然语言查询语句切分成单独的词语,查询语句经过自然语言解析工具解析处理后,得到一棵能表述复杂语义关系的语义依赖树,其中叶子节点为语句中的词汇,而非叶子结点则表示节点间存在语义依赖关系;
步骤2、结点映射;
将语义树中节点映射至对应节点类型,同时将没有意义的分词舍弃;
步骤3、模式匹配;
根据提前存储的数据库结构建立完成映射的节点间的联系,找到表之间的连接关系;
步骤4、生成基础查询的模板Tbq;
步骤5、预定义函数操作;
根据SQL的句法,定义5种函数操作类型,包括选择字段操作、筛选条件操作、分组操作、分组后筛选操作、排序操作;
步骤6、查询交互;
用户以自然语言形式输入添加的操作描述,通过分词和节点映射方法得到映射对,系统将映射对根据定义的语法规则转化为特定函数操作,在前置查询的基础上,进一步转换得到增量查询,通过不断交互迭代,得到最终查询;
步骤7、结果交互;
系统将每一步操作添加的情况返回给用户,用户通过查看转换后的SQL以及该SQL在数据库中执行返回的结果,从一定程度上判断自然语言转化的正确性,包括转化的SQL是否是符合句法的正确SQL以及是否是满足用户语义需求的SQL;通过中间查询结果的交互和反馈,用户能够知道当前查询返回的数据,并据此来进行下一步的添加操作,以渐进式的信息获取模式来辅助用户获取信息。
2.如权利要求1所述的一种交互式自然语言查询转换方法,其特征在于:所述步骤1中,为确保所用的数据库中特定词汇能正确切分,根据数据库构造相应的辅助语料库,语料库中包含数据库中出现但分词工具会将其切成不止一个词的特殊词汇。
3.如权利要求1所述的一种交互式自然语言查询转换方法,其特征在于:所述步骤2具体包括:
步骤2.1:将语义树中节点映射至对应节点类型;
首先将语义树上的节点类型进行分类,包括选择节点SN、操作节点ON、逻辑节点LN、函数节点FN、排序节点ODN、分组节点GN、分组后筛选节点HN、表名节点TN、字段名节点AN和值节点VN,使其对应到SQL中相应的部分;
步骤2.2:对值节点创建“值-属性”倒排索引;
获取数据库中各字段的值,并记录每个值对应的字段,得到倒排列表项集合,按照值的字典序进行排序,得到一级倒排索引,对一级倒排索引进行归类,并用B+树的数据结构存储索引;
步骤2.3、节点类型映射;
对于分词结果,先判断该词是不是枚举类型节点,再判断该词是不是数据库表名或属性名节点,若仍不是,最后判断其是否为值节点;对于值节点,根据基于倒排索引的“值-属性”映射方法查找得到值所对应的字段,建立值到属性的映射;经过节点映射阶段,确定每个分词的节点类型以及查询所涉及的数据表。
4.如权利要求1所述的一种交互式自然语言查询转换方法,其特征在于:所述步骤3具体包括:
步骤3.1:提取并存储所用数据库的结构,定义数据库模式图DSG,用于表示各表拥有的主键、字段以及表与表之间主外键的连接关系;
DSG表示为:其中,表示数据库概念的集合,由两部分组成,数据库中表名节点和属性节点同样的,表示概念间的关系,包括从属关系边和主外键关系边两种类型,由表名指向该表所包含的字段 由字段指向表名用于表示两个表之间存在主外键关系,而该字段为所指向表的外键;
步骤3.2、获取当前查询的模式图
默认原始DSG的每条边的权重为0,对于一个查询的节点映射对集合,当某字段出现时,为指向该字段的从属关系边设权重为1;当出现两个及以上表时,将表间的主外键关系边设权重为1;若出现两个表之间的连接需要第三个表作为中介,则将中介表相应的连接边也设其权重为1,根据权重为1的边得到当前查询对应的模式图并根据此图来生成基础查询Basic-query。
5.如权利要求1所述的一种交互式自然语言查询转换方法,其特征在于:所述步骤4中,基础查询的模板Tbq见表1;
表1 基础查询模板
根据步骤3生成的确定From子句后查询所涉及的表,而Where字句中,根据查询结构图中的主外键边得到表之间的Join关系,生成基础查询Basic-query。
6.如权利要求1所述的一种交互式自然语言查询转换方法,其特征在于:所述步骤5具体包括:
步骤5.1、定义选择字段操作:Select(F‖Func(F),Pre_Q);
在前置查询Pre_Q的基础上,添加选择的字段F或者对字段F的聚合操作结果Func(F),Func(F)操作根据SQL中聚合函数分为:SUM()求和函数,COUNT()计数函数,MAX()最大值函数,MIN()最小值函数和AVG()求平均函数;定义如公式(4-1)所示语法规则;
SeleClause=SN+AN|SN+AN+FN|SN+FN+AN (4-1)
步骤5.2、定义筛选条件操作:Filter(F OPvalue||F OP Sub_Q,Pre_Q);
Where操作分为显性筛选条件和嵌套子查询条件两种,OP表示操作符号,Sub_Q表示嵌套子查询;定义如公式(4-2)所示语法规则;
CondClause=AN+ON+VN|ON+VN|CondClause+LN+CondClause|AN+ON+SubQ (4-2)
若Pre_Q中不存在Where子句,添加Where子句以及新得到的筛选条件,若Pre_Q中已经存在Where子句,则直接将新得到的条件添加至原条件的后面,通过逻辑词判断筛选条件以“and”或是“or”的连接;
步骤5.3、定义分组操作:Group by(F,Pre_Q);
在Pre_Q的基础上,添加分组操作,将生成Group by子句,若Pre_Q中不存在Group by子句,添加Group by()子句,否则,直接添加新的字段至原Groupby子句中;定义如公式(4-3)所示语法规则:
GroClause=AN+GN (4-3);
步骤5.4、定义分组后筛选操作:Having(Fun(F)OP value,Pre_Q);
在Pre_Q的基础上,选择添加分组后的筛选操作,将得到Having子句,添加至Group by子句后面;考虑常用的带聚合函数的Having子句,value为一个具体的数NUM,定义如公式(4-4)所示语法规则:
HavingClause=HN+FN+AN+ON+NUM (4-4);
步骤5.5、定义排序操作:Order by(F‖Func(F),Pre_Q);
对于SQL语法中的排序操作,定义排序函数,在用户输入的交互操作为选择结果按某个字段进行排序时,将触发排序函数,并且排序子句在整个SQL语句的最后,定义如公式(4-5)所示语法规则:
OrderClause=ODN+AN+ACS|DESC (4-5)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910129037.7A CN109947794B (zh) | 2019-02-21 | 2019-02-21 | 一种交互式自然语言查询转换方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910129037.7A CN109947794B (zh) | 2019-02-21 | 2019-02-21 | 一种交互式自然语言查询转换方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109947794A true CN109947794A (zh) | 2019-06-28 |
CN109947794B CN109947794B (zh) | 2023-09-01 |
Family
ID=67006952
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910129037.7A Active CN109947794B (zh) | 2019-02-21 | 2019-02-21 | 一种交互式自然语言查询转换方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109947794B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111008309A (zh) * | 2019-12-06 | 2020-04-14 | 北京百度网讯科技有限公司 | 查询方法及装置 |
CN111190920A (zh) * | 2019-12-30 | 2020-05-22 | 南京诚勤教育科技有限公司 | 一种基于自然语言的数据交互查询方法及其系统 |
CN111324631A (zh) * | 2020-03-19 | 2020-06-23 | 成都海天数联科技有限公司 | 一种将查询数据的人类自然语言自动生成sql语句的方法 |
CN111414380A (zh) * | 2020-03-20 | 2020-07-14 | 华泰证券股份有限公司 | 一种中文数据库sql语句生成方法、设备及存储介质 |
CN111831626A (zh) * | 2020-07-16 | 2020-10-27 | 平安科技(深圳)有限公司 | 数据库逻辑关系的图结构生成方法、数据查询方法及装置 |
CN112035506A (zh) * | 2019-10-28 | 2020-12-04 | 竹间智能科技(上海)有限公司 | 一种语义识别方法及其设备 |
CN112507098A (zh) * | 2020-12-18 | 2021-03-16 | 北京百度网讯科技有限公司 | 问题处理方法、装置、电子设备、存储介质及程序产品 |
CN114090627A (zh) * | 2022-01-19 | 2022-02-25 | 支付宝(杭州)信息技术有限公司 | 一种数据查询方法及装置 |
CN114138817A (zh) * | 2021-12-03 | 2022-03-04 | 中国建设银行股份有限公司 | 基于关系型数据库的数据查询方法、设备、介质及产品 |
CN115329753A (zh) * | 2022-10-13 | 2022-11-11 | 北京谊慧信息技术有限公司 | 一种基于自然语言处理的智能数据分析方法和系统 |
CN116992888A (zh) * | 2023-09-25 | 2023-11-03 | 天津华来科技股份有限公司 | 基于自然语义的数据分析方法及系统 |
CN118484465A (zh) * | 2024-04-16 | 2024-08-13 | 国网江苏省电力有限公司物资分公司 | 一种自然语言语句生成sql语句的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106293725A (zh) * | 2016-08-04 | 2017-01-04 | 深圳市微我科技有限公司 | 一种基于后实现的自然语言混合编程方法 |
CN107885786A (zh) * | 2017-10-17 | 2018-04-06 | 东华大学 | 面向大数据的自然语言查询接口实现方法 |
CN107943481A (zh) * | 2017-05-23 | 2018-04-20 | 清华大学 | 基于多模型的c语言程序代码规范构造方法 |
CN109241076A (zh) * | 2018-08-01 | 2019-01-18 | 上海依图网络科技有限公司 | 一种数据查询方法及装置 |
-
2019
- 2019-02-21 CN CN201910129037.7A patent/CN109947794B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106293725A (zh) * | 2016-08-04 | 2017-01-04 | 深圳市微我科技有限公司 | 一种基于后实现的自然语言混合编程方法 |
CN107943481A (zh) * | 2017-05-23 | 2018-04-20 | 清华大学 | 基于多模型的c语言程序代码规范构造方法 |
CN107885786A (zh) * | 2017-10-17 | 2018-04-06 | 东华大学 | 面向大数据的自然语言查询接口实现方法 |
CN109241076A (zh) * | 2018-08-01 | 2019-01-18 | 上海依图网络科技有限公司 | 一种数据查询方法及装置 |
Non-Patent Citations (3)
Title |
---|
YUNYAO LI等: "NaLIX: an Interactive Natural Language Interface for Querying XML", 《PROCEEDINGS OF THE 2005 ACM SIGMOD INTERNATIONAL CONFERENCE ON MANAGEMENT OF DATA》 * |
余正涛 等: "受限领域自然语言数据库查询接口研究", 《昆明理工大学学报(理工版)》 * |
蔡怡峰: "基于语义的构件检索系统研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035506A (zh) * | 2019-10-28 | 2020-12-04 | 竹间智能科技(上海)有限公司 | 一种语义识别方法及其设备 |
CN111008309B (zh) * | 2019-12-06 | 2023-08-08 | 北京百度网讯科技有限公司 | 查询方法及装置 |
CN111008309A (zh) * | 2019-12-06 | 2020-04-14 | 北京百度网讯科技有限公司 | 查询方法及装置 |
CN111190920A (zh) * | 2019-12-30 | 2020-05-22 | 南京诚勤教育科技有限公司 | 一种基于自然语言的数据交互查询方法及其系统 |
CN111190920B (zh) * | 2019-12-30 | 2023-09-15 | 南京诚勤教育科技有限公司 | 一种基于自然语言的数据交互查询方法及其系统 |
CN111324631B (zh) * | 2020-03-19 | 2022-04-22 | 成都海天数联科技有限公司 | 一种将查询数据的人类自然语言自动生成sql语句的方法 |
CN111324631A (zh) * | 2020-03-19 | 2020-06-23 | 成都海天数联科技有限公司 | 一种将查询数据的人类自然语言自动生成sql语句的方法 |
CN111414380A (zh) * | 2020-03-20 | 2020-07-14 | 华泰证券股份有限公司 | 一种中文数据库sql语句生成方法、设备及存储介质 |
CN111414380B (zh) * | 2020-03-20 | 2023-06-13 | 华泰证券股份有限公司 | 一种中文数据库sql语句生成方法、设备及存储介质 |
CN111831626A (zh) * | 2020-07-16 | 2020-10-27 | 平安科技(深圳)有限公司 | 数据库逻辑关系的图结构生成方法、数据查询方法及装置 |
CN112507098A (zh) * | 2020-12-18 | 2021-03-16 | 北京百度网讯科技有限公司 | 问题处理方法、装置、电子设备、存储介质及程序产品 |
CN112507098B (zh) * | 2020-12-18 | 2022-01-28 | 北京百度网讯科技有限公司 | 问题处理方法、装置、电子设备、存储介质及程序产品 |
CN114138817A (zh) * | 2021-12-03 | 2022-03-04 | 中国建设银行股份有限公司 | 基于关系型数据库的数据查询方法、设备、介质及产品 |
CN114090627A (zh) * | 2022-01-19 | 2022-02-25 | 支付宝(杭州)信息技术有限公司 | 一种数据查询方法及装置 |
CN114090627B (zh) * | 2022-01-19 | 2022-05-31 | 支付宝(杭州)信息技术有限公司 | 一种数据查询方法及装置 |
CN115329753A (zh) * | 2022-10-13 | 2022-11-11 | 北京谊慧信息技术有限公司 | 一种基于自然语言处理的智能数据分析方法和系统 |
CN116992888A (zh) * | 2023-09-25 | 2023-11-03 | 天津华来科技股份有限公司 | 基于自然语义的数据分析方法及系统 |
CN118484465A (zh) * | 2024-04-16 | 2024-08-13 | 国网江苏省电力有限公司物资分公司 | 一种自然语言语句生成sql语句的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109947794B (zh) | 2023-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109947794B (zh) | 一种交互式自然语言查询转换方法 | |
US5870739A (en) | Hybrid query apparatus and method | |
US5873079A (en) | Filtered index apparatus and method | |
US6167393A (en) | Heterogeneous record search apparatus and method | |
US5884304A (en) | Alternate key index query apparatus and method | |
Comyn-Wattiau et al. | Model driven reverse engineering of NoSQL property graph databases: The case of Neo4j | |
CN109241080B (zh) | 一种fql查询语言的构建使用方法及其系统 | |
CN110674229A (zh) | 一种基于ast的关系型数据库sql表关系分析及展现方法 | |
Shah et al. | NLKBIDB-Natural language and keyword based interface to database | |
CN105760462B (zh) | 基于关联数据查询的人机交互方法及装置 | |
Hu et al. | Natural language question answering over knowledge graph: the marriage of SPARQL query and keyword search | |
CN115080599B (zh) | 一种数据库查询sql字段血缘关系生成方法 | |
CN113326286A (zh) | 一种支持多方言sql血缘解析的语义分析方法 | |
Miller et al. | WordNet―Wikipedia―Wiktionary: Construction of a Three-way Alignment. | |
CN115048407A (zh) | 一种基于自然语言问句的关系型数据库查询方法及终端 | |
CN117290376A (zh) | 基于大语言模型的两阶段Text2SQL模型、方法与系统 | |
CN110119404B (zh) | 一种基于自然语言理解的智能取数系统及其方法 | |
CN117112732A (zh) | 一种基于llm多表自适应选择的nl2sql方法 | |
CN118132579A (zh) | 基于nl2sql的医保智能查询方法及系统 | |
Abdelsalam Maatuk et al. | Semantic enrichment: The first phase of relational database migration | |
Castellanos | Semantic Enrichment of interoperable databases | |
AG Hazber et al. | An approach for generation of SPARQL query from SQL algebra based transformation rules of RDB to ontology | |
CN113221528B (zh) | 基于openEHR模型的临床数据质量评估规则的自动生成与执行方法 | |
Lehmberg | Web table integration and profiling for knowledge base augmentation | |
Kirsten et al. | Metadata management for data integration in medical sciences |
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 |