通讯录标签系统的数据清洗子系统的设计与实现

 2022-08-13 02:08

论文总字数:21641字

摘 要

随着科学与信息技术的发展,种类繁多且数量庞大的数据应运而生。人们无时无刻不在与他人有信息交流,信息交流以数据形式沉淀下来,海量数据同时为我们带来海量信息,从信息中提炼知识即能为我们服务。

在我们现如今的生活中,我们与他人联系,手机无可厚非的是最重要的通讯工具之一,因此手机通讯录是人们信息关联的一个重要途径,通过手机通讯录,我们或许能能得知通讯录有关人物身份地位,交互关系等信息。原始通讯录数据具有数据量级大,信息丰富的特点,但是可能由于采集方式不同、数据来源不同等原因造成数据质量偏低无法直接供企业使用。

本次课题的主要任务就是对手机通讯录数据进行清洗,主要围绕字段缺失、字段属性不合常理、数据重复、数据冲突等数据质量问题来进行数据清洗,以此输出一份较为合理的可供业务使用的通讯录标签。由此来绘制人物关系拓扑网,补充原有关系网缺失,修正原有关系网错误,定位关系网中人物属性。本次课题系统的设计与实现通过使用基本数据清洗框架,划分模块,定义相关字段属性、输出格式而进行,重点在于清洗模块中的清洗方案选择,对不同数据质量问题都进行了清洗,最终合并输出一份较为完整的双向通讯标签。

关键词:大数据 数据清洗 标签

Abstract

With the development of science and information technology, a wide variety of data have emerged. People everywhere in the information communication with others, in the form of data communication settle, huge amounts of data at the same time bring us huge amounts of information, extract knowledge from information service for us both.

In our today's life, we contact with others, the mobile phone is arguably one of the most important communication tool, so mobile phone contacts are an important way of information, through the mobile phone address book, can we may be able to address book about the characters status, information such as the interaction relations. Original address book data has a large scale data, information, the characteristics of the rich, but may be due to different acquisition methods, data sources to causes such as data quality on the low side cannot directly for use by businesses.

This topic is the main task of the mobile phone address book data cleaning, mainly around the irrational missing fields, field attributes, data repeat, data conflict for data cleaning, data quality problems such as output to a more reasonable for use with business contacts. This results in the mapping of the network of relationships, the loss of the old network, the errors of the old network, and the positioning of the characters in the network. This topic system through the use of the design and implementation of the basic data cleaning framework, divided into modules, define related field properties and output format for, the key lies in the choice of cleaning module of the program, cleaning were carried out with different data quality problems, eventually merged output a relatively complete two-way communication.

KEY WORDS:big data , data cleaning , label

目录

第一章 绪论 1

1.1引言 1

1.2什么是数据清洗 1

1.3大数据与数据清洗 2

1.4数据清洗发展现状 3

1.4.1国外发展现状 3

1.4.2国内发展现状 3

1.5本文的研究目的和主要研究内容 3

第二章 数据清洗原理及方法算法 5

2.1数据清洗原理 5

2.1.1数据清洗框架 5

2.2数据清洗方法、算法 6

2.2.1属性错误自动检测方法 6

2.2.2属性清洗方法 6

2.2.3重复数据记录检测算法 7

2.2.4重复数据记录清洗算法 8

2.3本章小结 9

第三章 系统设计 10

3.1系统整体架构设计 10

3.2字段定义 10

3.3数据格式 11

3.3.1输入格式 11

3.3.2输出格式 11

3.4模块设计 13

3.4.1清洗模块 13

3.4.2统计模块 14

3.4.3合并模块 14

3.4.4存储展示模块 14

3.5本章小结 15

第四章 系统实现 16

4.1环境配置 16

4.2清洗模块 16

4.2.1数据完整性清洗 17

4.2.2数据合法性清洗 17

4.2.3数据唯一性清洗 18

4.2.4 数据权威性清洗 19

4.3统计模块 21

4.4合并模块 22

4.5存储展示模块 23

4.6本章小结 23

第五章 总结和展望 24

5.1总结 24

5.2展望 24

第一章 绪论

1.1引言

在如今这个信息科技发展迅速的社会,伴随着时间迁徙,有越来越多的数据沉淀下来,人们逐渐意识到从数据中可能获取有用的知识拍。数据的量级日益增大让人们苦于存储数据,于是应运而生了云计算。

