数据匹配的方法、装置、电子设备和储存介质与流程

文档序号:15686514发布日期:2018-10-16 21:06阅读:242来源:国知局

本发明涉及计算机技术领域,尤其涉及一种数据匹配的方法、装置、电子设备和存储介质。



背景技术:

随着互联网行业的不断发展,旅行行业与互联网行业相结合的发展趋势在近些年尤为突出。特别是,如酒店、青年旅社、民宿等为旅行者提供住宿的实体已经广泛地利用互联网向旅行者提供了越来越多的信息,如酒店的名称、地址、电话号码、住宿条件、设施、提供的各项服务等。

然而,在当前的发展现状中,由于在酒店行业中并没有标准的数据规范,因此每个酒店的供应商或分销商的对外api(应用程序界面,applicationprograminterface)都是根据其相应地要求被专属定制的。这就必然导致了各个供应商或分销商的数据模型很可能是不同的。所以当互联网公司,特别是与很多供应商和分销商对接的互联网公司进行对接时,都需要单独进行开发,这在整个互联网酒店领域是一个通用的问题。

目前,大型互联网公司通常具有其自己的标准基础数据模型。在与供应商和分销商对接时,互联网公司使用其自己的标准数据模型来与每个商家的数据进行匹配。在现有的匹配算法中,通常将待匹配的词组(数据)作为整体来执行匹配处理,以达到精确查找的目的。

在实现本发明过程中,发明人发现现有的匹配算法中至少存在如下问题:目前并没有一种高效的方法来实现将商家的原始数据与互联网公司的标准数据进行匹配的任务。将待匹配的词语作为整体来执行匹配处理往往难以得到令人满意的命中结果,因此仍需要大量的人工匹配,导致需要大量的人力成本并且效率低下。



技术实现要素:

有鉴于此,本发明实施例提供一种尤其适用于酒店的数据匹配的方法、装置、电子设备和存储介质,能够高效地实现原始数据与用户标准数据之间的匹配。

为实现上述目的,根据本发明的一个方面,提供了一种数据匹配的方法。

本发明实施例的一种数据匹配的方法包括:以前缀树的形式存储由预定的标准数据形成的标准词典;将原始数据进行切分,得到待匹配字符串,其中,通过正向矢量迭代切分对所述原始数据进行切分,其中,所述正向矢量迭代切分是指对所述原始数据采用从最大字符串到最小字符串的层层迭代检索的方式进行切分;通过所述待匹配字符串与所述标准词典作比较来计算匹配度。

可选地,所述正向矢量迭代切分包括:首先以在所述标准词典中检索到的所述原始数据中的最大分割字符串对所述原始数据进行切分,随后以在所述标准词典中检索到的所述待匹配字符串中的最大分割字符串对待匹配字符串进行切分,直至所述待匹配字符串被切分为最小长度的待匹配字符串。

可选地,所述匹配度通过匹配总分来体现,所述匹配总分以如下公式计算:

其中,r为作为所述待匹配字符串的的匹配项的权重,m为每个匹配项的匹配分数,并且k为待匹配字符串的数量。

可选地,所述权重能够由用户预先定义。

可选地,所述原始数据能够包括下述各项中的至少一项:中文字符、字母、数字、符号、图形。

为实现上述目的,根据本发明的另一方面,提供了一种执行数据匹配的装置。

本发明实施例的一种执行数据匹配的装置包括:标准词典生成模块,用于以前缀树的形式存储由预定的标准数据形成的标准词典;切分模块,用于将原始数据进行切分,得到待匹配字符串,其中,通过正向矢量迭代切分对所述原始数据进行切分,其中,所述正向矢量迭代切分是指对所述原始数据采用从最大字符串到最小字符串的层层迭代检索的方式进行切分;匹配分计算模块,用于通过所述待匹配字符串与所述标准词典作比较来计算匹配度。

