1

我有两个数据集,它们的共同列名略有不同。

数据集 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 旨在以模糊的方式帮助协调这种混乱的数据,但似乎并非如此

有什么工具可以让我以模糊的方式匹配这些,而无需编写代码?如果需要,我可以很容易地编写代码,但令我惊讶的是,Google Refine 似乎并没有像我想象的那样做。

4

3 回答 3

2

你也可以:

  1. 去掉所有标点符号并将地址单元格视为一个大长字符串,如果它不在一个单元格中,则需要使用一些 join()。一旦它是单个单元格中的大字符串,然后使用 Facet -> Custom Text Facet ->指纹() GREL 函数。

    fingerprint(value)
    value.fingerprint()
    
  2. 使用那个大长字符串,您还可以使用聚类或自定义文本方面执行模糊分析

    value.ngramFingerprint(2)
    

对于您的杂乱数据类型,这些可能仍然不是最佳解决方案......地址。特别是,如果您认为您的 2 个示例是“相同的”,但事实并非如此。因此,您需要采用 Tom 建议的方法。

但是,如果您真的想说...嘿,这两个地址中的大多数单词和数字都是相同的,并且我认为它们在我的上下文中非常接近,并且想以某种方式衡量两个字符串的接近程度指纹......那么上面的两个步骤应该让你指向正确的方向。

于 2013-03-25T02:03:14.620 回答
2

也许这个 [新的?] 协调服务实施可以工作并使其更容易? http://okfnlabs.org/reconcile-csv/

Reconcile-csv 是针对从 CSV 文件运行的 OpenRefine 的协调服务。它使用模糊匹配将一个数据集中的条目与另一个数据集中的条目进行匹配,有助于将唯一 ID 引入系统 - 因此它们可以用于轻松地加入您的数据。

于 2013-12-19T22:40:49.973 回答
1

有两种策略可以在 OpenRefine 中起作用:

  1. 与 Freebase、DBpedia(使用 RDF 扩展)或其他一些强标识符源进行协调,然后使用标识符进行匹配。

  2. 将列添加到每个数据集及其源(A 或 B),将列重新排列为相同的顺序,将两个数据集导入单个 Refine 项目,然后使用聚类查找重复项。

于 2013-03-24T13:53:11.643 回答