2017-09-26 49 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