可选地,所述正向矢量迭代切分包括:首先以在所述标准词典中检索到的所述原始数据中的最大分割字符串对所述原始数据进行切分,随后以在所述标准词典中检索到的所述待匹配字符串中的最大分割字符串对待匹配字符串进行切分,直至所述待匹配字符串被切分为最小长度的待匹配字符串。

可选地,在所述匹配分计算模块中,所述匹配度通过匹配总分来表示,所述匹配总分以如下公式计算:

其中,r为作为所述待匹配字符串的匹配项的权重,m为每个匹配项的匹配分数,并且k为待匹配字符串的数量。

为实现上述目的,根据本发明的再一方面,提供了一种电子设备。

本发明的一种电子设备包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明所提供的数据匹配的方法。

为实现上述目的,根据本发明的再一方面,提供了一种计算机可读存储介质。

本发明的一种计算机可读存储介质,所述计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行本发明所提供的数据匹配的方法。

根据本发明的技术方案,上述发明中的一个实施例具有如下优点或有益效果:以由预定的标准数据形成的标准词典作为基础,通过正向矢量迭代切分对所述原始数据进行切分,得到待匹配字符串,通过所述待匹配字符串与标准数据比较来计算匹配度,能够高效地实现原始数据与标准数据之间的匹配,从而减少人工处理,进而减少了人力成本并且提高了效率。

上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。

附图说明

附图用于更好地理解本发明,不构成对本发明的不当限定。其中:

图1是根据本发明实施例的数据匹配的方法的流程示意图;

图2是根据本发明实施例的一种执行数据匹配的装置的主要模块的示意图;

图3是根据本发明实施例的一种电子设备的硬件结构示意图。

图4是本发明实施例所采用的数据结构的示意图。

具体实施方式

以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

图1是根据本发明实施例的数据匹配的方法的流程示意图。

如图1所示,本发明实施例的一种数据匹配的方法的主要包括如下步骤:

步骤s1:以前缀树的形式存储由预定的标准数据形成的标准词典;

步骤s2:将原始数据进行切分,得到待匹配单词,其中,使用正向矢量迭代实现切分;

步骤s3:通过将待匹配单词与标准数据作比较来计算匹配度。

以下将具体地说明各个步骤。

步骤s1:

在步骤s1中,对预定的标准数据进行处理以形成对应的标准词典,随后将标准词典存档到内存结构中。

在构建词典时,可以使用公知的存储结构,如tiretree,这是一种结构简单的树型结构。在该tiretree结构中,以对前缀字符逐一比较的方式,可以最大限度地减少无谓的字符串比较,从而快速地查找单词。因此,该tiretree结构又被称为前缀树。在图4中具体地示出了tiretree的结构。

为了简单起见,在图4中以英文为例对tiretree结构进行说明。在图4中,根节点不包含字符,除了根节点之外的每一个节点包含一个字符。从根节点到某一个指定节点的路径上所经过的字符连接起来,作为该指定节点对应的字符串。实心节点指示该实心节点所对应的字符串构成一个完整的单词。因此,从图4的结构中可以看出,在该tiretree结构中,abc、abcd、abd、b、bcd、efg、hij可以构成单词,而ab、c、ef、hi则无法构成完整的单词。更具体地,每个节点可以包含一个长度为26的数组。

替代地,该tiretree结构同样可以应用于中文字符。在中文字符的情况下,因为中文字符的数目远远多于26个,所以该结构会变得相当扩散,并且占用内存空间,因此用节点代表中文字符并不实际。鉴于这种情况,作为tiretree的变体,提出了用三叉树(ternarytree)结构来定义标准字典,可以确保占用较小的内存空间。

步骤s2:

在步骤s2中,通过正向矢量迭代切分对原始数据进行切分,得到待匹配的数据。

