CN103646032A - 一种基于本体和受限自然语言处理的数据库查询方法 - Google Patents

一种基于本体和受限自然语言处理的数据库查询方法 Download PDF

Info

Publication number
CN103646032A
CN103646032A CN201310556508.5A CN201310556508A CN103646032A CN 103646032 A CN103646032 A CN 103646032A CN 201310556508 A CN201310556508 A CN 201310556508A CN 103646032 A CN103646032 A CN 103646032A
Authority
CN
China
Prior art keywords
database
keyword
node
name
natural language
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
Application number
CN201310556508.5A
Other languages
English (en)
Other versions
CN103646032B (zh
Inventor
漆桂林
崔荣国
张慧
邓波
陆彬
杨成彪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Ke Data Technology Co Ltd
Original Assignee
Individual
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to CN201310556508.5A priority Critical patent/CN103646032B/zh
Publication of CN103646032A publication Critical patent/CN103646032A/zh
Application granted granted Critical
Publication of CN103646032B publication Critical patent/CN103646032B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/243Natural language query formulation

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于本体和受限自然语言处理的数据库查询方法,主要用于处理数据库的自然语言查询问题。本发明将数据库的关系模式转换为对应的本体,根据数据库中的记录构建分词专用词典以及关键词索引,从用户自然语言查询中提取出关键词后,利用本体中的语义信息找到多个关键词的关联,最终将自然语言查询转换为SQL查询。

Description

一种基于本体和受限自然语言处理的数据库查询方法
技术领域
本发明属于语义查询领域,涉及一种基于本体和受限自然语言处理的数据库查询方法。
背景技术
随着互联网的不断发展,互联网中包含的信息量也在呈几何倍数的增长着。而据统计,互联网中的数据有70%以上是存放在数据库中的,所以对数据库进行有效的查询在当代Web数据分析中有着非常重要的地位。然而传统的对数据库的查询需要专业人员深入的理解数据库内部的模式信息,并构建出适当的SQL查询语句;对非专业人员来说,由于不具备数据库的专业知识,对于庞大的数据库只能望洋兴叹。
数据库自然语言查询是自然语言理解与数据库技术结合的产物,近年来,作为人工智能中自然语言理解的智能接口技术而受到重视,尤其与汉语的手写体及语音识别的结合研究,具有很高的理论价值与广泛的应用前景。数据库自然语言接口允许用户通过自然语言对数据库进行各种操作,由***自动的将其转换为数据库的操作语言,为用户的使用带来极大的方便。这里一个很有挑战性的问题是,如何准确的将自然语言搜索语句转化为数据库的操作语言。由于缺乏语料库,传统的基于词性标注和语法分析对数据库的自然语言查询处理的效果很难达到实用的要求。
纵观近年来国内所研制的多个***,所采用的技术主要是基于数据库的E-R汉语理解模型、类关系代数逻辑式的中间语言转换、以条件为中心的句型匹配以及多语言组合模板等。东南大学的CQI***是上世纪90年代国内首次研制成功的基于E-R模型的数据库中文查询接口,但是接口受制于只能使用祈使句型,并且词汇量有限。中国人民大学和香港中文大学所研制成功的Chiql在查询语句结构,词汇量以及自然语言查询转换方面都有了很大的改进,但是用户使用时受限程度依然较大,因此仍然达不到实用的要求。
发明内容
技术问题:本发明提供一种用户友好型,通过用户输入的自然语言就可以自动的生成SQL查询语句,并将查询结果返回给用户的基于本体和自然语言处理的数据库查询方法。
技术方案:本发明的基于本体和自然语言处理的数据库查询方法,首先从数据库的关系模式中抽取出本体,即将关系表抽象成一个具体的类,类与类之间具有继承、等价等关系;关系表中的每一列被抽象为本体中的一个数据类型属性;其次,关系数据库中的外键也被转换为本体中的对象属性。然后,将本体转换成图数据结构,再结合自然语言处理技术对用户输入的自然语言进行分词,构建关键词索引,搜索连接多个关键词的连通图,SQL转换等实现自然语言到SQL(一种数据库查询和程序设计语言)语言的转换。
本发明的基于本体和自然语言处理的数据库查询方法,包括如下步骤:
1)将根据数据库关系模式构建出的本体转换成图数据结构:本体中的类被转换为类结点,数据类型属性被转换为属性结点,属性结点分别有一条连接到它指定的类结点的边,对象属性被转换为连接两个类的边;
2)构建分词专用词典和关键词索引:依次读取数据库中的每一条记录,将读取到的记录值添加到词典中作为用户查询时分词的专用词典,读取出每一条记录时同时将该记录值作为键,将该记录值在数据库中对应的关系表名和列名作为值,组成键值对,存入到非关系型数据库中,作为关键词索引,用于快速定位给定的关键词,提高查询效率;
3)***接收到用户自然语言查询后,利用步骤2)中构建出的专用词典将自然语言分解为多个有意义的关键词;
4)将步骤3)中分解出的关键词逐个地作为键,在关键词索引中查找所对应的值,即找出该关键词所对应的关系表名和列名,然后在步骤1)中生成的图数据结构中找到所有关系表名和列名对应的结点,最后将所有结点对应的连通分量从图数据结构中提取出来,作为查询空间;
5)遍历步骤4)中构建出的查询空间中的连通分量,找到查询空间中能将所有关键词连接起来的所有连通子图,若不能找到任何一个满足条件的连通子图,则找出包含尽可能多的关键词的连通子图,然后将找出的连通子图根据其包含的关键词数从大到小进行排序,对于包含关键词数相同的连通子图,则再根据所包含的边数从小到大进行排序,最后选择排序最靠前的k个连通子图,k的值根据数据库的大小以及搜索得到的所有连通子图个数来确定;
6)将步骤5)中选择的k个连通图按照排序,依次根据如下规则转换成SQL语句:将SQL语句中的Select子句以*填充,用以表示将所有的列全部返回,将连通图中的类结点写入到SQL语句中的From子句中,将连接两个类结点的边转换为外键关系写入到SQL语句中的Where子句中,将用户输入的关键词根据其对应的关系表名和列名写入到SQL语句中的Where字句中;
SQL语句生成后,对数据库进行查询,然后将查询结果返回给用户。
本发明的一个优选方案中,步骤2)中的非关系型数据库采用MongoDB数据库。
有益效果:本发明与现有技术相比,具有以下优点:
本发明方法通过本体存储数据库中关系表之间的语义信息,通过关键词索引快速的构建出查询空间,在搜索空间中找到一条或多条包含所有用户查询关键词的最小连通图,并按照一定的规则将最小连通图转换为SQL查询语句,在此基础上有效的实现语义查询。
本方法中,将用户的自然语言查询分解成多个有意义的关键词,关键词之间的潜在关联是通过搜索对应的图数据结构而挖掘出来的,因此不涉及词性标注和语法分析,也不受限于句型。例如查询“张三的学号”和“学号的张三”,***都将它们分解为关键词“张三”、“学号”,因此两种查询得到的结果是完全一样的。
另外,本方法与传统基于数据库E-R模型的方法不同,提出一种新颖的方法,将从数据库关系模式中抽取出的本体,转换成图数据结构,通过遍历该图数据结构,找到用户查询中包含的关键词对应的连通子图,实现自然语言对数据库的查询。对于一个庞大的数据库,它可以包含数以万计的记录,但是它的关系模式是相对简单的。而且相对于数据来说,关系模式是非常小的,而且数据库中的每一条记录必定有与之对应的关系模式,所以可以把关系模式看成是从数据中抽象出来的统一的标准,数据库中所有的记录都满足该标准。本方法从数据库的关系模式中抽取出本体,将该本体转换成图数据结构,通过关键词索引,从图数据结构中提取所有与关键词对应的连通分量作为查询空间,极大的缩小了搜索的范围,从而大大的提高搜索效率。
本发明采用非关系型数据库存储关键词索引,非关系型数据库存储时结构灵活,不受关系型数据库ACID事务(原子性Atomicity、一致性Consistency、隔离性Isolation、持久性Durability)的约束,存储关键词索引时,相比传统关系型数据库有很强的优势。
经过实例分析证明,利用本发明提出的数据库自然语言查询方法,用户不需要十分了解数据库,也不需要对SQL查询语言有任何的基础,只需要输入自然语言就能实现对数据库的查询。从自然语言到SQL的自动转换过程对用户是完全透明的。本发明是一种用户友好型的方法,通过验证,该方法是完全正确可行的。
附图说明
图1是本发明的基本过程的流程示意图;
图2是本发明查询空间构建流程图;
图3是本发明查询子图搜索算法流程图;
图4是实例的PCDO图数据结构示意图;
图5是实例的查询空间示意图;
图6是实例的PCDO子图示意图。
具体实施方式
以下结合实施例和说明书附图,详细说明本发明的实施过程。
本发明的基于本体和受限自然语言处理的关系数据库查询方法,包括以下6个步骤:
1)本体转PCDO图数据结构:本体(Ontology)是由万维网联盟(W3C)提出的用于描述万维网上各类资源信息的一种规范,本发明中的本体是根据关系数据库的模式信息,按照一定规则构建出来的,用于描述数据库中的各类资源信息,本体构建规则如下:
(a)本体中构建类(class):对于关系数据库中的所有关系表,在本体中分别构建出一个对应的类,类和关系表一一对应;
(b)本体中构建数据类型属性(dataTypeProperty):对于每一张关系表t中的每一列c,在本体中分别构建出一个c对应的数据类型属性,该数据类型属性所属的类即为关系表t所对应的类;
(c)本体中构建对象属性(objectProperty):对于关系数据库中的每一个关联两张关系表t1、t2的外键f,在关系表t1、t2对应的两个类之间,构建出一个f对应的对象属性,该对象属性连接的两个类即为关系表t1、t2对应的类。
本体中仅包含类、对象属性和数据类型属性。为了充分利用本体中的信息,我们提出了PCDO图数据结构(下称PCDO图)。PCDO图主要包含两种子数据结构即结点(Node)和边(Edge)。
结点的数据结构如表1所示:
表1结点的数据结构
Figure BDA0000411827670000051
结点的数据结构中包含Type、Name、Edges、Keyword、Value、KeywordType六个属性。Type属性用于标识结点的类型,结点类型包括类结点(C_Node)和属性结点(P_Node);Name属性用于标识结点的名称;Edges属性用于记录与当前结点相邻的所有的边;Keyword属性、Value属性、KeywordType属性在步骤1)的转换过程中全部置为空,步骤4)中详细描述这三个属性的初始化过程。
边的数据结构如表2所示:
表2边的数据结构
Figure BDA0000411827670000052
边数据结构中包含Type、Name、Node1、Node2四个属性。Type属性用于标识边的类型,边的类型包括数据类型属性边(D_Edge)和对象属性边(O_Edge);Name属性用于标识边的名称;Node1、Node2两个属性用于记录当前边连接的两个结点。因为PCDO图是无向图,所以Node1和Node2两个属性的属性值是可交换的。
本体到PCDO图的转换步骤:
(1)类结点(C_Node)的转换:本体中所有的类分别转换为一个结点,结点的Type属性设置为“C_Node”,结点的Name属性设置为对应类的名称,结点的Edges属性设置为空;
(2)属性结点(P_Node)的转换:本体中所有的数据类型属性分别转换成一个结点,结点的Type属性设置为“P_Node”,结点的Name属性设置为对应的数据类型属性的名称,结点的Edges属性设置为空;
(3)数据类型属性边(D_Edge)的转换:在属性结点P以及该属性结点所属的类结点C之间添加一条边,边的Type属性设置为“D_Edge”,边的Node1、Node2属性分别设置为P、C,数据类型属性边的Name属性设置为“hasProperty”,分别在结点P和结点C的Edges属性中添加当前转换得到的数据类型属性边;
(4)对象属性边(O_Edge)的转换:本体中的所有对象属性分别转换成它连接的两个类结点C1、C2之间的一条边,边的Type属性设置为“O_Edge”,边的Node1、Node2属性分别设置为C1、C2,边的Name属性设置为对应的对象属性的名称,分别在结点C1、C2的Edges属性中添加当前转换得到的对象属性边。
2)构建分词专用词典和关键词索引:
遍历数据库中的所有关系表,依次读取关系表中的每一条记录,将记录值写入到词典中,同时将该记录值作为键,将该记录值在数据库中对应的关系表名和列名作为值,组成键值对,作为关键词索引。本发明的一个优选实施例中,非关系型数据库采用MongoDB数据库,键值对存入到MongoDB数据库中,作为关键词索引。当然,本发明方法并不限于采用MongoDB数据库,所有非关系型(NoSQL)数据库均可在此使用。
键值对的结构及实例如下表3所示。例如“学生”表中“姓名”这一列下有一条记录为“张三”,当读取到“张三”这条记录时,将“张三”作为键(key),TableName属性设置为“张三”对应的关系表名“学生”,ColumnName属性设置为“张三”对应的列的列名“姓名”,组成键值对,存入关键词索引中。词典构建完成后以文件的形式保存在磁盘中,每次用到该词典时则去磁盘中相应位置读取。构建分词专用词典的是为了从用户输入的自然语言查询中分解出关键词。
表3键值对结构及实例
遍历每一张关系表的过程中,同时将关系表的表名和所有列名分别作为键,构造出表3所示的键值对,存入到关键词索引中:对于关系表的表名,将TableName属性设置为“table”,将ColumnName属性设置为对应关系表的表名;对于关系表的列名,将TableName属性设置为“column”,将ColumnName属性设置为对应列的列名。
另外,一个关键词可能对应数据库中多个元素,例如上述“张三”也可能对应另一张表的另一列,也需要将这个键值对存入到关键词索引中。当用户查询“张三”时,通过查询关键词索引,可以迅速得到“张三”这个词对应的所有表名和列名。
3)利用专用词典进行分词:***接收到用户自然语言查询后,利用步骤2)中构建出的专用词典将自然语言分解为多个有意义的关键词;
4)结合图2说明查询空间的构建:对步骤3)中分解出的每个关键词,通过查询关键词索引,可以得到该词在数据库中对应的所有的关系表名和列名。根据步骤1),一个关系表名对应本体中的一个类,该类对应PCDO图中的一个类结点;关系表中的一个列名对应本体中的一个数据类型属性,该数据类型属性也对应PCDO图中的一个属性结点。当一个关键词对应多个关系表名和列名时,也就对应到PCDO图中的多个结点。下面将关键词对应PCDO图中的结点称为该关键词的映射结点。
映射结点的Keyword属性置为相应的关键词。若对于一个关键词有多个映射结点,用Value属性进行区分,Value取不同的编号即可。KeywordType属性包括“table”、“column”、“value”三个值,根据关键词索引来确定。若关键词索引中的TableName值为“table”,则KeywordType属性设置为“table”;若关键词索引中的TableName值为“column”,则KeywordType属性设置为“column”;其他情况下KeywordType属性设置为“value”。
将所有关键词对应的所有映射结点所属的连通分量从步骤1)中构建的PCDO图中提取出来,作为查询空间。因为查询空间一定为PCDO图的一个子集,且通过关键词索引找到所有映射结点所属的连通分量后,可以有效的缩小搜索范围。
5)结合图3说明连通子图搜索方法:根据步骤4)中构建出的查询空间,搜索包含所有关键词的连通子图,主要步骤如下:
a)随机选择查询空间中的一个没有处理过的连通分量,找到该连通分量中的所有映射结点,放入到集合X中。
b)如果集合X中存在n(n≥2)个映射结点Node1、Node2…Noden的Keyword属性相同,则根据Value属性的不同将集合X扩展成n个集合X1、X2…Xn,然后将X中除Node1、Node2…Noden之外的其他所有映射结点添加到X1、X2…Xn中,并删除集合X。
c)对X1、X2…Xn重复重复步骤b),直到每一个集合中的每一个映射结点的Keyword属性都不一样,最终得到m个不可再扩展的集合;
d)任意选择m个集合中的一个集合记为W,任意选择一个映射结点作为初始结点做广度优先搜索(BFS);
e)在BFS遍历过程中,如果遇到新的映射结点,则将此结点到初始结点的路径记录在集合Set中,并将新遇到的映射结点从W中删除;
f)重复e),直到集合W中所有映射结点都遍历完成,此时集合Set中的记录了将W中所有映射结点连接到一起的结点和边,即搜索到了一个关联W中所有映射结点的路径,且该路径是步骤1)中构建出的PCDO图的一个子集,下面将这样的连通路径称为PCDO子图;
g)重复d)直至所有的集合处理完毕;
h)重复a),直至所有的子查询空间处理完毕;
i)对得到的所有PCDO子图进行排序,按其包含的关键词的个数从大到小进行排序,对于包含关键词数相同的PCDO子图,则再根据所包含的边数从小到大进行排序,最后选择排序最靠前的k个PCDO子图,k需要根据具体数据库的大小确定一个合适的值,或由用户指定,这里仅代表一个合适的数;
6)生成SQL语句:根据步骤5)中得到了k个PCDO子图,分别将PCDO子图转换成SQL语句,SQL语句格式如下:
select<查询内容>
from<数据表>
where<查询条件>
PCDO子图到SQL的转换规则:
a)select子句中填入“*”,表示将数据库中的符合查询条件的所有列全部返回给用户;
b)from子句根据PCDO子图中的所有类结点,填入对应的关系表;
c)where子句根据PCDO子图的对象属性边,填入对应的外键关系(没有对象属性边则不填);
d)where子句根据PCDO子图中的属性结点,填入属性结点对应的值。
上述SQL语句生成后,通过数据库查询接口对数据库进行查询,最终将结果返回给用户。
以下结合一个简化的应用实例,详细说明本发明的实施过程:
1)本体转PCDO图:本实例所涉及的关系数据库是一个记录学生选课相关信息的数据库,数据中包含如下信息:
关系表:学生、选课、课程、学院
列名:学生.姓名、学生.学号、选课.课程代号、选课.学号、课程.院系代号、课程.课程代号、学院.院系代号、学院.院系备注
外键:选课.学号=学生.学号、选课.课程代号=课程.课程代号、课程.院系代号=学院.院系代号
因此从该关系数据库的模式信息中抽取出的本体是一个描述学生选课相关信息的本体。本体中包含的详细信息如下:
类:学生、选课、课程、学院;
数据类型属性:学生_姓名、学生_学号、选课_课程代号、选课_学号、课程_院系代号、课程_课程代号、学院_院系代号、学院_院系备注;
对象属性:学生_学号_选课_学号、选课_课程代号_课程_课程代号、课程_院系代号_学院_院系代号。
从关系模式转换得到的本体如下:
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns="http://www.project.com/d2o_owl#"
xml:base="http://www.project.com/d2o_owl">
<owl:Ontology rdf:about=""/>
<owl:ObjectProperty rdf:ID="选课_学号_学生_学号">
<rdfs:range rdf:resource="#学生"/>
<rdfs:domain rdf:resource="#选课"/>
</owl:ObjectProperty>
<owl:DatatypeProperty rdf:ID="选课_学号">
<rdfs:range rdf:resource="http://www.project.com/d2o_owl#字符串型"/>
<rdfs:domain rdf:resource="#选课"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:ID="课程_课程代号">
<rdfs:range rdf:resource="http://www.project.com/d2o_owl#字符串型"/>
<rdfs:domain rdf:resource="#课程"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:ID="选课_课程代号">
<rdfs:range rdf:resource="http://www.project.com/d2o_owl#字符串型"/>
<rdfs:domain rdf:resource="#选课"/>
</owl:DatatypeProperty>
<owl:Class rdf:ID="选课"/>
<owl:DatatypeProperty rdf:ID="学生_学号">
<rdfs:range rdf:resource="http://www.project.com/d2o_owl#字符串型"/>
<rdfs:domain rdf:resource="#学生"/>
</owl:DatatypeProperty>
<owl:Class rdf:ID="课程"/>
<owl:DatatypeProperty rdf:ID="课程_院系代号">
<rdfs:range rdf:resource="http://www.project.com/d2o_owl#字符串型"/>
<rdfs:domain rdf:resource="#课程"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:ID="学生_姓名">
<rdfs:range rdf:resource="http://www.project.com/d2o_owl#字符串型"/>
<rdfs:domain rdf:resource="#学生"/>
</owl:DatatypeProperty>
<owl:Class rdf:ID="学生">
</owl:Class>
<owl:ObjectProperty rdf:ID="选课_课程代号_课程_课程代号">
<rdfs:range rdf:resource="#课程"/>
<rdfs:domain rdf:resource="#选课"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:ID="课程_院系代号_学院_院系代号">
<rdfs:range rdf:resource="#学院"/>
<rdfs:domain rdf:resource="#课程"/>
</owl:ObjectProperty>
<owl:DatatypeProperty rdf:ID="学院_院系代号">
<rdfs:range rdf:resource="http://www.project.com/d2o_owl#字符串型"/>
<rdfs:domain rdf:resource="#学院"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:ID="学院_院系备注">
<rdfs:range rdf:resource="http://www.project.com/d2o_owl#字符串型"/>
<rdfs:domain rdf:resource="#学院"/>
</owl:DatatypeProperty>
<owl:Class rdf:ID="学院"/>
<rdf:RDF>
通过步骤1)中转换规则将本体转成PCDO图数据结构,如图4所示。
本体中的类转换为PCDO图中的类结点,即图中椭圆结点;本体中的数据类型属性转换为PCDO图中的属性结点,即图中的矩形结点;属性结点与它对应的类结点用一条hasProperty边相连;本体中的对象属性转换为连接两个类结点的边。
2)构建分词专用词典和关键词索引,关键词索引部分内容如下:
“学生”:{
        “TableName”:“table”,
        “ColumnName”:“学生”}
