一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

字符串相似度确定的制作方法

2023-02-10 18:25:43 来源:中国专利 TAG:


1.本发明涉及数字计算机系统领域,更具体地说,涉及一种用于确定两个字符串之间相似度的方法。


背景技术:

2.记录链接(record linkage)要求将源数据集的元素链接到目标数据集的相关数据项。为此,可以在数据集的记录之间进行记录匹配。进行记录匹配包括计算字符串之间的相似度。然而,不断需要改进距离测量。


技术实现要素:

3.各种实施例提供了如独立权利要求的主题所述的一种用于确定两个字符串之间的相似度的方法、计算机系统和计算机程序产品。从属权利要求中描述了有利实施例。本公开的实施例如果不相互排斥,则可以互相自由组合。
4.一方面,本发明涉及一种用于确定具有n1个字符的字符串s1与具有n2个字符的字符串s2之间的相似度的方法,其中n1≥0,n2≥0。该方法包括:
5.a.提供距离算法,其被配置用于:
6.i.接收第一字符串和第二字符串;
7.ii.确定为了获得第二字符串而要对第一字符串的字符执行的一个或多个编辑操作的序列,编辑操作是第一类的或第二类的,第一类编辑操作包括字符插入操作或字符删除操作,第二类编辑操作包括字符保持操作;其中,将第一类编辑操作与指示应用编辑操作的成本的操作分数关联;其中,将第一类编辑操作与指示在所述序列中第一类编辑操作之后是否紧跟着第二类编辑操作的切换分数关联;
8.iii.组合与所述编辑操作的序列关联的切换分数和/或操作分数,得到指示第一字符串与第二字符串之间的相似度水平的组合分数;
9.b.将字符串s1的前n2个字符作为第一字符串且将字符串s2的前n2个字符作为第二字符串输入距离算法以获得组合分数,其中0≤n1≤n1,0≤n2≤n2;
10.c.用所获得的组合分数来确定字符串s1与字符串s2之间的距离。
11.另一方面,本发明涉及一种计算机程序产品,其包括计算机可读存储介质,该计算机可读存储介质包含计算机可读程序代码,该计算机可读程序代码被配置用于实现根据前述实施例的方法的所有步骤。
12.另一方面,本发明涉及一种用于确定具有n1个字符的字符串s1与具有n2个字符的字符串s2之间的相似度的计算机系统,其中n1≥0,n2≥0。该计算机系统被配置用于:
13.a.提供距离算法,其被配置用于:
14.i.接收第一字符串和第二字符串;
15.ii.确定要为了获得第二字符串而要对第一字符串的字符执行的一个或多个编辑操作的序列,编辑操作是第一类的或第二类的,第一类编辑操作包括字符插入操作或字符
删除操作,第二类编辑操作包括字符保持操作;其中,将第一类编辑操作与指示应用编辑操作的成本的操作分数关联;其中,将第一类编辑操作与指示在所述序列中第一类编辑操作之后是否紧跟着第二类编辑操作的切换分数关联;
16.iii.组合与所述编辑操作的序列关联的切换分数和/或操作分数,得到指示第一字符串与第二字符串之间的相似度水平的组合分数;
17.b.将字符串s1的前n1个字符作为第一字符串且将字符串s2的前n2个字符作为第二字符串输入距离算法,以获得组合分数,其中0≤n1≤n1且0≤n2≤n2;
18.c.用所获得的组合分数来确定字符串s1与字符串s2之间的距离。
附图说明
19.下面仅以示例的方式,参考以下附图更详细地解释本发明的实施例,其中:
20.图1是根据本发明主题的示例的计算机系统的框图。
21.图2是根据本发明主题的示例确定两个字符串之间相似度的方法的流程图。
22.图3是根据本发明主题的示例确定两个字符串之间相似度的方法的流程图。
23.图4是根据本发明主题的示例确定两个字符串之间相似度的方法的流程图。
24.图5a是根据本发明主题的示例确定两个字符串之间相似度的方法的流程图。
25.图5b显示了根据本发明主题的示例的指示编辑距离的矩阵的内容的演变。
26.图6a是根据本发明主题的示例确定两个字符串之间相似度的方法的流程图。
27.图6b示出了根据本发明主题的示例指示编辑距离的矩阵的内容的演变。
28.图7是根据本发明主题的示例用于确定两个字符串之间相似度的伪代码。
29.图8表示适于实施本发明涉及的一个或多个方法步骤的计算机化系统。
具体实施方式
30.本发明的各种实施例的描述将用于说明目的,但并不旨在是详尽的或限于所公开的实施例。在不偏离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员来说是显而易见的。选择本文中使用的术语是为了最好地解释实施例的原理、相对于市场中发现的技术的实际应用或技术改进,或者使本领域的其他普通技术人员能够理解本文中公开的实施例。
31.两个字符串之间的相似度可以通过两个字符串之间的距离来衡量。然而,准确地确定适用于大量不同被比较字符串的距离可能是一项具有挑战性的任务。为此,本发明主题可以提供字符串相似度函数,其提供指示本发明算法特定的距离指示的数值。该数值可以是本文所述的组合分数(combined score)。本文使用的术语“字符串”(string)可以是零个或多个字符的序列,其中的字符可以是数字、字母或任何特殊字符。准确确定两个字符串的相似度会影响若干可能使用相似度分析的应用领域。例如,本发明的字符串距离算法可用于欺诈检测、指纹分析、剽窃检测、本体合并、dna分析、rna分析、图像分析、基于证据的机器学习、数据库数据去重、数据挖掘、增量搜索、数据集成、恶意软件检测、语义知识集成、以及自然语言处理,其中自动拼写更正可以通过从字典中选择与相关单词距离较近的单词来确定拼写错误的单词的候选更正。
32.本发明主题可以通过计算将一个字符串转换为另一个字符串所需的编辑操作的
个数来计算编辑距离(edit distance)。基于编辑操作的类型对编辑操作进行计分。此外,本发明主题还可基于操作的应用顺序来对操作进行计分。这可提供准确的比较,并可克服现有编辑距离度量的以下问题。例如,“textile”和“textile company”之间的levenshtein相似度,与“textile”和“tceoxm tpialney”之间的levenshtein相似度相同,这仅仅是因为整体插入的“company”与在随机位置插入的字母具有相同的权重。对于“wachter ag”相比于“wechsler ag”和“wachter bau ag”来说,也会出现同样的情况。levenshtein相似度不利于单词置换(word permutations)的程度相当严重。例如,“chaussures-michel”与“michel-chassures”的距离比“chaussures-michel”与“chic-chaussures”的距离更远,这仅仅是因为由于置换需要进行很多插入和删除操作。
33.本发明主题可以提供一种距离算法。距离算法可以接收第一字符串和第二字符串作为输入,并确定为了获得第二字符串而要对第一字符串的字符执行的一个或多个编辑操作的序列。距离算法可以应用一种分数分配规则来对一个或多个编辑操作的序列进行计分。计分的结果是组合分数。组合分数可以是第一字符串与第二字符串之间的编辑距离。编辑操作可以是第一类或第二类。第一类编辑操作包括字符插入操作(称为“i”)或字符删除操作(称为“d”)。第二类编辑操作包括字符保持操作(称为“m”),例如,字符保持操作被命名为“编辑操作”,仅仅是出于命名的目的,因为字符保持操作可能并不涉及编辑。距离算法可以对操作序列的每个操作应用分数分配规则。分数分配规则将指示应用第一类编辑操作的成本的操作分数分配给第一类编辑操作。例如,操作分数可以等于1。分数分配规则可以为第二类编辑操作分配等于零的操作分数,因为第二类编辑操作可能不涉及编辑。在另一示例中,分配给给定编辑操作的操作分数,可以通过与应用所述编辑操作的字符关联的预定义权重进行加权(例如,乘以权重)。此外,如果第一类编辑操作后紧跟着第二类编辑操作,则分数分配规则为第一类编辑操作分配一个切换分数p(或罚分(penalty)),p=sc,其中sc是罚分的值。例如,切换分数可以等于一,或者是最好是小于插入和删除字符的成本之和任意数值。如果在序列中第一类编辑操作之后紧跟着第二类编辑操作,则可将切换分数称为第一类切换分数。第一类编辑操作后紧接着第二类编辑操作的事实可以称为第一类切换。第一类切换分数提供操作类型从第一类变为第二类的罚分。替代地,或者另外地,如果在序列中第一类编辑操作紧跟着之前的第二类编辑操作,分数分配规则可以向第一类编辑操作分配切换分数p。在这种情况下,可将该切换分数称为为第二类切换分数。第一类编辑操作在序列中紧跟着之前的第二类编辑操作的事实可以称为第二类切换。可以选择使用第二类切换分数。为此,可以使用切换分数的应用的不同实现。在一个实现示例中,可以将切换分数定义为p=w
sw
×
sc,其中,可以将w
sw
设置为一个启用或禁用切换分数的值。可以将第一类切换分数和第二类切换分数分别与权重w
sw1
和w
sw2
关联,其中,启用切换分数时,第一类切换分数的权重可设置为1,即w
sw1
=1,而第二类切换分数可设置为1(如果被考虑),或设置为零(如果没有被考虑),例如w
sw2
=1或0。第一类切换分数可以是p=w
sw1
×
sc,第二类切换分数可以是p=w
sw2
×
sc。因此,在一个或多个编辑操作的序列上应用分数分配规则,可产生该编辑操作序列的切换分数和/或操作分数。距离算法可以组合这些与编辑操作序列关联的切换分数和/或操作分数,以获得指示第一与第二字符串之间的相似度水平的组合分数或编辑距离。例如,可以通过将分数相加来执行该组合。该距离算法的有利之处在于,其可以提供被比较字符串之间的精确编辑距离。使用切换分数和操作分数的组合,无论该编辑操作
序列是如何确定的,按照本发明主题的分数分配规则都可以实现准确的编辑距离。可以用不同的技术来获得编辑操作的序列。例如,可以确定编辑操作的不同候选序列,然后选择具有最低组合分数或最低编辑距离的候选序列。例如,可以通过以下操作从字符串“soup”获得字符串“shop”:删除字符“s”、“o”、“u”、“p”的四个删除操作;以及插入“s”、“h”、“o”、“p”的四个插入操作。上述操作产生一个8个操作的序列ddddiiii,该序列将给出距离8,因为可以通过8个编辑操作转换这两个字符串,操作分数为1。然而,可以进行这种转换的最小操作集合可能具有更小的距离,例如,通过保持“s”、插入“h”、保持“o”、删除“u”和保持“p”,就可以从“soup”获得“shop”,这是一个5个操作的序列mimdm,具有更小的距离6,例如,四个切换分数和两个操作分数,其中切换分数为1,操作分数为1。在另一个示例中,可以使用诸如levenshtein编辑距离技术之类的已知技术来获得编辑操作的序列。
34.在下文中,可以将要进行比较的两个初始字符串称为具有n1个字符的字符串s1(n1≥0)和具有n2个字符的字符串s2(n2≥0)。距离算法可以被配置用于计算该算法的两个输入字符串(称为第一字符串和第二字符串)的组合分数(距离),其中第一字符串有n1个字符,第二字符串有n2个字符。根据距离算法的执行方式,n1和n2可以分别等于或不等于n1和n2,0≤n1≤n1且0≤n2≤n2。针对n1=0和n2>0确定的组合分数,可指示将一个空字符转换为n2个字符的成本,其对应于n2个插入操作。针对n1》0和n2=0确定的组合分数,可指示将n1个字符转换为一个空字符的成本,其对应于n1个删除操作。
35.在一个第一实现示例中,可以将距离算法配置得用于不依赖于先前计算的分数而直接计算第一字符串与第二字符串之间的相似度,例如,距离算法可以独立于任何其他先前计算的分数而计算这两个字符串的组合分数。在这种情况下,为了确定字符串s1和s2之间的相似度,可以用一个输入对(第一字符串、第二字符串)调用距离算法一次。例如,可以通过将两个字符串s1和s2输入距离算法(即,第一字符串为s1,第二字符串为s2),由距离算法(一次性)比较这两个字符串s1和s2,以获得组合分数。
36.根据一个实施例,在n1=n1且n2=n2的情况下,获得的组合分数指示字符串s1与字符串s2之间的距离。获得的组合分数可以是字符串s1与字符串s2之间的编辑距离。例如,如果字符串s1包含字符序列“sp”,而第二字符串s2包含字符序列“shop”,那么,为了获得字符序列“shop”而要在字符“sp”上执行的编辑操作序列为:一个保持操作(因为“s”被保持),两个用于插入字符“ho”的连续插入操作,一个用于保持“p”的保持操作。这种情况下,操作顺序可以是miim。注意,可以使用其他技术来确定其他的操作(i、m和d)的序列。距离算法可以将分数分配规则应用于序列miim。第一个保持操作可收到操作分数os1=0,因为第一个保持操作是属于第二类的操作。第二个操作“i”可收到操作分数os2=1,因为第二个操作是第一类的。第二个操作“i”可进一步接收到第二类切换分数w
sw2
×
sc,因为从第二类“m”的第一个操作到第一类型“i”的第二个操作有一个切换。第三个操作“i”会收到操作分数os3=1,因为第三个操作是第一类的。此外,第三个操作还可接收到第一类切换分数w
sw1
×
sc,因为紧跟着“i”之后的操作是“m”,后者是第二类操作。最后一个操作可收到操作分数os4=0,因为最后一个操作是第二类的操作。可以例如通过将各分数相加或使用其他组合技术而获得组合分数,例如,组合分数可以等于总和:w
sw2
×
sc os1 os2 os3 w
sw1
×
sc os4,其中,w
sw1
=1且w
sw2
=1。
37.根据一个实施例,该方法还包括向字符串s1和字符串s2的每个字符提供字符权重,
可以固定为0到n1之间的一个值,n2可以从0递增到n2,然后n1可以固定为0到n1之间的下一个值,依此类推。这可以使得能够在图5a-5b中描述的矩阵中实现该第二实现示例。在每次迭代中,距离算法可以确定/检查是否:
42.先前已经用第一编辑操作序列为具有n
1-1(且n
1-1≥0)个字符的第一字符串和具有n2个字符的第二字符串确定(例如,或者设置/初始化)了第一组合分数,和/或
43.先前已经用第二编辑操作序列为具有n1个字符的第一字符串和具有n
2-1(且n
2-1≥0)个字符的第二字符串确定(例如,或者设置/初始化)了第二组合分数,和/或
44.先前已经用第三编辑操作序列为具有n
1-1(且n
1-1≥0)个字符的第一字符串和具有n
2-1(且n
2-1≥0)个字符的第二字符串确定(例如,或者设置/初始化)了第三组合分数,且第一字符串和第二字符串的最后一个字符相同。
45.如果所检查的组合分数先前全部在已经被计算和/或设置,则距离算法可以选择所计算的/设置的组合分数中的最低分数。就是说,所选择的最低分数可以是第一或第二或第三组合分数。所选择的最低分数可以是为选择的编辑操作序列确定的组合分数,其中,选择的编辑操作序列是其组合分数以最低分数被选择的第一、第二或第三编辑操作序列。距离算法可以确定为了从当前迭代的第一字符串中获得当前迭代的第二字符串而要执行的除了所选择的编辑操作序列之外的附加操作。因此,用于将当前迭代的第一字符串转换为第二字符串的编辑操作序列包括选择的编辑操作序列加上所确定的附加操作。距离算法可以在应用分数分配规则时考虑到附加操作。如果序列中附加操作之前的操作属于不同的类型,则这可能会产生操作分数和切换分数。可以将所选择的最低分数与因附加操作而产生的操作分数和切换分数进行组合。这个组合分数就是当前迭代的第一字符串与第二字符串之间的编辑距离。
46.如果所检查的组合分数中的至少一个之前未被计算或设置,则距离算法可在选择最低分数和如上所述地确定操作序列和编辑距离之前计算该至少一个组合分数。然而,这只有在第一和第二字符串对的n1=0或n2=0(例如,n1=0和n2=0表示空字符)并且事先没有提供相应的初始值或设定值时,才可能发生。
47.根据一个实施例,该方法还包括保存为每对具有n1=n1个字符的第一字符串和具有从0变到到n2的n2个字符的第二字符串计算的组合分数,以及为每对具有从0变到n1的n1个字符的第一字符串和具有n2=n2个字符的第二字符串计算的组合分数。该方法还包括接收比较两个字符串s3和s4的请求,其中s3=s1 m1且s4=s2 m2,其中m1和m2是零个或多个字符的字符串。该方法的第二示例性实现可以用保存的分数应用于s3和s4,通过在每次迭代中将n1和n2更改为新值(如上所述),重复地向距离算法输入字符串s3的前n1个字符和字符串s4的前n2个字符,其中n1的值在范围0

