一、前言
要应用BigGorilla框架对应数据进行数据的处理与匹配,那么首先要下载Anaconda安装,下载地址:https://www.continuum.io/downloads
Anaconda是用于辅助程序包和环境管理的框架。您可以访问以下链接
通过安装最新版的anaconda。可以根据更常使用的python版本下载“Python 3.5”或“Python 2.7”版本。请注意,无论您选择哪个版本,您都仍然可以运行python 2.7和python 3.5。
具体参见:http://www.cnblogs.com/shaosks/p/7121414.html
二、BigGorilla组件介绍
1、数据获取和数据抽取
假设我们已经从相关的数据库管理系统中获取一个表格X(id、name、loc),并且已经从一组新闻文章中抽取一个表格Y(id、cname、address、rev)。表格X包含有关公司名称和地址的信息,而表格Y包括每家公司的地址及其季度收入(单位:十亿美元)。
2、数据清理
我们检测到GE的收入351(表格Y的最后一行)是一个异常值。在仔细检查之后,我们意识到由于抽取错误,这个数值应该是35.1,而不是351。因此,我们将这个数值手动更改为35.1。
*请注意,一般有很多其他类型的清理操作。
3、模式匹配
接下来,我们会匹配表格X和Y的模式。我们获取匹配name⬌cname 和loc⬌address。直观地说,这意味着表格X的属性name与表格Y的cname相同,并且表格X的属性loc与表格Y的address相同。
4、模式合并
基于表格X和Y之间的匹配name⬌cname和loc⬌address,数据科学家可选择将两个模式X(id、name、loc)和Y(id、cname、address、rev)合并为一个模式Z(name、loc、rev)。请注意,合并过程中将忽略id属性,这是数据科学家有意而为的决策
5、数据匹配
接下来,我们会匹配表格X和Y的元组。这个匹配过程完成以下关联:x1 ≃ y2和x2 ≃ y1。直观地说,第一个匹配x1 ≃ y2表示元组x1和元组y2指的是相同的实际实体(此时,它们是相同的公司Apple Inc.)。
类似地,元组x2和y1指的是相同的公司IBM Corp。这些匹配存储在表格M中
6、数据合并
现在我们决定合并指示相同实体的元组。例如,若要根据匹配name⬌cname和loc⬌address将x2 =(IBM,NY)和y1=(IBM Corp.、CA、25)合并到符合模式Z(name、loc、rev)的一个元组中,
我们必须决定如何处理冲突值name属性的“IBM”与“IBM Corp.”以及如何处理loc属性的冲突值“NY”与“CA”。
对于name,我们可以选择编写一个启发式规则以选择较长的字符串(即这种情况下的“IBM Corp.”),因为较长的字符串更正式,能够提供更多信息。对于loc,我们可以选择编写一个规则,其将始终从第一个表格(即此时的“NY”)中选择,
因为表格X是高质量组织的关系数据库。当然,还有其他方式可以合并数据。数据科学家通常根据他们在域和源方面的知识,编写启发式规则。
7、模式映射
用于将表格X和Y中的数据转换到表格Z中的程序叫做模式映射。在此,根据对于X和Y中的元组应该如何合并到Z中的理解,开发模式映射。该程序可以是一个SQL查询,将根据表格X和Y中的元组填充表格Z。它使用表格M确定匹配,
并使用功能merge_name(.)应用选择之前所述较长字符串的启发式规则。
注意:
上述示例经过简化,以说明数据整合的关键步骤。实际上,可能会以不同的顺序执行这些步骤,甚至可能重复其中某些步骤。例如,一旦获取表格Z,数据可能再次进行清理,并与某些其他数据集匹配和合并。
此外,数据科学家可以选择通过在SQL查询中执行外联结来保留最后一个元组,而不是抛弃有关表格Y中最后一个元组的信息。
通常而言,很多步骤并没有示例所示的那么琐碎,例如模式匹配/合并和数据匹配/合并。因此,模式映射以及实现所需模式映射的过程并没有上述那么琐碎。为使数据科学家轻松整理数据,使用半自动化工具在每个步骤中为数据科学家提供帮助是非常重要的。
上面的示例涵盖了数据科学渠道的“数据整理”方面。在不同源的数据整合到一个数据库中之后,数据科学家可以通过分类、集群、异常检测、关联探索和OLAP等技术,对数据进行分析。