掌桥专利:专业的专利平台
掌桥专利
首页

一种结构化查询语句相似度检测方法、装置及设备

文献发布时间:2024-04-18 19:59:31


一种结构化查询语句相似度检测方法、装置及设备

技术领域

本申请涉及计算机技术领域,具体涉及一种结构化查询语句相似度检测方法、装置及设备。

背景技术

结构化查询语句相似度检测主要用于检测多个结构化查询语句所表达的语义是否相同。结构化查询语句相似度检测可应用于查询重写、语句重复性检测等场景。

目前,可直接执行多个结构化查询语句,获取每个结构化查询语句的查询结果,并通过判断多个查询结果是否一致来确定多个结构化查询语句的相似度。但是,结构化查询语句需要配合数据库才能执行。而在许多场景下,并不能提供数据库,或者若能提供数据库,数据库查询的成本可能较高,使得该检测方式的检测成本较高。

发明内容

有鉴于此,本申请提供一种结构化查询语句相似度检测方法、装置及设备,无需配合数据库执行结构化查询语句,使得该方法的检测成本较低。

为解决上述问题,本申请提供的技术方案如下:

第一方面,本申请提供一种结构化查询语句相似度检测方法,所述方法包括:

获取第一结构化查询语句和第二结构化查询语句,构建所述第一结构化查询语句的第一抽象语法树和所述第二结构化查询语句的第二抽象语法树;抽象语法树用于表示结构化查询语句的抽象语法结构,所述抽象语法树中的根节点与所述结构化查询语句的查询结果的关联程度高于其他节点与所述结构化查询语句的查询结果的关联程度;

遍历所述第一抽象语法树中的节点,将遍历到的所述第一抽象语法树中的节点与所述第二抽象语法树中的同层级节点进行匹配,获取所述第一抽象语法树中的节点的匹配结果;所述第一抽象语法树中节点的匹配结果表示所述第二抽象语法树中是否有同层级节点与所述第一抽象语法树中的节点是匹配的;

结合所述第一抽象语法树中的根节点的匹配结果、所述根节点的匹配结果对应的权重、所述根节点的子节点的匹配结果以及所述根节点的子节点匹配结果对应的权重,确定所述第一结构化查询语句与所述第二结构化查询语句的语句相似度。

第二方面,本申请提供一种结构化查询语句相似度检测装置,所述装置包括:

构建单元,用于获取第一结构化查询语句和第二结构化查询语句,构建所述第一结构化查询语句的第一抽象语法树和所述第二结构化查询语句的第二抽象语法树;抽象语法树用于表示结构化查询语句的抽象语法结构,所述抽象语法树中的根节点与所述结构化查询语句的查询结果的关联程度高于其他节点与所述结构化查询语句的查询结果的关联程度;

遍历单元,用于遍历所述第一抽象语法树中的节点,将遍历到的所述第一抽象语法树中的节点与所述第二抽象语法树中的同层级节点进行匹配,获取所述第一抽象语法树中的节点的匹配结果;所述第一抽象语法树中节点的匹配结果表示所述第二抽象语法树中是否有同层级节点与所述第一抽象语法树中的节点是匹配的;

第一确定单元,用于结合所述第一抽象语法树中的根节点的匹配结果、所述根节点的匹配结果对应的权重、所述根节点的子节点的匹配结果以及所述根节点的子节点匹配结果对应的权重,确定所述第一结构化查询语句与所述第二结构化查询语句的语句相似度。

第三方面,本申请提供一种电子设备,包括:

一个或多个处理器;

存储装置,其上存储有一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的结构化查询语句相似度检测方法。

第四方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的结构化查询语句相似度检测方法。

由此可见,本申请具有如下有益效果:

本申请提供了一种结构化查询语句相似度检测方法、装置及设备,获取需要检测相似度的第一结构化查询语句和第二结构化查询语句,构建第一结构化查询语句的第一抽象语法树和第二结构化查询语句的第二抽象语法树。抽象语法树用于表示结构化查询语句的抽象语法结构,其中,抽象语法树中的根节点与结构化查询语句的查询结果的关联程度高于其他节点与结构化查询语句的查询结果的关联程度。遍历第一抽象语法树中的节点,将遍历到的第一抽象语法树中的节点与第二抽象语法树中的同层级节点进行匹配,获取第一抽象语法树中的节点的匹配结果。该节点的匹配结果表示第二抽象语法树中是否有同层级节点与第一抽象语法树中的节点是匹配的,若有,则匹配结果为匹配,即第一结构化查询语句中的节点表示的语法结构与第二结构化查询语句中相匹配的同层级节点所表示的语法结构在语义上是相同的。进而,为第一抽象语法树中的根节点的匹配结果与根节点的子节点的匹配结果分配不同的权重,权重的不同表示对语句相似度的影响程度不同。由此,可结合第一抽象语法树中的根节点的匹配结果、根节点的子节点的匹配结果以及各自对应的权重,确定第一结构化查询语句与第二结构化查询语句的语句相似度。可知,在该结构化查询语句相似度检测方法中,无需配合数据库执行结构化查询语句,在一定程度上降低了检测成本。

附图说明

图1为本申请实施例提供的一种示例性应用场景的框架示意图;

图2为本申请实施例提供的一种结构化查询语句相似度检测方法的流程图;

图3为本申请实施例提供的一种抽象语法树的示意图;

图4a为本申请实施例提供的一个第一抽象语法树的示意图;

图4b为本申请实施例提供的一个第二抽象语法树的示意图;