n1迭代,而n2的值在范围n2 1...n4(矩阵的右象限)迭代,然后,n1的值在范围n1 1...n3迭代,而n2的值在范围0...n4(矩阵的下两个象限)迭代。
48.根据一个实施例,操作序列的确定以及操作分数和切换分数的关联是在字符级并行地执行的。
49.根据一个实施例,可以用距离算法在两个记录之间执行记录匹配。记录匹配包括用距离算法比较两个记录的属性值对,从而得到属性的各个相似度水平,并组合各个相似度水平以确定两个记录是不是匹配记录。距离算法可以根据前面描述的任何示例性实现来执行。
50.数据记录或记录,是相关数据项的集合,例如特定用户的姓名、出生日期和类别。记录代表一个实体,其中,实体指的是记录中存储的信息的用户、对象或概念。术语“数据记录”和“记录”可以互换使用。例如,数据记录可以作为具有关系的实体存储在图形数据库(graph database)中,其中,每个记录可以被分配到图的的节点或顶点,其属性为诸如名称、出生日期之类的属性值。在另一示例中,数据记录可以是关系数据库的记录。
51.对记录进行匹配包括比较记录的属性值。例如,如果记录包括a1到an的一组属性,则通过分别比较属性a1到an的n对值来执行两个记录之间的比较。因此,两个或多个记录之间的比较可可产生n个个体相似度水平,指示各个属性a1到an的值的相似度水平。被比较的记录之间的相似度水平(或匹配水平)可以是个体相似度水平的组合(例如,平均值)。两个记录的匹配水平,表示两个记录的属性值的相似程度。相似度水平、个体相似度水平和词级相似度中的每个相似度,都可以归一化值(例如,0和1之间)的形式或以任何其他使得能够匹配记录的格式提供。如果匹配水平高于预定义的相似度阈值,则表示两条记录匹配。基于本发明构建的去重系统于是可以合并这些记录,因为它们代表相同实体。合并记录是一种可以以不同方式实现的操作。例如,两个记录的合并可包括创建一个黄金(golden)记录,以替代已发现是彼此重复的外观相似的记录。这被称为具有记录级或属性级生存性的数据融合或物理崩溃。如果匹配水平小于或等于预定义的相似度阈值,这表明这两个记录不匹配,因此可以保持为单独的数据记录。
52.根据一个实施例,n1≥1且/或n2≥1。字符串s1与字符串s2之间的相似度水平可通过以下函数建模:其中p是切换分数,d
gl
(s1,s2)是组合分数。
53.图1示出了示例性计算机系统100。例如,计算机系统100可以被配置以执行主数据管理和/或数据仓储,例如,计算机系统100可以启用去重系统。计算机系统100包括数据集成系统101和一个或多个客户端系统或数据源105。客户端系统105可以包括(例如参考图8所述的)计算机系统。客户端系统105可以通过网络连接与数据集成系统101通信,该网络连接包括例如无线局域网(wlan)连接、wan(广域网)连接、lan(局域网)连接、因特网或其组合。数据集成系统101可以控制对中央存储库103的访问(读写访问等)。
54.存储在中央存储库103中的数据记录可以具有诸如公司名称属性的属性集合109a-109p的值。尽管本示例是根据几个属性来描述的,但是可以使用更多或更少的属性。根据本发明主题使用的数据集107可以包括中央存储库103的记录的至少一部分。
55.存储在中央存储库103中的数据记录,可以从客户端系统105接收,由数据集成系统101处理,然后存储在中央存储库103中。接收到的记录可以有也可以没有相同的属性集合109a-109p。例如,数据集成系统101从客户端系统105接收到的数据记录可以不具有属性集合109a-109p的所有值,例如,数据记录可具有属性集合109a-109p的属性子集的值,并且可不具有其余属性的值。换句话说,客户端系统105提供的记录可能具有不同的完整性。完整性是包含数据值的数据记录属性个数与属性集109a-109p中的属性总数的比率。此外,从客户端系统105接收的记录可以具有不同于中央存储库103的存储记录的结构。例如,客户端系统105可以被配置为提供xml格式、json格式或其他格式的记录,以使得能够关联属性与对应的属性值。
56.在另一个示例中,数据集成系统101可以用一个或多个提取-转换-加载(etl)批处理、或通过超文本传输协议(“http”)通信、或通过其他类型的数据交换,从客户端系统105导入中央存储库103的数据记录。
57.例如,数据集成系统101可以被配置为处理接收到的记录,以例如识别重复记录。为此,可以使用实现本发明方法的至少一部分的距离算法120。例如,数据集成系统101可以用距离算法120处理从客户端系统105接收的数据记录,以便在数据集107中找到匹配记录。
58.图2是根据本主题的示例的用于确定两个字符串之间的相似性的方法的流程图。出于解释的目的,图2中描述的方法可以在图1所示的系统中实现,但不限于此实现。距离算法120可以被配置为执行图2的方法。
59.在步骤201中,可以接收第一字符串和第二字符串。第一字符串包含一个n1个字符的序列,第二字符串包含一个n2个字符的序列。
60.在步骤203中,可以确定为了获得第二字符串而要对第一字符串的字符执行的一个或多个编辑操作的序列。该编辑操作序列的确定,可以以不同的方式执行。例如,在距离算法的第二实现示例的情况下,可以如参考图4所述的那样来确定编辑操作序列。例如,可以如图4的步骤403到409所述的那样,用先前计算的分数来确定编辑操作序列。在迭代地调用距离算法来计算距离的情况下,这会特别有利。在距离算法的第一实现示例的情况下,可以如参考图3所述的那样来确定编辑操作序列。在另一个示例中,可以使用诸如levenshtein编辑距离技术之类的已知技术来确定编辑操作序列。
61.在步骤205中,该一个或多个编辑操作的序列的每个操作被一个操作分数,并且根据编辑操作的类型可能还被分配附加的切换分数。例如,如果操作是第一类编辑操作,则可以将该操作与一个指示应用编辑操作的成本的操作分数关联。此外,如果操作是第一类编辑操作,之后紧接着一个第二类编辑操作,则还可以将该操作还与一个切换分数关联。在距离算法的迭代实现的情况下,在步骤205中可以使用先前分配的分数,而不是将这些分数重新分配给先前处理的编辑操作。例如,如果当前迭代的编辑操作序列是“dii”,则可以将在针对序列“di”的上一次迭代中获得的组合分数用于计算该迭代中“dii”的组合分数。
62.在步骤207中,可以组合与该编辑操作序列关联的切换分数和/或操作分数。这会产生一个指示第一与第二字符串之间的相似度水平的组合分数。组合分数可以是第一字符串与第二字符串之间的编辑距离。
63.图3是根据本发明主题的示例的用于确定两个字符串之间的相似度的方法的流程图。出于解释的目的,图3中描述的方法,可以在图1所示的系统中实现,但不限于此实现。
64.在步骤301中,两个字符串s1和s2可以是距离算法的输入。n1个字符的字符串s1可以是距离算法的第一字符串,n2个字符的字符串s2可以是距离算法的第二字符串。
65.在步骤303中,距离算法可以确定用于从第一字符串s1获得第二字符串s2的编辑操作序列。例如,这可以通过逐个字符地顺序处理第一字符串s1来执行。通过确定第一字符串s1的当前字符子序列来执行对第一字符串的每个当前字符的处理,其中,当前子序列包括以当前字符结尾的第一字符串s1的前x个字符,例如,如果第一字符串s1是“abcdef”,当前字符是“c”,则所确定的当前子序列是“abc”。此外,可以确定为了获得第二字符串s2的对应(相同长度的)子序列而要对第一字符串s1的当前字符子序列执行的操作。例如,要从第一字符串“soup”获得第二字符串“shop”,可以首先处理“soup”的字符“s”的第一子序列。该处
理将表明要保持“s”,因为它与第二字符串“shop”的对应子序列“s”是相同的。可以处理下一个与字符“o”关联的字符“so”的子序列,以确定为了获得第二字符串“shop”中的对应子序列“sh”所需的操作。这会产生插入“h”,从而导致被编辑的第一字符串“shoup”。可以处理下一个与字符“u”关联的字符“shou”的子序列,以确定为了获得“shop”的对应子序列“shop”所需的操作。这会产生删除“u”,从而导致被编辑的第一字符串“shop”。可以处理下一个与最后一个字符“p”关联的字符“shop”的子序列,以确定为了获得第二字符串“shop”的对应子序列“shop”的操作。这会产生保持“p”。因此,所确定的操作序列是5个操作的序列mimdm。
66.在步骤305中,距离算法可将分数分配规则应用于所确定的编辑操作序列的每个操作。这会导致编辑操作序列的每个编辑操作具有操作分数,并且可选地,具有附加的切换分数。
67.在步骤307中,距离算法可以计算字符串s1和s2之间的编辑距离。例如,编辑距离可以是分配给确定的编辑操作序列的所有分数的总和。
68.在步骤309中,可以接收—例如作为距离算法的输出的—字符串s1和s2之间的编辑距离。
69.图4是根据本发明主题的示例的用于确定两个字符串s1和s2之间的相似度的方法的流程图。字符串s1有n1个字符,字符串s2有n2个字符。出于解释的目的,图4中描述的方法可以在图1所示的系统中实现,但不限于此实现。
70.在步骤401中,距离算法可以接收具有字符串s1的前n1个字符的第一字符串和具有字符串s2的前n2个字符的第二字符串,其中,0≤n1≤n1,0≤n2≤n2。在步骤401的第一次执行中,距离算法可以接收具有字符串s1的前n1=0个字符的第一字符串和具有字符串s2的前n2=0个字符的第二字符串。也就是说,距离算法可以接收两个空字符。
71.在步骤403中,距离算法可以检查其是否已在先前迭代中确定或初始化了第一和第二字符串对(命名为周围配对)的组合分数—第一和第二字符串分别具有n
′1≥0和n
′2≥0个字符,其中,周围配对(n
′1,n
′2)可以包括(n
′1=n1,n
′2=n
2-1)和/或(n
′1=n
1-1,n
′2=n2)个对。如果第一字符串和第二字符串的最后一个字符相同,则周围配对(n
′1,n
′2)还可以包括(n
′1=n
1-1,n
′2=n
2-1)个对。仅当n1=0或n2=0时,对(n
′1,n
′2)会不满足该条件。如果有之前尚未被处理或尚未用值初始化的周围配对的一个或多个对(缺失配对),距离算法可在步骤405中(从头开始)为缺失配对中的每一对确定为了从该对的n
′1字符获得该对的n
′2字符所需的一个或多个编辑操作。并可计算缺失配对的组合分数。然后,可以执行步骤407。
72.如果距离算法之前已经处理了所述n
′1和n
′2个字符的周围配对,这意味着距离算法之前已经计算了字符(n1,n
2-1)和/或(n
1-1,n2)和/或(n
1-1,n
2-1)的序列的周围配对的编辑距离,或者已经用值初始化了所述对,则可以执行步骤407。
73.在步骤407中,距离算法可以选择(n1,n
2-1)和/或(n
1-1,n2)和/或(n
1-1,n
2-1)的序列的中具有最小编辑距离的一个周围配对。距离算法可能在上一次迭代中为所选择的对(n
′1,n
′2)确定了为了获得字符串s2的前n
′2个字符而要对字符串s1的前n
′1个字符执行的编辑操作序列(命名为选择的编辑操作序列)。因此,在步骤409中,距离算法可以确定或者假设,为了获得字符串s2的前n2个字符而要对字符串s1的前n1个字符执行的编辑操作序列,是选择的编辑操作序列加上一个附加编辑操作。这一个附加操作可能取决于所选择的对
(n
′1,n
′2)。例如,如果所选对为(n
′1,n
′2)=(n1,n
2-1),则这一个附加编辑操作是插入操作。如果所选对为(n
′1,n
′2)=(n
1-1,n2),则这一个附加编辑操作是删除操作。如果所选对为(n
′1,n
′2)=(n
1-1,n
2-1),则这一个附加编辑操作是保持操作。
74.在步骤411中,距离算法可以通过对附加编辑操作以及最终对选择的编辑操作序列的最后一次编辑操作应用分数分配规则来确定字符串s1的前n1个字符与字符串s2的前n2个字符之间的编辑距离,从而产生附加分数。并且,可以提供该附加分数与字符串s1的前n
′1个字符与字符串s2的前n
′2个字符之间的编辑距离之和,作为字符串s1的前n1个字符与字符串s2的前n2个字符之间的编辑距离。
75.可以确定(步骤413)是否n1=n1且n2=n2。如果是,则可以在步骤415中提供在步骤411中计算的编辑距离,作为字符串s2和s2之间的编辑距离。否则,可以在步骤414中定义新的值对(n
1,
n2),并可重复步骤401至415,直到达到n1=n1且n2=n2为止。可以按照嵌套循环在每次迭代中递增n1和n2,其中,n1代表外循环,n2代表内循环。
76.图5a是用第二实现示例来确定具有n1=4个字符的字符串s1=“soup”与具有n2=4个字符的字符串s2=“shop”之间的相似度的示例方法的流程图。为此,图5a的方法可以用其第一维度表示字符“soup”、第二维度表示字符“shop”的矩阵,但其不限于此矩阵实现。矩阵实现可以实现对处理资源的有效利用。实际上,该方法逐行填充一个矩阵,这样就不用在内存中保留整个矩阵,而是只保留一行以及对当前行的更新。例如,如果矩阵的第一行当前存储在内存中,可以连续计算第二行的单元,直到完全计算出第二行。接下来,第二行在内存中,第三行被填充,依此类推。例如,假设操作分数和切换分数等于1。
77.在步骤501中,距离算法可以创建如图5b所示的大小为(n1 1)
×
(n2 1)的矩阵m 520a。矩阵的最后n2个列代表字符串s2的n2个字符。矩阵的最后n1个行代表字符串s1的n1个字符。附加的第一列和第一行表示代表空字符串的特殊字符∈。第一行表示从空字符获得字符串s2的前n2个字符的成本值,例如,从空字符获得“sho”的成本为3,其对应于三个插入操作,每个插入操作的成本值为1。第一列表示从字符串s1的前n1个字符中获得空字符∈的成本值,例如,从“so”中获得空字符的成本为2,其对应于两个删除操作,每个删除操作的成本值为1。换句话说,矩阵m用初始成本值初始化,该初始成本值可在比较字符串s1和s2时使用。
78.矩阵m的每个单元都有两个对应的第一字符串和第二字符串。如图5b所示,单元m
22
具有第一和第二字符串对(“s”,“s”),单元m
23
具有第一和第二字符串对(“s”,“sh”),单元m
55
具有第一和第二字符串对(“soup”,“shop”)等。可以通过在一次迭代中处理例如m
22
到m
55
的单元中的每个单元以用成本值填充该单元,来执行距离算法的第二实现示例。每个单元中的成本值表示与该单元关联的第一字符串与第二字符串之间的编辑距离。
79.距离算法可以在每个当前单元m
ij
(i是行下标,j是列下标)上执行步骤503到505—该当前单元m
ij
对应的上单元m
i-1,j
、左单元m
i,j-1
和对角单元m
i-1,j-1
(本文中称为周围单元)有预先计算的/初始化的值(例如,如果分配给行i和列j的字符相同,周围单元可包括对角单元)。例如,在矩阵520a中,只有单元m
22
的周围单元填充了值,因此距离算法可以从单元m
22
开始。
80.因此,距离算法可以从具有第一字符串和第二字符串对(“s”,“s”)的单元m
22
开始。距离算法可以确定从“s”中获得“s”的成本,该成本为零,因为它涉及一个保持操作。该成本
可从围绕单元m
22
的三个单元值导出,例如,距离算法可以确定上单元值m
12
和左单元值m
21
等于一,对角线单元值m
11
为零。距离算法可以在步骤503中确定从m
11
到m
22
、从m
12
到m
22
以及从m
21
到m
22
行进/前进的成本,并选择最低的一个。从m
12
前进到m
22
的成本等于单元m
12
的成本加上删除字符“s”的附加操作的成本,即1 1=2。从m
21
前进到m
22
的成本等于单元m
21
的成本加上插入字符“s”的附加操作的成本,即:1 1=2。从m
11
前进到m
22
的成本等于单元m
11
的成本加上保持字符“s”的附加操作的成本,即0 0。因此,在步骤505中,距离算法可以向单元m
22
分配最低的零值。在结果矩阵520b中,单元m
22
的值用附加的符号“ ”标记,以指示是沿着对角线前进/行进而到达单元m
22
的(即,该操作是保持操作)。矩阵520b包括距离算法的第一次执行之后的结果内容。
81.图5b示出了距离算法的不同迭代的矩阵的内容。例如,矩阵520c表示矩阵在处理如图5b所示的当前单元m
34
前的状态。与单元m
22
一样,距离算法可以确定,上单元值m
24
和左单元值m
33
等于3,而对角单元值m
23
等于2。在步骤503中,距离算法可以确定从m
23
到m
34
、从m
24
到m
34
以及从m
33
到m
34
行进的成本,并选择最低的一个。从m
24
前进到m
34
的成本等于单元m
24
的成本加上删除字符“o”的附加操作的成本,即3 1=4。从m
33
前进到m
34
的成本等于单元m
33
的成本加上插入字符“o”的附加操作的成本,即3 1=4。从m
23
前进到m
34
的成本等于单元m
23
的成本加上保持字符“o”的附加操作的成本零以及切换到保持操作的切换分数1,因此为2 1。因此,在步骤505中,距离算法可以将最小值3分配给单元m
34
。由于m
34
的值是从对应的对角单元获得的,因此在结果矩阵520d中,用附加的符号“ ”来标记该值。图5b示出了在距离算法的最后一次迭代之后,矩阵m 520e的内容。在一个示例中,可以将矩阵520e的最后一行和最后一列保存起来,以便如果要比较两个分别包含“soup”和“shop”的字符串时,可以重新使用它们。例如,为了计算分别具有n3和n4个字符的两个字符串“∈souppap”与“∈shopping”之间的编辑距离,可以使用一个新的n3×
n4矩阵,其中,由于可以使用所保存的行和列,因此可以仅计算代表这两个字符串的新矩阵的最后4列和最后3行的单元。例如,可以通过在每次迭代中将n1和n2改变为新值(如上所述),将字符串“∈souppap”的前n1个字符和字符串“∈shopping”的前n2个字符重复输入距离算法来执行该操作,其中,n1的值在范围0...n1上迭代,而n2的值在范围n2 1...n4上(新矩阵的右象限)迭代,然后n1的值在范围n1 1...n3上迭代,n2的值在范围0...n4上(新矩阵的下两个象限)迭代。
82.距离算法可在步骤507中提供右下单元m
55
的值,作为字符串s1=“soup”与字符串s2=“shop”之间的编辑距离。
83.图5a的本发明方法可有利于编辑操作位于相同位置的单词。换言之,有利于相同字母长度较长的单词,即在矩阵m中,沿着对角线进行计算的序列较长。从左上到右下有2
|s1| |s2|-1
到3
|s1| |s2|-1
条不同的路径(允许字符替换总是有3
|s1| |s2|-1
种可能)。因此,计算所有路径并找到对角线最长的路径是np完全的。相反,本方法可依赖于在构建矩阵时每当矩阵中的对角线级数发生变化或从对角线级数发生变化时增加罚分。
84.在另一个示例中,使用图5a中的用于比较字符串s1=“shop”和字符串s2=“shopping”的方法,可以获得矩阵520f。矩阵520f给出了s1与s2之间的距离为5(本质上,如图5b所示,沿着“shop”的对角线前进增加了针对偏差以及“p”、“i”、“n”、“g”的4个插入操作的罚分)。由于所计算的s1与s2之间的距离的值可能高于两个字符串的长度之和(|s1| |s2|),本方法可以通过采用以下方法避免这种情况。如果两个字符串都为空,则相似度为1。否
则,可以在不丧失一般性的情况下假定s1是较短的字符串。那么,如果s1中的所有字符都包含在s2中,则最多引入2|s1|个罚分,并且,如果|s2|≤2|s1|,则最多引入|s2|-1个罚分,即没有足够的字符为s1中的每个字符添加两个罚分。
85.图6a是使用第二实现示例来确定具有n1=4个字符的字符串s1=“durr”与具有n2=5个字符的字符串之间的相似度的示例方法的流程图。与图5a一样,图6a的方法可以用其第一维度表示“durr”的字符、用第二维度表示的字符的矩阵,但该方法不限于此矩阵实现。在本示例中,假设操作分数和第一类切换分数等于1(在本示例中不会使用第二类切换分数,因为本示例涉及字符权重)。第一类转换分数可以用平均字符权重进行加权。此外,字符串s1和s2的每个字符可以与各自的权重关联。这在图6b中表示,其中每个字符都与权重10关联,但
“¨”
除外,其与权重1相关联。然而,为了能够使用矩阵在该实现中分配罚分,矩阵中的每个元素都有一个记录,记录已分配的插入和删除操作的个数以及组合分数。对于矩阵的每个单元,这由对[cost/len]表示,其中“cost”代表组合分数,“len”是迄今为止累计的插入和/或删除操作的个数。例如,矩阵620a的单元m
42
与对[20/2]相关联,指示操作个数为2,并且通过距离算法针对第一字符串“dur”和第二字符串“d”计算的组合分数为20。第一类编辑操作的个数为2个删除操作,因为从“dur”获得“d”的操作集合包括保持“d”的一个保持操作和删除“u”和“r”的两个删除操作。可以通过将总罚分“cost”除以字符数“len”(以获得平均字符权重),然后乘以常数p=w
sw1
×
sc,来计算罚分。分配罚分时,插入和/或删除操作的个数“len”以及迄今为止累积的罚分“cost”重置为零,因为对应的罚分已经被集成到迄今为止累积的成本中。
[0086]
在步骤601中,距离算法可以创建如图6b所示的大小为(n1 1)
×
(n2 1)的矩阵m,620a。矩阵的最后n2个列代表字符串s2的n2个字符。矩阵的最后n1个行代表字符串a1的n1个字符。附加的第一列和第一行表示代表空字符串的特殊字符。第一行表示从空字符获得字符串s2的前n2个字符的成本值,例如,从空字符获得“du
¨”
的成本为21,这对应于每个具有成本值1、权重分别为10、10和1的三个插入操作,即10*1 10*1 1*1。第一列表示从字符串s1的前n1个字符获得空字符的成本值,例如,从“du”获得空字符的成本为20,这对应于每个具有成本值1、权重为10的两个删除操作,即10*1 10*1。换句话说,该矩阵被用可以在比较字符串s1和s2时使用的初始成本值进行了初始化。
[0087]
矩阵m的每个单元都有两个对应的第一字符串和第二字符串。如图6b所示,单元m
22
具有第一和第二字符串的对(“d”,“d”),单元m
23
具有第一和第二字符串的对(“d”,“du”),单元m
56
具有第一和第二字符串对(“durr”,“du
¨
rr”),等等。可以通过在一次迭代中处理例如单元m
22
到m
56
的每个单元以用成本值填充该单元来执行距离算法。每个单元中的成本值指示与该单元关联的第一字符串与第二字符串之间的编辑距离。
[0088]
距离算法可以对每个当前单元m
ij
(i是行下标,j是列下标)执行步骤603到605,每个当前单元m
ij
具有相应的、带有预先计算/初始化的值周围单元m
i-1,j
,m
i,j-1
、m
i,j-1
和m
i-1,j-1
,例如,如果分配给行i和列j的字符相同,则周围单元可以包括对角单元m
i-1,j-1
。例如,图6b示出了矩阵620a在步骤603到605的多次迭代之后的状态。在矩阵620a中,距离算法可以在步骤603到605的下一次迭代中处理单元m
45
,因为它是逐行操作的。
[0089]
对于当前单元m
ij
,距离算法可以在步骤603中确定从m
i-1,j-1
到m
ij
、从m
i-1,j
到m
ij
以及从m
i,j-1
到m
ij
行进的成本,并选择最低的一个。如果分配给行i和列j的字符相同,则可以
确定/考虑从m
i-1,j-1
到m
ij
的行进成本。从m
i-1,j
到m
ij
的行进成本,等于单元m
i-1,j
的成本加上删除分配给行i的字符的附加操作的成本。从m
i,j-1
到m
ij
的行进成本,等于单元m
i,j-1
的成本加上插入分配给列j的字符的附加操作的成本。从m
i-1,j-1
到m
ij
的行进成本,等于单元m
i-1,j-1
的成本加上保持分配给行i和列j的相同字符的附加操作所引起的成本。因此,在步骤605中,距离算法可以将所确定的成本值的最低成本值分配给单元m
ij
。如果—例如—最低行进成本是从m
i-1,j-1
到m
ij
的行进成本,则附加操作引起的成本可以是第一类切换分数w
sw1
×
sc,该分数由平均字符权重加权,其中[cost,len]是单元m
i-1,j-1
的记录成本和个数。也就是说,单元m
ij
的组合分数可能等于:成本 w_c
×wsw1
×
sc。
[0090]
例如,以图6b的矩阵620a的内容,距离算法可以通过在步骤603中确定从m
34
到m
45
、从m
35
到m
45
以及从m
44
到m
45
的行进成本来处理单元m
45
,并选择最低的一个。从m
35
到m
45
的行进成本等于单元m
35
的成本加上删除分配给第4行的字符“r”的附加操作的成本。从m
44
到m
45
的行进成本等于单元m
44
的成本加上插入分配给第5列的字符“r”的附加操作的成本。从m
34
到m
45
的行进成本等于单元m
34
的成本加上保持分配给第4行和第5列的相同字符“r”的附加操作引起的的成本,其中,附加操作引起的成本包括第一类切换分数w
sw1
×
sc,因为该附加操作是第二类型的,最后一个操作是第一类型的,其中,将第一类切换分数用与单元m
34
关联的平均字符权重进行加权,即wc=cost/len=1/1=1。因此,在步骤505中,距离算法可以将最低成本值2分配给单元m
45

