我正在研究两组匹配的公司名称。我试图用Levenstien的距离在Python中进行编码。我遇到公司简称以及诸如Pvt,Ltd之类的尾随问题。我已经使用Excel Fuzzy查找运行了相同的集合,并获得了良好的结果。我有一种方法可以查看excel模糊查找的编码方式,并在python中使用相同的实现。
答案 0 :(得分:0)
据我所知,模糊查找使用Jaccard相似度。查看其文档。在我四处游玩时,您也可以尝试SequenceMatcher并以相似度玩游戏-在统一文本字符串后,它会提供非常好的结果。
答案 1 :(得分:0)
以下摘录自 Excel的Microsoft模糊查找外接程序,Readme.docx。希望对您有所帮助。
高级概念
模糊查询技术基于非常简单但灵活的技术 两个记录之间的相似性度量。提卡相似度模糊 查找使用Jaccard相似度,定义为 集合交集除以两个集合的集合并集的大小 对象。例如,集合{a,b,c}和{a,c,d}具有Jaccard 2/4 = 0.5的相似度,因为交集为{a,c}并且 联合是{a,b,c,d}。两组的共同点越多, Jaccard相似度将更接近1.0。
带模糊的记录的加权Jaccard相似度和标记化 查找,您可以将权重分配给集合中的每个项目,并定义 加权Jaccard相似度作为相交的总权重 除以工会的总人数。对于加权集{(a, 2),(b,5),(c,3)},{(a,2),(c,3),(d,7)},加权雅卡 相似度是(2 + 3)/(2 + 3 + 5 +7)= 5/17 = .294。
由于Jaccard相似性是在集合上定义的,因此必须进行模糊查找 首先将数据记录转换为集合,然后再计算Jaccard 相似。模糊查找使用令牌生成器将数据转换为集合。 例如,记录{“ Jesper Aaberg”,“ 4567 Main Street”}可能是 标记成集合{{“ Jesper”,“ Aaberg”,“ 4567”,“ Main”, “街”}。默认的分词器用于英语文本,但可能 在Configure => Global Settings中更改LocaleId属性以指定 其他语言的标记器。
令牌加权由于并非所有令牌都具有同等重要性,因此模糊 查找将权重分配给令牌。令牌被分配高权重,如果 它们很少出现在记录样本和低权重中,如果它们 经常发生。例如,诸如“公司”之类的常用词 可能会被赋予较低的权重,而诸如 “ Abracadabra”的体重可能更高。一个可以超越 通过提供自己的令牌权重表来默认令牌权重。
转换转换极大地提高了Jaccard的功能 通过将令牌从一个字符串转换为字符串来实现相似性 另一个。例如,您可能知道名称“ Bob”可以是 转换为“罗伯特”; “美国”与“美国”相同;要么 “ Missispi”是“密西西比州”的拼写错误。有许多 模糊查找处理的此类转换的类 自动,例如拼写错误(使用“编辑转换” 如下所述),字符串前缀和字符串合并/分割操作。 您还可以指定一个包含自己的自定义表格 转换。
转换下的Jaccard相似度 转换是任意两个Jaccard之间的最大相似度 每个集合的变换。给定一套转换规则,所有 考虑集合的可能变换。例如,对于 集{a,b,c}和{a,c,d}以及变换规则{b => d, d => e},Jaccard相似度的计算如下: {a,b,c}:{a,b,c},{a,d,c} {a,c,d}的变化形式:{a,c,d}, {a,c,e}所有对之间的最大Jaccard相似度:J({a,b,c}, {a,c,d})= 2/4 = 0.5 J({a,b,c},{a,c,e})= 2/4 = 0.5 J({a,d, c},{a,c,d})= 3/3 = 1.0 J({a,d,c},{a,c,e})= 2/4 = 0.5 最大值为1.0。注意:转换后的Weghted Jaccard类似词 简直就是所有对的最大加权Jaccard相似度 转换集。
编辑距离编辑距离是字符总数 转换一个所需的插入,删除或替换 串到另一个。例如,“ misissipi”之间的编辑距离 而“ mississippi”为2,因为需要插入两个字符。 Fuzzy Lookup附带的转换提供者之一 是EditTransformationProvider,它生成特定的 每个输入记录的转换并创建一个转换 从令牌到字典中给定范围内的所有单词 编辑距离。归一化编辑距离是编辑距离 除以输入字符串的长度。在上一个示例中, 归一化的编辑距离是2/9 = .222。