图4c为本申请实施例提供的一种匹配结果的示意图;

图4d为本申请实施例提供的另一种匹配结果的示意图;

图5a为本申请实施例提供的另一个第二抽象语法树的示意图;

图5b为本申请实施例提供的另一种匹配结果的示意图;

图6为本申请实施例提供的一种根节点的分数的示意图;

图7为本申请实施例提供的一种结构化查询语句相似度检测装置的结构示意图;

图8为本申请实施例提供的一种电子设备的基本结构的示意图。

具体实施方式

为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请实施例作进一步详细的说明。

为了便于理解和解释本申请实施例提供的技术方案,下面将先对本申请的背景技术进行说明。

结构化查询语句相似度检测主要用于检测多个结构化查询语句(即SQL语句)所表达的语义是否相同。结构化查询语句相似度用于分析和量化多个SQL语句之间的语义相似性程度。SQL语句的相似度可应用于重复性检测、查询重写、数据库查询性能优化、代码补全任务的测评等场景。

目前可由准确集合匹配和执行匹配等两种匹配方式来实现SQL语句的相似度检测。在准确集合匹配方式中,先将两个SQL语句(多个SQL语句类似)分别划分为多个分句,判断两个SQL语句下的分句的文本是否一致,以此来确定分句相似度,最后汇总各个分句相似度,得到两个SQL语句的相似度。准确集合匹配方式使得分句之间的匹配较为精确,但是其仅考虑了文本的精确匹配,并未考虑可能存在两个分句的文本不同但语义相同的情况。例如,SQL语句select count(*)from table和SQL语句select count(1)from table的文本虽然不同,但是语句的语义相同。

在执行匹配方式中,通过直接执行两个SQL语句,获得查询结果。进而,对比查询结果是否一致,来确定两个SQL语句的语句相似度。可知,查询结果在一定程度上体现了两个SQL语句的语义是否相同。但是,该方式通常会涉及到执行成本较高的数据库查询操作,使得SQL语句相似度的检测成本较高。

基于此,本申请实施例提供了一种结构化查询语句相似度检测方法、装置及设备,获取需要检测相似度的第一结构化查询语句和第二结构化查询语句,构建第一结构化查询语句的第一抽象语法树和第二结构化查询语句的第二抽象语法树。抽象语法树用于表示结构化查询语句的抽象语法结构,其中,抽象语法树中的根节点与结构化查询语句的查询结果的关联程度高于其他节点与结构化查询语句的查询结果的关联程度。遍历第一抽象语法树中的节点,将遍历到的第一抽象语法树中的节点与第二抽象语法树中的同层级节点进行匹配,获取第一抽象语法树中的节点的匹配结果。该节点的匹配结果表示第二抽象语法树中是否有同层级节点与第一抽象语法树中的节点是匹配的,若有,则匹配结果为匹配,即第一结构化查询语句中的节点表示的语法结构与第二结构化查询语句中相匹配的同层级节点所表示的语法结构在语义上是相同的。进而,为第一抽象语法树中的根节点的匹配结果与根节点的子节点的匹配结果分配不同的权重,权重不同表示对语句相似度的影响程度不同。由此,可结合第一抽象语法树中的根节点的匹配结果、根节点的子节点的匹配结果以及各自对应的权重,确定第一结构化查询语句与第二结构化查询语句的语句相似度。可知,在该结构化查询语句相似度检测方法中,无需配合数据库执行结构化查询语句,使得该方法的检测成本在一定程度上是较低的。

可以理解的是,针对以上方案所存在的缺陷,均是申请人在经过实践并仔细研究后得出的结果。因此,上述问题的发现过程以及下文中本申请实施例针对上述问题所提出的解决方案,都应该是申请人在本申请过程中对本申请实施例做出的贡献。

为了便于理解本申请实施例提供的结构化查询语句相似度检测方法,下面结合图1所示的场景示例进行说明。参见图1所示,该图为本申请实施例提供的示例性应用场景的框架示意图。该方法可由电子设备执行,例如终端设备和/或服务器等,这里不进行限定,可根据实际应用场景进行确定。

如图1所示,框架示意图的输入为需要检测相似度的第一结构化查询语句和第二结构化查询语句。第一结构化查询语句可表示为p_sql,第二结构化查询语句可表示为g_sql。在获取第一结构化查询语句和第二结构化查询语句后,可先对第一结构化查询语句和第二结构化查询语句进行标准化,以使第一结构化查询语句和第二结构化查询语句中的文本不同但语义相同的语法结构在标准化后被统一表示,以促进语义匹配。标准化后的第一结构化查询语句和第二结构化查询语句可分别表示为p_std_sql和g_std_sql。

构建标准化后的第一结构化查询语句p_std_sql的第一抽象语法树和标准化后的第二结构化查询语句g_std_sql的第二抽象语法树。抽象语法树用于表示结构化查询语句的抽象语法结构,抽象语法树中的根节点与结构化查询语句的查询结果的关联程度高于其他节点与结构化查询语句的查询结果的关联程度。第一抽象语法树和第二抽象语法树可分别表示为p_tree和g_tree。

遍历第一抽象语法树p_tree中的节点,将遍历到的第一抽象语法树p_tree中的节点与第二抽象语法树g_tree中的同层级节点进行匹配,获取第一抽象语法树p_tree中的节点的匹配结果。该节点的匹配结果表示第二抽象语法树g_tree中是否有同层级节点与第一抽象语法树p_tree中的节点进行匹配,若有,则匹配结果为匹配,否则,匹配结果为不匹配。标识有节点的匹配结果的第一抽象语法树可表示为p_matched_tree。