在此,术语“正向矢量迭代切分”应当被理解为是一种对待匹配数据采用从最大字符串到最小字符串的层层迭代检索的方式进行切分。最大字符串可以包括但不限于具有明确含义的多个单词,即词组,最小字符串可以包括但不限于具有明确含义的单词。“待匹配的数据”不应被理解为仅包括对待匹配的原始数据进行第一次切分得到的中间字符串,而且应被理解为还包括在第一次切分得到的中间字符串进行再次切分所得到的字符串。切分次数可以是一次或多次。

下面,在需要进行匹配的原始数据是中文的情况下,详细阐述步骤s2。具体地,将原始数据“北京亦庄国际大酒店”用作原始数据的示例。在该示例中,预定的标准词典至少包括以下单词或词组(字符串):“北京亦庄”、“国际大酒店”、“北京”、“亦庄”、“国际”、“酒店”等。

首先在由步骤s1形成的标准词典中检索最大分割词组“北京亦庄”,通过切分得到了待匹配词组为“北京亦庄”和“国际大酒店”。随后,再次以标准词典为依据对其中一个待匹配词组“北京亦庄”进行切分,例如切分为单词“北京”和“亦庄”,以此类推,对每次切分得到的两个或多个待匹配词组继续以同样方式进行切分,直到待匹配词组被切分为单词。其中,每次切分可以采用已知的常见数据匹配方法,例如最大正向匹配法。

最后,通过该迭代切分方式,从“北京亦庄国际大酒店”得到的待匹配单词/词组为“北京亦庄/北京/亦庄/国际/大酒店/大/酒店”。应当注意,在本发明的实现中,需要进行匹配的原始数据包括但不限于酒店的名称、酒店的地址等。

在替代实施例中,需要进行匹配的原始数据还可以是字母、数字、图形和符号,例如电话。

具体地,迭代切分过程可以通过以下程序段来实现:

booleanaccept(lexeme_lexeme){

/**检查新的lexeme对当前的branch的可接受类型

*accepttype:refused不能接受

*accepttype:accepted接受

*accepttype:tonext由相邻分支接受

*/

intaccepttype=checkaccept(_lexeme);

switch(accepttype){caserefused:

//refuse情况returnfalse;

caseaccepted:if(acceptedbranchs==null){

//当前branch没有子branch,则添加到当前branch下

acceptedbranchs=newarraylist<tokenbranch>(2);

acceptedbranchs.add(newtokenbranch(_lexeme));

}else{booleanacceptedbychild=false;

//当前branch拥有子branch,则优先由子branch接纳

for(tokenbranchchildbranch:acceptedbranchs)

{acceptedbychild=childbranch.accept(_lexeme)||

acceptedbychild;}

//如果所有的子branch不能接纳,则由当前branch接纳

if(!acceptedbychild){

acceptedbranchs.add(newtokenbranch(_lexeme));

}}

//设置branch的最大右边界

if(_lexeme.getendposition()>this.rightborder){

this.rightborder=_lexeme.getendposition();

}break;

casetonext:

//把lexeme放入当前branch的相邻分支if(this.nextbranch==null){

//如果还没有相邻分支,则建立一个不交叠的分支

this.nextbranch=newtokenbranch(null);}

this.nextbranch.accept(_lexeme);

break;}

returntrue;}。

步骤s3:

在步骤s3中,通过将待匹配单词与标准词典作比较来计算匹配度。匹配度可以通过匹配分数来体现。按照最简单的方式,匹配分数0表示待匹配字符串与标准数据不匹配,而匹配分数1表示100%匹配。当存在多个待匹配单词时,可以通过对它们的匹配分数之和取平均数得到匹配总分,分数越高表示原始数据与相应的用户标准数据匹配度越高。

在本发明的一个实施例中,所述匹配度通过匹配总分来表示,所述匹配总分以如下公式计算:

其中,r为每个由若干待匹配单词构成的匹配项的权重,r的值可以由用户根据需要来灵活地预先定义;m为每个匹配项的匹配分数;并且k为待匹配单词的数量。