[0091]
矩阵620b的内容是处理了矩阵的所有单元后产生的内容。距离算法可以在步骤607中提供右下单元m
56
的值,作为字符串s1=“durr”与字符串与字符串之间的编辑距离。图6b示出了另一个矩阵620c,其是在字符串s1=“dunst”与字符串s2=“du
¨
rr”之间进行距离算法的迭代执行的结果。
[0092]
在一个示例中,可以将多个相似度度量s1,s2,...,sn进行组合。为此,可使用以下公式:sc=0.9max(s1,...,sn) 0.1min(s1,...,sn)。通过这种方法,不同的相似度度量可以捕获两个字符串之间相似度的不同方面。例如,levenshtein函数可以捕获编辑距离,而jaccard相似度函数可以处理单词置换。另一方面,jaccard相似度函数可能会为不同的字符串返回可能不需要的相似度1.0。因此,可以不是简单地使用最大值,而是通过组合函数的最大值和最小值来组合函数。使用本公开中提出的方法可能会导致召回率增加7%(85%至92%)。
[0093]
图7以伪代码示出了用于比较字符串a1和s2的基于矩阵的字符串比较方法的示例工作流的元素。该方法假设字符串已经过预处理,并且已经以合适的方式将与空字符串元素关联的初始值(即矩阵的第一列第一行的值)添加到字符串中。该方法还使用两个罚分函数pen()和pend()。伪代码使用矩阵实现来获得字符串s1与s2之间的编辑距离。“(\e)row”指空行,例如矩阵520a的第一行。“prev”指上一个(previous)字符。“cur”指矩阵的当前行。“top”指的是顶行。“ch1”和“ch2”分别指字符串s1和s2的字符,“ch1”和“ch2”分别被分配给当前单元的行和列。
[0094]“s2_dist”和“s2_pen”是使用左单元(即位于当前单元的同一行但位于左列的单元)的当前单元的距离和罚分。lft_dist指分配给左单元的距离。lft_pen指分配给左单元的罚分。
[0095]“s1_dist”和“s1_pen”是使用顶部单元(即位于当前单元的同一列但位于顶行的单元)的当前单元的距离和罚分。top_dist指分配给顶部单元的距离。top_pen指分配给顶部单元的罚分。
[0096]“d2_dist”和“d2_pen”是使用对角单元(即当前单元左列和顶行的单元)的当前单元的距离和罚分。d_dist指分配给对角单元的距离。d_pen指分配给对角线单元的罚分。
[0097]
罚分(penalty)指本文中所述的切换分数(switching score),距离(distance)指操作分数(operation score)。
[0098]
如果传递给函数pen()的罚分对象(penalty object)的长度为零,表示从对角线移动到横向移动(表示第二类切换)的过渡,则函数pen()返回罚分。取决于否实施加权版本,函数pen()可能会返回零或待分配的某个罚分。函数pend()返回由罚分对象捕获的表示从横向移动到对角线移动(表示第一类切换)的过渡平均罚分。取决于否实施加权版本,函数pend()返回罚分对象中的累积距离除以罚分对象中的字符。在代码的加权版本中,取决于可能产生的罚分,通过由条件“ch1==ch2”改变条件“ch1==ch2&&d2 dist《s1 dist&&&&d2_dist《s2_dist”来强制遵循对角线可能是有益的。
[0099]
图8表示适于实施如本公开中所涉及的方法步骤的至少一部分的通用计算机化系统800(例如数据集成系统)。
[0100]
应当理解,本文中所述的方法至少部分是非交互的,并且通过计算机化系统(诸如服务器或嵌入式系统)加以自动化。然而,在示例性实施例中,本文中所述的方法可以在(部分)交互系统中实现。这些方法可进一步在软件812、822(包括固件822)、硬件(处理器)805或其组合中实现。在示例性实施例中,本文中描述的方法以软件实现为可执行程序,并且由专用或通用数字计算机(诸如个人计算机、工作站、小型计算机或大型计算机)执行。因此,最通用的系统800包括通用计算机801。
[0101]
在示例性实施方式中,就硬件架构而言,如图8所示,计算机801包括处理器805、耦接至存储器控制器815的存储器(主存储器)810、以及通过本地输入/输出控制器835通信地耦接的一个或多个输入和/或输出(i/o)设备(或外围设备)10、845。输入/输出控制器835可以是但不限于如本领域中已知的一个或多个总线或其他有线或无线连接。输入/输出控制器835可以具有—为简要起见而省略的—用以实现通信的其它元件,例如控制器、缓冲器(高速缓冲存储器)、驱动器、中继器和接收器。进一步,本地接口可以包括用以实现上述组件之间的适当通信的地址、控制和/或数据连接。如本文所述的i/o设备10、845一般可以包括本领域已知的任何通用密码卡或智能卡。
[0102]
处理器805是用于执行软件(尤其是存储在存储器810中的软件)的硬件设备。处理器805可以是任何定制的或商业可获得的处理器、中央处理单元(cpu)、与计算机801关联的若干处理器之中的辅助处理器、基于半导体的微处理器(呈微芯片或芯片组的形式)、宏处理器、或通常用于执行软件指令的任何设备。
[0103]
存储器810可以包括易失性存储器元件(例如,随机存取存储器(ram,如dram、sram、sdram等))和非易失性存储器元件(例如,rom、可擦可编程只读存储器(eprom)、电可擦可编程只读存储器(eeprom)、可编程只读存储器(prom))中的任何一个或其组合。注意,存储器810可以具有分布式架构,其中不同部件彼此远离,但是可以由处理器805访问。
[0104]
存储器810中的软件可以包括一个或多个单独的程序,每个程序包括用于实现逻
辑功能(尤其是本公开的实施例中涉及的功能)的可执行指令的有序列表。在图8的示例中,存储器810中的软件包括指令812,例如用于管理诸如数据库管理系统的数据库的指令。
[0105]
存储器810中的软件通常还应包括合适的操作系统(os)811。os 811实质上控制其他计算机程序—诸如用于实现本文所述的方法的可能的软件812—的执行。
[0106]
本文中所述的方法可以为源程序812、可执行程序812(目标代码)、脚本、或包括有待执行的指令集812的任何其他实体的形式。如果是源程序,则需要通过可以包括在存储器810内也可以不包括在存储器810内编译器、汇编器、解释器等来翻译程序,以便结合os 811适当地操作。此外,该方法可以被编写为具有数据和方法类的面向对象的编程语言,或者具有例程、子例程和/或函数的过程编程语言。
[0107]
在示例性实施例中,可以将常规键盘850和鼠标855耦合至输入/输出控制器835。诸如i/o设备845之类的其他输出设备可以包括例如但不限于打印机、扫描仪、麦克风等但输入设备。最后,i/o设备10、845可以进一步包括传送输入和输出两者的设备,例如但不限于网络接口卡(nic)或调制器/解调器(用于访问其他文件、设备、系统、或网络)、射频(rf)或其他收发器、电话接口、网桥、路由器等。i/o设备10、845可以是本领域中已知的任何通用密码卡或智能卡。系统800可进一步包含耦合到显示器830的显示器控制器825。在示例性实施例中,系统800可以进一步包括用于耦合到网络865的网络接口。网络865可以是用于通过宽带连接在计算机801与任何外部服务器、客户端等之间通信的基于ip的网络。网络865在计算机801与外部系统30之间传输和接收执行本文所述的方法中的部分或全部步骤时可能涉及的数据。在示例性实施例中,网络865可以是由服务提供商管理的受管理的ip网络。网络865可以以无线方式,例如使用诸如wifi、wimax等无线协议和技术来实现。网络865也可以为诸如局域网、广域网、城域网、互联网网络或其他类似类型的网络环境的分组交换网络。网络865可以是固定无线网络、无线局域网(lan)、无线广域网(wan)、个域网(pan)、虚拟专用网(vpn)、内联网或其他合适的网络系统,并且包括用于接收和发送信号的设备。
[0108]
如果计算机801是pc、工作站、智能设备等,则存储器810中的软件还可以包括基本输入输出系统(bios)822。bios是在启动时初始化和测试硬件、启动os 811、以及支持在硬件设备之间的数据传送的基本软件例程的集合。bios存储在rom中,使得能在计算机801启动时执行bios。
[0109]
当计算机801运行时,处理器805被配置成用于执行存储在存储器810内的软件812,以便向存储器810和从存储器810传递数据,并且总体上根据该软件来控制计算机801的操作。本文所述的方法和os 811全部或部分(但通常为部分)由处理器805读取,可能在处理器805内进行缓存,随后被执行。
[0110]
当本文中所述的系统和方法如图8所示在软件812中实现时,这些方法可以存储在任何计算机可读介质(如存储器820)上,以供任何计算机相关系统或方法使用或与其结合。存储器820可包括磁盘存储器,例如hdd存储器。
[0111]
本发明主要内容提供以下各项:
[0112]
第1项:一种用于确定具有n1个字符的字符串s1与具有n2个字符的字符串s2之间的距离的方法,其中n1≥0,n2≥0,该方法包括:
[0113]
a.提供距离算法,其被配置成用于:
[0114]
i.接收第一字符串和第二字符串;
[0115]
ii.确定为了获得第二字符串而要对第一字符串的字符执行的一个或多个编辑操作的序列,编辑操作是第一类的或第二类的,第一类编辑操作包括字符插入操作或字符删除操作,第二类编辑操作包括字符保持操作;其中,将第一类编辑操作与指示应用编辑操作的成本的操作分数关联;其中,将第一类编辑操作与指示在所述序列中第一类编辑操作之后是否紧跟着第二类编辑操作的切换分数关联;
[0116]
iii.组合与所述编辑操作的序列关联的切换分数和/或操作分数,得到指示第一字符串与第二字符串之间的相似度水平的组合分数;
[0117]
b.将字符串s1的前n1个字符作为第一字符串且将字符串s2的前n2个字符作为第二字符串输入至距离算法,以获得组合分数,其中,0≤n1≤n1且0≤n2≤n2;
[0118]
c.用所获得的组合分数来确定字符串s1与字符串s2之间的距离。
[0119]
第2项:根据第1项所述的方法,其中,在n1=n1且n2=n2的情况下,所获得的组合分数表示字符串s1与字符串s2之间的距离。
[0120]
第3项:根据第1项所述的方法,其中,n1=0且n2=0;
[0121]
所述输入还包括:
[0122]
重复地将字符串s1的前n1个字符与字符串s2的前n2个字符输入到距离算法,其中,按照嵌套循环递增n1和n2,其中,n1代表外循环,n2代表内循环;
[0123]
其中,距离算法被配置用于通过以下操作来在每次迭代中确定编辑操作的序列:
[0124]
确定是否:
[0125]
先前已经用第一编辑操作序列为具有n
1-1个字符的第一字符串和具有n2个字符的第二字符串确定了第一组合分数,和/或
[0126]
先前已经用第二编辑操作序列为具有n1个字符的第一字符串和具有n
2-1个字符的第二字符串确定了第二组合分数,和/或
[0127]
先前已经用第三编辑操作序列为具有n
1-1个字符的第一字符串和具有n
2-1个字符的第二字符串确定了第三组合分数,且第一字符串和第二字符串的最后一个字符相同;
[0128]
如果确定先前未确定,则确定第一、第二和第三组合分数的组合分数,并选择所确定的组合分数中的最低分数;
[0129]
确定为了从第一字符串获得第二字符串而要执行的除了与所选择的最低分数关联的第一、第二或第三编辑操作序列之一之外的附加操作,其中,如果所选择的对是(n1,n
2-1),则附加操作是插入操作,如果所选择的对是(n
1-1,n2),则附加操作是删除操作,如果所选择的对是(n
1-1,n
2-1),则附加操作是保持操作;
[0130]
其中,编辑操作序列包括与所选择的最低分数关联的第一、第二或第三编辑操作序列其中之一和所确定的附加操作;
[0131]
其中,距离算法在每个迭代中被配置得通过将最低分数与切换分数和/或与附加操作关联的操作分数进行组合而组合与编辑操作序列关联的切换分数和/或操作分数;
[0132]
其中,用最后一次迭代获得的组合分数执行对字符串s1与字符串s2之间的距离的确定。
[0133]
第4项:根据第3项所述的方法,进一步包括为分别具有n1和n2个字符的第一和第二字符串对提供组合分数的初始值,其中,n1=0且n2=0,1,