在我们的社会生活中,我们无时无刻在与他人进行着信息交流。有一些信息比如两个人面对面交谈,也许谈完之后大家都忘了,信息无法被存储下来。而有一些个的信息以数据的形式沉淀下来。当我们有机会处理这些数据时,便有机会从数据从了解到它们想要表达的信息是怎么样的,对信息进行分析又能够进一步提取到知识。即我们的清洗数据的主要目的是实现从数据到信息,信息到知识的提炼,旨在于提供助于进行决策的参考数据[1]。

我们与他人联系,手机无可厚非的是最重要的通讯工具之一,因此手机通讯录是人们信息关联的一个重要途径。通过手机通讯录,我们也许能得知通讯录有关人物的交互关系,身份地位等信息,而人物之间的交互关系就能建立人物关系网、补充原有关系网的缺失。而原始的通讯录数据往往不是那么直观,它们可能是复杂的,不准确的甚至是错误的,正因如此,我们才更需要对包含通讯录的原始数据进行分析清洗处理。

在本次项目中,从企业内部已有通讯录数据入手,依赖于企业环境,进行一次完整的数据清洗流程,提取通讯录数据中的几个重要信息,并输出清洗后的标签信息。

1.2什么是数据清洗

数据清洗是为了解决数据质量问题而产生的一个技术手段,是一个相对于传统解决数据质量问题而高效的过程[2]。数据清洗尽量摒弃了传统纯手工检测数据问题的方法,采用绝大部分由计算机完成,极少部分由人工完成的方法。数据清洗的过程中,由于数据量的庞大以及来源的多样化,往往存在来自不同数据源的数据,如果数据来源唯一则相对的清洗流程较为简洁明了。但是无论数据是处于同一数据源或是来自于不同数据源,都需要对它们中的问题比如重复性、近相似度进行检测,以此决策是否需要对多数据源数据进行合并。

此过程亦称为数据消解的过程,更倾向于处理数据来源多样的原始数据,它们很多时候可能具有相同的含义却使用了不同的定义表达方式,数据清洗过程需要避免类似于这样的问题,将可能存在的相似的表达方式进行比对而进行更为准确一致的表达。描述定义在清洗过程中占据了较为重要的地位,描述定义约定了数据的清洗方案,以此为根据能同时定义数据错误格式,检测数据不一致性并进行筛选处理过程。

数据清洗过程必须满足如下几个条件:不论是单数据源还是多数据源,都要检测并且除去数据中所有明显的错误和不一致;尽可能地减小人工干预和用户的编程工作量,而且要容易扩展到其他数据源;应该和数据转化相结合;要有相应的描述语言来指定数据转化和数据清洗操作,所有这些操作应该在一个统一的框架下完成[3]。

解决以上问题的过程都隶属于数据清洗范围。在集成多个数据源时,需要消解模式冲突,主要就是为了解决这个问题.还有相似重复记录的问题,需要检测出并且合并这些记录。解决这些问题的过程称为数据清洗(data cleaning,data cleansing 或者 data scrubbing)过程[4]。

1.3大数据与数据清洗

大数据时代正式引入,在如今的大数据发展迅猛的环境下,我们有必要逐渐意识到数据与社会的关系,数据是为社会服务,为用户服务。数据量的爆炸式增长为数据更新、数据填充、数据纠错提供了一个极好的机会平台,但是也同样面临着较为严峻的挑战。大数据虽然数据群体庞大,包含的信息量无穷无尽,但是也具有一定的局限性。用于采集的手段不同或是采集方式存在一些不足,可能导致获取的数据有一定的误差甚至是错误完全不合逻辑的,这样的情况在多方位采集的情况下尤为明显,在因为一些物理仪器失误或者非人为故障导致数据出现较大偏颇时数据更有可能遭遇严重的损害。数据最终需要提取成知识才能供人直接使用,知识服务的内涵将受到大量数据的深刻推动,这将有助于组织更好地呼吁内部,外部和公众数据分析,使用户做出前瞻性数据判断。