“课程”:{
        “TableName”:“table”,
        “ColumnName”:“课程”}
“学院”:{
        “TableName”:“table”,
        “ColumnName”:“学院”}
“学号”:{
        “TableName”:“column”,
        “ColumnName”:“学生”}
“09131011”:{
        “TableName”:“学生”
        “ColumnName”:“学号”,}
其中,键“学生”对应的键值对中,TableName属性为“table”,ColumnName属性为“学生”,表示“学生”在此处对应的是一个关系表,且关系表名为“学生”;
键“学号”对应的键值对中TableName字段为“column”,ColumnName字段为“学生”,即表示“学号”在此处对应的是一个列名,且列名为“学号”;
键“09131011”对应的ColumnName字段为“学号”,TableName字段为“学生”,即表示键“09131011”在此处对应“学生”表中“学号”列下的一个具体值。
3)分词:例如,用户输入查询语句“查找学号为09131011的学生所选的课程的所属学院”,经过分词之后得到五个有意义的关键词:学号、09131011、学生、课程、学院。
4)构建查询空间:利用2)中得到的关键词索引,可以得到关键词与PCDO图中结点的映射关系如下:
表4关键词映射PCDO图结点
根据关键词和PCDO图结点的映射关系,构建出查询空间如图5所示(其中加粗的结点为关键词映射到的结点)。
5)连通子图搜索:根据搜索算法,找到PCDO图中能将所有关键词连接到一起的一个或多个连通子图,搜索得到的结果如图6所示。
6)根据PCDO子图到SQL的转换规则,生成SQL语句:
select子句填“*”,即得到select子句:select*;
from子句填入类结点对应的关系表名,即得到from子句:
from学生,选课,课程,学院;
where子句根据对象属性边转换为对应的外键,图6中三条对象属性边:学生_学号_选课_学号、选课_课程代号_课程_课程代号、课程_院系代号_学院_院系代号,分别转换,即得到where子句:where学生.学号=选课.学号and选课.课程代号=课程.课程代号and课程.院系代号=学院.院系代号
最后处理属性结点:“09131011”的映射结点为“学生_学号”,转换后得到学生.学号=“09131011”,添加到where子句中。
最终生成的SQL语句为:
select*
from学生,选课,课程,学院
where学生.学号=选课.学号and选课.课程代号=课程.课程代号and课程.院系代号=学院.院系代号and学生.学号=“09131011”
SQL语句生成后,通过数据库查询接口对数据库进行查询,最终将结果返回给用户。

