一种字符串比较方法、装置、终端设备及存储介质与流程

文档序号:15095840发布日期:2018-08-04 14:32阅读:195来源:国知局

本发明涉及计算机技术领域,尤其涉及一种字符串相似度的方法。



背景技术:

目前,常见的字符串相似度比较方法主要采用传统的TF-IDF和余弦相似度算法实现,并且直接对两个待匹配的字符串或者文本进行计算,在使用TD-IDF计算词频时仅限于在两个待匹配的字符串或者文本的范围内进行计算,并没有考虑待匹配的字符串或文本的实际应用场景,同一个字符串在不同的应用场景中常常会表示不同的含义,因此仅限于在两个待匹配的字符串或者文本的范围内进行计算,并不能保证得到准确的比较结果,其计算结果的准确率不高。

同时,传统的TF-IDF的计算过程较为复杂,在待匹配的字符串的数据量较大的情况下,其执行效率较低。



技术实现要素:

本发明实施例提供一种字符串比较方法、装置、终端设备及存储介质,以解决现有技术中字符串比较的效率与准确性不高的问题。

第一方面,本发明实施例提供一种字符串比较方法,包括:

根据保单数据库中的保单信息,建立基础词库,其中,所述基础词库包含所述保单信息中的汉语单词和每个所述汉语单词的词频;

获取待匹配的第一字符串和第二字符串;

对所述第一字符串和所述第二字符串分别进行分词处理,得到所述第一字符串包含的第一数量的第一单词和所述第二字符串包含的第二数量的第二单词;

从所述基础词库中匹配每个所述第一单词的词频和每个所述第二单词的词频;

根据所述第一数量、所述第二数量、所述第一字符串中每个所述第一单词的词频,以及所述第二字符串中每个所述第二单词的词频,使用余弦相似度算法计算所述第一字符串和所述第二字符串之间的相似度;

若所述相似度大于预设的相似度阈值,则确认所述第一字符串和所述第二字符串的含义相同。

第二方面,本发明实施例提供一种字符串比较装置,包括:

词库建立模块,用于根据保单数据库中的保单信息,建立基础词库,其中,所述基础词库包含所述保单信息中的汉语单词和每个所述汉语单词的词频;

获取模块,用于获取待匹配的第一字符串和第二字符串;

分词模块,用于对所述第一字符串和所述第二字符串分别进行分词处理,得到所述第一字符串包含的第一数量的第一单词和所述第二字符串包含的第二数量的第二单词;

词频匹配模块,用于从所述基础词库中匹配每个所述第一单词的词频和每个所述第二单词的词频;

相似度计算模块,用于根据所述第一数量、所述第二数量、所述第一字符串中每个所述第一单词的词频,以及所述第二字符串中每个所述第二单词的词频,使用余弦相似度算法计算所述第一字符串和所述第二字符串之间的相似度;

比较模块,用于若所述相似度大于预设的相似度阈值,则确认所述第一字符串和所述第二字符串的含义相同。

第三方面,本发明实施例提供一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述字符串比较方法的步骤。

第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述字符串比较方法的步骤。

本发明实施例与现有技术相比具有如下优点:本发明实施例提供的字符串比较方法、装置、终端设备及存储介质中,根据保单数据库中的保单信息建立基础词库,该基础词库包含保单信息中的汉语单词和每个汉语单词的词频,使得对待匹配的第一字符串和第二字符串进行的字符串比较时,基于该基础词库获取第一字符串和第二字符串中单词的词频,由于基于基础词库获取词频更加具有针对性,使得词频的准确性更高,因此在根据余弦相似度判断第一字符串和第二字符串之间的含义是否相同时,能够有效提高判断结果的准确率,同时,在建立基础词库的基础上,每次进行字符串比较时可以直接从基础词库中获取词频,不需要重复计算词频,在待匹配的字符串的数据量较大时,能够有效提高执行效率。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例1提供的字符串比较方法的实现流程图;

图2是本发明实施例1提供的字符串比较方法中步骤S1的实现流程图;

图3是本发明实施例1提供的字符串比较方法中步骤S11的实现流程图;

图4是本发明实施例1提供的字符串比较方法中步骤S5的实现流程图;

图5是本发明实施例1提供的字符串比较方法中对保单信息进行关联的实现流程图;

图6是本发明实施例2提供的字符串比较装置的示意图;

图7是本发明实施例4提供的终端设备的示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例1

请参阅图1,图1示出了本发明实施例提供的字符串比较方法的实现流程。该字符串比较方法可应用于保险行业中对保单信息的匹配分析。详述如下:

S1:根据保单数据库中的保单信息,建立基础词库,其中,该基础词库包含保单信息中的汉语单词和每个汉语单词的词频。

在本发明实施例中,保单数据库为保险公司预先建立的数据库,用于存储用户购买的保险产品的保单信息。

通过对保单数据库中的保单信息进行分析,识别保单信息中的关键词,使用识别出的关键词建立基础词库。

具体地,对保单信息中的每个属性的内容进行分词处理,这些属性包括用户个人身份属性,保险产品属性等,将分词处理后得到的每个单词作为关键词,并根据每个关键词在保单数据库中出现的次数计算该关键词的词频。

