CN111324631B - 一种将查询数据的人类自然语言自动生成sql语句的方法 - Google Patents
一种将查询数据的人类自然语言自动生成sql语句的方法 Download PDFInfo
- Publication number
- CN111324631B CN111324631B CN202010196066.8A CN202010196066A CN111324631B CN 111324631 B CN111324631 B CN 111324631B CN 202010196066 A CN202010196066 A CN 202010196066A CN 111324631 B CN111324631 B CN 111324631B
- Authority
- CN
- China
- Prior art keywords
- query
- natural language
- condition
- analysis
- aggregation
- 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
-
- 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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2468—Fuzzy queries
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Fuzzy Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Automation & Control Theory (AREA)
- Artificial Intelligence (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种将查询数据的人类自然语言转为sql语句的方法。用户输入自然语句,对语句进行分词及去除停用词,然后进行自动表名解析,如果能获取表名则对分词并去掉停用词后的自然语言与获取到的表名做进一步处理,否则经过模糊匹配后反馈提示信息;获取表名后,根据元数据信息,判断是否多表关联,是则根据关联规则进行查询条件处理,否则直接进行单表查询条件处理;查询条件处理中分别对自然语言进行时间解析处理,并根据元数据信息进行查询字段解析、判断条件解析、级联查询解析、查询聚合解析处理;最后生成查询sql。本发明不需要人员对数据进行标注,减少人力资源的投入,降低人工成本的开支,解决机器学习导致的***不可复用问题。
Description
技术领域
本发明涉及自然语言处理领域,尤其涉及一种将查询数据的人类自然语言自动生成sql语句的方法。
背景技术
随着国家经济的发展,越来越多的***投入使用,产生了大量数据。当非专业用户想浏览数据时,传统方式通常是将数据提前用图表的形式展现出来,并不能进行自由的查询浏览数据。目前市面上的语义转sql方式,通常是通过机器学习,采集大量的标注信息,通过长时间的学习以进行sql语句生成。这中间过程需要人员对大量数据进行标注,并且当新数据或者新***接入时,通常也会再次进行标注以及进行长时间的机器学习,存在训练时间不可控、***不可复用等问题。
发明内容
本发明的目的在于,针对上述问题,提出一种将查询数据的人类自然语言自动生成sql语句的方法,该方法不需要人员对数据进行标注,解决机器学习导致的***不可复用问题。
一种将查询数据的人类自然语言自动生成sql语句的方法,包括以下步骤:S1:用户输入查询数据的自然语句,对所述自然语句进行分词;
S2:将分词后的自然语句去掉停用词,并识别标注名词和否定词;
S3:对名词进行规则拼接,并与构建好的表名元数据信息进行匹配,获取对应表名,如果能获取则进入步骤S4,不能获取则进入步骤S5;
S4:对分词并去掉停用词后的自然语言与获取到的表名做SQL生成处理;
S41:根据表的元数据信息,判断获得的表是否有多表关联,是则对分词并去掉停用词后的自然语言根据关联嵌套规则进行条件解析,否则直接进行单表查询条件解析;
S42:对自然语言进行时间数据解析;
S43:对时间处理后的自然语言进行聚合查询条件解析;
S44:对S2中标注的名词,根据元数据信息,进行查询字段和查询条件字段解析;根据S2中标注获得的否定词,对查询判断条件进行解析;
S45:对查询聚合信息进行解析;
S46:根据表名、字段名、查询条件字段和查询判断条件、聚合信息组装生成sql语句;
S5:对用户输入的自然语言进行模糊查询;
S51:判断是否存在匹配的表名,若没有匹配的表名,则进入反馈提问流程。
进一步的,停用词不包含否定词。
进一步的,条件解析具体为:识别出的名词经过元数据匹配,若找到查询条件字段名同时找到查询值,则认为一个查询条件解析完成;如果匹配无该字段的对应值,则考虑该字段是否为数值型,配合否定词解析和小于、大于等于文字解析数值型查询判断条件,认为一个查询条件解析完成;如果只匹配出了查询值而无查询字段,则自动用元数据中查询值对应的字段作为查询字段,认为一个查询条件解析完成;如果解析出多个并列的查询判断值,所述查询判断值对应一个列名,配合否定词,解析为SQL语言中的in操作或not in操作。
进一步的,时间数据解析具体为:解析找出条件处理后的分词后自然语言中的表示时间的数据信息。
进一步的,反馈提问流程包括以下步骤:判断是否有类似表名,是则给出表名提示,否则根据用户的查询记录得出用户查询频次较高的查询记录,提示用户输入,再进入步骤s1。
进一步的,反馈提问流程还包括一个特殊词汇判断步骤,若存在特殊词汇,则提示输入对应词汇,替换语义语句后,再进入步骤S4。
本发明的有益效果:不需要人员对数据进行标注,减少人力资源的投入,降低人工成本的开支,解决机器学习导致的***不可复用问题。
附图说明
图1是本发明流程框图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图说明本发明的具体实施方式。
一种将查询数据的人类自然语言自动生成sql语句的方法,该方法包括以下步骤:
S1:用户输入查询数据的自然语句,对所述自然语句进行分词;
S2:将分词后的自然语句去掉停用词,并识别标注名词和否定词;
S3:对名词进行规则拼接,并与构建好的表名元数据信息进行匹配,获取对应表名,如果能获取则进入步骤S4,不能获取则进入步骤S5;
S4:对分词并去掉停用词后的自然语言与获取到的表名做SQL生成处理;
S41:根据表的元数据信息,判断获得的表是否有多表关联,是则对分词并去掉停用词后的自然语言根据关联嵌套规则进行条件解析,否则直接进行单表查询条件解析;
其中关联嵌套具体为:基于表的元数据关系构建嵌套查询。例如成都是地址表中地址值字段,但是在销售额表中对应的是地址表的ID字段,那么能做映射。表1展示的是表的元数据具体结构,表2展示的是字段的元数据具体结构。
Table_name | 表名,str |
Mapping_name | 映射名称,str |
Maping_value | 映射值,str |
表1表元数据结构
表2字段元数据结构
如果是多表,则判断是根据元数据构建笛卡尔积,还是根据查询路径图构建多级查询。
笛卡尔积:如果无聚合,多层查询转换为多表的笛卡尔查询。如果有聚合则根据查询路径图,聚合后输出列和外层表的对应列的关系。根据可行的查询路径,解析多层查询。
S42:对条件处理后的在自然语言进行时间处理:首先通过一定方式构建时间触发词词典,如从训练语料或人为经验中总结出触发词词典,然后根据触发词周围的修饰词以及前缀和后缀等成分来构建时间缀词词典,最后通过触发词和缀词的组合来识别时间表达式。以“2019年3月4号”的解释为例,其中“年”、“月”、“日”是触发词,然后再根据触发词前缀“2019”、“3”、“4”等成分即可将该时间描述解释为标准化的时间格式“2019/03/04”。通过以上时间解析过程,可以将查询语句中所有的时间描述统一成标准格式,以待后续数据模型构建。
S43:对时间处理后的自然语言进行聚合处理;
聚合解析:判断聚合条件,目前根据正则表达式判断是否需要进行聚合解析,如当用户输入的自然语言中包含最大、最小、总数、总和、平均值等聚合词汇时,则根据依存关系找出对应的聚合条件。如输入"烟草最大销售额",可以获取到"最大"对应聚合词汇为"max",根据依存关系得知"最大"修饰"销售额",可以得出组成聚合信息"max(销售额)",以待后续sql拼接。
S44:根据表名、字段名、查询条件字段和查询判断条件、聚合信息组装生成查询sql语句;
S5:对用户输入的自然语言进行模糊查询;
S51:判断是否存在匹配的表名,若没有匹配的表名,则进入反馈提问流程。
停用词包含是、为、啊、查询、看、知道等无用词,但不包含不是、非等否定词。
反馈提问流程包括以下步骤:判断是否有类似表名,是则给出表名提示;当没有类似表名时,将会根据用户的查询记录得出用户查询频次较高的查询记录,提示用户输入,再进入步骤s1。
反馈提问流程还包括一个特殊词汇判断步骤,若存在特殊词汇,则提示输入对应词汇,替换语义语句后,再进入步骤S4。
本发明提出的一种将查询数据的人类自然语言自动生成sql语句的方法,不需要人员对数据进行标注,减少人力资源的投入,降低人工成本的开支,解决机器学习导致的***不可复用问题。
以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
Claims (2)
1.一种将查询数据的人类自然语言自动生成sql语句的方法,其特征在于,包括以下步骤:
S1:用户输入查询数据的自然语句,对所述自然语句进行分词;
S2:将分词后的自然语句去掉停用词,并识别标注名词和否定词;
S3:对名词进行规则拼接,并与构建好的表名元数据信息进行匹配,获取对应表名,如果能获取则进入步骤S4,不能获取则进入步骤S5;
S4:对分词并去掉停用词后的自然语言与获取到的表名做SQL生成处理;
S41:根据表的元数据信息,判断获得的表是否有多表关联,是则对分词并去掉停用词后的自然语言根据关联嵌套规则进行条件解析,否则直接进行单表查询条件解析;
关联嵌套规则具体为:基于表的元数据关系构建嵌套查询;如果是多表,则判断是根据元数据构建笛卡尔积,还是根据查询路径图构建多级查询;笛卡尔积:如果无聚合,多层查询转换为多表的笛卡尔查询;如果有聚合则根据查询路径图,聚合后输出列和外层表的对应列的关系;根据可行的查询路径,解析多层查询;
所述条件解析具体为:识别出的名词经过元数据匹配,若找到查询条件字段名同时找到查询值,则认为一个查询条件解析完成;如果匹配无该字段的对应值,则考虑该字段是否为数值型,配合否定词解析和小于、大于等于文字解析数值型查询判断条件,认为一个查询条件解析完成;如果只匹配出了查询值而无查询字段,则自动用元数据中查询值对应的字段作为查询字段,认为一个查询条件解析完成;如果解析出多个并列的查询判断值,所述查询判断值对应一个列名,配合否定词,解析为SQL语言中的in操作或not in操作;
S42:对自然语言进行时间数据解析;所述时间数据解析具体为:解析找出条件处理后的分词后自然语言中的表示时间的数据信息;首先通过一定方式构建时间触发词词典,如从训练语料或人为经验中总结出触发词词典,然后根据触发词周围的修饰词以及前缀和后缀来构建时间缀词词典,最后通过触发词和缀词的组合来识别时间表达式,将查询语句中所有的时间描述统一成标准格式,以待后续数据模型构建;
S43:对时间处理后的自然语言进行聚合查询条件解析;聚合查询条件解析过程:判断聚合条件,目前根据正则表达式判断是否需要进行聚合解析;根据用户输入自然语言中聚合词汇的依存关系找出对应的聚合条件,组成聚合信息,以待后续 sql 拼接;
S44:对S2中标注的名词,根据元数据信息,进行查询字段和查询条件字段解析;根据S2中标注获得的否定词,对查询判断条件进行解析;
S45:对查询聚合信息进行解析;
S46:根据表名、字段名、查询条件字段和查询判断条件、聚合信息组装生成sql语句;
S5:对用户输入的自然语言进行模糊查询;
S51:判断是否存在匹配的表名,若没有匹配的表名,则进入反馈提问流程;
所述反馈提问流程包括以下步骤:判断是否有类似表名,是则给出表名提示,否则根据用户的查询记录得出用户查询频次较高的查询记录,提示用户输入,再进入步骤S1;反馈提问流程还包括一个特殊词汇判断步骤,若存在特殊词汇,则提示输入对应词汇,替换语义语句后,再进入步骤S4。
2.根据权利要求1所述的一种将查询数据的人类自然语言自动生成sql语句的方法,其特征在于,所述停用词不包含否定词。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010196066.8A CN111324631B (zh) | 2020-03-19 | 2020-03-19 | 一种将查询数据的人类自然语言自动生成sql语句的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010196066.8A CN111324631B (zh) | 2020-03-19 | 2020-03-19 | 一种将查询数据的人类自然语言自动生成sql语句的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111324631A CN111324631A (zh) | 2020-06-23 |
CN111324631B true CN111324631B (zh) | 2022-04-22 |
Family
ID=71171640
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010196066.8A Active CN111324631B (zh) | 2020-03-19 | 2020-03-19 | 一种将查询数据的人类自然语言自动生成sql语句的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111324631B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112347121B (zh) * | 2020-11-02 | 2024-05-28 | 中科曙光南京研究院有限公司 | 一种可配置的自然语言转sql的方法及*** |
CN112182022B (zh) * | 2020-11-04 | 2024-04-16 | 北京安博通科技股份有限公司 | 基于自然语言的数据查询方法、装置及翻译模型 |
CN116821168B (zh) * | 2023-08-24 | 2024-01-23 | 吉奥时空信息技术股份有限公司 | 一种改进的基于生成式大语言模型的nl2sql方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102737049A (zh) * | 2011-04-11 | 2012-10-17 | 腾讯科技(深圳)有限公司 | 一种数据库的查询方法和*** |
CN104123346A (zh) * | 2014-07-02 | 2014-10-29 | 广东电网公司信息中心 | 一种结构化数据搜索方法 |
CN107180021A (zh) * | 2016-03-09 | 2017-09-19 | 北京京东尚科信息技术有限公司 | 一种数据处理方法、***及其服务器 |
CN107451153A (zh) * | 2016-05-31 | 2017-12-08 | 北京京东尚科信息技术有限公司 | 输出结构化查询语句的方法和装置 |
CN108108426A (zh) * | 2017-12-15 | 2018-06-01 | 杭州网蛙科技有限公司 | 自然语言提问的理解方法、装置及电子设备 |
JP2018163490A (ja) * | 2017-03-24 | 2018-10-18 | 三菱電機インフォメーションネットワーク株式会社 | アクセス制御装置及びアクセス制御プログラム |
CN109947794A (zh) * | 2019-02-21 | 2019-06-28 | 东华大学 | 一种交互式自然语言查询转换方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10621372B2 (en) * | 2012-05-03 | 2020-04-14 | Salesforce.Com, Inc. | Method and system for generating database access objects |
-
2020
- 2020-03-19 CN CN202010196066.8A patent/CN111324631B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102737049A (zh) * | 2011-04-11 | 2012-10-17 | 腾讯科技(深圳)有限公司 | 一种数据库的查询方法和*** |
CN104123346A (zh) * | 2014-07-02 | 2014-10-29 | 广东电网公司信息中心 | 一种结构化数据搜索方法 |
CN107180021A (zh) * | 2016-03-09 | 2017-09-19 | 北京京东尚科信息技术有限公司 | 一种数据处理方法、***及其服务器 |
CN107451153A (zh) * | 2016-05-31 | 2017-12-08 | 北京京东尚科信息技术有限公司 | 输出结构化查询语句的方法和装置 |
JP2018163490A (ja) * | 2017-03-24 | 2018-10-18 | 三菱電機インフォメーションネットワーク株式会社 | アクセス制御装置及びアクセス制御プログラム |
CN108108426A (zh) * | 2017-12-15 | 2018-06-01 | 杭州网蛙科技有限公司 | 自然语言提问的理解方法、装置及电子设备 |
CN109947794A (zh) * | 2019-02-21 | 2019-06-28 | 东华大学 | 一种交互式自然语言查询转换方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111324631A (zh) | 2020-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109684448B (zh) | 一种智能问答方法 | |
CN111324631B (zh) | 一种将查询数据的人类自然语言自动生成sql语句的方法 | |
US8832147B2 (en) | Relational meta-model and associated domain context-based knowledge inference engine for knowledge discovery and organization | |
US7930322B2 (en) | Text based schema discovery and information extraction | |
US10140333B2 (en) | Trusted query system and method | |
US10706045B1 (en) | Natural language querying of a data lake using contextualized knowledge bases | |
CA2853627C (en) | Automatic creation of clinical study reports | |
US11693855B2 (en) | Automatic creation of schema annotation files for converting natural language queries to structured query language | |
CN115576984A (zh) | 中文自然语言生成sql语句及跨数据库查询方法 | |
CN110795932B (zh) | 基于地质本体的地质报告文本信息提取方法 | |
TWI735380B (zh) | 自然語言處理方法與其計算裝置 | |
WO2020258303A1 (zh) | 语义模型实例化方法、***和装置 | |
US20210073216A1 (en) | Business intelligence system based on artificial intelligence and analysis method thereof | |
CN109522396B (zh) | 一种面向国防科技领域的知识处理方法及*** | |
Cui et al. | Introducing Explorer of Taxon Concepts with a case study on spider measurement matrix building | |
US20070282804A1 (en) | Apparatus and method for extracting database information from a report | |
JP4005343B2 (ja) | 情報検索システム | |
CN112183110A (zh) | 一种基于数据中心的人工智能数据应用***及应用方法 | |
US11544304B2 (en) | System and method for parsing user query | |
US20230044287A1 (en) | Semantics based data and metadata mapping | |
Kiyavitskaya et al. | Applying software analysis technology to lightweight semantic markup of document text | |
CN112818005A (zh) | 结构化数据的搜索方法、装置、设备及存储介质 | |
WO2019142094A1 (en) | System and method for semantic text search | |
Tari et al. | Parse tree database for information extraction | |
CN115168408B (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 |