n2;或n2=0且n2=0andn1=0,1,

n1。
[0134]
第5项:根据第3项或第4项所述的方法,进一步包括:
[0135]
保存为具有n1=n1个字符的第一字符串和具有从0至n2变化的n2个字符第二字符串的每对计算的组合分数,以及为具有从0至n1变化的n1个字符和具有n2=n2个字符的第二字符串的每对计算的组合分数;
[0136]
接收比较分别具有n3和n4个字符的两个字符串s3和s4的请求,其中,s3=s1 m1且s4=s2 m2,其中,m1和m2是零个或多个字符的字符串;和
[0137]
通过重复地向距离算法输入字符串s3的前n1个字符和字符串s4的前n2个字符,用所保存的分数重复所述方法,其中,n1的值在范围0

n1上迭代,而n2的值在范围n2 1...n4上迭代,随后,n1的值在范围n1 1...n3上迭代,而n2的值在范围0

n4上迭代。
[0138]
第6项:根据前述第1至5项中任何一项所述的方法,进一步包括向字符串s1和s2中的每个字符提供字符权重,其中,操作分数与第一类编辑操作的关联包括用第一类编辑操作中涉及的字符的字符权重对关联分数加权。
[0139]
第7项:根据前述第1至6项中任何一项所述的方法,进一步包括向字符串s1和所述字符串s2中的每个字符提供字符权重,其中,操作分数与第一类编辑操作的关联包括用第一类编辑操作中涉及的字符的字符权重对操作分数加权,其中,切换分数与第一类编辑操作的关联包括用权重wc对切换分数加权,所述权重wc是最后一个操作为第一类编辑操作的操作子序列的组合分数和所述子序列中第一类编辑操作的个数的预定义函数。
[0140]
第8项:根据第7项所述的方法,所述函数是所述组合分数与所述子序列中第一类编辑操作的个数的比率。
[0141]
第9项:根据前述第1至8项中任何一项所述的方法,切换分数被称为第一类切换分数,距离算法进一步被配置用于:如果编辑操作序列的任何第一类编辑操作紧随之前的第二类编辑操作,则将第二类型切换分数关联到该第一类编辑操作。
[0142]
第10项:根据前述第1至9项中任何一项所述的方法,其中,所述操作序列的确定以及所述操作分数和偏差分数的关联是在字符级并行地执行的。
[0143]
第11项:根据前述第1至5项中任何一项所述的方法,其中n1≥1且n2≥1,其中根据下式将所述距离转换成相似度量度:
[0144][0145]
其中p是切换分数,d
gl
(s1,s2)是组合分数。
[0146]
第12项:根据前述第1至11项中任何一项所述的方法,其中,字符串s1比字符串s2短。
[0147]
第13项:根据前述第6至10项中任何一项所述的方法,其中,n1≥1且n2≥1,其中,根据下式进一步确定相似度水平:
[0148][0149]
其中是字符串s1和s2的平均字符权重,其中d
gl
(s1,s2)是组合分数,p是切换分数。
[0150]
第14项:根据前述第1至13项中任何一项所述的方法,其中,切换分数小于一个字符插入操作和一个字符删除操作的操作分数之和。
[0151]
第15项:根据前述第1至14项中任何一项所述的方法,所述距离算法被配置为通过
确定编辑操作的不同候选序列并且选择提供最低组合分数的所述候选序列来确定所述一个或多个编辑操作的序列。
[0152]
第16项:一种记录匹配方法,包括用前述第1至15项中任何一项的方法来比较两个记录的属性值对,从而产生所述属性的个体相似度水平,以及组合所述个体相似度水平以确定所述两个记录是否是匹配记录。
[0153]
第17项:一种计算机程序产品,包括计算机可读存储介质,该计算机可读存储介质具有随其包含的计算机可读程序代码,计算机可读程序代码被配置得用于实现前述第1至15项中任何一项的方法。
[0154]
第18项:一种用于确定具有n1个字符的字符串s1和具有n2个字符的字符串s2之间的相似度的计算机系统,其中n1≥0,n2≥0,包括:
[0155]
存储器;
[0156]
处理器;
[0157]
本地数据存储器,具有存储在其上的计算机可执行代码,其中,计算机可执行代码包括处理器可执行的程序指令,以使处理器执行根据前述第1至15项中任何一项的方法。
[0158]
本公开可以是任何可能的技术细节集成水平的系统、方法、和/或计算机程序产品。所述计算机程序产品可包含上面具有用于致使处理器执行本发明的方面的计算机可读程序指令的计算机可读存储介质。
[0159]
计算机可读存储介质可以是能够保留和存储供指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或者上述的任意合适的组合。计算机可读存储介质的更具体示例非穷尽性列表包括以下各项:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式紧凑盘只读存储器(cd-rom)、数字通用盘(dvd)、记忆棒、软盘、诸如穿孔卡或具有记录在其上的指令的槽中的凸出结构的之类的机械编码设备、以及上述各项的任何合适的组合。如本文所使用的计算机可读存储介质不应被解释为瞬态信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,穿过光纤电缆的光脉冲)或通过电线发射的电信号。
[0160]
本文中所述的计算机可读程序指令可以通过网络(例如,互联网、局域网、广域网和/或无线网络)从计算机可读存储介质下载至对应的计算/处理设备或下载至外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口接收来自网络的计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
[0161]
用于执行本公开的操作的计算机可读程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据、或以一种或多种程序设计语言的任何组合编写的源代码或目标代码,这些程序设计语言包括面向对象的程序设计语言(诸如smalltalk、c 等)和过程程序设计语言(诸如“c”程序设计语言或类似程序设计语言)。计算机可读程序指令可以完全地在用户计算机上执行、部分在用户计算机上执行、作为独立软件包执行、部分在用户计算机上部分在远程计算机
上执行或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括局域网(lan)或广域网(wan))连接至用户计算机,或者可连接至外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本公开的各方面。
[0162]
在此参照根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图说明和/或框图描述了本公开的各方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0163]
可以将这些计算机可读程序指令提供给计算机的处理器或其他可编程数据处理装置以产生机器,从而使得通过该计算机的处理器或其他可编程数据处理装置执行的这些指令创建用于实现流程图和/或框图的或多个框中所指定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置、和/或其他设备以特定方式工作,从而,其中存储有指令的计算机可读存储介质包括包含实现流程图和/或框图中的或多个方框中规定的功能/动作的方面的指令的制造品。
[0164]
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置、或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,从而使得在计算机、其他可编程装置、或其他设备上执行的指令实现流程图和/或框图的或多个框中所指定的功能/动作。
[0165]
附图中的流程图和框图展示了根据本公开的不同实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。对此,流程图或框图中的每个框可表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些备选实现中,框中标注的功能可以不按照图中标注的顺序发生。例如,连续示出的两个方框实际上可以作为一个步骤完成,同时、基本上同时、以时间上部分或完全重叠的方式执行,或者方框有时可以以相反的顺序执行,这取决于所涉及的功能。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作或执行专用硬件与计算机指令的组合的专用的基于硬件的系统来实现。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献