需要说明的是,建立基础词库的目的是为了给字符串比较提供依据,而字符串比较时,由于汉语单词的含义复杂,其与英语单词的语法不同,结构也不同,比较方法也完全不同,因此,基础词库中仅涉及汉语单词,不涉及包括英文字符或阿拉伯数字等在内的其他字符。

进一步地,基础词库可以定期或者实时进行更新。例如,可以每隔预设的时间间隔执行一次本步骤,由于保单数据库中会不断有新的保单信息存入,每次执行本步骤时均是基于最新的保单数据库建立基础词库,从而使得基础词库得到更新;或者,当检测到保单数据库有更新时,执行本步骤完成对基础词库的更新。由于保险公司不断有新保单产生,保单数据库更新频繁,若每次检测到保单数据库有更新即执行本步骤进行基础词库的更新,会导致系统性能下降,因此也可以在更新次数达到预设的次数阈值时,才执行本步骤完成对基础词库的更新,以避免本步骤执行过于频繁对系统性能造成影响。

S2:获取待匹配的第一字符串和第二字符串。

在本发明实施例中,基于步骤S1建立的基础词库,可以进行两个字符串之间的比较,判断两个字符串的含义是否相同。若需要比较两个以上的多个字符串,则可以对字符串进行两两比较,使每个字符串都与其他字符串进行比较,再根据两两比较的结果判断多个字符串的含义是否相同。具体地,待匹配的第一字符串和第二字符串可以是保单信息中的地址字符串。

S3:对第一字符串和第二字符串分别进行分词处理,得到第一字符串包含的第一数量的第一单词和第二字符串包含的第二数量的第二单词。

具体地,对待匹配的第一字符串和第二字符串进行分词处理的方法可以和步骤S1中建立基础词库时,对保单信息中的每个属性的内容进行分词处理的方法相同。

需要说明的是,第一单词和第二单词均为汉语单词,若第一字符串或者第二字符串中存在包括英文字符和阿拉伯数字等在内的其他字符,则在进行分词处理时,先识别出非汉字字符串,然后再对非汉字字符串分隔开的若干个汉字字符串进行分词处理。

S4:从基础词库中匹配每个第一单词的词频和每个第二单词的词频。

具体地,根据步骤S3得到的第一数量的第一单词和第二数量的第二单词,在基础词库中匹配每个第一单词的词频和每个第二单词的词频。

需要说明的是,如果在基础词库中无法匹配到第一单词的词频或者第二单词的词频,则说明该第一单词或者该第二单词尚未存储在基础词库中,此时,需针对第一字符串或者第二字符串,按照步骤S1中提及的建立基础词库的方法对基础词库进行更新,然后在更新后的基础词库中继续匹配第一单词或者所述第二单词的词频。

S5:根据第一数量、第二数量、第一字符串中每个第一单词的词频,以及第二字符串中每个第二单词的词频,使用余弦相似度算法计算第一字符串和第二字符串之间的相似度。

具体地,根据步骤S4得到的每个第一单词的词频和每个第二单词的词频,将每个第一单词的词频组成第一字符串的词向量,将每个第二单词的词频组成第二字符串的词向量。

根据第一字符串的词向量和第二字符串的词向量使用余弦相似度算法,计算第一字符串和第二字符串之间的相似度。

S6:若第一字符串和第二字符串之间的相似度大于预设的相似度阈值,则确认该第一字符串和该第二字符串的含义相同。

具体地,当步骤S5计算得到的相似度大于预设的相似度阈值时,确认第一字符串和第二字符串的含义相同,否则,若相似度小于或者等于相似度阈值,则确认第一字符串和第二字符串的含义不相同。

根据余弦相似度算法计算出的相似度的取值范围在[0,1]之间,因此,预设的相似度阈值可以设置为0.9,但并不限于此,相似度阈值可以根据应用的需要进行设置,此处不做限制。

可以理解的是,在本发明实施例中,是当相似度大于预设的相似度阈值时,第一字符串和第二字符串的含义相同,在其他实施例中,也可以是当相似度大于或等于预设的相似度阈值时,第一字符串和第二字符串的含义相同。

需要说明的是,本发明实施例提供的字符串比较方法是针对汉字字符串对第一字符串和第二字符串进行比较,当第一字符串或第二字符串中包含其他字符时,对其他字符可以采用直接比对的方式进行比较,并根据比较结果和相似度综合判断第一字符串和第二字符串的含义是否相同。例如,若根据本步骤得到相似度大于预设的相似度阈值,但第一字符串和第二字符串的阿拉伯数字不相同,则可以认为第一字符串和第二字符串的含义不相同。

在图1对应的实施例中,预先计算基础词库中每个词的词频,在对待匹配字符串进行比较时,只需要从基础词库中获取对应的词频进行相似度计算,从而使得对字符串的相似度计算是基于实际应用场景中的基础词库进行的,从而更加具有针对性,提高匹配的准确性,同时不需要在每次比较时重新计算词频,并且本提案中计算词频的方法简便易行,能有效提高执行效率。