最后,可结合p_matched_tree中的根节点的匹配结果、根节点的子节点的匹配结果以及各自对应的权重,确定第一结构化查询语句与第二结构化查询语句的语句相似度,并输出语句相似度。

本领域技术人员可以理解,图1所示的框架示意图仅是本申请的实施方式可以在其中得以实现的一个示例。本申请实施方式的适用范围不受到该框架任何方面的限制。

为了便于理解本申请,下面结合附图对本申请实施例提供的一种结构化查询语句相似度检测方法进行说明。

参见图2所示,该图为本申请实施例提供的一种结构化查询语句相似度检测方法的流程图,如图2所示,该方法可以包括S201-S203:

S201:获取第一结构化查询语句和第二结构化查询语句,构建第一结构化查询语句的第一抽象语法树和第二结构化查询语句的第二抽象语法树;抽象语法树用于表示结构化查询语句的抽象语法结构,抽象语法树中的根节点与结构化查询语句的查询结果的关联程度高于其他节点与结构化查询语句的查询结果的关联程度。

第一结构化查询语句和第二结构化查询语句即需要进行相似度检测的结构化查询语句。第一结构化查询语句和第二结构化查询语句均由多种语法结构组成,语法结构包括变量、函数、关键词、表名、列名、条件、运算符、子查询等。作为一种可选示例,在对第一结构化查询语句和第二结构化查询语句分别构建对应的抽象语法树之前,可先对第一结构化查询语句和第二结构化查询语句进行标准化,以使第一结构化查询语句和第二结构化查询语句中的文本不同但语义相同的语法结构在标准化后被统一表示,这便于消除语义表述的多样性,加快后续的语义匹配过程。

具体地,可通过自定义的标准化流程进行结构化查询语句的标准化,这里不进行限定。示例地,标准化前的第一结构化查询语句为:select*from(select product_name,price from product where type=='toy'group by product_name,price;)whereprice>17。标准化后的第一结构化查询语句为:select product_name,price fromproduct where type=='toy'and price>17group by product_name,price。标准化前的第二结构化查询语句为:select t.product_name from(select product_name,pricefrom product where type=='toy'group by product_name,price;)as t;wheret.price>17。标准化后的第二结构化查询语句为:select product_name from productwhere type=='toy'and price>17group by product_name,price。由以上示例可知,标准化后的第一结构化查询语句和第二结构化查询语句进行了语法结构上的统一。

进而,基于标准化后的第一结构化查询语句构建对应的抽象语法树(AbstractSyntax Tree,AST),可称为第一抽象语法树。基于标准化后的第二结构化查询语句构建对应的抽象语法树,可称为第二抽象语法树。抽象语法树用于表示结构化查询语句的抽象语法结构。示例地,可使用SQL Parser构建抽象语法树。具体地,使用SQL Parser将第一结构化查询语句和第二结构化查询语句解析为第一抽象语法树和第二抽象语法树。

抽象语法树为树形的数据结构,由节点组成。树中的每个节点表示结构化查询语句中的一种语法结构。节点包括根节点和子节点,子节点包括分句类型节点以及其他属性节点。分句类型节点表示的语法结构可以为结构化查询语句中的关键字(例如“select”、“from”、“where”和“group”等),属性节点表示的语法结构可以为结构化查询语句中的表名、列名、运算符等。抽象语法树中的每个节点均对应有节点类型和节点属性值。通常,根节点和分句类型节点的节点属性值为空。抽象语法树从根节点开始由上及下分为多个层级,通过多个节点之间的层级关系形成抽象语法树。

参见图3,图3为本申请实施例提供的一种抽象语法树的示意图。标准化后的结构化查询语句为select product_name,color from product where type=='toy'groupby product_name,color。基于该结构化查询语句构建的抽象语法树如图3所示,包括四个层级,由上及下可为第一层级至第四层级。第一层级的根结点为Query Type查询类型,查询类型为根类型,表示结构化查询语句的查询操作。根节点的下一层级节点为4个分句类型节点,节点的节点类型分别为Select Type、From Type、Where Type和Group Type,表示结构化查询语句中的关键字“select”、“from”、“where”和“group”。分句类型节点的下一层级节点包括6个属性节点,例如,第一个属性节点的节点类型为Field Type,表示结构化查询语句中的列名,节点属性值为column:product_name,即列名为product_name。第三个属性节点的节点类型为Table Type,表示结构化查询语句中的表名,节点属性值为name:product,即表名为product。其中,product_name为product数据表中的列的列名。第四个属性节点的节点类型为Operator Type,表示结构化查询语句中的运算符,节点属性值为type:eq,即运算符具体为“等于”。第四层级包括2个属性节点,这里不再赘述。

通常,远离根节点的层级节点所表示的语法结构在结构化查询语句中先被执行,靠近根节点的层级节点所表示的语法结构在结构化查询语句中后被执行。抽象语法树中的叶子节点表示的语法结构在结构化查询语句中最先被执行。如图3所示,根节点为查询类型,表示了整个结构化查询语句的查询操作,查询操作后便可获取结构化查询语句的查询结果,可认为查询类型的根节点与结构化查询语句的查询结果的关联程度高于其他节点与结构化查询语句的查询结果的关联程度。例如,结构化查询语句为“1+1”,其生成的抽象语法树中的根节点为“add”操作,两个子节点均为“1”。由于结构化查询语句执行add操作后,便能获取结构化查询语句的查询结果,则认为根节点“add”与结构化查询语句的查询结果的关联程度高于子节点“1”与结构化查询语句的查询结果的关联程度。

