假设我想使地址记录(或人名或其他名称)相互匹配,以合并最有可能引用同一地址的记录。基本上,我想我想计算文本值之间的某种相关性,如果该值超过某个阈值,则合并记录。
示例:“西割草机驱动器54 A”可能与“ W.割草机Dr. 54A”相同,但与“东割草机驱动器54 A”不同。
您将如何解决这个问题?在地址情况下,是否需要某种基于上下文的字典来知道“ W”,“ W”。和“西部”是一样的吗?拼写错误(用“移动器”代替“割草机”等)怎么办?
我认为这是一个棘手的问题-也许那里有一些著名的算法?
良好的 基线 ,就其较高的计算成本而言,可能是不切实际的 基线 ,更重要的是,它会产生许多误报,这是通用的字符串距离算法,例如
根据所需的准确度级别(应在查全 率 和 精确度 两方面指定BTW,即通常表示错过相关性比错误识别一个关系更重要),这 是基于以下[某些启发式方法和想法]可以解决问题 :
考虑到上述内容,请实施 基于规则的评估程序 。暂时地,可以将规则实现为对树/数组状结构的访问者,在该访问中最初解析输入(访问者设计模式)。 基于规则的框架的优势在于,每种启发式方法都有其自身的功能,并且可以对规则进行优先级排序,即在链中尽早放置一些规则,并通过一些强有力的启发式方法(如:不同的City = >相关性= 0,置信度= 95%等)。
搜索相关性的一个重要考虑因素是 需要 先验 比较每个单个项目(此处为地址)与其他每个项目,因此需要多达1/2 n^2项目级的比较。因此,以参考项的预处理(解析,规范化…)的方式存储参考项,并可能具有可用作[非常粗糙] 的 摘要/键 可能很有用。可能的相关性指示符(例如,由5位邮政编码组成的键,后跟“主要”名称的SOUNDEX值)。
1/2 n^2