接下来,在图1对应的实施例的基础之上,下面通过一个具体的实施例对步骤S1中提及的根据保单数据库中的保单信息建立基础词库的具体实现方法进行详细说明。

请参阅图2,图2示出了本发明实施例提供的步骤S1的具体实现流程,详述如下:

S11:对每个保单信息中待处理的汉字字符串进行分词处理,得到汉语单词。

在本发明实施例中,由于保单信息中的各种待处理的字符串除了包含汉字字符,还可能包含包括英文字符和阿拉伯数字等在内的其他字符,例如家庭地址字符串,因此,首先识别出保单信息中的字符串中的非汉字字符串,然后再对非汉语字符串分隔开的若干个汉字字符串进行分词处理。

S12:统计每个汉语单词的出现次数和汉语单词的总词数。

具体地,统计步骤S11得到的每个汉语单词在保单数据库中的出现次数和步骤S11中进行分词处理后得到的汉语单词的总词数。

需要说明的是,汉语单词的总词数是指在分词处理得到的汉语单词的总数。

S13:按照公式(1)计算每个汉语单词的词频:

其中,Tm为第m个汉语单词的词频,Pm为第m个汉语单词的出现次数,G为汉语单词的总词数,m∈[1,G]。

具体地,在步骤S12统计出汉字字符串中的每个汉语单词的出现次数和汉语单词的总词数后,按照公式(1)计算每个汉语单词的词频。

S14:将每个汉语单词和该汉语单词的词频关联保存在基础词库中。

具体地,将步骤S13得到的每个汉语单词的词频和该汉语单词关联保存在基础词库中,使得在进行字符串比较时,可以直接从基础词库中获取目标单词的词频。

为了更好的理解本发明实施例的技术方案,下面通过一个具体的例子说明基础词库的建立过程,详述如下:

假设保单数据库中的保单信息包含下列地址字符串:“广东省深圳市罗湖区中民时代广场”,“广东省深圳市福田区平安大厦”,“广东省深圳市福田区腾讯大厦”,“广东省深圳市福田区中兴大厦”,“广东省广州市天河区正佳广场”和“广东省广州市天河区天河城”。

首先,按照步骤S11将上述地址字符串进行分词处理后,得到的分词结果如下:

1)“广东省深圳市罗湖区中民时代广场”的分词结果为:“广东省”、“深圳市”、“罗湖区”和“中民时代广场”;

2)“广东省深圳市福田区平安大厦”的分词结果为:“广东省”、“深圳市”、“福田区”和“平安大厦”;

3)“广东省深圳市福田区腾讯大厦”的分词结果为:“广东省”、“深圳市”、“福田区”和“腾讯大厦”;

4)“广东省深圳市福田区中兴大厦”的分词结果为:“广东省”、“深圳市”、“福田区”和“中兴大厦”;

5)“广东省广州市天河区正佳广场”的分词结果为:“广东省”、“广州市”、“天河区”和“正佳广场”;

6)“广东省广州市天河区天河城”的分词结果为:“广东省”、“广州市”、“天河区”和“天河城”。

执行步骤S12对上述分词结果进行统计,得到12个汉语单词,包括:“广东省”、“广州市”、“深圳市”、“罗湖区”、“福田区”、“天河区”、“中民时代广场”、“平安大厦”、“腾讯大厦”、“中兴大厦”、“正佳广场”和“天河城”。即汉语单词的总词数G为12。并且,“广东省”的出现次数为6次,“深圳市”的出现次数为4次,“福田区”的出现次数为3次,“广州市”和“天河区”的出现次数均为2次,“罗湖区”、“天河区”、“中民时代广场”、“平安大厦”、“腾讯大厦”、“中兴大厦”、“正佳广场”和“天河城”的出现次数均为1次。即

然后,按照步骤S13中的公式(1)计算上述每个汉语单词的词频。例如,“广东省”的出现次数为6次,因此“广东省”的词频为24/6=4;同理,按照公式(1)可以计算出其他汉语单词的词频分别为:“深圳市”的词频为6,“福田区”的词频为8,“广州市”和“天河区”的词频均为12,“罗湖区”、“天河区”、“中民时代广场”、“平安大厦”、“腾讯大厦”、“中兴大厦”、“正佳广场”和“天河城”的词频均为24。

最后,执行步骤S14将上述24个汉语单词和每个汉语单词的词频关联保存在基础词库中。

在图2对应的实施例中,通过对保单信息中的汉字字符串进行分词处理,得到汉语单词,并按照公式(1)计算每个汉语单词的词频,进而将每个汉语单词及其词频关联保存在基础词库中,完成对基础词库的创建。由于预先计算了基础词库中每个词的词频,因此在对字符串进行比较时,能够直接从基础词库中获取对应的词频进行相似度计算,一方面基于基础词库获取词频更加具有针对性,使得词频的准确性更高,另一方面字符串比较时不需要重复计算词频,在待匹配的字符串的数量庞大时,能够有效提高执行效率。

在图2对应的实施例的基础之上,下面通过一个具体的实施例对步骤S11中提及的对每个保单信息中待处理的汉字字符串进行分词处理,得到汉语单词的具体实现流程进行详细说明。

