2017-09-26 50 views
2

我认为有一个bug(或者一个非常令人惊讶的特点...)在openrefine管理“键冲突指纹”集群变音符号的方式:Openrefine:键冲突指纹集群+附加符号

第1行:高等 第2行:高等高等高等

- >聚类 - > 0簇

同样的问题与

行1:高等 第2行:高等高等高等 - > 0 CLU STER

不过这种情况下效果很好:

第1行:高等 行2:巴黎高等高等高等 - > 1集群

回答

2

不太suprising。指纹聚类仅将fingerprint()函数应用于每个单元格,然后逐一比较它们的等价性。现在,这里是fingerprint在你提到的三种情况的结果:

row value    value.fingerprint() 
1. école    ecole 
2. école école ecole ecole ecole 
row value    value.fingerprint() 
1. école    ecole 
2. école école ecole ecole ecole 
row value    value.fingerprint() 
1. ecole    ecole 
2. école école école ecole 

为什么在第三种情况下这种差异?由于指纹算法实际上执行以下操作,因此in a strict order

1.卸下前缘和后空白

“高等高等高等” - > “高等高等高等”

2.变化的所有字符的小写表示

“高等écoleécole“ - >”écoleécoleécole“

3.删除所有标点和控制升字符

“高等 - 高等,高等” - > “高等高等高等”

4.字符串分割成空白分隔的标记

“高等高等高等” - > [”高等”, “高等”, “高等”]

5.排序令牌并删除重复

[ “高等”, “高等”, “高等” ] - > [“école”]

6。加入令牌回到一起

[ “高等”] - > “高等”

7.正规化扩展西方字符来其ASCII表示

“高等” - > “高等”

有人可能会怀疑操作7是否应该在之前完成。但在你的例子中,如果有错误的话,可能是第三种情况。字符串“école”与字符串“ecoleécoleécole”非常不同,我不认为它们是合并的。既定的名字“约翰 - 约翰”等同于“约翰”。

编辑:One of the developpers agrees with you