因此不止应该受制于传统的技术服务,而更应该关注用户,关注社会。对用户的行为模式做出分析。数据清洗在这一个提取知识,关注用户关系的过程中发挥了作用,知识服务要求对大数据进行规范化的数据清洗。原因在于大型数据量的知识服务必须将数据相关联,数据中的信息往往是存在相互关系的,对不同数据中的信息进行数据清洗后提取,可能得到一些共同点,这样共同的公共交点可以将信息提取成为知识,知识便可以直接被利用来解决对应的难题。在数据到信息的过程中需要使用数据清洗方法,这样的清洗结果通常是对一些简单明显错误进行筛选后的成果,再使用更为细致的数据清洗方法便可以为信息进行再一次提纯,提纯得到的知识库便可以直接服务于用户。关注知识中的一些管理规则,数据清洗使得大数据中蕴藏的信息和“知识“可视化,对此构建了知识服务的知识关系图,确保大数据中的信息能够提升到知识服务水平。

合理的数据清洗是大数据能够被提炼成知识的保障。用更全面的方法将数据清洗作为数据分析的一部分,不仅会提高数据的质量,而且还将帮助人们更适当地利用这些数据[5]。

1.4数据清洗发展现状

数据清洗发展到如今,它往往是与数据挖掘、数据仓库密切相关的。在数据挖掘、数据仓库中,数据量随着时间的移动而逐步增大,从长久发展来看,不可能使用最传统的人工方法来进行处理,数据清洗恰巧是倾向于使用计算机来进行处理的一个过程。因此考虑使用数据清洗实现企业中的数据挖掘过程、搭建数据仓库自动化。在数据仓库领域,数据清洗一般是应用在几个数据库合并时或多个数据源进行集成时[6]。在数据仓库研究和应用领域,数据清洗处理是构建数据仓库的第一步,由于数据量巨大,不可能进行人工处理,因此自动化数据清洗受到工商业界的广泛关注[7]。

1.4.1国外发展现状

数据清洗缘起于美国,数据清洗为正处于朝着商业信息化发展的美国提供一道安全保障,采用数据清洗方法对错误的商业信息及时进行纠正且效果卓群,使得避免了如之前出现社保号码错误而引发社会问题的情况,引起业界人士关注。

于是数据清洗逐渐引起人们的关注,也正因如此得以长足的发展。数据清洗发展至今,概括为以下几点:

1)能对基本异常数据进行检测与消除

2)能对重复数据进行检测与消除

3)能对不同数据源中的数据进行统一的定义映射

4)通常应用于特定场景下,正在发展更为通用数据清洗方案

1.4.2国内发展现状

数据清洗正在成为数据仓库和数据挖掘领域,乃至网络数据处理的一个重要课题[8]。现如今,在国内范围内,数据清洗发展的起步较于国外较晚,因此技术手段,清洗方案存在一定的不成熟,但是发展趋势较为迅速,发展势头较好。

就当下来说,我国主要是在数据仓库、决策支持、数据挖掘这三个方向有所研究,不过只是对其作一些比较简单的解释。

对于数据质量要求极高的客户而言,无特别奏效的清洗方案。

1.5本文的研究目的和主要研究内容

手机通讯录极有可能是了解一个某手机号码号主信息的一个重要途径,比如人物的职业(如医生),职位(如科长),体貌特征(如胖子),行为倾向等。更重要的是可以关联备注号码与被备注号码,了解两者具有何种关系,为后续人物关系拓扑图构建、补充、修正提供有效数据。

本文主要研究了此次数据清洗的过程,研究对通讯录数据中存在的数据缺失、数据不合法、数据重复、数据冲突的清洗方法。

第二章 数据清洗原理及方法算法

2.1数据清洗原理

数据清洗是利用一些手段比如数据挖掘、数理统计、按照需求预定义清洗规则来将脏数据提纯为相对干净数据,以满足实际需求的过程[9]。

2.1.1数据清洗框架

图2.1 数据清洗框架

由上图1可知,一个完整的数据清洗流程通常具备准备(Preparation),检测(Detection),定位(Location),修正(Modification),验证(Validation)五个部分。我们在论文中称其为“PDLMV”框架。

使用一个良好的框架有助于搭建一个完整的数据清洗系统[10]。

准备阶段:通常进行基本的相关配置、需求分析、方法定义、任务定义、信息环境分析等步骤。目的是获取初始的数据清洗方案。

检测阶段:通常进行数据预处理、不完整记录检测、相似重复记录检测、统计检测结果等步骤[11]。目的是获取数据质量信息。

定位阶段:通常进行数据追踪、数据质量评估、数据质量问题定位、根本原因分析、业务影响分析等步骤,以定位数据质量。并且提出解决数据质量问题的方案,如若数据质量问题较大则需要重新回到检测阶段。