请参阅图3,图3示出了本发明实施例提供的步骤S11的具体实现流程,详述如下:

S111:对待处理的汉字字符串进行单个字切分,得到n个单个字ai,其中,i∈[1,n],n为该汉字字符串中包含的汉字字符的个数。

在本发明实施例中,对待处理的汉字字符串按照单个字进行切分,得到n个汉字ai,可以将n个汉字ai按照汉字字符串的顺序以数组形式保存,每个汉字即为该数组的一个元素,也就是说,进行单个字切分后的每个单个字的排列顺序按照汉字字符串中的汉字字符顺序从左到右依次排列。

例如,若待处理的汉字字符串为“深圳市罗湖区”,则进行单个字切分得到六个单个字分别为:a1=深,a2=圳,a3=市,a4=罗,a5=湖,a6=区。

S112:若i小于n,则将ai与相邻单个字ai+1进行组合,得到临时词aiai+1。

具体地,从第一个字a1开始,将a1与a2进行组合,得到临时词a1a2。

需要说明的是,当i=n时,此时ai已经是待处理的汉字字符串中的最后一个字,没有相邻单个字,因此无法继续进行组合得到新的临时词。

S113:若该临时词aiai+1在预设的常用词词库中存在,则将临时词aiai+1与相邻单个字ai+2进行组合,得到临时词aiai+1ai+2,并使用临时词aiai+1ai+2继续在常用词词库中进行查找,直到临时词aiai+1ai+2...ak在常用词词库中不存在为止,其中,k∈[i+1,n]。

在本发明实施例中,预设的常用词词库包含了常用的汉字词语,并且该常用词词库可以定期进行更新。

若步骤S112得到的临时词在该常用词词库中存在,则继续将该临时词aiai+1与相邻单个字ai+2进行组合,得到临时词aiai+1ai+2,若临时词aiai+1ai+2仍然在常用词词库中存在,则继续将临时词aiai+1ai+2与ai+3进行组合,得到临时词aiai+1ai+2ai+3,并继续使用临时词aiai+1ai+2ai+3在常用词词库中查找,直到临时词aiai+1ai+2...ak在常用词词库中不存在时,结束查找。

需要说明的是,k的取值范围为大于等于i+1并且小于等于n,也就是说,当k=n时,此时在常用词词库查找的临时词aiai+1ai+2...an已经到达待处理的汉字字符串的最后一个单个字,因此,在完成对临时词aiai+1ai+2...an的查找之后,无论该临时词在常用词词库中是否存在,都不再继续进行查找。

继续以步骤S111提及的待处理的汉字字符串“深圳市罗湖区”为例进行说明,针对步骤S111得到的六个单个字“a1=深,a2=圳,a3=市,a4=罗,a5=湖,a6=区”,先将“深”和“圳”组合成临时词“深圳”,并在常用词词库中查找该临时词“深圳”,由于“深圳”在常用词词库中存在,则继续将“深圳”与相邻的“市”组合成临时词“深圳市”,继续在常用词词库中查找该临时词“深圳市”,由于“深圳市”仍然在常用词词库中存在,故继续将“深圳市”与相邻的“罗”组合成临时词“深圳市罗”,由于“深圳市罗”在常用词词库中不存在,则停止查询,当前的临时词为“深圳市罗”。

S114:若临时词aiai+1ai+2...ak在常用词词库中不存在,则将aiai+1ai+2...ak-1识别为有效词,并从单个字ak开始,若k等于n,则将ak识别为有效词,若k小于n,则将ak作为ai,返回步骤S112继续执行。

具体地,若根据步骤S113得到临时词aiai+1ai+2...ak在常用词词库中不存在,则将aiai+1ai+2...ak-1识别为有效词,并从单个字ak开始,若k小于n,则将ak作为ai,返回步骤S112重新执行。

当k=i+1时,若aiai+1在常用词词库中不存在,则将单个字ai识别为有效词,并且不需要判断该单个字ai在常用词词库中是否存在。

当k=n时,若aiai+1ai+2...an在常用词词库中不存在,则此时ak已经是待处理的汉字字符串中的最后一个字,没有相邻单个字,无法继续进行组合得到新的临时词,因此不再返回步骤S112,直接将ak识别为有效词,并且流程跳转到步骤S116继续执行。

继续以步骤S111提及的待处理的汉字字符串“深圳市罗湖区”为例进行说明,当常用词词库中不存在临时词“深圳市罗”时,则将“深圳市”识别为有效词,然后从单个字“罗”开始,按照步骤S112继续与相邻的“湖”组合成新的临时词“罗湖”,并继续在常用词词库中进行查找。

S115:若临时词aiai+1ai+2...ak在常用词词库中存在并且k=n,则将aiai+1ai+2...ak识别为有效词。

具体地,若根据步骤S113得到临时词aiai+1ai+2...ak在常用词词库中存在并且k=n,则说明临时词aiai+1ai+2...ak已经到达待处理的汉字字符串的最后一个单个字,并且该临时词aiai+1ai+2...ak在常用词词库中存在,则直接将aiai+1ai+2...ak识别为有效词即可,并完成对待处理的汉字字符串的有效词识别。

