我有两个数据集,常见的列名略有不同。
数据集A:
Name,Number
Hartlepool UA,306
Tyne and Wear Met County,683
数据集B:
Name,Number
Hartlepool,366
Tyne and Wear,353
我认为Google Refine / Open Refine旨在帮助以模糊的方式协调这种混乱的数据,但it seems not。
我是否可以使用任何工具以模糊方式匹配这些工具,而无需编写代码?如果需要的话,我可以很容易地编写代码,但是我很惊讶Google Refine似乎并没有像我那样做。
答案 0 :(得分:2)
您也可以:
去除所有标点符号并将地址单元格视为一个大的长字符串,如果它不在一个单元格中,则需要使用一些join()。一旦它是单个单元格中的大字符串,那么使用Facet - >自定义文字构面 - >指纹()GREL功能。
fingerprint(value)
value.fingerprint()
使用该大长字符串,您还可以使用“聚类”或“自定义文本构面”执行模糊分析,并
value.ngramFingerprint(2)
这些可能仍然不是您的杂乱数据类型的最佳解决方案....地址。特别是,如果你考虑你的两个例子是“相同”,它们不是。所以你需要采取汤姆建议的方法。
但如果你真的想说...嘿,这两个地址中的大多数单词和数字是相同的,我认为它们在我的背景下非常接近,并且想要以某种方式测量它的接近程度2个字符串指纹...然后上面的2个步骤应该让你指向正确的方向。
答案 1 :(得分:2)
也许这个[新?]对帐服务实施可以工作并使其更容易? http://okfnlabs.org/reconcile-csv/
Reconcile-csv是从CSV文件运行的OpenRefine的对帐服务。它使用模糊匹配将一个数据集中的条目与另一个数据集中的条目进行匹配,从而有助于将唯一ID引入系统 - 因此可以轻松地将它们用于连接数据。
答案 2 :(得分:1)
有两种策略可以在OpenRefine中使用:
协调Freebase,DBpedia(使用RDF扩展)或其他强标识符源,然后使用标识符进行匹配。
为每个数据集添加一个列及其源(A或B),将列重新排列为相同的顺序,将两个数据集导入单个精简项目,然后使用群集查找重复项。