修正阶段:该阶段是基于定位阶段而进行的,通常进行不可用数据删除、重复数据合并、问题数据记录、数据世系管理。目的是对质量不足数据进行记录/删除/修改/管理。

验证阶段:该阶段是基于修正阶段而进行的,通常是将修正后的数据与需求中定义的数据做对比,验证数据是否符合相关定义。如若验证不通过,则需要重新回到修正阶段。

该数据清洗框架通常是可定制的,而且PDLMV中的每个阶段也是可以相互独立工作的(虽然修正阶段和验证阶段通常是基于前者进行的,但是修正阶段可以通过提供已有的数据质量问题,验证阶段可以通过提供已有数据清洗结果而进行)。正因为框架中每部分具备的独立性,因此该框架允许不同用户根据不同需求从不同阶段开始或结束,可以大幅度避免数据清洗过程中的重复工作,同时减少清洗成本。于是PDLMV定义了一套完整的数据清洗过程,且该框架具备交互性好、拓展性好等优点。

2.2数据清洗方法、算法

2.2.1属性错误自动检测方法

在实际应用中,需要对数据中的错误属性进行检测,而传统的人工检测方法随着数据量的逐渐增大而逐渐难以实现。人工检测的方法本来就需要耗费巨大的人力资源以及时间资源,并且人工检测在很大程度上具有失误性。因此在数据清洗过程中,提出自动检测方法来检测属性错误是一个比较好的决策。目前主要用的方法有聚类方法、统计方法、关联规则方法等[12]。

表2.1 属性错误自动检测方法对比

方法

优点

缺点

聚类方法

能发现在字段及检查未被发现的孤立点

实现成本高,计算复杂度高

统计方法

提升检测错误速度,方法比较直观

精确度不够高

关联规则

有高的支持度和置信度

实现成果依赖于规则选择,计算量较大,

2.2.2属性清洗方法

有三种常见类型数据被认为是可以基于属于清洗方法清洗的数据。最常见的有属性空缺数据清洗,属性不一致数据清洗,噪声数据清洗[13]。

  1. 属性空缺数据清洗:忽略元组方法:即忽略掉属性空缺属性,直接清洗掉属性空缺的数据;以人工填写值来填写缺失属性值:找到属性缺失的数据。对每一个属性缺失的值都根据客观事实/已积累经验进行人工填写;使用一个常值填充空缺值:针对某种属性缺失,根据已积累经验,使用一个固定的全局常量对所有该种属性缺失值来进行填充;使用属性的概率统计值来进行填充:使用该属性均值、最值、中间值等值来填充缺失数据。
  2. 属性不一致数据清洗:在不同的应用场景下,根据不同需求才能体现出数据的不一致性,通常需要人工来进行定义不一致规则,再通过计算机操作得出不一致数据清洗结果,因此使用人工结合计算机方法。
  3. 噪声数据清洗:分箱方法:结合属性的领域,周围属性值以来平滑噪声数据。将所有需要考量的属性值均匀随机的分配到相同的箱中,计算每个箱中的均值、中值等概率统计值,计算出的值即代表了每个箱的属性值。再结合每个箱的值来平滑噪声。

表2.2 属性清洗方法对比

方法

优点

缺点

忽略元组

简单直观

属性缺少值较多时需要清洗较多数据,效率低

人工填写空缺值

保证了数据正确和数据挖掘效率

工作量大,且数据集大,缺失值多时效率低

使用全局常值填充空缺值

简单直观

无法保证每个缺失值都为该全局值,可能会导致较大错误

使用属性的概率统计值来进行填充

兼顾每个属性的统计值

无法保证统计值就为正确值

计算机和人工检查结合

比单独使用计算机准确,比单独人工更快

工作量大

分箱

减少了每个属性不同值数量

2.2.3重复数据记录检测算法

根据不同的业务场景,定义了不同的数据重复约束条件。重复数据记录可以出现于两个或者多个数据集中,也可以出现于一个合并后的数据集合中[14]。针对某个数据记录,需要找到与其对应的实体属性,再根据这个属性,对不同数据集或合并后的数据集中的记录进行匹配检测数据记录是否重复。重复数据记录的检测通常用到基本字段匹配算法、递归字段匹配算法、编辑距离字段匹配算法、Smith-Waterman算法、Cosine相似度函数算法[15]。