继续以步骤S111提及的待处理的汉字字符串“深圳市罗湖区”为例进行说明,当常用词词库中不存在临时词“深圳市罗”时,则将“深圳市”识别为有效词,然后从单个字“罗”开始,按照步骤S112继续与相邻的“湖”组合成新的临时词“罗湖”,并继续在常用词词库中查找该临时词“罗湖”,若常用词词库中存在临时词“罗湖”,则将“罗湖”与相邻的“区”组合成临时词“罗湖区”,并继续在常用词词库中查找该临时词“罗湖区”,若常用词词库中存在临时词“罗湖区”,并且此时k=n,则不再继续循环查找,直接将“罗湖区”识别为有效词。

S116:将识别出的有效词确定为该汉字字符串中的汉语单词。

具体地,将步骤S114和步骤S115识别出的有效词作为对该汉字字符串进行分词处理后得到的汉语单词。

继续以步骤S111提及的待处理的汉字字符串“深圳市罗湖区”为例进行说明,根据步骤S114和步骤S115识别出的有效词为:“深圳市”和“罗湖区”,因此,该汉字字符串“深圳市罗湖区”的分词结果为:“深圳市”和“罗湖区”。

在图3对应的实施例中,首先对获取到的待处理的汉字字符串进行单个字切分,然后从首个单个字开始,将其与相邻单个字进行组合成临时词后在常用词库中查找该临时词,若该临时词在常用词词库中存在,则将该临时词与下一个相邻的单个字组合成新的临时词,并继续在常用词库中查找该新的临时词,若仍然能够查询到,则继续组合,并继续在常用词词库中查询,直到在常用词词库中查询不到最新组合成的临时词为止,此时取上一个临时词为有效词,再将剔除有效词后剩余的单个字与下一个相邻单个字继续进行组合,并继续在常用词词库中查询,直到汉字字符串的单个字全部处理完为止。通过单个字切分和组合的方式进行字符串分词,无需设置初始词长,避免了常用词被错误分开,提高字符串分词的准确性,同时,相对于传统的正向最大匹配算法,本发明实施例的技术方案的实现方式更加简便易行,执行效率更高,从而有效提高字符串分词的通用性和分词效率。

在图1至图3对应的实施例的基础之上,下面通过一个具体的实施例对步骤S5中所提及的根据第一数量、第二数量、第一字符串中每个第一单词的词频,以及第二字符串中每个第二单词的词频,使用余弦相似度算法计算第一字符串和第二字符串之间的相似度的具体实现流程进行详细说明。

请参阅图4,图4示出了本发明实施例提供的步骤S5的具体实现流程,详述如下:

S51:根据第一数量、第二数量、第一字符串中每个第一单词的词频,以及第二字符串中每个第二单词的词频,按照如下方式构建第一字符串的第一词向量和第二字符串的第二词向量:

Q1[d+n+m]={T(W1),T(W2),…T(Wd),T(Wd+1),T(Wd+2),…,T(Wd+n),Zn+1,Zn+2,…,Zn+m}

Q2[d+n+m]={T(W1),T(W2),…,T(Wd),Z1,Z2,…,Zn,T(Wn+1),T(Wn+2),…,T(Wn+m)}

其中,Q1[d+n+m]为第一词向量,Q2[d+n+m]为第二词向量,W1,W2,…Wd,Wd+1,Wd+2,…,Wd+n为对第一字符串进行分词处理后得到的第一单词,W1,W2,…Wd,Wn+1,Wn+2,…,Wn+m为对第二字符串进行分词处理后得到的第二单词,d+n为第一数量,d+m为第二数量,T(Ws)为Ws的词频,s∈[1,n+m],Zb的值为0,b∈[1,n+m]。

具体地,根据步骤S3得到的第一数量的第一单词和第二数量的第二单词,以及步骤S4得到的每个第一单词的词频和每个第二单词的词频,构建第一词向量和第二词向量。

S52:按照公式(2)计算第一字符串和第二字符串之间的相似度:

其中,ε为第一字符串和第二字符串之间的相似度。

具体地,根据步骤S51得到的第一词向量和第二词向量,按照公式(2)计算相似度ε。

为了更好的理解本发明实施例的技术方案,下面通过一个具体的例子进行说明,详述如下:

假设待匹配的第一字符串为“广东省深圳市罗湖区中民时代广场”,待匹配的第二字符串为“深圳市罗湖区中民时代广场”。

对第一字符串和第二字符串进行分词处理后,得到的第一单词为“广东省”、“深圳市”、“罗湖区”和“中民时代广场”,第二单词为“深圳市”、“罗湖区”和“中民时代广场”,即第一数量为4,第二数量为3。

以步骤S14中建立的基础词库为例,在该基础词库中匹配每个第一单词的词频和每个第二单词的词频的结果为:“广东省”的词频为4,“深圳市”的词频为6,“罗湖区”和“中民时代广场”的词频均为24。

因此,按照步骤S51的构建方式得到第一字符串的词向量Q1[4]={6,24,24,4},第二字符串的词向量Q2[4]={6,24,24,0}。

根据步骤S52的公式(2)计算第一字符串和第二字符串之间的相似度为:

即第一字符串和第二字符串之间的相似度约为0.9933。

假设预设的相似度阈值为0.9,则通过上述计算结果可知,第一字符串“广东省深圳市罗湖区中民时代广场”和第二字符串“深圳市罗湖区中民时代广场”的含义相同。

若不按照本发明实施例的技术方案中所提及的基于基础词库提供的词频计算相似度,而采用现有技术直接根据第一字符串和第二字符串计算相似度的方法,则计算过程为:

对第一字符串和第二字符串进行分词处理后,得到的第一单词仍然为“广东省”、“深圳市”、“罗湖区”和“中民时代广场”,第二单词为“深圳市”、“罗湖区”和“中民时代广场”。

按照每个第一单词和每个第二单词在第一字符串和第二字符串中出现的次数计算词频,则得到每个第一单词的词频和每个第二单词的词频的结果为:“广东省”的词频为1,“深圳市”、“罗湖区”和“中民时代广场”的词频均为2。因此,第一字符串的词向量Q1={2,2,2,1},第二字符串的词向量Q2={2,2,2,0}。

通过余弦相似度算法计算第一字符串和第二字符串的相似度为:

即第一字符串和第二字符串之间的相似度约为0.866。

可见,若相似度阈值仍然为0.9,则按照现有技术的方法计算得到的相似度小于该相似度阈值,因此判定第一字符串“广东省深圳市罗湖区中民时代广场”和第二字符串“深圳市罗湖区中民时代广场”的含义不相同。而事实上,第一字符串仅仅是比第二字符串多了汉语单词“广东省”,在保单信息中“广东省深圳市罗湖区中民时代广场”和“深圳市罗湖区中民时代广场”这两个地址字符串的含义是相同的,从而导致错误的判断结果。

由此可见,本发明实施例提供的技术方案能够更加准确的判断两个字符串的含义是否相同,降低错判率。

在图4对应的实施例中,在利用保单数据库的保单信息中的字符串建立的基础词库的基础上,根据在基础词库中查询到的词频构建词向量,并使用公式(2)计算相似度,使得对字符串的相似度计算基于实际应用场景中的基础词库,从而更加具有针对性,提高匹配的准确性,能够更加准确的判断两个字符串的含义是否相同,降低错判率。

在上述图1至图3对应的实施例的基础之上,在步骤S6提及的若第一字符串和第二字符串之间的相似度大于预设的相似度阈值,则确认该第一字符串和该第二字符串的含义相同之后,还可以进一步对保单信息进行关联。

在本发明实施例中,第一字符串为第一保单信息中的地址字符串,第二字符串为第二保单信息中的地址字符串。例如,该地址字符串可以是家庭住址信息或者工作单位地址信息等。

如图5所示,该字符串比较方法还包括:

S7:建立第一字符串所在的第一保单信息对应的保单与第二字符串所在的第二保单信息对应的保单之间的关联关系。

具体地,若根据步骤S6确认第一字符串和第二字符串的含义相同,则确认第一字符串所在的保单信息对应的保单和第二字符串所在的保单信息对应的保单之间存在关联性,并建立该两个保单之间的关联关系。并且,若第一字符串和第二字符串的相似度越高,则两个保单之间的关联程度越高。

通过对保单进行关联,能够帮助保险公司的相关工作人员准确挖掘保单之间的潜在关系,有利于相关工作人员对保单进行分析,发现各种可能的骗保风险。

需要说明的是,在本发明实施例中,在比较第一字符串和第二字符串的含义是否相同时,若第一字符串或第二字符串中存在非汉字字符,则先将非汉字字符串识别出来,再根据剩余的汉字字符串比较两个字符串的含义是否相同。因此并没有对非汉字字符串的含义是否相同进行判断。这是因为在根据地址字符串对保单进行关联时,通过汉字字符串的比较已经能够有效体现地址字符串的相似程度,在两个地址字符串的汉字字符串的含义相同时,即使非汉字字符串的含义不相同,例如门牌号码不同,也可以认为两个保单之间存在关联性。

在其他实施例中,当需要根据两个地址字符串的精确匹配结果进行保单关联时,也可以在根据对汉字字符串的比较确定两个地址字符串的含义相同后,进一步采用字符直接比对的方式比较两个地址字符串中的非汉字字符串的内容是否相同,若相同则确认两个地址字符串的含义相同,若不相同则确认两个地址字符串的含义不相同。

在图5对应的实施例中,若确认两个地址字符串的含义相同,则说明第一保单信息对应的保单与所述第二保单信息的保单存在关联性,并将两个保单进行关联,从而能够帮助保险公司的相关工作人员准确挖掘保单之间的潜在关系,有利于相关工作人员对保单进行分析,发现各种可能的骗保风险。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

实施例2

对应于上文实施例的字符串比较方法,图6示出了本发明实施例提供的字符串比较装置的结构框图,为了便于说明,仅示出了与本发明实施例相关的部分。

请参阅图6,该字符串比较装置包括:词库建立模块61、获取模块62、分词模块63、词频匹配模块64、相似度计算模块65和比较模块66,各功能模块详细说明如下:

词库建立模块61,用于根据保单数据库中的保单信息,建立基础词库,其中,该基础词库包含保单信息中的汉语单词和每个汉语单词的词频;

获取模块62,用于获取待匹配的第一字符串和第二字符串;

分词模块63,用于对第一字符串和第二字符串分别进行分词处理,得到该第一字符串包含的第一数量的第一单词和该第二字符串包含的第二数量的第二单词;

词频匹配模块64,用于从基础词库中匹配每个第一单词的词频和每个第二单词的词频;

相似度计算模块65,用于根据第一数量、第二数量、第一字符串中每个第一单词的词频,以及第二字符串中每个第二单词的词频,使用余弦相似度算法计算该第一字符串和该第二字符串之间的相似度;

比较模块66,用于若相似度大于预设的相似度阈值,则确认第一字符串和第二字符串的含义相同。

进一步地,词库建立模块61包括:

分词处理子模块611,用于对每个保单信息中待处理的汉字字符串进行分词处理,得到汉语单词;

统计子模块612,用于统计每个汉语单词的出现次数和汉语单词的总词数;

词频计算子模块613,用于按照如下公式计算每个汉语单词的词频:

其中,Tm为第m个汉语单词的词频,Pm为第m个汉语单词的出现次数,G为汉语单词的总词数,m∈[1,G];

关联保存子模块614,用于将每个汉语单词和该汉语单词的词频关联保存在基础词库中。

进一步地,分词处理子模块611包括:

切分单元6111,用于对待处理的汉字字符串进行单个字切分,得到n个单个字ai,其中,i∈[1,n],n为汉字字符串中包含的汉字字符的个数;

组合单元6112,用于若i小于n,则将ai与相邻单个字ai+1进行组合,得到临时词aiai+1;

循环查找单元6113,用于若临时词aiai+1在预设的常用词词库中存在,则将临时词aiai+1与相邻单个字ai+2进行组合,得到临时词aiai+1ai+2,并使用临时词aiai+1ai+2继续在常用词词库中进行查找,直到临时词aiai+1ai+2...ak在常用词词库中不存在为止,其中,k∈[i+1,n];

第一识别单元6114,用于若临时词aiai+1ai+2...ak在常用词词库中不存在,则将aiai+1ai+2...ak-1识别为有效词,并从单个字ak开始,若k等于n,则将ak识别为有效词,若k小于n,则将ak作为ai,返回组合单元6112继续执行;

第二识别单元6115,用于若临时词aiai+1ai+2…ak在常用词词库中存在并且k=n,则将aiai+1ai+2…ak识别为有效词;

结果确定单元6116,用于将识别出的有效词确定为该汉字字符串中的汉语单词。

进一步地,相似度计算模块65包括:

词向量构建子模块651,用于根据第一数量、第二数量、第一字符串中每个第一单词的词频,以及第二字符串中每个第二单词的词频,按照如下方式构建第一字符串的第一词向量和第二字符串的第二词向量:

Q1[d+n+m]={T(W1),T(W2),…T(Wd),T(Wd+1),T(Wd+2),…,T(Wd+n),Zn+1,Zn+2,…,Zn+m}

Q2[d+n+m]={T(W1),T(W2),…,T(Wd),Z1,Z2,…,Zn,T(Wn+1),T(Wn+2),…,T(Wn+m)}

其中,Q1[d+n+m]为第一词向量,Q2[d+n+m]为第二词向量,W1,W2,…Wd,Wd+1,Wd+2,…,Wd+n为对第一字符串进行分词处理后得到的第一单词,W1,W2,…Wd,Wn+1,Wn+2,…,Wn+m为对第二字符串进行分词处理后得到的第二单词,d+n为第一数量,d+m为第二数量,T(Ws)为Ws的词频,s∈[1,n+m],Zb的值为0,b∈[1,n+m];

公式计算子模块652,用于按照如下公式计算第一字符串和第二字符串之间的相似度:

其中,ε为第一字符串和第二字符串之间的相似度。

进一步地,第一字符串为第一保单信息中的地址字符串,第二字符串为第二保单信息中的地址字符串,该字符串比较装置还包括:

关联模块67,用于建立第一保单信息对应的保单与第二保单信息对应的保单之间的关联关系。

本实施例提供的一种字符串比较装置中各模块实现各自功能的过程,具体可参考前述实施例1的描述,此处不再赘述。

实施例3

本实施例提供一计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现实施例1中字符串比较方法,为避免重复,这里不再赘述。或者,该计算机程序被处理器执行时实现实施例2中字符串比较装置中各模块/单元的功能,为避免重复,这里不再赘述。

实施例4

图7是本发明一实施例提供的终端设备的示意图。如图7所示,该实施例的终端设备70包括:处理器71、存储器72以及存储在存储器72中并可在处理器71上运行的计算机程序73,例如字符串比较程序。处理器71执行计算机程序73时实现上述各个字符串比较方法实施例中的步骤,例如图1所示的步骤S1至步骤S6。或者,处理器71执行计算机程序73时实现上述各个字符串比较装置实施例中各模块/单元的功能,例如图6所示模块61至模块66的功能。

