【发布时间】:2015-02-07 15:17:57
【问题描述】:
我有一个包含业主的数据库;我想计算每个人拥有的房产数量,但遇到了标准不匹配问题:
REDEVELOPMENT AUTHORITY vs. REDEVELOPMENT AUTHORITY O vs. PHILADELPHIA REDEVELOPMEN vs. PHILA。开发授权
佩纳联邦 vs. 宾夕法尼亚联邦 vs. 宾夕法尼亚州
TRS 宾夕法尼亚大学 vs. 受托人
据我所见,这是一个很常见的问题,但我的问题与我所看到的解决方案不同,原因有两个:
1) 我有大量字符串 (~570,000),因此计算 570000 x 570000 的编辑距离矩阵(或其他成对匹配指标)似乎对资源的使用令人生畏
2) 我并不专注于一次性比较——例如,我从大数据模糊匹配问题中看到的最常见的情况是,将用户输入与文件中的数据库进行匹配。我有一个固定的数据集,我想一劳永逸地压缩。
对于这样的练习,是否有任何完善的例行程序?我最熟悉 Python 和 R,因此其中任何一种方法都是理想的,但由于我只需要这样做一次,因此我愿意扩展到其他不太熟悉的语言(也许是 SQL 中的某些语言? ) 对于这个特定的任务。
【问题讨论】:
-
我的第一个想法是使用 qdap 包来查找最常用的术语,然后执行一系列 gsub(或者更强大的使用 gsubfn 包)并将常见的变体转换为标准化形式。其次,删除所有介词和 the's 等。第三,将所有名称缩短为前两个或三个单词。此时尝试 agrep 并查看匹配是否可以合理有效地完成。
标签: python sql r fuzzy-search fuzzy-logic