Claims (2)

1.一种基于本体和受限自然语言处理的数据库查询方法,其特征在于,该方法包括如下步骤:
1)将根据数据库关系模式构建出的本体转换成图数据结构:本体中的类被转换为类结点,数据类型属性被转换为属性结点,所述属性结点分别有一条连接到它指定的类结点的边,对象属性被转换为连接两个类的边;
2)构建分词专用词典和关键词索引:依次读取数据库中的每一条记录,将读取到的记录值添加到词典中作为用户查询时分词的专用词典,读取出每一条记录时同时将该记录值作为键,将该记录值在数据库中对应的关系表名和列名作为值,组成键值对,存入到非关系型数据库中,作为关键词索引,用于快速定位给定的关键词,提高查询效率;
3)***接收到用户自然语言查询后,利用所述步骤2)中构建出的专用词典将自然语言分解为多个有意义的关键词;
4)将所述步骤3)中分解出的关键词逐个地作为键,在关键词索引中查找所对应的值,即找出该关键词所对应的关系表名和列名,然后在所述步骤1)中生成的图数据结构中找到所有关系表名和列名对应的结点,最后将所有结点对应的连通分量从图数据结构中提取出来,作为查询空间;
5)遍历所述步骤4)中构建出的查询空间中的连通分量,找到查询空间中能将所有关键词连接起来的所有连通子图,若不能找到任何一个满足条件的连通子图,则找出包含尽可能多的关键词的连通子图,然后将找出的连通子图根据其包含的关键词数从大到小进行排序,对于包含关键词数相同的连通子图,则再根据所包含的边数从小到大进行排序,最后选择排序最靠前的k个连通子图,k的值根据数据库的大小以及搜索得到的所有连通子图个数来确定;
6)将所述步骤5)中选择的k个连通图按照排序,依次根据如下规则转换成SQL语句:将SQL语句中的Select子句以*填充,用以表示将所有的列全部返回,将连通图中的类结点写入到SQL语句中的From子句中,将连接两个类结点的边转换为外键关系写入到SQL语句中的Where子句中,将用户输入的关键词根据其对应的关系表名和列名写入到SQL语句中的Where字句中;
所述SQL语句生成后,对数据库进行查询,然后将查询结果返回给用户。
2.根据权利要求1所述的基于本体和受限自然语言处理的数据库查询方法,其特征在于,所述步骤2)中的非关系型数据库采用MongoDB数据库。
CN201310556508.5A 2013-11-11 2013-11-11 一种基于本体和受限自然语言处理的数据库查询方法 Active CN103646032B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310556508.5A CN103646032B (zh) 2013-11-11 2013-11-11 一种基于本体和受限自然语言处理的数据库查询方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310556508.5A CN103646032B (zh) 2013-11-11 2013-11-11 一种基于本体和受限自然语言处理的数据库查询方法