可以理解的是,基于结构化查询语句构建对应的抽象语法树后,抽象语法树能够表示结构化查询语句的抽象语法结构,则根据抽象语法树能够较为精准地得知结构化查询语句中的关键字、表名、列名、条件、运算符等。因此,检测第一结构化查询语句和第二结构化查询语句的语句相似度则转换为了检测第一抽象语法树和第二抽象语法树的相似性。

S202:遍历第一抽象语法树中的节点,将遍历到的第一抽象语法树中的节点与第二抽象语法树中的同层级节点进行匹配,获取第一抽象语法树中的节点的匹配结果;第一抽象语法树中节点的匹配结果表示第二抽象语法树中是否有同层级节点与第一抽象语法树中的节点是匹配的。

示例地,第一抽象语法树和第二抽象语法树的相似性可由第一抽象语法树和第二抽象语法树中的节点的匹配结果来确定。具体地,遍历第一抽象语法树中的节点,由于不同树中的同层级节点更容易成功匹配,则将遍历到的第一抽象语法树中的节点与第二抽象语法树中的同层级节点进行匹配,获取第一抽象语法树中的节点的匹配结果。第二抽象语法树中的同层级节点的数量可为一个或多个。

该节点的匹配结果表示第二抽象语法树中是否有同层级节点与第一抽象语法树中的该节点是匹配的。进而,可为第一抽象语法树中的匹配成功的节点赋值1,为第一抽象语法树中的匹配成功的节点赋值0,以进行节点的匹配结果的区分。通常,能够匹配的节点的数量越多,表示第一抽象语法树和第二抽象语法树的相似性越高,进而表示第一结构化查询语句和第二结构化查询语句的语句相似度越高。

在一种可能的实现方式中,本申请实施例提供了一种遍历第一抽象语法树中的节点,将遍历到的第一抽象语法树中的节点与第二抽象语法树中的同层级节点进行匹配,获取第一抽象语法树中的节点的匹配结果的具体实施方式,包括:

A1:按照第一抽象语法树的由下到上的层级结构,分层级遍历第一抽象语法树中的节点。

由于远离根节点的层级节点所表示的语法结构在结构化查询语句中先被执行,靠近根节点的层级节点所表示的语法结构在结构化查询语句中后被执行。则,按照执行的先后顺序,先遍历第一抽象语法树的叶子节点,由下到上按照层级结构进行节点的遍历,最后遍历第一抽象语法树的根节点。

A2:确定遍历到的第一抽象语法树中的第一节点,以及第二抽象语法树中的与第一节点同层级的第二节点。

将每次遍历到的第一抽象语法树中的节点称为第一节点,将第二抽象语法树中的与第一节点同层级的节点称为第二节点。第二节点的数量可为一个或多个。

A3:判断第一节点和第二节点的节点类型是否相同以及第一节点和第二节点的节点属性值是否满足属性值匹配规则,根据判断结果获取第一节点的匹配结果。

抽象语法树中的每个节点均对应有节点类型和节点属性值,可通过节点类型和节点属性值的匹配,来确定节点的匹配结果。具体地,当第一节点和第二节点的节点类型相同且第一节点和第二节点的节点属性值满足属性值匹配规则时,确定第一节点的匹配结果为匹配,即第一节点和第二节点相匹配。否则,确定第一节点的匹配结果为不匹配,即第一节点和第二节点不匹配。

作为一种可选示例,属性值匹配规则为第一节点和第二节点的节点属性值相同或第一节点和第二节点的节点属性值在语义上相同。可以理解的是,不同语法结构的文本可能不同但语义相同,这种语法结构在语义上是相似的,可认为对应的节点是相匹配的。其中,判断第一节点和第二节点的节点属性值在语义上是否相同的规则可自定义实现,这里不进行限定,可灵活扩展。例如,自定义的规则中包括各种语义相同的节点属性值,例如,BJ与beijing的语义是相同的。

可以理解的是,当节点的节点属性值为空时,可只判断第一节点和第二节点的节点类型是否相同。

A4:当第二节点的数量为多个时,对多个第一节点的匹配结果进行比较,重新确定第一节点的匹配结果。

可以理解的是,当第二节点的数量为多个时,第一节点需要与每个同层级的第二节点进行匹配,获取多个第一节点的匹配结果。进而,可对匹配结果进行量化,这里不限定量化方式,例如分数量化。由此,对多个第一节点的匹配结果进行比较,选择匹配程度最高(即分数最高)的匹配结果重新作为最终的第一节点的匹配结果。

由A1-A4可知,可从节点的节点类型和节点属性值等方面来判断第一节点和第二节点是否匹配。若匹配,表明第一节点和第二节点的节点类型是相同的,且节点属性值在语义上是相同的。

另外,在一种可能的实现方式中,在A3之后,A4之前,方法还包括:

B1:确定与第一节点相邻层级的第一子节点,以及与第二节点相邻层级的第二子节点;第二子节点与第一子节点同层级。

B2:判断第一子节点和第二子节点的节点类型是否相同以及第一子节点和第二子节点的节点属性值是否满足属性值匹配规则,根据判断结果获取第一子节点的匹配结果。

可知,步骤B1和B2的技术实现与步骤A2和A3类似,这里不进行赘述。

B3:根据第一节点的匹配结果、第一节点的匹配结果对应的权重、第一子节点的匹配结果、第一节点的子节点匹配结果对应的权重,重新确定第一节点的匹配结果。