示例性的,计算机程序73可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器72中,并由处理器71执行,以完成本发明。一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序73在终端设备70中的执行过程。例如,计算机程序73可以被分割成词库建立模块、获取模块、分词模块、词频匹配模块、相似度计算模块和比较模块,各功能模块详细说明如下:

词库建立模块,用于根据保单数据库中的保单信息,建立基础词库,其中,该基础词库包含保单信息中的汉语单词和每个汉语单词的词频;

获取模块,用于获取待匹配的第一字符串和第二字符串;

分词模块,用于对第一字符串和第二字符串分别进行分词处理,得到该第一字符串包含的第一数量的第一单词和该第二字符串包含的第二数量的第二单词;

词频匹配模块,用于从基础词库中匹配每个第一单词的词频和每个第二单词的词频;

相似度计算模块,用于根据第一数量、第二数量、第一字符串中每个第一单词的词频,以及第二字符串中每个第二单词的词频,使用余弦相似度算法计算该第一字符串和该第二字符串之间的相似度;

比较模块,用于若相似度大于预设的相似度阈值,则确认第一字符串和第二字符串的含义相同。

进一步地,词库建立模块包括:

分词处理子模块,用于对每个保单信息中待处理的汉字字符串进行分词处理,得到汉语单词;

统计子模块,用于统计每个汉语单词的出现次数和汉语单词的总词数;

词频计算子模块,用于按照如下公式计算每个汉语单词的词频:

其中,Tm为第m个汉语单词的词频,Pm为第m个汉语单词的出现次数,G为汉语单词的总词数,m∈[1,G];

关联保存子模块,用于将每个汉语单词和该汉语单词的词频关联保存在基础词库中。

进一步地,分词处理子模块包括:

切分单元,用于对待处理的汉字字符串进行单个字切分,得到n个单个字ai,其中,i∈[1,n],n为汉字字符串中包含的汉字字符的个数;

组合单元,用于若i小于n,则将ai与相邻单个字ai+1进行组合,得到临时词aiai+1;

循环查找单元,用于若临时词aiai+1在预设的常用词词库中存在,则将临时词aiai+1与相邻单个字ai+2进行组合,得到临时词aiai+1ai+2,并使用临时词aiai+1ai+2继续在常用词词库中进行查找,直到临时词aiai+1ai+2...ak在常用词词库中不存在为止,其中,k∈[i+1,n];

第一识别单元,用于若临时词aiai+1ai+2...ak在常用词词库中不存在,则将aiai+1ai+2...ak-1识别为有效词,并从单个字ak开始,若k等于n,则将ak识别为有效词,若k小于n,则将ak作为ai,返回组合单元继续执行;

第二识别单元,用于若临时词aiai+1ai+2…ak在常用词词库中存在并且k=n,则将aiai+1ai+2…ak识别为有效词;

结果确定单元,用于将识别出的有效词确定为该汉字字符串中的汉语单词。

进一步地,相似度计算模块包括:

词向量构建子模块,用于根据第一数量、第二数量、第一字符串中每个第一单词的词频,以及第二字符串中每个第二单词的词频,按照如下方式构建第一字符串的第一词向量和第二字符串的第二词向量:

Q1[d+n+m]={T(W1),T(W2),…T(Wd),T(Wd+1),T(Wd+2),…,T(Wd+n),Zn+1,Zn+2,…,Zn+m}

Q2[d+n+m]={T(W1),T(W2),…,T(Wd),Z1,Z2,…,Zn,T(Wn+1),T(Wn+2),…,T(Wn+m)}

其中,Q1[d+n+m]为第一词向量,Q2[d+n+m]为第二词向量,W1,W2,…Wd,Wd+1,Wd+2,…,Wd+n为对第一字符串进行分词处理后得到的第一单词,W1,W2,…Wd,Wn+1,Wn+2,…,Wn+m为对第二字符串进行分词处理后得到的第二单词,d+n为第一数量,d+m为第二数量,T(Ws)为Ws的词频,s∈[1,n+m],Zb的值为0,b∈[1,n+m];

公式计算子模块,用于按照如下公式计算第一字符串和第二字符串之间的相似度:

其中,ε为第一字符串和第二字符串之间的相似度。

进一步地,第一字符串为第一保单信息中的地址字符串,第二字符串为第二保单信息中的地址字符串,该计算机程序73还可以被分割成:

关联模块,用于建立第一保单信息对应的保单与第二保单信息对应的保单之间的关联关系。

终端设备70可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。终端设备70可包括,但不仅限于,处理器71、存储器72。本领域技术人员可以理解,图7仅仅是终端设备70的示例,并不构成对终端设备70的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如终端设备70还可以包括输入输出设备、网络接入设备、总线等。

所称处理器71可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

存储器72可以是终端设备70的内部存储单元,例如终端设备70的硬盘或内存。存储器72也可以是终端设备70的外部存储设备,例如终端设备70上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器72还可以既包括终端设备70的内部存储单元也包括外部存储设备。存储器72用于存储计算机程序以及终端设备70所需的其他程序和数据。存储器72还可以用于暂时地存储已经输出或者将要输出的数据。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。

以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

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