5 相关工作
数据修复旨在发现和修正数据库中错误的数据。在过去的几十年里,研究人员提出了各种各样自动发现并修复数据库中错误数据的方法[1]。这些方法大致可以分为如下三类。
(1)传统的方法先依赖各种约束条件,包括FDs[5,7]、CFDs[6]、完整性约束[4]和包含关系(INCs)[5]来检测数据中的由错误数据引起的不一致性(或冲突);然后用文献[2-4]中的方法修正所有的错误数据,从而解决所有的冲突。对一般的文本数据库,这一类方法中的大部分工作都是使用FD/CFDs进行修复,因为FD/CFDs只涉及单个关系库中的约束。当涉及多个数据库时,则使用INCs进行修复。通常,这类方法在很多数据库中都能根据预定义的冲突有效地检测到绝大数的错误数据。但在修复这些错误数据以解决冲突时,有些方法倾向于对数据集做最少的改变[2,4],而有些方法偏向于根据一些简单的预测模型做最有可能是正确的修复。但是,它们都不能正确地修正所有的错误。
(2)第二类解决方法是基于模型的修复,这些方法通常先对一个数据集构建一些用于检测和修正错误的预测模型[1,10-14]。模型的构建需要使用机器学习中的统计技术进行数据清洗,这种技术可以根据各种分析、预测和计算模型有效地获取数据间的依赖性和关联性[1,14]。但是由于一些不服从预定义约束异常值的存在,并不是所有的错误数据都可以被正确的识别和修正。
(3)第三类方法借助外部资源进行修复数据,通过利用主数据集中的信息[15],或者用户的交互信息(如GuidedRepair[8]和NADEEF[9])。但是所需的外部资源并不是都能获得的,所以这些方法不能应用在一般场景中。本文提出的CrowdAidRepair方法,是一种整合了基于众包修复和基于规则修复的方法。