Publications (2)

Publication Number Publication Date
CN103646032A true CN103646032A (zh) 2014-03-19
CN103646032B CN103646032B (zh) 2017-01-04

Family

ID=50251248

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310556508.5A Active CN103646032B (zh) 2013-11-11 2013-11-11 一种基于本体和受限自然语言处理的数据库查询方法

Country Status (1)

Country Link
CN (1) CN103646032B (zh)

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104021198A (zh) * 2014-06-16 2014-09-03 北京理工大学 基于本体语义索引的关系数据库信息检索方法及装置
CN104239473A (zh) * 2014-09-03 2014-12-24 陈飞 基于自然语言行业知识库进行数据跨***处置的装置及方法
WO2016127740A1 (zh) * 2015-02-13 2016-08-18 广州神马移动信息科技有限公司 信息查询方法和设备
CN106255968A (zh) * 2014-05-16 2016-12-21 微软技术许可有限责任公司 自然语言图像搜索
WO2017046729A1 (en) * 2015-09-18 2017-03-23 International Business Machines Corporation Natural language interface to databases
CN107885786A (zh) * 2017-10-17 2018-04-06 东华大学 面向大数据的自然语言查询接口实现方法
CN108446289A (zh) * 2017-09-26 2018-08-24 北京中安智达科技有限公司 一种支持异构数据库的数据检索方法
CN108614842A (zh) * 2016-12-13 2018-10-02 北京国双科技有限公司 查询数据的方法和装置
CN108920676A (zh) * 2018-07-09 2018-11-30 清华大学 一种处理图数据的方法及***
CN109241259A (zh) * 2018-08-24 2019-01-18 国网江苏省电力有限公司苏州供电分公司 基于er模型的自然语言查询方法、装置及***
CN109299129A (zh) * 2018-09-05 2019-02-01 深圳壹账通智能科技有限公司 自然语言的数据查询方法、装置、计算机设备及存储介质
CN109408526A (zh) * 2018-10-12 2019-03-01 平安科技(深圳)有限公司 Sql语句生成方法、装置、计算机设备及存储介质
CN109446277A (zh) * 2018-09-21 2019-03-08 北京翰云时代数据技术有限公司 基于中文自然语言的关系型数据智能搜索方法及***
CN109491658A (zh) * 2017-09-11 2019-03-19 高德信息技术有限公司 计算机可执行代码数据的生成方法及装置
CN109710742A (zh) * 2018-12-27 2019-05-03 清华大学 一种个股公告自然语言查询处理的方法、***及设备
WO2020021401A1 (en) * 2018-07-23 2020-01-30 International Business Machines Corporation Ranking of graph patterns
CN110888876A (zh) * 2019-10-31 2020-03-17 平安科技(深圳)有限公司 生成数据库脚本的方法、装置、存储介质及计算机设备
CN111008309A (zh) * 2019-12-06 2020-04-14 北京百度网讯科技有限公司 查询方法及装置
CN112131016A (zh) * 2020-09-15 2020-12-25 北京值得买科技股份有限公司 应用程序内部数据处理方法、装置及设备
CN112001188B (zh) * 2020-10-30 2021-03-16 北京智源人工智能研究院 基于向量化语义规则快速实现nl2sql的方法和装置
CN115080602A (zh) * 2022-03-21 2022-09-20 北京科杰科技有限公司 一种基于nlp算法实现数据资产精准搜索方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5924089A (en) * 1996-09-03 1999-07-13 International Business Machines Corporation Natural language translation of an SQL query
CN103279458A (zh) * 2013-02-22 2013-09-04 电子科技大学 一种领域本体的构建及实例化方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5924089A (en) * 1996-09-03 1999-07-13 International Business Machines Corporation Natural language translation of an SQL query
CN103279458A (zh) * 2013-02-22 2013-09-04 电子科技大学 一种领域本体的构建及实例化方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
张金等: "基于自然语言语义的数据库目标检索研究", 《计算机***应用》 *
李虎等: "基于Ontology的数据库自然语言查询接口的研究", 《计算机科学》 *

