【发布时间】:2011-10-04 17:34:06
【问题描述】:
我正在尝试清理一个数据库,该数据库多年来获得了许多重复记录,名称略有不同。例如,在公司表中,有“Some Company Limited”和“SOME COMPANY LTD!”之类的名称。
我的计划是将有问题的表导出到 R 中,将名称转换为小写,替换常见的同义词(如“limited”->“ltd”),去掉非字母字符,然后使用agrep 看看看起来很相似。
我的第一个问题是agrep 只接受一个模式来匹配,并且循环遍历每个公司名称以匹配其他公司名称很慢。 (某些要清理的表将有数万甚至数十万个名称要检查。)
我已经简要地查看了tm 包 (JSS article),它看起来非常强大,但适用于分析大块文本,而不仅仅是名称。
我有几个相关的问题:
tm包是否适合此类任务?有没有比
agrep更快的替代方案? (所述功能使用 Levenshtein 编辑距离非常慢。)除了
agrep和tm,R 中还有其他合适的工具吗?我是否应该在 R 中执行此操作,或者此类事情应该是 直接在数据库中完成? (这是一个 Access 数据库,所以我会 尽量避免触摸它。)
【问题讨论】:
标签: r duplicate-data duplicate-removal fuzzy-comparison