表2.3 重复数据检测记录算法对比

算法

优点

缺点

基本字段匹配算法

算法直观

不能应用有关子字段排序的信息

递归字段匹配算法

算法直观不需要特殊数据结构,能处理子串顺序颠倒以及缩写等匹配情况

时间复杂度高而而且与具体应用领域关系密切匹配规则复杂,效率较低

Smith-Waterman算法

可以高效识别字符串的缺失,发现字符串是否匹配,因此当字段缺失率较大时相对其他算法具有较强的优势。

不能处理子串出顺序颠倒情况

基于编辑距离的字段匹配算法

可以不活拼写错误、短按此的插入和删除错误

对单词的位置交换、长单词的插入和删除、匹配效果差

Cosine相似度函数算法

可以解决经常性使用单词插入和删除导致字符串匹配问题

不能识别拼写错误

2.2.4重复数据记录清洗算法

对检测出的重复数据记录需要进行清洗,排序与合并是清洗重复数据记录的重要手段。重复数据记录清洗的常用算法有优先队列算法、近邻排序算法(Sorted-Neighborhood Method)、多趟近邻排序算法(Multi-Pass Sorted-Neighborhood Method)[15]。

表2.4 重复数据记录清洗算法对比

算法

优点

缺点

优先队列算法

减少记录比较次数,提高匹配效率,不受规模影响

算法复杂

近邻排序算法

采用滑动窗口,提高匹配效率已经比较速度

识别重复记录的精度很大程度上依赖于排序所选择的关键字,而且很难选取滑动窗口大小

多趟近邻排序算法

精确度高

不能正确检测出数据库中没有包含逐渐域的记录

2.3本章小结

本章介绍了数据清洗原理,提供了一个较为基础且完整的数据清洗框架。并在后续介绍了一些针对不同的数据质量问题而提出的数据清洗的方法、数据清洗的算法。为此次子系统的设计与实现提供一些理论基础。

第三章 系统设计

3.1系统整体架构设计

通讯录标签系统的数据清洗子系统设计与实现自然离不开数据清洗。除了数据清洗,需要对一些清洗过程中的统计值进行统计,需要对数据清洗结果进行存储,需要实现简单的查询界面对清洗结果进行测试。因此该系统架构需要数据清洗模块(核心组件)、合并模块、统计模块、存储展示模块。

图3.1 系统整体架构

清洗模块处于最底层,输入是原始数据,清洗模块输出的数据被存储起来,清洗模块的输出同时作为合并模块的输入,并对清洗模块中的各属性进行统计。合并模块的输入是清洗模块的输出,对合并模块进行操作,输出双向合并标签并存储展示,同时统计合并模块中的各统计值。

3.2字段定义

在本次课题中,经过业务需求以及与导师商定。原始行数据中存在的信息量庞大,该清洗系统的处理流程最主要的是对已有原始行数据进行提纯,筛选与通讯录相关数据,完成从数据到信息,再从信息到知识提炼的过程。

定义基本字段为备注者号码、被备注者号码、备注名。并提取更新日期(即备注日期)来更新重复数据。提取数据来源来对冲突数据进行清洗。

表3.1 字段定义

字段名

英文名

样例数据

备注者号码

remarker

13055215648

被备注者号码

target

13814550722

备注名

remark

卢经理

更新日期

updatetime

20150501112259

数据源

dsc_

A

3.3数据格式

3.3.1输入格式

原始数据来源于企业内部,原始数据具有如下两种格式

1)普通字符串

2)json

3.3.2输出格式

分析可能在实际的清洗过程中,json格式明显优于普通的字符串,json格式在字段节点上结构可能更加清晰明了,使用更为方便,确定统一转为json格式进行处理并且输出。

定义清洗模块的输出格式:

  1. 备注集合:

备注者号码与备注集合存在于json格式同一层,在备注集合中有一条或者多条被备注记录,被备注号码、备注名、更新日期处于同一层。

{"备注者号码":"13012341234","备注集合":[{"被备注号码":"13055554444","备注名":"张三","更新日期":"20151020124245"},{"被备注号码":"13099998888","备注名":"李四","更新日期":"20151115155212"}]}

剩余内容已隐藏,请支付后下载全文,论文总字数:21641字

您需要先支付 80元 才能查看全部内容!立即支付

该课题毕业论文、开题报告、外文翻译、程序设计、图纸设计等资料可联系客服协助查找;