我编写了一个程序,在记录列表中查找可能的重复记录。我的程序的当前版本通过手动检查数据识别出94%的重复项,但是如果可能的话,我需要将其达到100%,同时最大限度地减少误报。事实证明这很棘手。
我的程序将电子表格作为输入,其中包含四个长度为n的相关列。首先是记录名称,后跟三个字符串属性。对于每个属性列,我通过比较它们的Levenshtein距离并形成包含每个距离的nxn矩阵,将每个元素与每个其他元素进行比较。然后,我通过仅选择距离低于所选阈值的对来清除矩阵中不完全相似的元素对(每个列的阈值不同,因为某些属性在它们的实例中具有或多或少的变化)。如果至少有一个相应的属性对是可能的重复,则说两条记录可能是重复的。
Sample output: Kang,[Kor, Koloth, Martok]
记录Kang可能是Kor,Koloth和Martok的副本
因为他们至少有一个相关的领域与Kang的相似领域
e.g. bat'leth,[mek'leth,d'k tahg, mek'leth]
我可以很容易地调整Levenshtein距离阈值以检测更高部分的重复,但似乎将它们提高到高于它们已经产生的边际识别减少并且显着增加误报的数量,因为有少量的属性非常不同的重复项(不确定我是否可以发布示例;它对工作敏感)。除了Levenshtein甚至是NaïveBeses分类器之外,我还考虑过使用其他字符串相似度函数的替代解决方案。 你怎么认为我能最好地提高我的计划的准确性?