本申请要求2007年9月28日提交的标题为“METHOD ANDSYSTEM FOR ASSOCIATING DATA RECORDS IN MULTIPLELANGUAGES”的60/997,025号美国临时申请的优先权,其全部内容通过引用包含于本申请中。本申请还涉及2008年3月27日提交的标题为“METHOD AND SYSTEM FOR MANAGING ENTITIES”的12/056,720号美国专利申请、2007年12月31日提交的标题为“METHOD AND SYSTEM FOR PARSING LANGUAGES”的11/967,588号美国专利申请、2007年9月28日提交的标题为“METHOD ANDSYSTEM FOR INDEXING,RELATING AND MANAGINGINFORMATION ABOUT ENTITIES”的11/904,750号美国专利申请、2007年9月14日提交的标题为“HIERARCHY GLOBALMANAGEMENT SYSTEM AND USER INTERFACE”的11/901,040号美国专利申请、2007年6月1日提交的标题为“SYSTEM ANDMETHOD FOR AUTOMATIC WEIGHT GENERATION FORPROBABILISTIC MATCHING”的11/809,792号美国专利申请、2007年2月5日提交的标题为“METHOD AND SYSTEM FOR AGRAPHICAL USER INTERFACE FOR CONFIGURATION OF ANALGORITHMFOR THE MATCHINE OF DATA RECORDS”的11/702,410号美国专利申请、2007年1月22日提交的标题为“METHOD AND SYSTEM FOR INDEXING INFORMATIONABOUT ENTITIES WITH RESPECT TO HIERARCHIES”的11/656,111号美国专利申请、2006年9月15日提交的标题为“METHOD AND SYSTEM FOR COMPARING ATTRIBUTESSUCH AS PERSONAL NAMES”的11/522,223号美国专利申请以及2006年9月15日提交的标题为“METHOD AND SYSTEM FORCOMPARING ATTRIBUTES SUCH AS BUSINESS NAMES”的11/521,928号美国专利申请的优先权。在本段中引用的所有申请都包含于本申请中,以用于所有目的。
具体实施方式
下面参考附图中示出的例子更充分地解释优选实施例及其各种特征和有利的细节。众所周知的计算机硬件和软件的描述(包括编程和数据处理技术)被省略,以便不会无谓地混淆本详细公开。然而,技术人员应该理解,本详细描述及具体例子尽管公开了本公开的优选实施例,但是它们仅是以示例的方式而不是以限制性的方式给出的。在阅读了本公开之后,在基本创造性概念范围内的各种替换、修改、添加或重新设置对本领域技术人员来说将是显而易见的。
本文公开的一些实施例可以补充如1999年11月23日公布的5,991,758号美国专利中描述的用于索引关于来自不同的信息源的实体的信息的系统和方法的实施例,该专利通过引用包含于此。本文公开的一些实施例可以补充如在上面提到的2007年1月22日提交的标题为“METHOD AND SYSTEM FOR INDEXING INFORMATIONABOUT ENTITIES WITH RESPECT TO HIERARCHIES”的11/656,111号美国专利申请中公开的用于按层次索引关于实体的信息的实体处理系统和方法的实施例,其也通过引用包含于此。
图1是示出实体处理系统30的一个实施例的示例架构的框图。实体处理系统30可以包括身份枢纽(Identity Hub)32,该身份枢纽32处理、更新或保存来自一个或多个信息源34、36、38的关于一个或多个实体的数据记录的数据并且响应于来自多个操作方40、42、44的命令或询问,其中所述操作方可以是人类用户和/或信息系统。身份枢纽32可以利用来自单个信息源的数据记录操作,或者如所示出的利用来自多个信息源的数据记录操作。使用身份枢纽32的实施例跟踪的实体可以包括例如医院中的病人、医疗保健系统的参与者、仓库中的部件或者可以具有与其相关的数据记录和包含在数据记录中的信息的任何其它实体。身份枢纽32可以是具有至少一个中央处理单元(CPU)45的一个或多个计算机系统,其执行保存在一个或多个计算机可读存储介质上的计算机可读指令(例如,软件应用程序)以执行身份枢纽32的功能。如本领域的技术人员所理解的,还可以使用硬件电路或软件和硬件的结合来实施身份枢纽32。
在图1的例子中,身份枢纽32可以从信息源34、36、38接收数据记录,并且将修正后的数据写回到信息源34、36、38中。传送到信息源34、36、38的修正后的数据可以包括是正确的但是已经改变了信息、关于数据记录中的固定信息的信息和/或关于数据记录之间链接的信息。
另外,操作方40、42、44之一可以向身份枢纽32发送询问并且从身份枢纽32接收对该询问的响应。信息源34、36、38可以例如是可具有关于相同实体的数据记录的不同数据库。例如,在医疗保健领域中,每个信息源34、36、38可以与医疗保健组织中的特定医院相关联,并且该医疗保健组织可以使用身份枢纽32来使与多个医院相关联的数据记录发生联系,使得当病人在度假或来到纽约的医院时可以定位该病人在洛杉矶的数据记录。身份枢纽32可以位于中心位置而信息源34、36、38和用户40、42、44的位置可以远离身份枢纽32并且可以例如通过通信链路连接到身份枢纽32,所述通信链路例如因特网或任何其它类型的通信网络,如广域网、内联网、无线网络、租用的网络等。
在一些实施例中,身份枢纽32可以具有其自己的数据库,该数据库将完整的数据记录保存在身份枢纽32中。在一些实施例中,身份枢纽32还可以只包含足以识别数据记录的数据(例如,特定数据源34、36、38中的地址)或者包含完整数据记录的数据区(data field)的任何部分,使得身份枢纽32可以在需要时从信息源34、36、38取回整个数据记录。身份枢纽32可以使用实体标识符或与实际数据记录分开的联合数据库将包含关于同一实体的信息的数据记录链接在一起。因此,身份枢纽32可以保持一个或多个信息源34、36、38中的数据记录之间的链接,但是不必保持实体的单一一致的数据记录。
在一些实施例中,身份枢纽32可以通过比较(从操作方或者从数据源34、36、38接收到的)数据记录与信息源34、36、38中的其它数据记录以识别应该链接在一起的数据记录来链接信息源34、36、38中的数据记录。该识别处理可能需要比较数据记录的一个或多个属性与其它数据记录的类似属性。例如,与一个记录相关的名字属性可以与其它数据记录的名字比较,社会保险号可以与另一记录的社会保险号比较等。这样,可以识别应该链接的数据记录。
对于本领域的技术人员来说,显然信息源34、36、38和操作方40、42、44可以与类似的或不同的组织和/或所有者联系并且可以在物理上相互分开并且/或者远离。例如,信息源34可以与通过一个医疗保健网络运营的洛杉矶医院联系,而信息源36可以与可能由法国公司拥有的另一个医疗保健网络运营的纽约医院联系。因此,来自信息源34、36、38的数据记录可以具有不同的格式、不同的语言等。
这可以通过参考图2A和图2B更清楚地示出,图2A和图2B示出示例数据记录的两个实施例。这些数据记录200、202中的每一个具有一组字段210,该组字段对应于每个数据记录的一组属性。例如,每个记录200的属性之一可以是名字,另一个属性可以是纳税人号等。显然属性可以包括数据记录200、202的多个字段210。例如,数据记录202的地址属性可以包括字段210c、210d和210e,它们分别是街道、城市和州字段。
然而,数据记录200、202每个可具有不同的格式。例如,数据记录202可以具有用于属性“保险公司”的字段210,而数据记录200可以不具有这种字段。另外,类似的属性也可以具有不同的格式。例如,记录202中的名字字段210b可以接受全名的输入,而记录200中的名字字段210a可以设计为允许输入有限长度的名字。当比较两个或更多个数据记录(例如数据记录的属性)以识别应该链接的数据记录时,这种差别可能是有问题的。例如,名字“Bobs Flower Shop”与“Bobs Very Pretty Flower Shoppe”相似但不完全相同。此外,在输入数据记录的数据时的打字错误或失误也影响数据记录的比较,并因此影响结果(例如,比较名字“Bobs Pretty Flower Shop”与“BobsPretty Glower Shop”,其中“Glower”是由输入单词“Flower”时的拼写错误造成的)。
数据记录中的企业名称可能由于它们的性质而呈现许多相当特别的问题。一些企业名称可能非常短(例如,“Quick-E-Mart”)而其它企业名称可能非常长(例如,“San Francisco’s Best Coffee Shop”)。另外,企业名称可能频繁地使用类似的词(例如,“Shop”、“Inc.”、“Co.”),当比较同一语言的数据记录时,这些词在比较这些名称的探索任何过程中所占的权重将不大。另外,在企业名称中经常使用首字母缩略词,例如,名为“New York City Bagel”的企业可能经常作为“NYC Bagel”输入到数据记录中。
如下面进一步详细描述的,本文公开的身份枢纽32的实施例采用可以在比较企业名称时考虑到这些特别之处的算法。具体来说,身份枢纽32采用的一些算法支持首字母缩略词,考虑到某些词在企业名称中的频率,并考虑标记(token)在企业名称中的顺序(例如,名称“Clinicof Austin”可能被认为事实上与“Austin Clinic”相同)。一些算法使用多种名称比较技术以基于对不同记录中名称的比较(例如,相似点)产生权重,然后该权重可被用于确定两个记录是否应该链接,所述名称比较技术包括各种语音比较法、基于名称标记频率的加权、词首匹配、别名匹配等。在一些实施例中,使用匹配标记的方法(例如,标记是否完全、语音上匹配等)将每个记录的名称属性的标记相互比较。然后可以基于确定的匹配向这些匹配赋予权重(例如,完全匹配被赋予第一权重,而某一类型的词首匹配被赋予第二权重等)。然后可以将这些权重合计以确定两个数据记录的名称属性之间的匹配程度的总权重。在上面引用的2007年6月1日提交的标题为“SYSTEMAND METHOD FOR AUTOMATIC WEIGHT GENERATION FORPROBABILISTIC MATCHING”的11/809,792号美国专利申请中描述了适当的权重产生方法的示例性实施例,其通过引用包含于此。在上面引用的2006年9月15日提交的标题为“METHOD AND SYSTEMFOR COMPARING ATTRIBUTES SUCH AS PERSONAL NAMES”的11/522,223号美国专利申请以及2006年9月15日提交的标题为“METHOD AND SYSTEM FOR COMPARING ATTRIBUTESSUCH AS BUSINESS NAMES”的11/521,928号美国专利申请中描述了适当的名称比较技术的示例性实施例,其二者通过引用包含于此。
图3示出用于识别属于同一实体的记录的方法的例子。在步骤310,可以在身份枢纽32处推进或拉进一组数据记录用于评价。这些数据记录可以包括例如一个或多个新数据记录以与一组现有的数据记录(其可以已经存在于例如信息源34、36、38中或者可以被提供给身份枢纽32)进行比较。在步骤320,如果用于比较的数据记录还没有被标准化,则可以将它们标准化。该标准化可以包括数据记录的属性的标准化,使得该数据记录从其原始格式转换为标准格式。这样,可以根据属性和数据记录二者的标准格式进行随后的不同数据记录的类似属性之间的比较。对本领域的技术人员来说,显然可以根据不同格式、不同的语义、词素组等标准化或表征要比较的数据记录的每个属性并且可以通过独特的功能完成将每个属性标准化为其对应的标准形式。因此,可以通过对数据记录的各种属性的标准化将每个数据记录标准化为标准格式,通过相应的功能标准化每个属性(这些属性标准化功能当然可操作用于标准化多个类型的属性)。
例如,可以评价数据记录200的名称属性的字段210a以产生名称属性的一组标记(例如,“Bobs”、“Pretty”、“Flower”和“Shop”)并且可以按照一定的形式连接这些标记以产生标准化的属性(例如,“BOBS:PRETTY:FLOWER:SHOP”),使得随后可以解析该标准化属性以产生包括名称属性的标记。作为另一个例子,当将名称标准化时,可以将连续的单个标记组合成标记(例如,I.B.M.变成IBM)并且可以进行替换(例如,用“Company”替换“Co.”,用“Incorporated”替换“Inc.”等)。可以将包括缩写和它们的等同替换的等同表格保存在与身份枢纽32相关联的数据库中。用于标准化企业名称的一个实施例的伪码如下:
BusinessNameParse(inputString,equivalenceTable):
STRI NG outputString
for c in inputString:
if c is a LETTER or a DIGIT:
copy c to outputString
else if c is one of the following characters[&,’,`](ampersand,single
quote,back quote)
skip c(do not replace with a space)
else //non-ALP HA-D IG IT[&,’,`]character
if the last character in output string is not a space,copy a
space to output string.
//Now extract the tokens.
tokenList=[]
For token in outputString//outputString is a list of tokens separated by spaces
If(token is a single character andit is followed by one or more single
characters)
Combine the singletokens into a single token
If(equivalenceTable maps token)
Replace token with its equivalence.
Append token to tokenList.
Retu rn token List
无论使用什么技术,一旦在步骤320将要比较的数据记录的属性及数据记录本身标准化为标准形式,就可以在步骤330从现有的数据记录中选择一组候选以与新的或输入的数据记录比较。该候选选择处理(在本文中也称为分组(bucketing))可以包括将新的或输入的数据记录的一个或多个属性与现有数据记录进行比较以确定哪个现有的数据记录与该新数据记录足够近似以至于需要进一步比较。每组候选(分组群)可以基于使用与属性相对应的候选选择功能(分组功能)的数据记录之间(例如,输入的数据记录和现有的数据记录之间)一组属性中每一个的比较。例如,可以基于使用被设计用于比较名称和比较地址的候选选择功能的名称和地址属性的比较选择一组候选。
然后在步骤340,包括这些组候选的数据记录可以进行与新的或输入的记录的更详细的比较,其中在所述记录之间比较一组属性以确定现有数据记录是否应该与该新数据记录链接或关联。该更详细比较可能需要将一个记录(例如,现有记录)的属性组中的一个或多个与另一记录(例如,新的或输入的记录)中的对应属性进行比较以产生该属性的权重。然后可以将该组属性的权重相加以产生总权重,然后可以将该总权重与阈值比较以确定这两个记录是否应该链接。例如,如果总权重小于第一阈值(称为软链接或再检查阈值),则可以不链接该记录,如果总权重大于第二阈值(称为自动链接阈值),则可以链接记录,而如果总权重落在这两个阈值之间,则可以链接记录并标记出来供用户再检查。
简要参考图1,身份枢纽32具有可以在实现上述方法时保存、返回和显示国际脚本和语言的各种部件。然而,当这些不同语言得自不同信息源系统时,当数据记录的语言未知时,当来自不同语言的记录必须在同一实体内时,或者当来自不同语言的记录之间的关系必须被识别(如层级关系)时,这种直接的方案可能变得较复杂。例如,数据记录的链接可能由于信息源34、36、38中的数据记录可以采用不同的语言并且在一些情况下同一信息源内的不同数据记录可以采用不同语言这一事实而进一步复杂。假定操作方40、42、44之一可以以第一语言向身份枢纽32发送询问,并且信息源34、36、38以多种语言保持关于相同实体的数据记录,则身份枢纽32将需要以不同语言搜索这些数据记录,确定它们是否应该链接以及应该如何链接,相应地准备对该询问的响应,并以及时准确的方式用第一语言将对该询问的响应发送回操作方40、42或44。
处理多种语言的数据记录的一个方法是通过分开的枢纽处理它们,其中每个枢纽由特定的语言配置。可以在每个枢纽内进行特定语言的搜索,然后用户或一组用户可以尝试将搜索结果放在一起。这种方法的问题是没有办法进行交叉语言搜索以及通过手动或使用计算机将来自分开的枢纽的搜索结果放在一起可能是缓慢、耗时、劳动密集、昂贵并且易出错的处理。另一个方法是尝试编写一种可对所有语言工作的超级算法,但是这种超级算法不能扩展到新的语言。
本文公开的实施例基于更基础的方法。如本文中公开的,身份枢纽32的实施例可以提供各种不同功能,包括标准化、分组、详细比较、权重产生、链接、实体处理等,并且基于特定数据记录或一对数据记录的语言应用这些功能。也就是说,为了将单个枢纽内的多种语言的数据记录相关联,身份枢纽32可以由特殊算法来配置并且可以基于被标准化、被比较等的数据记录的语言确定哪个算法应该结合哪个数据记录使用。
参考图20和图21,图20示出多语言身份枢纽32的示例实现方式300的一个实施例,图21更详细地示出示例实现方式300。如上所述,来自信息源34、36、38的数据记录可以采用相同的或不同的语言。因此,在核心层302,以多种语言保存数据记录。每个数据记录采用的语言可以是未知的。
当每个记录进来时,它被标注,被特征化,被指定了特定的语言或者与特定的语言相关联。该处理是自动的并且是确定性的。通常可以容易地确定记录的语言。例如,浏览器应用程序可以指定国家代码,管理员可以设置默认语言,可以使用算法基于记录的内容并结合与记录相关联的国家代码确定正确的语言,等等。在一些实施例中,“最差的”语言被选择用于进一步处理。在此,如果一种语言通常被接受或者可以确定它可能要花费较多的计算资源来处理,则认为它比另一种语言更差。例如,如果数据记录具有英语和日语的数据,则因为可能要花费较多的努力来解析日语记录,选择日语作为该特定数据记录的语言,而不管该记录是否还可能包含英语。在一些实施例中,身份枢纽32保存多种语言的数据记录,包括英语、法语、德语、汉语、日语和韩语。
在图21的例子中,当数据记录R1、R2、R3、...、Rn进入时,它们被指定或确定为采用语言L1、L2、...、Ln,并且R1和R2采用同一语言L1。在身份枢纽32中,每种语言被一对一映射到一成员类型。因此,L1被映射为MemType1,L2被映射为MemType2,等等。在一些实施例中,多种语言的数据记录可以在身份枢纽32中的语言定义内共享属性类型。
对于一特定成员类型的每个数据记录,在导出层(Derived Layer)304,可以使用对该特定成员类型唯一的(并且因此对映射到该特定成员类型的语言也是唯一的)导出代码进行标准化并且对属性进行分组(候选选择)。该导出代码可以使用一种或多种标准化技术。例如,语言标准化、音译标准化等。在音译的情况中,一些实施例可能保持原始属性和音译后的属性,而一些实施例可能只保持音译后的(标准化的)属性。本领域的技术人员可以理解,其它标准化技术也是可能的。
应该指出,该唯一导出代码可以处理包含针对该数据记录标注的语言之外的语言的字符的属性。例如,假定数据记录R1包含英语和日语的名称属性。如上所述,尽管R1包含英语的名称属性,但是R1将被标注为使用日语特有的导出代码。在专用于日语的标准化中,没有或几乎没有意义的日语字符可被排除或不考虑。下面参考图9-13描述专用于日语的标准化的示例实施例。在一些实施例中,候选选择处理(分组)可以是独立于语言的。下面参考图14-19描述独立于语言的分组的示例实施例。
即使数据记录包含英语以外的多种语言的属性,本文公开的实施例也可以链接这些数据记录。专用于语言的标准化在解析多种语言的数据记录时是很有用的。例如,在德语中“der”意思是“那个”。因此,对于针对德语标注的并且映射到对应于德语的成员类型的数据记录,在专用于德语的标准化中可以丢掉该数据记录的名称属性中的“der”。然而,“der”在英语中可能是美国密西根州迪尔伯恩市的位置代码。因此,针对英语标注的并且被映射到对应于英语的成员类型的数据记录,可以在专用于英语的标准化中将包含“der”的名称属性标准化。
在一些情况下,数据记录的属性可能采用完全不使用拉丁文字母的语言。由于这些语言不必遵守以拉丁文字母书写的语言的规则、范例或习俗,所以这些语言的属性可能难以解析成标记。当遇到除了拉丁文字符、表意字符等之外还使用许多不同代码集或字母的亚洲语言,如日语、韩语、汉语等时,这些问题尤其贴切。使解析这些种类的语言进一步复杂的是可能不使用空白来分开名称的各部分,这使得在没有应用该语言的广博知识基础的情况下极难将这些名称解析为标记。
如下面参考图9-13描述的,本文公开的实施例可以将采用包括亚洲语言的各种不同语言的属性(如名称)解析为标记。一些实施例可以将采用亚洲语言的属性分离成标记。作为例子,将日语名称(例如,包含日语字母表或字符集中的至少一个字符的名称,但是该名称还可以包含任何其它字母表中的字符)解析为一个或多个标记。在一些情况中,将空白引入到日语名称属性中,使得可以基于该空白将该日语名称解析为一个或多个标记。
继续参考图20和图21,当在导出层304将数据记录的属性相对于它们的标注语言标准化并且解析为标记后,可以在候选选择处理(分组)中使用它们。该候选选择处理,可以是独立于语言的,可以包括一组数据记录的一个或多个属性的比较以确定它们是否足够类似以至于需要进一步比较。如果是这样,则进一步确定应如何将它们链接或关联。如下面参考图4-8描述的,此更详细的比较可能需要比较一个记录(例如,现有的记录)的该组属性中的每一个属性与另一个记录(例如,新的记录)中的对应属性以产生该属性的权重。然后可以将该组属性中每一个属性的权重相加以产生总权重,然后可将该总权重与阈值比较以确定这两个记录是应该软链接、自动链接还是与供用户再检查用的标志链接。
在多语言身份枢纽32的情况下,该权重可被用于自动平衡语言的丰富度,使得采用不同语言的两个数据记录可以具有相同的统计意义。在一些情况下,所述权重可以提供不考虑先前确定的数据记录的关联水平的途径。下面进一步描述权重产生并且在上面引用的2007年6月1日提交的标题为“SYSTEM AND METHOD FOR AUTOMATICWEIGHT GENERATION FOR PROBABILISTIC MATCHING”的11/809,792号美国专利申请中可以找到关于权重产生的进一步教导,该美国专利申请通过引用包含于此。
因此,可以在多语言身份枢纽32中在实体层306将针对不同语言标注的数据记录链接到单一实体或者链接到该单一实体的语言实体。根据所使用的搜索模型,人们可能希望搜索采用不同语言的实体,假定,启动系统(例如,“用于启动系统的汉语和德语名称是什么?”)或者希望搜索同一实体而不管该记录采用什么语言。继续上面的在洛杉矶和纽约具有场所的医疗保健组织的例子,假定该医疗保健组织在法国巴黎也有场所,该医疗保健组织可以使用身份枢纽32使与这些场所中的多个医院相关联的数据记录发生联系,从而当病人在法国巴黎的医院中时,用于搜索属于该病人的记录的询问将返回洛杉矶的英语数据记录和巴黎的法语数据记录。
在一些情况下,可能需要识别不同语言的数据记录之间的关系。也就是说,在多语言身份枢纽32中可以在实体层306将在核心层302针对不同语言标注的数据记录链接到多个实体。这种实体的例子可以包括但不限于个人、家庭、集装箱、组织等。假定上面描述的同一病人是两个家庭的成员,一个家庭在美国,一个家庭在法国,属于该同一病人的数据记录可以链接到两个家庭实体,这两个家庭实体识别该同一人但是可以具有不同的地址属性并且可以采用不同的语言。
由于每个数据记录的全部属性以及因此该数据记录本身被关于该数据记录的主要语言适当地标准化,所以多语言身份枢纽32可以智能地且自动地匹配最佳算法以在实体层306处理采用各个语言的实体。换句话说,由于适当的语言或脚本可以与该记录一起传递,所以可以在实体层306将该记录“路由”到适当的算法路径以进行实体处理。读者可以参考2007年2月5日提交的标题为“METHOD ANDSYSTEM FOR A GRAPHICAL USER INTERFACE FORCONFIGURATION OF AN ALGORITHM FOR THE MATCHINE OF DATA RECORDS”的11/702,410号美国专利申请,其教导了用于匹配数据记录的算法的配置。本文公开的一些实施例可以补充如2007年1月22日提交的标题为“METHOD AND SYSTEM FORINDEXING INFORMATION ABOUT ENTITIES WITH RESPECTTO HIERARCHIES”的11/656,111号美国专利申请、2007年9月28日提交的标题为“METHOD AND SYSTEM FOR INDEXING,RELATING AND MANAGING INFORMATION ABOUT ENTITIES”的11/904,750号美国专利申请、2007年9月14日提交的标题为“HIERARCHY GLOBAL MANAGEMENT SYSTEM AND USERINTERFACE”的11/901,040号美国专利申请以及2008年3月27日提交的标题为“METHOD AND SYSTEM FOR MANAGINGENTITIES”的12/056,720号美国专利申请中公开的用于索引、关联和管理关于实体的信息的实体处理系统和方法的实施例,这些专利申请通过引用包含于此。
本文公开的一些实施例可以补充如2007年12月31日提交的标题为“METHOD AND SYSTEM FOR PARSING LANGUAGES”的11/967,588号美国专利申请、2006年9月15日提交的标题为“METHOD ANDSYSTEM FOR COMPARING ATTRIBUTES SUCH AS PERSONALNAMES”的11/522,223号美国专利申请以及2006年9月15日提交的标题为“METHOD AND SYSTEM FOR COMPARINGATTRIBUTES SUCH AS BUSINESS NAMES”的11/521,928号美国专利申请中公开的属性解析和比较技术的实施例,这些专利申请通过引用包含于此。
现在参照图9-19描述专用于日语的标准化和分组技术的实施例。
现在转到图9,图9示出用于解析如采用日语的名称(例如,具有至少一个日语字符)的字符序列的方法的一个实施例的流程图。在步骤910,接收日语名称。在步骤920,将接收到的名称中的代表拉丁文字符的任何半角片假名字符转换成它们的拉丁文等同物。在一个实施例中,可以例如根据由Unicode联盟发布的代码(例如,Unicode转换格式(Unicode Transformation Format,UTF)或通用字符集(Universal Character Set,UCS))等用代码代表名称中的每个名称字符,例如每个字符可以用UCS-4、UTF-32、UTF-16、UCS-2、UTF-EBDIC、UTF-8、UTF-7等中的代码点代表。因此,用于名称的每个字符的每个代码点可以与和等同于拉丁文字符的半角片假名字符相对应的代码点范围进行比较,以获知该字符是否为半角片假名字符。如果该字符是等同于拉丁文字符的半角片假名字符,则它可以用等同的拉丁文字符替换(例如,用另一个代码点替换对应于该字符的代码点)。半角片假名代码范围内的拉丁文等同物应该被转换到拉丁文范围。具体来说,在一个实施例中,其代码部分落入到范围65281至65370内的字符被转换为从33到122的代码点范围内的相应代码点(例如,如果发现65281的代码点,则用代码点33替换它,如果发现65300的代码点,则用代码点52替换它,等等)。
为了进一步促进随后的名称属性比较,则在步骤930可以将名称中的所有小写字母拉丁文字符转换为它们的大写字母等同物(例如,“a”转换为“A”)。此外,在一个实施例中,这可以包括代表名称中小写字母拉丁文字符的所有代码点都用代表相同拉丁文字符的大写字母形式的相应代码点替换。
在步骤940,可以将名称内的任意分隔符转换为空白。哪个字符是分隔符的定义可以是对应于所使用的代码点集的标准分隔符列表,也可以是专有分隔符列表(例如,其可以包括标准分隔符列表加上用于该名称语言的特殊分隔符,如日语特殊分隔符等或者任何其它希望的分隔符)。例如,可以将对应于分隔符的代码点列表保存在数据库中,从而在步骤930可以将名称字符的每个代码点与分隔符列表进行比较,并且如果名称字符的代码点对应于分隔符列表中的代码点,则可以用对应于空白的代码点替换名称字符的代码点。
然后,在步骤950,可以将名称中的任意传统字符转换为简化的等同物。此外,在一个实施例中,对应于传统字符的代码点到对应于其简化等同物的代码点的传统映射可被用于通过将对应于传统字符的代码点用对应于等同的简化字符的代码点替换而将传统字符转换为其简化等同物。然而,在另一个实施例中,传统字符和简化字符之间的映射可以是专有映射并且数据库可以存储传统字符代码点列表,其中这些代码点中的每个与等同的简化字符的代码点相关联。然后使用该列表,通过将名称的代码点与该列表进行比较可以识别名称中的传统字符,并且通过将识别出的传统字符的代码点用相关联的等同简化字符的代码替换可以将它们转换为简化字符。
在步骤950将传统字符转换为它们的简化等同物之后,在步骤960可以在不同类型的字符之间插入空白。例如,日语名称可能包含许多不同类型的字符:拉丁文、平假名、片假名、语音片假名、半角片假名等等。因此,如果两个字符是不同类型(例如,不同的字符集),则可以在名称中的这两个字符之间插入空白。在一个实施例中,代码点的范围可以指定字符集(例如,拉丁文字符可以包括从1到255的代码点范围,平假名可以包括从12352到12447的代码点范围的字符等等)。因此,使用指定或另外限定的代码点范围,可以识别不同代码点范围内的相邻字符,并且可以在名称中这两个字符之间插入空白。
在步骤960在不同类型的字符之间插入空白之后,在步骤970可以识别名称中的表意字符并用空白将这些表意字符分开(例如在字符之前或之后插入空白)。在一个实施例中,可以保持包含对应于表意字符的一组代码点的列表。如果识别出名称中的字符是表意字符(例如,通过将对应于该字符的代码点与包括表意字符列表的代码点进行比较),则可以在名称中的表意字符之前和表意字符之后(例如,如果该表意字符不是名称中的最后字符)插入空白。
然后在步骤980将该名称解析为一组标记。在一个实施例中,基于名称中的空白进行该解析。因此,空白可以指定名称的一个标记的结束或名称的另一个标记的开始。然后以这种方式,可以从日语名称获得一组标记。另外,通过应用本公开的其它实施例(其可以例如使用不同的代码点或代码点范围),例如韩语或汉语的其它亚洲语言的名称同样可以被分成一组标记。用于比较日语名称或属性的一个实施例包括使用表驱动的转换技术将名称解析为标记。在一个实施例中,可以通过用于在不同编码和字符集之间映射/过滤的Unicode映射或umap型能力进行表驱动转换技术。也可以使用其它转换技术。
因此,在一个实施例中,可以按下述将日语名称解析为标记:
-将半角片假名转换为拉丁文。
-将十进制的半角片假名代码范围(65281,65370)中的拉丁文等同物转换为十进制的拉丁文范围(33,122)。
-将拉丁文小写字母转换为大写字母。
-将分隔符转换为空白。
-在适当处将日语专用的分隔符添加到标准列表。从样本数据提取的不是穷尽型列表的例子包括:
十进制代码 |
字符 |
34 |
“ |
38 |
& |
39 |
‘ |
40 |
( |
41 |
) |
42 |
* |
43 |
+ |
44 |
, |
45 |
- |
46 |
. |
47 |
/ |
58 |
: |
59 |
; |
95 |
- |
65381 |
. |
12539 |
· |
将传统汉语字符转换为简化字符。在一个实施例中,有222个这些转换的表。图10中示出一个例子,其中传统字符在第二列,简化的等同字符在第一列。
当代码集改变时可以应用第二技术。它的一个例子是ブラス株式会社,其中前三个字符是片假名而后四个是日本汉字。此处形成两个标记。当嵌入有拉丁文(例如NTT西日本岡山支店或SS建築設計)时,这也是有帮助的。第一技术和第二技术之间的差别是第一技术使用实际拉丁文代码点,而第二技术使用它们的半角等同物。
以下代码点范围是示例性的而不是穷尽总的范围或可用范围:
在此,第一列是字符集名称,第二和第三列是十进制范围。CJK-unified当应用于日语数据时被称为日语汉字。
以下分布来自关于日语企业名称数据样本集中的字符的统计:
字符集名称 |
出现 |
拉丁文 |
51288 |
平假名 |
5159 |
字符集名称 |
出现 |
片假名 |
154766 |
片假名语音 |
0 |
Half-kat |
20543 |
CJK-u nified |
226443 |
CJK-a ext |
0 |
CJK-b ext |
0 |
CJK compatible |
5 |
CJK-b comp |
0 |
CJK-radicals |
0 |
CJK-stro kes |
0 |
在此情况下,大多数是日语汉字(CJK-unified)和片假名。
在该例子中,数据中的某些字符不落入这些组中的任何一个。它们主要是修饰符并且这些字符与它前面的字符分成一组(这些中最常用的是重复字符
,即多
意味着多多)。几乎可以应用分组修饰符或其它未分组字符的任何方法。
上述两种技术可以结合。例如,它们可以应用于一组样本名称,使得(社)家畜改良事業団解析为{社,家畜改良事業団},并且国立精神·神経センタ-成为{国立精神,神経,センタ-}等。图11中示出解析的样本。图12是示出针对数据样本集中的每个名称创建的解析的标记的数量统计的柱状图。从图12可以看出,44,681个样本名称中大约16,608个名称以单个标记的形式被留下。因此,大约63%的名称被解析为至少两个标记。大多数是两个标记的名称,并且平均每个名字被解析为1.94个标记。图13是示出解析后的标记的字符长度分布的柱状图,平均每个标记具有5.1个字符。这与原始数据中10.3个字符的平均长度形成对比。总而言之,在本实施例中,用于名称解析的步骤包括:
1.将半角字符转换为它们的拉丁文等同物-具有它们的那些。
2.将小写字母的拉丁文转换为大写字母的拉丁文。
3.将特殊字符转换为空白(分隔符)。
4.当字符从一个代码集改变到另一个代码集时,除非该改变为修饰符,否则插入空白-该范围也应该是表驱动的。
5.在表意字符之前和之后(如果需要)插入空白;以及
6.根据空白解析为标记。
注意,在上述实施例中指定部分或条目的任何限制性语言要被理解为只在考虑或关于所述特定实施例适用,并且所述特定实施例不应被理解为一般地适用于本公开的系统和方法。
在一些实施例中,针对英语名称的分组方法包括三个关键步骤:
1)将名称解析为标记;
2)产生该标记和任何等同标记(例如,别名)的语音代码;以及
3)对语音编码的标记应用基于频率的分组。
下面描述该方法的一般的独立于语言的形式以可以如何创建及如何应用于采用任意语言的名称。该独立于语言的分组方法可以提供基本匹配能力并且可以与上述基于一组分隔符和脚本中的变化解析输入的解析方法一起使用。当前,身份枢纽32可以进行独立于语言的等同名称处理和独立于语言的基于频率的分组。因此,为了创建独立于语言的分组方法,剩下要做的唯一事情是创建可以应用于任意语言/脚本的一般编码程序。
在创建独立于语言/脚本的编码系统时,人们需要考虑字符统计。作为例子,图14示出解析和转换之后来自日语名称样本的单个字符分布。对于更有限的字母表,人们可能需要考虑成对的字符或偶图。假定在解析和转换之后,图14中所示的分布有2168个字符。图15列出来自图14的样本的前20个日语字符和它们的频率。
由于该分布快速下降,这表明几乎所有解析后的标记将包含一些不常见的字符。因此,可以基于从每个标记选择n个极不常见的字符建立编码方案。在此情况下,该算法可以包括:
1.按照包括该标记的字符的总频率将这些字符排序。最低频率字符是第一个。
2.选择这些中的前n个(直到原始标记的长度)。
当挑选n时,标记频率不会太膨胀。也就是说,编码标记的分布应该在原始标记的分布数量级内。这是变音位(metaphone)优于Soundex的理由之一。假定我们考虑n=2和n=3,并且决定采用后者。图16中示出该分布。
在此,曲线160是原始标记的分布,曲线162是编码标记的分布。除了可以用基于频率的分组处理的前两个编码值以外,该分布看上去是合理的。
接下来,将这些编码标记用于分组。为了作为例子说明,让我们使用1/1000的截止,并且如果单个标记的频率低于1/1000,则对它们进行分组,否则使用逐对(pair-wise)组合,只要该对频率低于1/1000即可。
图17示出原始解析名称(左列)和对应的分组项目(右列)的例子。注意,在第五行中,三个单独的字符标记是足够不常见的以至于单独分组,而在第六行中,我们以两个双向分组结束。还要指出,这些数据还包含英语单词。它们被不同地处理。
应用上述方案,图18A示出对解析后的名称170的分组创建了分组175中的一组名称,并且图18B示出对解析后的名称180的分组创建了分组185中的一组名称。这两个例子均示出了名称分组独立于语言的方法。
图19是定性地示出分组在一起的成员数量的曲线图。该分布的平均数是17(即,平均起来,仅关于名称,一个成员与17个其它成员分组)。根据图19,每100个询问,我们将170个以上成员分组。这是一个实现方式的例子。其它实现方式可以达到数量级乘以1∶1000的平均值(y轴上的-3)而不是1∶100的平均值。
在当前的架构中,能够容易地以合理的性能实现上述分组方法。例如,编码例程可以使用字符频率表,根据该频率将字符分类成标记,并选择前三个字符。为了对日语以外的脚本使用该程序,所选择的字符数量可以是可配置的参数。然后可以使用当前的基于频率的分组。由于原始标记和编码标记的分布类似,所以该频率可以用于原始标记或编码标记。可以使用2006年9月15日提交的标题为“METHODAND SYSTEM FOR COMPARING ATTRIBUTES SUCH ASPERSONAL NAMES”的11/522,223号美国专利申请和2006年9月15日提交的标题为“METHOD AND SYSTEM FOR COMPARINGATTRIBUTES SUCH AS BUSINESS NAMES”的11/521,928号美国专利申请中描述的技术排序标记,这两个专利申请通过引用包含于此。
返回参照图20和图21,不论使用什么技术,一旦要比较的数据记录的属性被标准化并且选择了一组候选用于比较,就可以针对属性水平进行数据记录之间的更详细的比较。对于每个比较可以产生权重。
现在回到图4,图4示出用于根据属性的比较产生分值的方法的一个实施例的流程图。尽管所示出的该方法的实施例可以用于比较任意两个属性(例如,人名、地址、公司名称等),但是它在比较企业名称时也是特别有用的,并且也将被描述。
在步骤410,给出或提供(例如,输入到软件应用程序)两个名称,使得可以比较这些名称。如上所述,所述名称可以均采用包括一组标记的标准化形式。在步骤420,可以针对每个名称计算信息分值。该属性信息分值可以是名称的每个标记的完全匹配值(也被称为标记的信息分值)之和。然后在步骤430可以将这两个属性的信息分值平均。
使用两个属性的信息分值的平均值(作为代替例如两个属性之间的最小或最大信息分值)可以使得名称比较算法的实施例使所产生的两个属性之间的权重考虑到这两个属性之间丢失的标记,并且在一些实施例中,可以使得对丢失标记施加的惩罚量(penalty)是对两个标记之间不匹配所施加的惩罚量的一半。每个标记的信息分值又可以基于在数据样本中标记出现的频率。通过使用标记的相对频率确定标记的信息分值,通过使特定标记(例如,“Inc.”)的计分较低可以考虑到这些标记的公共性。
然后可以在步骤440通过比较两个名称产生两个名称之间的分值。然后可以在步骤450将该分值归一化以产生这两个名称的最终分值。在一个实施例中,该归一化过程可以将比率因子应用到所产生的分值与平均信息分值的比,以产生归一化的索引值。然后该归一化的索引值可以用于索引值表以产生最终的相似性分值。
在此,更详细地探讨图4中示出的用于比较名称的算法实施例的各步骤可能是有用的。同样,首先要处理的是如在步骤430中示出的平均信息分值的计算。如上面讨论的,属性的信息分值可以是该属性的每个标记的完全匹配权重之和。描述如何计算这些完全匹配权重的实施例可能是有用的。在一个实施例中,完全匹配权重表可以具有用于标记的完全匹配的权重值或者用于标记的完全匹配的默认值。换句话说,完全匹配权重表可包括标记与对应权重值的列表。该权重值可以对应于完全匹配权重。换句话说,如果进行比较的两个标记相同,则该标记可以位于完全匹配权重表中并且使用对应的权重作为这两个标记的匹配权重。如果两个标记被确定为完全匹配并且该标记不在完全匹配权重表中,则可以将默认权重值用作该匹配权重。
在一个实施例中,可以从数据记录的样本组(如与一个或多个信息源34、36、38相关联的一组数据记录或者一组被提供的数据记录)计算完全匹配权重表中与标记相关联的权重。使用该数据记录样本组,可以利用频率数据和匹配设置数据计算完全匹配权重。可以计算该数据记录样本组中的名称字符串(例如,名称属性)的数量NameTot,以及对应于这些名称字符串的每个名称标记T的计数:Tcount和频率Tfreq=Tcount/NameTot。
然后按照频率排序所述标记,最高频率标记排第一,并且如下面的表1所示,每个标记的累积频率是该标记的频率与在计算它之前到来的所有标记的频率之和:
标记 |
频率 |
累积频率 |
T0 |
Tfreq-0 |
Tfreq-0 |
T1 |
Tfreq-1 |
Tfreq-0+Tfreq-1 |
T2 |
Tfreq-2 |
Tfreq-0+Tfreq-1+Tfreq-2 |
...... |
...... |
...... |
TN |
Tfreq-N |
Tfreq-0+......+Tfreq-N |
在一些实施例中,其后确定直到并且包括其累积频率超过0.80的第一标记的所有标记,并且对于每个标记,可以使用公式:ExactTi=-In(Tfreq-i)计算完全匹配权重。如果TM是累积频率超过0.80的第一标记,TN是最后标记或最低频率标记,则可以通过求-ln(Tfreq-M +1),...,-ln(Tfreq-N)的平均数计算默认完全匹配权重。然后可以将本文描述的用于比较名称的比较算法的实施例应用于该数据组中的一组随机名称对,以产生:RanNameComp=比较的名称字符串对的总数量以及l=0到MAX_SIM的RanSim-l=其归一化后的类似性是l的名称字符串对的总数量。然后针对每个l,可以计算RanFreqSim-l=RanSim-l/RanNameComp。还可以使用Norm Adams等于2006年9月15日提交的标题为“METHOD AND SYSTEM FORCOMPARING ATTRIBUTES SUCH AS BUSINESS NAMES”的11/521,928号美国专利申请或Norm Adams等于2006年9月15日提交的标题为“METHOD AND SYSTEM FOR COMPARINGATTRIBUTES SUCH AS PERSONAL NAMES”的11/522,223号美国专利申请中描述的权重产生处理针对标记计算MatchFreqSim-l=MatchSim-l/MatchNameComp,这两个专利申请通过引用完全包含于此。然后可将标记的最终权重计算为:Weight-Norm-Siml=log10(MatchFreqSim-l/RanFreqSim-1)。
当计算出一组标记的完全匹配权重后,就可以将它们以表格保存在与身份枢纽32相关联的数据库中。例如,下面的伪码描述了使用包括首字母的完全匹配权重的“initialContent”表和包括其他标记的完全匹配权重的“exactContent”这两个表计算属性的信息分值的一个实施例:
tokenListInfo(tList)
totalInfo=0.0
for token in tList:
if token is an initial:
totalInfo+=initialContent(token)
else
totalInfo+=exactContent(token)
return totalInfo
仍参考图4,当在步骤430计算出信息分值并且将这些权重平均后,可以在步骤440针对两个名称产生权重。现在转向图5A,图5A示出用于产生两个属性之间的权重的方法的一个实施例的流程图。更具体来说,在步骤515可以将一个属性的每个标记与另一个属性的每个标记进行比较。可以按照包括每个属性的该组标记的顺序进行该比较。换句话说,一个属性的第一标记可以与另一个属性的每个标记进行比较,之后该属性的第二标记可以与所述另一个属性的每个标记进行比较,等等。
在步骤525可以针对这些标记对中的每一个确定两个标记之间是否存在匹配。如果在步骤525,两个标记之间不存在匹配,则在步骤537可以将当前的匹配权重设置为零。然而,如果在两个标记之间存在匹配,则在步骤535可以计算这两个标记的当前匹配权重。
一旦在步骤525已经确定了两个标记之间是否存在匹配,并且在存在这种匹配的情况下在步骤535针对当前的匹配权重计算了匹配权重,在步骤547可以确定是否应该施加距离惩罚量。在一个实施例中,可以确定是否应该施加距离惩罚量,并且基于在哪里出现属性标记对之间的最后匹配计算该距离惩罚量。为此,可以在步骤545确定表示在哪里出现属性的两个标记之间的最后匹配的最后匹配位置。如果所比较的当前两个标记之间的位置(例如,相对于所述属性)和最后匹配位置的差大于某一阈值,则在步骤555可以计算距离惩罚量,并且可以在步骤557通过从当前的匹配权重减去该距离惩罚量来调节当前的匹配权重。显然这些差别惩罚量可以基于最后的匹配位置和当前标记的位置之间的差别而不同。
在步骤565、567和575还可以确定先前的属性标记的匹配权重。更具体来说,在步骤565,确定当前比较的一个属性的标记和当前比较的第二属性的先前(例如,按照顺序在被比较的当前标记之前)标记(如果存在的话)的第一先前匹配权重。类似地,在步骤567,确定当前比较的第二属性的标记和当前比较的第一属性的先前标记(如果存在的话)的第二先前匹配权重。在步骤575,如果每个标记存在的话,使用每个当前属性的先前标记确定第三先前匹配权重。然后可以在步骤577通过将第三先前匹配权重与当前的匹配权重相加来调节当前比较的标记对的当前匹配权重。
然后在步骤585,可以将当前的匹配权重与第一和第二先前匹配权重进行比较,如果当前的匹配权重大于或等于先前的匹配权重中的任一个,则在步骤587可以将该权重设置为当前匹配权重。然而,如果第一或第二先前匹配权重大于当前匹配权重,则在步骤595将该权重设置为第一和第二先前匹配权重中较大的。这样,在已经比较了两个属性的每个标记之后,产生权重。
显然,在实现本文公开的某些实施例时,许多类型的数据要素或数据结构可以是有用的。例如,图5B示出使用表格产生两个属性之间权重的方法的一个实施例的流程图。在步骤510可以建立表格以帮助比较两个名称。该表格可以包括名称之一中的每个标记的行加上附加行和另一个名称中的每个标记的列加上附加列。因此,该表格的第一行和第一列可以对应于初始条件,而该表格的每个其它单元可以对应于唯一一对标记,其中比较每个名称的一个标记。该表格的每个单元可以具有保存位置(例如,单元)指示符和权重的能力。尽管在所描述的实施例中使用表格,但是显然表格只是示例结构,并且可以使用任何数据结构、结构存储(例如,任意维度的阵列、链接的列表、树等)。
在步骤510建立该表格之后,可以在步骤520初始化该表格,使得该表格内的某些初始单元具有初始值。更具体来说,在一个实施例中,可以初始化第一行和第一列中的每一个,使得位置指示符可以接收空(null)或零值并且可以将与这些单元中的每一个相关联的权重初始化为零值。
然后可以将该表格的其它单元(例如,初始单元以外的)中的每一个迭代以确定位置以及要与该单元相关联的值。在步骤530针对每个单元确定该单元是否已经通过首字母缩略词匹配进行匹配,如果是这样,则可以跳过该单元。然而,如果该单元先前还没有匹配,则在步骤540可以确定与该单元相对应的两个标记之间是否存在匹配,如果不存在匹配,则在步骤532可以通过在一个实施例中比较一个标记的字符与另一个名称的一组标记的第一字符来确定对应于该单元的任一个标记是否是另一个名称中一组标记的首字母缩略词。如果其中一个标记是另一个名称中一组标记的首字母缩略词,则在步骤534针对其对应标记是首字母缩略词的单元组和对应于该首字母缩略词的另一个名称的标记组计算最后位置指示符和单元权重(如在下面更详细地描述)。用于确定一个标记是否为另一个名称的一组标记的首字母缩略词的伪码如下:
MAX_INIT_MATCH是最大首字母缩略词长度,在一个实施例中,其为3。
acroynmCheck(acToken,//a token which we will check as a possible acronym
token List,//the other list of tokens
currentPosition//start at this position to check for an acronym match
)
if(length(acToken)<2or>MAX_INIT_MATCH)
return NO_MATCH
if(currentPosition+length(acToken)-1>length(token List))
return NO_MATCH
listPosition=currentPosition
tokenPosition=0
totalInfo=0
while(tokenPosition !=end of word)
if firstChar of tokenList[listPosition]!=acToken[tokenPosition]
return NO_MATCH
totalInfo=totalInfo+initialContent(firstChar)-INIT_PENALTY
tokenPosition++
listPosition++
return MATCH,totalInfo,listPosition
如果在步骤532确定没有一个标记是首字母缩略词,则在步骤542可以将当前单元的匹配权重设置为零。回到步骤540,如果在对应于当前单元的两个标记之间存在匹配,则在步骤542可以计算这两个标记的匹配权重。尽管实质上可以根据步骤540和542使用任何类型的比较来比较两个对应标记并产生相关联的匹配权重,但是在一个实施例中可以确定是发生完全匹配、首字母匹配、语音匹配、别名匹配还是别名-语音匹配,并且如上述Norm Adams等在2006年9月15日提交的标题为“METHOD AND SYSTEM FOR COMPARINGATTRIBUTES SUCH AS PERSONAL NAMES”的11/522,223号美国专利申请中公开的计算对应的匹配权重,该专利申请通过引用全部包含于此。用于比较两个标记并产生相关联的匹配权重的伪码如下:
tokenCompare(t1,t2)//t1 and t2 are tokens.
If one or both is an intial:
If first chars agree:
Return min(exactContent1,exactContent2)-Initial_Penalty
Else
Return 0.0,NO_MATCH
Dist=normalizedEditDistance(t1,t2)
If Dist==0
Return exactContent(t1),EXACT_MATCH
If tokens match phonetically
Return min(exactContent1,exactContent2)-phonetic_Penalty,
PARTIAL_MATCH
If tokens match via a nickname
Return Return min(exactContent1,exactContent2)-
Nickname_Penalty,PARTIAL_MATCH
if there is a nickname-phonetic match
Return Return min(exactContent1,exactContent2)-
Nickphone_Penalty,PARTIAL_MATCH
If Dist<=0.2*maximum token length
Return min(exactContent1,exactContent2)-Nickname_Penalty,
PARTIAL_MATCH
Else:
Return 0.0,NO_MATCH
仍参考图5B,当在步骤540已经确定了在对应于该单元的两个标记之间是否存在匹配并且在存在该匹配的情况下在步骤542计算了匹配权重后,可以在步骤550确定是否应该施加距离惩罚量并且在步骤552计算该距离惩罚量。在一个实施例中,可以基于对应于最后位置匹配的单元和当前单元的位置之间的差确定是否应该施加距离惩罚量并计算该距离惩罚量。可以计算行位置和列位置的差,并且如果该差大于1(表示应该施加距离惩罚量),则可以使用这些差中的最大值来确定要施加的距离惩罚量。例如,如果当前单元行和最后匹配的单元行之间差为2并且当前单元列和最后匹配的单元列之间的差是3,则可以使用与距离3相关联的距离惩罚量。显然可以基于最后的匹配单元和正在评价的当前单元之间的较大距离关联并施加较大的差别惩罚量。实际上如果在步骤550确定应该施加距离惩罚量并且计算该距离惩罚量,则在步骤560可以通过从匹配权重减去距离惩罚量来调节匹配权重。
然后可以在步骤570使用该单元的匹配权重计算该单元的单元权重和最后的匹配位置。图6中示出用于计算最后匹配位置和单元的单元权重的方法的一个实施例的流程图。通常,可以基于最后匹配位置和周围单元的单元权重计算该单元权重和最后匹配位置。具体地,在步骤610可以确定与当前单元邻接(例如,当前单元的行数减去1和相同的列数)的一个单元的单元权重,并且在步骤620可以确定与当前单元邻接(例如,当前单元的列数减去1和相同的行数)的另一个单元的单元权重。在步骤630,可以通过将对角线上的邻接单元的单元权重(例如,当前单元的行数减去1以及当前单元的列数减去1)加上对当前单元计算的匹配权重(步骤570)确定临时单元权重。
在步骤640可以比较两个邻接单元的单元权重和临时单元权重。如果临时单元权重大于所述邻接单元的单元权重中的任一个,则在步骤642将当前单元的最后匹配位置设置为当前单元的位置,并且在步骤644将当前单元的单元权重设置为临时单元权重。然而,如果所述单元权重中的任一个超过临时单元权重,则在步骤652或步骤654将这两个单元权重中较大的指定为当前单元的单元权重,并且将该单元(例如,具有较高单元权重的邻接单元)的最后匹配位置指示符的值指定为当前单元的最后位置指示符。
现在回到图5B,在将该表格中的每个单元以上述方式迭代之后,在步骤580,所比较的两个名称的权重可以是该表格的最后单元(例如,最后的行、最后的列)的单元权重。然后当在步骤580确定了权重时,在一个实施例中,如图4的步骤450中所示,可以通过计算两个名称的权重与这两个名称的平均信息值的比值并将该比值乘以最大索引值以产生归一化的索引值来归一化该权重。然后在一个实施例中可以使用该归一化索引值,通过使用该索引值索引保存在身份枢纽32的数据库中的权重表来确定最终权重。
在探讨上述方法的实施例的应用例子之前,讨论一下如何确定各种匹配和分布惩罚量可能是有用的。在一个实施例中,为了计算这些惩罚量,将例如上面关于图4描述的比较算法的实施例应用于从数据记录样本组获得的一组随机的名称对。典型地可以使用大约一千万对名称。在应用该比较算法时,可以跟踪以下变量:
·Rancomp=比较的名称标记的总数。
·RanExact=完全一致的名称标记的总数。
·RanInitial=通过首字母匹配一致的名称标记的总数。首字母匹配是第一个字符一致的匹配,一个标记具有长度1,另一个标记的长度大于1。
·RanPhonetic=语音上一致但是不完全一致的名称标记的总数。
·RanNickname=具有共同别名并且不完全匹配的名称标记的总数。
·RanNickPhone=具有语音上匹配并且不完全匹配的别名或者仅通过别名匹配的名称标记的总数。
·RanEdit=通过编辑距离比较匹配并且不完全匹配的名称标记的总数。
·RanDist-0=(仅CXNM)完全匹配并且每个名称字符串中的先前标记也匹配的名称标记的总数。
■例子1:在与BOBS FLOWER SHOP比较的BOBS FLOWERSHOP中,因为在先前的标记中有完全匹配的BOBS,FLOWER的完全匹配将被计数。类似地,SHOP也将被计数。
■例子2:在与BOBS PRETTY FLOWER SHOP比较的BOBSFLOWER SHOP中,因为先前的标记是BOBS和PRETTY并且FLOWER是一个匹配,FLOWER将不被计数。SHOP将被计数。
·RanDist-1,RanDist-2,RanDist-3=(仅CXNM)完全匹配的名称标记的总数并且其中当前匹配和先前匹配之间的额外标记的最大数是1、2或3。
■在上面的例子2中,对于FLOWER匹配,先前的匹配是BOBS。在第一字符串中没有额外标记,在第二字符串中有1个,所以这是RanDist-1的例子。
■如果比较字符串BOBS PRETTY FLOWERS和BOBSGOOD FLOWERS,则完全匹配的FLOWERS的距离仍是1,因为在每个字符串中有一个额外标记。
■如果比较字符串BOBS PRETTY NICE FLOWERS和BOBSGOOD FLOWERS,则完全匹配的FLOWERS的距离将是2,因为在第一字符串中有2个额外标记。
■如果额外标记的数量大于或等于3,则将它计数在RanDist-3中。然后可以计算以下频率:
·Ran ProbExact=RanExact/RanComp
·Ran ProbInitial=RanInitial/RanComp
·RanProbPhonetic=RanPhonetic/RanComp
·RanProbNickname=RanNickname/RanComp
·RanProbNickPhone=RanNickPhone/RanComp
·Ran ProbEdit=RanEdit/RanComp
·RanProbDist-0=RanDist-0/RanComp
·RanProbDist-1=RanDist-1/RanComp
·RanProbDist-2=RanDist-2/RanComp
·RanProbDist-3=RanDist-3/RanComp
结合产生完全匹配权重使用上述处理,可以得到一组匹配的名称对,并且可以得到以下频率:
·MatchProbExact=MatchExact/MatchComp
·Match ProbInitial=MatchInitial/MatchComp
·MatchProbPhonetic=MatchPhonetic/MatchComp
·MatchProbNickname=MatchNickname/MatchComp
·MatchProbNickPhone=MatchNickPhone/MatchComp
·MatchProbEdit=MatchEdit/MatchComp
·MatchProbDist-0=MatchDist-0/MatchComp
·MatchProbDist-1=MatchDist-1/MatchComp
·MatchProbDist-2=MatchDist-2/MatchComp
·Match ProbDist-3=MatchDist-3/MatchComp
使用这些频率可以计算以下边际(marginal)权重:
·MarginalExact=log10(MatchProbExact/RanProbExact)
·MarginalInitial=log10(MatchProbInitial/Ran ProbInitial)
·MarginalPhonetic=log10(MatchProbPhonetic/Ran ProbPhonetic)
·MarginalNickname=log10(MatchProbNickname/RanProbNickname)
·MarginalNickPhone=log10(MatchProbNickPhone/RanProbNckPhone)
·MarginalEdit=log10(MatchProbEdit/RanProbEdit)
·MarginalDist-0=log10(MatchProbDist-0/RanProbDist-0)
·MarginalDist-1=log10(MatchProbDist-1/RanProbDist-1)
·MarginalDist-2=log10(MatchProbDist-2/RanProbDist-2)
·MarginalDist-3=log10(Match ProbDist-3/RanProbDist-3)
并且可以按如下计算各惩罚量:
·Initial Penalty=MarginalExact-MarginalInitial
·Initial Penalty=MarginalExact-MarginalInitial
·Phonetic Penalty=MarginalExact-MarginalPhonetic
·Nickname Penalty=MarginalExact-MarginalNickname
·NickPhone Penalty=MarginalExact-MarginalNickPhone
·Edit Distance Penalty=MarginalExact-MarginalEdit
·DistPenalty1=MarginalDist-0-MarginalDist-1
·DistPenalty2=MarginalDist-0-MarginalDist-2
·DistPenalty3=MarginalDist-0-MarginalDist-3
参考图7的示例表格,假定希望获得两个名字:“Bobs FlowerShop”和“Bobs Very Pretty Flower Shoppe”之间的权重,并且使用以下参数进行比较,则每个标记的完全匹配权重是:
BOBS-200
VERY-150
PRETTY-300
FLOWER-400
SHOPPE-600
SHOP-150
而距离3的距离惩罚量是100,并且语音惩罚量是100。
在一个实施例中,可以针对所比较的两个名称计算平均信息分值(步骤430)。在一个实施例中,这是使用每个名称中的每个标记的完全匹配权重进行的。根据该方法,Bobs Flower Shop的信息分值是750(例如,200+400+150),名称“Bobs Very Pretty Flower Shoppe”的信息分值是1650(200+150+300+400+600),这两个信息分值的平均数是1200。
当计算出这两个名称的平均信息分值(步骤430)时,可以产生这两个名称的权重(步骤440)。在一个实施例中,构建表格700(步骤510)。其中每个单元702具有保持位置指示符(例如,行、列)和单元权重的能力。然后可以初始化该表格的单元702a(步骤520)。
当该表格的单元702a已经被初始化后,可以迭代表格700的其余的单元702。从单元702b(例如,行1,列1)开始,确定在对应于单元702b的两个标记之间出现匹配(步骤540)。然后可以计算这两个标记的匹配权重(步骤542),在此情况中,该匹配权重是200。然后可以确定邻接单元的单元权重值(步骤610、620),并且由此可以确定对角线单元702a1的单元权重(0)加上200(例如,该单元的临时单元权重)大于邻接单元702a2、702a3中任一个的单元权重(步骤640)。因此,将单元702b的最后匹配位置指示符设置为当前单元702b(1,1)并且将当前单元的单元权重设置为计算出的匹配权重(200)(步骤642、644)。
然后可以计算下一个单元702c的最后匹配位置指示符和单元权重。确定在对应于单元702c的两个标记之间没出现匹配(步骤540)。当没有出现首字母缩略词匹配时(步骤532),将该单元的匹配权重设置为零(步骤542)。然后可以计算临时单元权重(步骤630)并且将该临时单元权重与邻接单元702b、702a4的单元权重进行比较(步骤640、650),并且由此可以确定邻接单元702b的单元权重(100)大于邻接单元702a4的单元权重或对角线单元702a3的单元权重加上当前单元的匹配权重(0)(例如,临时单元权重)。因此,将当前单元702c的最后匹配位置指示符设置为邻接单元702b的最后匹配位置指示符(1,1)并且将当前单元702c的单元权重设置为具有较大单元权重的邻接单元702b的单元权重(步骤652)。
类似地,可以利用与如上关于单元702c所描述的结果类似结果迭代单元702d、702e、702f、702g、702h、702i、702j和702k。然而当到达单元702l时,可以确定在对应于单元702l的两个标记之间出现匹配(步骤540)。然后可以计算对应于单元702l的标记(例如,“Flower”和“Flower”)的匹配权重(步骤542),在此情况中该匹配权重可以是400。然后通过比较对角线单元702h的最后匹配位置的位置与当前单元702l的位置可以确定是否应该施加距离惩罚量(步骤550)。可以通过行索引相减(例如,4-1)和列索引相减(例如,2-1),取这些值中的最大值(例如,3)并将该距离值与阈值水平比较来完成该比较,以确定是否应该施加距离惩罚量。在此情况下,用于距离惩罚量的阈值可以是距离1,由于3大于1,所以可以确定应该施加距离惩罚量。然后可以从计算出的当前单元的匹配权重减去对应于该距离值(例如,3)的距离惩罚量(步骤552、560)。在此情况下,距离惩罚量是100,可以从匹配权重400减去该距离惩罚量以将单元702l的匹配权重调节为300。然后可以确定邻接单元的单元权重值,并且由此可以确定对角线单元702h的单元权重(200)加上当前单元702l的匹配权重(例如,300)大于邻接单元702k、702i中任一个的单元权重(例如,分别是200和200)(步骤640)。因此,将单元702l的最后匹配位置指示符设置为当前单元702l(4,2)并且将当前单元702l的单元权重设置为计算出的匹配权重加上对角线单元702h的单元权重(例如,300+200=500)(步骤642、644)。
可以与上述计算类似地计算单元702m、702n和702o的最后位置匹配指示符和单元权重。然而,当到达单元702p时,可以确定在对应于单元702p的两个标记之间出现匹配(步骤540)。然后可以计算对应于单元702p的标记(例如,“Shoppe”和“Shop”)的匹配权重(步骤542),在此情况中该匹配权重可以是50(因为“Shoppe”和“Shop”之间的匹配可以是语音匹配,所以其权重可以是Shoppe和Shop的完全匹配权重中最小值减去语音惩罚量权重)。然后通过比较对角线单元702l的最后匹配位置的位置与当前单元702p的位置可以确定是否应该施加距离惩罚量(步骤550)。可以通过行索引相减(例如,5-4)和列索引相减(例如,3-2),取这些值中的最大值(例如,1)并将该距离值与阈值水平比较来完成该比较,以确定是否应该施加距离惩罚量。在此情况下,用于距离惩罚量的阈值可以是距离1,并且同样不应该施加距离惩罚量。因此,当前单元702p的匹配权重是50。然后可以确定邻接单元702o、702m的单元权重值(步骤610、620),并且由此可以确定对角线单元702l的单元权重(500)加上当前单元702p的匹配权重(50)大于邻接单元702k、702i中任一个的单元权重(例如,分别是500和500)(步骤640)。因此,将单元702p的最后匹配位置指示符设置为当前单元702p(5,3),并且将当前单元702p的单元权重设置为计算出的匹配权重加上对角线单元702l的单元权重(例如,500+50=550)(步骤642、644)。
读取表格700的最后单元702p,可以确定所比较的两个名称的权重是550。然后可以根据最大相似性索引和该权重与这两个名称的平均信息分值的比值将该权重归一化(步骤450)。例如,如果最大相似性索引是10,则通过将公式10*550/1200的结果四舍五入可以将该权重归一化为归一化索引值4。可以将该归一化索引值用作归一化权重表中的索引以产生两个标记的最终权重(步骤450)。例如,归一化权重4可以索引到两个名称的最终权重441。
图8示出存在首字母缩略词的例子。假定希望获得两个名称:“Bobs VP Flower Shop”和“Bobs Very Pretty Flower Shop”之间的权重并且使用以下参数进行比较,每个标记的完全匹配权重是:
BOBS-200
VERY-150
PRETTY-300
FLOWER-400
SHOP-150
而距离3的距离惩罚量是100。
在一个实施例中,可以针对所比较的两个名称计算平均信息分值(步骤430)。在一个实施例中,这是使用每个名称中的每个标记的完全匹配权重完成的。根据该方法,Bobs VP Flower Shop的信息分值是1050(例如,200+300+400+150),名称“Bobs Very Pretty FlowerShop”的信息分值是1200(例如,200+150+300+400+150),取这两个信息分值的平均数1125。
当计算出这两个名称的平均信息分值(步骤430)后,可以产生这两个名称的权重(步骤440)。在一个实施例中,构建表格800(步骤510)。其中每个单元802具有保持位置指示符(例如,行,列)和单元权重的能力。然后可以初始化该表格的单元802a(步骤520)。
当该表格的单元802a已经被初始化后,可以迭代表格800的其余的单元802。从单元802b(例如,行1,列1)开始,确定在对应于单元802b的两个标记之间出现匹配(步骤540)。然后可以计算这两个标记的匹配权重(步骤542),在此情况中,该匹配权重是200。然后可以确定邻接单元的单元权重值(步骤610、620),并且由此可以确定对角线单元802a1的单元权重(0)加上200(例如,该单元的临时单元权重)大于邻接单元802a2、802a3中任一个的单元权重(步骤640)。因此,将单元802b的最后匹配位置指示符设置为当前单元802b(1,1)并且将当前单元802b的单元权重设置为计算出的匹配权重(200)(步骤642、644)。
可以如上所述类似地迭代单元802c-802f。当达到单元802g时,可以确定在对应于单元802g的两个标记之间不存在匹配(步骤540),然而,可以确定VP是首字母缩写词(步骤532)。通过将对应于单元802g的第一个标记“VP”的第一个字符(例如,“V”)与对应于单元802g的另一个标记(例如,very)的第一个字符进行比较可以完成该确定。由于字符“V”匹配标记“Very”的第一个字符,所以将标记“VP”的下一个字符(例如,“P”)与另一个名称(例如,“Pretty”)中随后的标记进行比较,由于这些字符匹配,并且第一标记没有更多的字符(例如,“VP”),所以可以确定标记“VP”是首字母缩略词,并且可以与上面讨论的计算类似地计算对应于该首字母缩略词标记的该组单元802g、802k(例如,对应于首字母缩略词标记和另一个名称的标记的一个字符的每个单元)的值(在关于图8A描述的例子中,首字母缩略词的字符(例如,“V”和“P”)与它们各自匹配标记(例如,“Very”和“Pretty”)之间的两个匹配产生权重为50的初始匹配)。在计算出单元802g和802k的值之后,该表格可以类似图8A中所示的表格。
然后可以从单元802d开始迭代表格800的其余的单元802,以如上所述计算这些单元的最后位置匹配和单元权重。可以在该迭代处理期间跳过单元802g和802k,因为这些单元已经通过首字母缩写词匹配(步骤530)。在迭代了表格800的其余的单元802之后,表格800可类似图8B中所示的表格。
读取表格800的最后单元802u,可以确定所比较的两个名称的权重是850。然后可以根据最大相似性索引和该权重与这两个名称的平均信息分值的比值将该权重归一化(步骤450)。例如,如果最大相似性索引是10,则可以通过将公式10*850/1125的结果四舍五入将该权重归一化为归一化索引值8。可以将该归一化索引值用作归一化权重表中的索引以产生两个标记的最终权重(步骤450)。例如,归一化权重8可以索引到两个名称的最终权重520。
描述用于比较名称的方法的一个实施例的伪码如下:
Compare(tList1,tList2)//tList1 and tlist2 are lists of tokens
L1=len(tList1)
L2=len(tList2)
compareTable=a 2dim-array indexed 0...L1 and 0...L2containing real numbers.
Set all entries in row 0 to 0.0 and None
Set all entries in column 0to 0.0and None
For r in range(1...L1)
For c in range(1..L2)
tokenInfo,compareResult=compare(tList1[r],tList2[c])
if the compareResult was a match(exact or partial):
get I_MATCH and J_MATCH from compareTable[r-1][c-1]
maxDiff=max(r-I_MATCH,c-J_MATCH)
if maxDiff>1:
//need to apply the distance pen alty.
penalty=posPen alty[maxDiff]
else
penalty=0.0
diagonalContent=
compareTable[r-1][c-1].infoScore+tokenlnto-
penalty
compareTable[r][c].infoScore=max(compareTable[r-
1][c].infoScore,
compareTable[r][c-1].infoScore,
compareTable[r][c].infoScore)+
tokenInfo)
if new infoScore is result of new match:
compareTable[r][c].I_MATCH=r
compareTable[r][c].J_MATCH=c
elsif new info score comes from[r,c-1]or[r-1,c]
compareI_MATCH,J_MATCH from that cell
else if acronymCheck(tList1[r],tList2,c)or acronymCheck(tList2[c],
tList1,c)
L=length of acronym
for i in range(0,L-1)
compareTable[r+i,c+i].I_Match=r+L
compareTable[r+i,c+i].J_Match=c+L
compareTable[r+i,c+i].infoScore=
max(compareTable[r-1][c].infoScore,
compareTable[r][c-1].infoScore,
compareTable[r][c].infoScore)+
acronymScore
else://compare results was not a match
compareTable[r][c].infoScore=max(
compareTable[r-1][c-1]].infoScore,
compareTable[r][c-1]].infoScore,
compareTable[r][c]].infoScore)
update compareTable[r][c].I_MATCH and J_MATCH
using contents of appropriate cell:either [r-1,c-1],[r,c-1]or[r-1,c].
maxInfo=max(tokenListInfo(tList1),tokenListInfo(tList2))
normalized Info=10*round(compareTable[L1][L2]/maxInfo)
return normalizedInfo
如上所述,可由上述伪码的实施例返回的归一化索引值可被用于索引多个值的表格以获得最终权重。该表格可类似下面的表格,其中最大索引值可以是16:
NORM_ADJWGT_0|-185|
NORM_ADJWGT_1|-101|
NORM_ADJWGT_2|-53|
NORM_ADJWGT_3|-12|
NORM_ADJWGT_4|37|
NORM_ADJWGT_5|69|
NORM_ADJWGT_6|142|
NORM_ADJWGT_7|207|
NORM_ADJWGT_8|261|
NORM_ADJWGT_9|280|
NORM_ADJWGT_10|277|
NORM_ADJWGT_11|309|
NORM_ADJWGT_12|360|
NORM_ADJWGT_13|452|
NORM_ADJWGT_14|477|
NORM_ADJWGT_15|564|
NORM_ADJWGT_16|598|
在以上说明中,已经关于特定实施例描述了本公开。然而,应该理解,本描述仅是作为例子并且不意味着限制性的。因此,还应理解,对于已经参照了本说明书的本领域普通技术人员来说,本公开实施例的细节上的众多变化以及本公开附加的实施例是显而易见的并且是可以做出的。这些变化和附加实施例也被考虑在所附权利要求中详述的本公开的范围内。