其中,第一节点的匹配结果对应的权重与第一节点的子节点匹配结果对应的权重之和为1。

即,在确定第一节点的匹配结果时,不仅考虑第一节点自身的匹配结果,还考虑第一节点的相邻层级的子节点的匹配结果,以使重新确定的第一节点的匹配结果更加准确。当第一节点的匹配结果对应的权重高于第一节点的子节点匹配结果对应的权重时,表示第一节点自身的匹配结果是更为重要的。

在一种可能的实现方式中,本申请实施例提供了一种根据第一节点的匹配结果、第一节点的匹配结果对应的权重、第一子节点的匹配结果、第一节点的子节点匹配结果对应的权重,重新确定第一节点的匹配结果的具体实施方式,包括:

B31:根据第一节点的匹配结果,确定第一节点的分数。

第一抽象语法树中的第一节点可表示为n,第二抽象语法树中的同层级的每个第二节点可表示为n

type(n)==type(n

B32:根据第一子节点的匹配结果,确定第一子节点的分数。

第一子节点的分数可表示为

在实际应用中,当第一子节点无下一相邻层级子节点时,第一子节点的分数的确定过程与B31中

B33:当第一子节点的数量为多个时,将多个第一子节点的分数的平均值确定为第一节点的子节点分数。

B34:将第一节点的分数、第一节点的匹配结果对应的权重、第一节点的子节点分数、第一节点的子节点匹配结果对应的权重进行加权求和,重新获取第一节点的分数。

重新获取的第一节点的分数可表示为m

其中,α为调节因子,也可称为第一节点的匹配结果对应的权重。(1-α)为第一节点的子节点匹配结果对应的权重。

B35:基于第一节点的分数确定第一节点的匹配结果。

示例地,当第一节点的分数大于分数阈值时,确定第一节点的匹配结果为匹配,否则,为不匹配。这里不限定匹配阈值,可根据实际情况进行确定。例如,当满分数为1时,分数阈值可为0.5。

另外,当第一节点的匹配结果为多个时,可获取多个第一节点的分数,通过对多个第一节点的分数进行比较,确定最高分数m,即m=max(m

参见图4a和图4b,图4a为本申请实施例提供的一个第一抽象语法树的示意图;图4b为本申请实施例提供的一个第二抽象语法树的示意图。图4a中的第一抽象语法树表示的标准化后的第一结构化查询语句为where(product_name='a'and type=='toy')and(price>18 or weight>100),图4b中的第二抽象语法树表示的标准化后的第一结构化查询语句为where(product_name='a'or type=='toy')and(price>18 and weight>100)。参见图4c和图4d,图4c为本申请实施例提供的一种匹配结果的示意图;图4d为本申请实施例提供的另一种匹配结果的示意图。图4c展示的是α小于0.5时的第一抽象语法树的节点的匹配结果,图4d展示的是α大于0.5时的第一抽象语法树的节点的匹配结果。如图4c和图4d所示,当α小于0.5或α大于0.5时,节点的匹配结果不同。图4c和图4d中的节点为深色底色时,表示该节点的匹配结果为不匹配(即第二抽象语法树中没有同层级节点与该节点是匹配的),节点为浅色底色时,表示该节点的匹配结果为匹配(即第二抽象语法树中存在同层级节点与该节点是匹配的)。由此,可根据实际需求选择合适的调节因子。例如,若想强调第一节点的匹配结果对第一节点的分数的影响时,可加大对应的调节因子。

基于B1-B3可知,可结合第一节点自身的匹配结果以及第一节点的相邻层级子节点的匹配结果,来共同确定第一节点的匹配结果,以使第一节点的匹配结果更加准确。

基于B31-B35可知,可对第一节点自身的匹配结果以及第一节点的相邻层级子节点的匹配结果进行分数量化,以第一节点的分数来确定第一节点的匹配结果,能够更加直观地表示第一节点的匹配结果。

S203:结合第一抽象语法树中的根节点的匹配结果、根节点的匹配结果对应的权重、根节点的子节点的匹配结果以及根节点的子节点匹配结果对应的权重,确定第一结构化查询语句与第二结构化查询语句的语句相似度。

根节点的匹配结果对应的权重与根节点的子节点匹配结果对应的权重不同,表示第一抽象语法树中的根节点的匹配结果与根节点的子节点的匹配结果对语句相似度的影响程度不同,可根据实际情况确定各自对应的权重。

其中,根节点的匹配结果对应的权重与根节点的子节点匹配结果对应的权重之和为1。权重不同,表示对第一结构化查询语句与第二结构化查询语句的语句相似度的影响程度不同。

在一种可能的实现方式中,本申请实施例提供了一种结合第一抽象语法树中的根节点的匹配结果、根节点的匹配结果对应的权重、根节点的子节点的匹配结果以及根节点的子节点匹配结果对应的权重,确定第一结构化查询语句与第二结构化查询语句的语句相似度的具体实施方式,包括:

C1:根据第一抽象语法树中的根节点的匹配结果,确定第一抽象语法树中的根节点的分数。

在确定第一抽象语法树中的每个节点的匹配结果(匹配或不匹配)之后,可采用分数对第一抽象语法树中的节点的匹配结果进行量化。

示例地,节点的分数可表示为

C2:根据根节点的相邻层级子节点的匹配结果,确定根节点的相邻层级子节点的分数,将多个相邻层级子节点的分数的平均值确定为根节点的子节点分数。

节点的子节点分数表示为

C3:将根节点的分数、根节点的匹配结果对应的权重、根节点的子节点分数、根节点的子节点匹配结果对应的权重进行加权求和,重新获取根节点的分数。

重新获取的节点的分数s可表示为

可知,当节点为根节点时,适用于上述C1-C3中的各种公式。在实际应用中,可先计算叶子节点的分数,再由下及上计算每一层级中的各个节点的分数,最后便可获得根节点的分数。

C4:基于根节点的分数,确定第一结构化查询语句与第二结构化查询语句的语句相似度。

由于根节点与结构化查询语句的查询结果的关联程度高于其他节点与结构化查询语句的查询结果的关联程度,为了与抽象语法树中的节点在代码中的执行顺序相适应,以根节点的分数,确定第一结构化查询语句与第二结构化查询语句的语句相似度。当根节点的分数越高时,确定第一结构化查询语句与第二结构化查询语句的语句相似度越高。

参见图5a-图5b,图5a为本申请实施例提供的另一个第二抽象语法树的示意图,图5b为本申请实施例提供的另一种匹配结果的示意图。以"select product_name,colorfrom product where type=='toy'group by product_name,color"为第一结构化查询语句为例,获得的第一抽象语法树如图3所示。以“select product_name from productwhere type=='clothes'”为第二结构化查询语句,获得的第二抽象语法树如图5a所示。执行步骤S202后得到的第一抽象语法树中的每个节点的匹配结果如图5b所示,节点为深色底色时,表示该节点的匹配结果为不匹配,节点为浅色底色时,表示该节点的匹配结果为匹配。参见图6,图6为本申请实施例提供的一种根节点的分数的示意图。如图6所示,叶子节点由于没有子节点,因此叶子节点的分数即

基于上述S201-S203的相关内容可知,获取需要检测相似度的第一结构化查询语句和第二结构化查询语句,构建第一结构化查询语句的第一抽象语法树和第二结构化查询语句的第二抽象语法树。抽象语法树用于表示结构化查询语句的抽象语法结构,其中,抽象语法树中的根节点与结构化查询语句的查询结果的关联程度高于其他节点与结构化查询语句的查询结果的关联程度。通过遍历抽象语法树,可以进行语法分析、语义分析和执行等操作。遍历第一抽象语法树中的节点,将遍历到的第一抽象语法树中的节点与第二抽象语法树中的同层级节点进行匹配,获取第一抽象语法树中的节点的匹配结果。该节点的匹配结果表示第二抽象语法树中是否有同层级节点与第一抽象语法树中的节点进行匹配,若有,则匹配结果为匹配,即第一结构化查询语句中的节点表示的语法结构与第二结构化查询语句中相匹配的同层级节点所表示的语法结构在语义上是相同的。进而,为第一抽象语法树中的根节点的匹配结果与根节点的子节点的匹配结果分配不同的权重,权重的不同表示对语句相似度的影响程度不同。由此,可结合第一抽象语法树中的根节点的匹配结果、根节点的子节点的匹配结果以及各自对应的权重,确定第一结构化查询语句与第二结构化查询语句的语句相似度。可知,该方法无需执行数据库,检测成本较低,且保证了语义相似度的匹配。另外,还可以进行部分节点的匹配,对不完全正确的代码,也可以获得部分分数,通过部分分数进行部分节点的匹配量化。

在一种可能的实现方式中,本申请实施例提供了一种S203中结合第一抽象语法树中的根节点的匹配结果、根节点的匹配结果对应的权重、根节点的子节点的匹配结果以及根节点的子节点匹配结果对应的权重,确定第一结构化查询语句与第二结构化查询语句的语句相似度的具体实施方式,包括:

D1:结合第一抽象语法树中的根节点的匹配结果、根节点的匹配结果对应的权重、根节点的子节点的匹配结果以及根节点的子节点匹配结果对应的权重,确定第一结构化查询语句与第二结构化查询语句的第一相似度。

即,S203中确定的语句相似度可称为第一结构化查询语句与第二结构化查询语句的第一相似度。

D2:遍历第二抽象语法树中的节点,将遍历到的第二抽象语法树中的节点与第一抽象语法树中的同层级节点进行匹配,获取第二抽象语法树中节点的匹配结果;第二抽象语法树中节点的匹配结果表示第一抽象语法树中是否有同层级节点与第二抽象语法树中的节点是匹配的。

D3:根据第二抽象语法树中的根节点的匹配结果、根节点的匹配结果对应的权重、根节点的子节点的匹配结果以及根节点的子节点匹配结果对应的权重,确定第一结构化查询语句与第二结构化查询语句的第二相似度。

可以理解的是,若第一抽象语法树为第二抽象语法树的子树,则第一抽象语法树中的节点均能与第二抽象语法树中的节点进行匹配,但是第一抽象语法树和第二抽象语法树并不相同。为了避免此情况的发生,使得第一结构化查询语句和第二结构化查询语句的语句相似度更加准确,还可以第二抽象语法树为基准,通过执行D2-D3获取第一结构化查询语句与第二结构化查询语句的第二相似度。D2-D3的技术实现与S202-S203类似,这里不再赘述。

其中,第一相似度可以看作是第二抽象语法树匹配到第一抽象语法树的程度,第二相似度可以看作是第一抽象语法树匹配到第二抽象语法树的程度。

D4:基于第一相似度以及第二相似度,确定第一结构化查询语句和第二结构化查询语句的语句相似度。

其中,基于第一相似度以及第二相似度,确定第一结构化查询语句和第二结构化查询语句的语句相似度,包括D41或者D42:

D41:将第一相似度与第二相似度的平均结果作为第一结构化查询语句和第二结构化查询语句的语句相似度。

在一种可选示例中,可直接取第一相似度与第二相似度的平均相似度,将平均相似度作为第一结构化查询语句和第二结构化查询语句的语句相似度。

示例地,当第一相似度和第二相似度均用分数进行表示时,可取两个分数的平均分数,以该平均分数来评估第一结构化查询语句和第二结构化查询语句的语句相似度。

D42:将第一相似度作为正确率,将第二相似度作为召回率,计算F

在另一种可选示例中,将第一相似度作为正确率,将第二相似度作为召回率,通过F

其中,F

其中,β1为调节因子,PRECISION表示正确率,RECALL表示召回率。可以理解的是,可根据实际需要,调节β1的大小。

在实际应用中,本申请实施例提供的基于抽象语法树的结构化查询语句相似度的检测方法能够便于数据库应用程序开发和数据库管理,提高了不同结构化查询语句相似度检测效率,同时能够为开发人员提供及时的反馈,帮助改进程序中的SQL语句。另外,该方法可以应用于大语言模型超参数的调优,例如Prompts、温度、Prefix的微调,提高大模型在NL2SQL传统任务上的性能。例如,大模型中有用于开发SQL语句的功能时,便可利用本申请实施例提供的结构化查询语句相似度检测方法来检测开发的SQL语句的质量,当SQL语句相似度高时,表明SQL的开发质量较低,由此便可调节大模型的参数,以提高SQL语句的开发质量。即,通过SQL语句的开发质量来进行大模型参数的调优。另外,本申请实施例提供的基于抽象语法树的SQL语句相似度的检测方法还能够应用于模型预测问题,模型输出预测SQL语句,以通过预测SQL语句与标准SQL语句的相似度来检测模型的预测效果。在该应用中,当采用F

本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。

基于上述方法实施例提供的一种结构化查询语句相似度检测方法,本申请实施例还提供了一种结构化查询语句相似度检测装置,下面将结合附图对结构化查询语句相似度检测装置进行说明。由于本公开实施例中的装置解决问题的原理与本申请实施例上述结构化查询语句相似度检测方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。

参见图7所示,该图为本申请实施例提供的一种结构化查询语句相似度检测装置的结构示意图。如图7所示,该结构化查询语句相似度检测装置包括:

构建单元701,用于获取第一结构化查询语句和第二结构化查询语句,构建所述第一结构化查询语句的第一抽象语法树和所述第二结构化查询语句的第二抽象语法树;抽象语法树用于表示结构化查询语句的抽象语法结构,所述抽象语法树中的根节点与所述结构化查询语句的查询结果的关联程度高于其他节点与所述结构化查询语句的查询结果的关联程度;

遍历单元702,用于遍历所述第一抽象语法树中的节点,将遍历到的所述第一抽象语法树中的节点与所述第二抽象语法树中的同层级节点进行匹配,获取所述第一抽象语法树中的节点的匹配结果;所述第一抽象语法树中节点的匹配结果表示所述第二抽象语法树中是否有同层级节点与所述第一抽象语法树中的节点是匹配的;

第一确定单元703,用于结合所述第一抽象语法树中的根节点的匹配结果、所述根节点的匹配结果对应的权重、所述根节点的子节点的匹配结果以及所述根节点的子节点匹配结果对应的权重,确定所述第一结构化查询语句与所述第二结构化查询语句的语句相似度。

在一种可能的实现方式中,所述遍历单元702,包括:

第一遍历子单元,用于按照所述第一抽象语法树的由下到上的层级结构,分层级遍历所述第一抽象语法树中的节点;

第一确定子单元,用于确定遍历到的所述第一抽象语法树中的第一节点,以及所述第二抽象语法树中的与所述第一节点同层级的第二节点;

判断子单元,用于判断所述第一节点和所述第二节点的节点类型是否相同以及所述第一节点和所述第二节点的节点属性值是否满足属性值匹配规则,根据判断结果获取所述第一节点的匹配结果;

第二确定子单元,用于当所述第二节点的数量为多个时,对多个所述第一节点的匹配结果进行比较,重新确定所述第一节点的匹配结果。

在一种可能的实现方式中,所述装置还包括:

第二确定单元,用于在根据判断结果获取所述第一节点的匹配结果之后,所述当所述第二节点的数量为多个时,对多个所述第一节点的匹配结果进行比较,重新确定所述第一节点的匹配结果之前,确定与所述第一节点相邻层级的第一子节点,以及与所述第二节点相邻层级的第二子节点;所述第二子节点与所述第一子节点同层级;

判断单元,用于判断所述第一子节点和所述第二子节点的节点类型是否相同以及所述第一子节点和所述第二子节点的节点属性值是否满足属性值匹配规则,根据判断结果获取所述第一子节点的匹配结果;

第三确定单元,用于根据所述第一节点的匹配结果、所述第一节点的匹配结果对应的权重、所述第一子节点的匹配结果、所述第一节点的子节点匹配结果对应的权重,重新确定所述第一节点的匹配结果。

在一种可能的实现方式中,所述第三确定单元,包括:

第三确定子单元,用于根据所述第一节点的匹配结果,确定所述第一节点的分数;

第四确定子单元,用于根据所述第一子节点的匹配结果,确定所述第一子节点的分数;

第五确定子单元,用于当所述第一子节点的数量为多个时,将多个所述第一子节点的分数的平均值确定为所述第一节点的子节点分数;

第一获取子单元,用于将所述第一节点的分数、所述第一节点的匹配结果对应的权重、所述第一节点的子节点分数、所述第一节点的子节点匹配结果对应的权重进行加权求和,重新获取所述第一节点的分数;

第六确定子单元,用于基于所述第一节点的分数确定所述第一节点的匹配结果。

在一种可能的实现方式中,所述属性值匹配规则为所述第一节点和所述第二节点的节点属性值相同或第一节点和所述第二节点的节点属性值在语义上相同。

在一种可能的实现方式中,所述抽象语法树中的每个节点均对应有节点类型和节点属性值;

所述第一确定单元703,包括:

第七确定子单元,用于根据所述第一抽象语法树中的根节点的匹配结果,确定所述第一抽象语法树中的根节点的分数;

第八确定子单元,用于根据所述根节点的相邻层级子节点的匹配结果,确定所述根节点的相邻层级子节点的分数,将多个所述相邻层级子节点的分数的平均值确定为所述根节点的子节点分数;

第二获取子单元,用于将所述根节点的分数、所述根节点的匹配结果对应的权重、所述根节点的子节点分数、所述根节点的子节点匹配结果对应的权重进行加权求和,重新获取所述根节点的分数;

第九确定子单元,用于基于所述根节点的分数,确定所述第一结构化查询语句与所述第二结构化查询语句的语句相似度;

其中,当所述根节点对应的节点属性值为空时,所述根节点的匹配结果对应的权重为0,所述根节点的子节点匹配结果对应的权重为1。

在一种可能的实现方式中,所述第一确定单元703,包括:

第十确定子单元,用于结合所述第一抽象语法树中的根节点的匹配结果、所述根节点的匹配结果对应的权重、所述根节点的子节点的匹配结果以及所述根节点的子节点匹配结果对应的权重,确定所述第一结构化查询语句与所述第二结构化查询语句的第一相似度;

第二遍历子单元,用于遍历所述第二抽象语法树中的节点,将遍历到的所述第二抽象语法树中的节点与第一抽象语法树中的同层级节点进行匹配,获取所述第二抽象语法树中节点的匹配结果;所述第二抽象语法树中节点的匹配结果表示所述第一抽象语法树中是否有同层级节点与所述第二抽象语法树中的节点是匹配的;

第十一确定子单元,用于根据所述第二抽象语法树中的根节点的匹配结果、所述根节点的匹配结果对应的权重、所述根节点的子节点的匹配结果以及所述根节点的子节点匹配结果对应的权重,确定所述第一结构化查询语句与所述第二结构化查询语句的第二相似度;

第十二确定子单元,用于基于所述第一相似度以及所述第二相似度,确定所述第一结构化查询语句和所述第二结构化查询语句的语句相似度。

在一种可能的实现方式中,所述第十二确定子单元,具体用于:

将所述第一相似度与所述第二相似度的平均相似度作为所述第一结构化查询语句和所述第二结构化查询语句的语句相似度;

或者,

将所述第一相似度与所述第二相似度的平均相似度作为所述第一结构化查询语句和所述第二结构化查询语句的语句相似度;

或者,

将所述第一相似度作为正确率,将所述第二相似度作为召回率,计算F

本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。

需要说明的是,本实施例中各个单元的具体实现可以参见上述方法实施例中的相关描述。本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。本申请实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。例如,上述实施例中,处理单元和发送单元可以是同一个单元,也可以是不同的单元。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

基于上述方法实施例提供的一种结构化查询语句相似度检测方法,本申请还提供一种电子设备,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一实施例所述的结构化查询语句相似度检测方法。

下面参考图8,其示出了适于用来实现本申请实施例的电子设备800的结构示意图。本申请实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(Personal Digital Assistant,个人数字助理)、PAD(portable androiddevice,平板电脑)、PMP(Portable Media Player,便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV(television,电视机)、台式计算机等等的固定终端。图8示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

如图8所示,电子设备800可以包括处理装置(例如中央处理器、图形处理器等)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储装置808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM803中,还存储有电子设备800操作所需的各种程序和数据。处理装置801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。

通常,以下装置可以连接至I/O接口805:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置806;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置807;包括例如磁带、硬盘等的存储装置808;以及通信装置809。通信装置809可以允许电子设备800与其他设备进行无线或有线通信以交换数据。虽然图8示出了具有各种装置的电子设备800,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。

特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置809从网络上被下载和安装,或者从存储装置808被安装,或者从ROM802被安装。在该计算机程序被处理装置801执行时,执行本申请实施例的方法中限定的上述功能。

本申请实施例提供的电子设备与上述实施例提供的结构化查询语句相似度检测方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述实施例,并且本实施例与上述实施例具有相同的有益效果。

基于上述方法实施例提供的一种结构化查询语句相似度检测方法,本申请实施例提供一种计算机可读介质,其上存储有计算机程序,其中,所述程序被处理器执行时实现如上述任一实施例所述的结构化查询语句相似度检测方法。

需要说明的是,本申请上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。

在一些实施方式中,客户端、服务器可以利用诸如HTTP(Hyper Text TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。

上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。

上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行上述结构化查询语句相似度检测方法。

可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元/模块的名称在某种情况下并不构成对该单元本身的限定,例如,语音数据采集模块还可以被描述为“数据采集模块”。

本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。

在本申请的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。

还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

相关技术
  • 一种用于动车组智能库检机器人的双激光测距定位方法
  • 一种巡库机器人智能站台
  • 一种智能巡库机器人管理系统
技术分类

06120116516436