能够预先定义的权重允许了用户根据当前进行匹配的数据的应用领域,例如酒店数据、机票数据,来设定最优的匹配总分计算方案。

根据本发明实施例的数据匹配的方法可以看出,通过正向矢量迭代切分对所述原始数据进行切分,高效地实现原始数据与用户标准数据之间的匹配,从而减少人工处理,进而减少了人力成本。

图2是根据本发明实施例的一种执行数据匹配的装置的主要模块的示意图。

如图2所示,本发明实施例的一种执行数据匹配的装置20,包括:标准词典生成模块201,用于以前缀树的形式存储由预定的标准数据形成的标准词典;切分模块202,用于将原始数据进行切分,得到待匹配字符串,其中,通过正向矢量迭代切分对所述原始数据进行切分,其中,首先以在所述标准词典中检索到的所述原始数据中的最大分割字符串对所述原始数据进行切分,随后以在所述标准词典中检索到的所述待匹配字符串中的最大分割字符串对待匹配字符串进行切分,直至所述待匹配字符串被切分为预定的最小长度的待匹配字符串;匹配分计算模块203,用于通过所述待匹配字符串与所述标准词典作比较来计算匹配度。

另外,在匹配分计算模块203中,所述匹配度通过匹配总分来表示,所述匹配总分以如下公式计算:

其中,r为作为所述待匹配字符串的匹配项的权重,m为每个匹配项的匹配分数,并且k为待匹配字符串的数量。

根据本发明实施例的执行数据匹配装置可以看出,以由预定的标准数据形成的标准词典作为基础,通过正向矢量迭代切分对所述原始数据进行切分,得到待匹配字符串,通过所述待匹配字符串与所述标准词典作比较来计算匹配度,能够高效地实现原始数据与用户标准数据之间的匹配,从而减少人工处理,进而减少了人力成本。

根据本发明的实施例,本发明还提供了一种电子设备和一种可读存储介质。

本发明实施例的电子设备包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行本发明所提供的数据匹配的方法。

本发明实施例的计算机可读存储介质,所述计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行本发明所提供的数据匹配的方法。

图3是根据本发明实施例的执行数据匹配的电子设备的硬件结构示意图。如图3所示,该电子设备包括:一个或多个处理器31以及存储器32,图3中以一个处理器31为例。其中,存储器32即为本发明所提供的计算机可读存储介质。

执行数据匹配的电子设备还可以包括:输入装置33和输出装置34。

处理器31、存储器32、输入装置33和输出装置34可以通过总线或者其他方式连接,图3中以通过总线连接为例。

存储器32作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的数据匹配的方法对应的程序指令/模块(例如,附图2所示的标准词典生成模块201、切分模块202、匹配分计算模块203)。处理器31通过运行存储在存储器32中的软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的数据匹配的方法。

存储器32可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据数据匹配的装置的使用所创建的数据等。此外,存储器32可以包括高速随机存取存储器,还可以包括存储器,例如至少一个磁盘存储器件、闪存器件、或其他固态存储器件。在一些实施例中,存储器32可选包括相对于处理器31远程设置的存储器,这些远程存储器可以通过网络连接至数据匹配的装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置33可接收输入的数字或字符信息,以及产生与数据匹配的装置的用户设置以及功能控制有关的键信号输入。输出装置34可包括显示屏等显示设备。

所述一个或者多个模块存储在所述存储器32中,当被所述一个或者多个处理器31执行时,执行上述任意方法实施例中的数据匹配的方法。

上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。

根据本发明实施例的技术方案,以由预定的标准数据形成的标准词典作为基础,通过正向矢量迭代切分对所述原始数据进行切分,得到待匹配字符串,通过所述待匹配字符串与标准词典作比较来计算匹配度,能够高效地实现原始数据与用户标准数据之间的匹配,从而减少人工处理,进而减少了人力成本。

上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1