给定2个数据集,其中一个数据集非常非结构化且嘈杂,另一个数据集中结构良好且完整-如果两个数据集都不包含任何唯一标识符,是否存在可以用于将非结构化数据集中的行与结构化数据集中行进行匹配的软件工具、API或框架?可能有能力产生某种信心得分,认为这些行是匹配的。
这基本上就是问题所在,但如果感兴趣,下面还有更多信息:
我有2个数据集。两者都由用户信息组成,包含用户的姓名、地址、联系方式和其他杂项信息。
数据集#1未格式化、无序、未限制、有噪声(缺少值、非常规数据,即电话号码可能是+XX(XX)XXX XXX,下一行的电话号码可能为XXXXXXXXXX)。提供的唯一便利是每个用户记录至少在自己的行上。
数据集#2在大约80个独立的数据集上进行了扩展,然而,每个数据集虽然彼此不统一,但格式良好,数据描述良好,这意味着我可能会将这些数据集规范化为一个逻辑数据集-就这个问题而言,请考虑这一个数据集。
数据集#1中的每一条记录都包含在数据集#2中——问题是没有唯一的标识符,数据集#1是嘈杂的和非结构化的。
到目前为止还没有答案,所以我将贡献我提出这个问题后所做的研究结果。这类问题所属的领域是记录链接http://en.wikipedia.org/wiki/Record_linkage,即在两个数据集之间匹配记录,其中记录之间没有共享的唯一id。
我找到了这个软件http://fril.sourceforge.net/对于记录链接,它将一系列距离度量纳入其链接算法中,以便在左侧和右侧之间匹配时可以设置置信度和接受度,例如,q-gram距离可以用于匹配不同格式的存储名称,因为"q-gram"(给定字符串的子集)的顺序无关紧要,因此"John Doe"one_answers"Doe,John"会给出高分。Soundex算法也可用于克服名称字段中常见的拼写错误,即"John Doe"one_answers"Jon Doe"。对于其他类型的数据,可以使用编辑距离或其他距离度量。
基于每个距离度量的结果,计算置信水平,并且如果置信水平等于或高于接受水平集,则进行匹配。
该领域和软件可能会克服存储数据格式差异的问题,在将数据集输入此类系统之前,我可能必须完成构建上述数据集#1的额外工作。