Cited By (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11222044B2 (en) 2014-05-16 2022-01-11 Microsoft Technology Licensing, Llc Natural language image search
CN106255968A (zh) * 2014-05-16 2016-12-21 微软技术许可有限责任公司 自然语言图像搜索
CN106255968B (zh) * 2014-05-16 2020-03-31 微软技术许可有限责任公司 自然语言图像搜索
CN104021198B (zh) * 2014-06-16 2017-09-01 北京理工大学 基于本体语义索引的关系数据库信息检索方法及装置
CN104021198A (zh) * 2014-06-16 2014-09-03 北京理工大学 基于本体语义索引的关系数据库信息检索方法及装置
CN104239473A (zh) * 2014-09-03 2014-12-24 陈飞 基于自然语言行业知识库进行数据跨***处置的装置及方法
CN104239473B (zh) * 2014-09-03 2017-06-30 陈飞 基于自然语言行业知识库进行数据跨***处置的装置及方法
WO2016127740A1 (zh) * 2015-02-13 2016-08-18 广州神马移动信息科技有限公司 信息查询方法和设备
US10860632B2 (en) 2015-02-13 2020-12-08 Alibaba Group Holding Limited Information query method and device
US9959311B2 (en) 2015-09-18 2018-05-01 International Business Machines Corporation Natural language interface to databases
GB2557535A (en) * 2015-09-18 2018-06-20 Ibm Natural language interface to databases
CN108027833A (zh) * 2015-09-18 2018-05-11 国际商业机器公司 数据库的自然语言接口
CN108027833B (zh) * 2015-09-18 2022-04-08 国际商业机器公司 用于创建结构化数据语言查询的方法
WO2017046729A1 (en) * 2015-09-18 2017-03-23 International Business Machines Corporation Natural language interface to databases
CN108614842A (zh) * 2016-12-13 2018-10-02 北京国双科技有限公司 查询数据的方法和装置
CN108614842B (zh) * 2016-12-13 2021-03-30 北京国双科技有限公司 查询数据的方法和装置
CN109491658A (zh) * 2017-09-11 2019-03-19 高德信息技术有限公司 计算机可执行代码数据的生成方法及装置
CN108446289A (zh) * 2017-09-26 2018-08-24 北京中安智达科技有限公司 一种支持异构数据库的数据检索方法
CN107885786A (zh) * 2017-10-17 2018-04-06 东华大学 面向大数据的自然语言查询接口实现方法
CN108920676A (zh) * 2018-07-09 2018-11-30 清华大学 一种处理图数据的方法及***
WO2020021401A1 (en) * 2018-07-23 2020-01-30 International Business Machines Corporation Ranking of graph patterns
US11093514B2 (en) 2018-07-23 2021-08-17 International Business Machines Corporation Ranking of graph patterns
CN109241259B (zh) * 2018-08-24 2021-01-05 国网江苏省电力有限公司苏州供电分公司 基于er模型的自然语言查询方法、装置及***
CN109241259A (zh) * 2018-08-24 2019-01-18 国网江苏省电力有限公司苏州供电分公司 基于er模型的自然语言查询方法、装置及***
CN109299129A (zh) * 2018-09-05 2019-02-01 深圳壹账通智能科技有限公司 自然语言的数据查询方法、装置、计算机设备及存储介质
CN109446277A (zh) * 2018-09-21 2019-03-08 北京翰云时代数据技术有限公司 基于中文自然语言的关系型数据智能搜索方法及***
CN109408526B (zh) * 2018-10-12 2023-10-31 平安科技(深圳)有限公司 Sql语句生成方法、装置、计算机设备及存储介质
CN109408526A (zh) * 2018-10-12 2019-03-01 平安科技(深圳)有限公司 Sql语句生成方法、装置、计算机设备及存储介质
CN109710742B (zh) * 2018-12-27 2021-01-01 清华大学 一种个股公告自然语言查询处理的方法、***及设备
CN109710742A (zh) * 2018-12-27 2019-05-03 清华大学 一种个股公告自然语言查询处理的方法、***及设备
CN110888876A (zh) * 2019-10-31 2020-03-17 平安科技(深圳)有限公司 生成数据库脚本的方法、装置、存储介质及计算机设备
CN111008309B (zh) * 2019-12-06 2023-08-08 北京百度网讯科技有限公司 查询方法及装置
CN111008309A (zh) * 2019-12-06 2020-04-14 北京百度网讯科技有限公司 查询方法及装置
CN112131016A (zh) * 2020-09-15 2020-12-25 北京值得买科技股份有限公司 应用程序内部数据处理方法、装置及设备
CN112001188B (zh) * 2020-10-30 2021-03-16 北京智源人工智能研究院 基于向量化语义规则快速实现nl2sql的方法和装置
CN115080602A (zh) * 2022-03-21 2022-09-20 北京科杰科技有限公司 一种基于nlp算法实现数据资产精准搜索方法

Also Published As

Publication number Publication date
CN103646032B (zh) 2017-01-04

Similar Documents

Publication Publication Date Title
CN103646032B (zh) 一种基于本体和受限自然语言处理的数据库查询方法
Kaushik et al. Exploiting local similarity for indexing paths in graph-structured data
Bergamaschi et al. Keyword search over relational databases: a metadata approach
Martínez-Prieto et al. Exchange and consumption of huge RDF data
CN105630881B (zh) 一种rdf的数据存储方法和查询方法
CN107885786B (zh) 面向大数据的自然语言查询接口实现方法
CN102722542B (zh) 一种资源描述框架图模式匹配方法
CN102270232B (zh) 一种存储优化的语义数据查询***
US8825621B2 (en) Transformation of complex data source result sets to normalized sets for manipulation and presentation
Comyn-Wattiau et al. Model driven reverse engineering of NoSQL property graph databases: The case of Neo4j
CN111190900B (zh) 一种云计算模式下json数据可视化优化方法
CN105706078A (zh) 实体集合的自动定义
Agreste et al. XML matchers: approaches and challenges
CN107992608B (zh) 一种基于关键字上下文的sparql查询语句自动生成方法
CN105608232A (zh) 一种基于图形数据库的bug知识建模方法
CN102819600B (zh) 面向电力生产管理***关系数据库的关键词搜索方法
CN115563313A (zh) 基于知识图谱的文献书籍语义检索***
CN107491476A (zh) 一种适用于多种大数据管理***的数据模型转换及查询分析方法
CN114218472A (zh) 基于知识图谱的智能搜索***
CN104156431A (zh) 一种基于实体图社团结构的rdf关键词查询方法
CN103365960A (zh) 电力多级调度管理结构化数据的离线搜索方法
Gunaratna et al. Alignment and dataset identification of linked data in semantic web
Dayal et al. Of cubes, DAGs and hierarchical correlations: A novel conceptual model for analyzing social media data
Scriney et al. Efficient cube construction for smart city data
An et al. Learning to discover complex mappings from web forms to ontologies

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20170630

Address after: No. 1 road 210008 Jiangsu Dongji city of Nanjing province Jiangning economic and Technological Development Zone

Patentee after: Nanjing Ke Data Technology Co., Ltd.

Address before: Qinhuai Road, Jiangning District of Nanjing City, Jiangsu province 211100 No. 98 left Ming Yuan 1 Building 2 unit 801

Co-patentee before: Cui Rongguo

Patentee before: Qi Guilin

Co-patentee before: Zhang Hui

Co-patentee before: Deng Bo