OpenRefine数据处理工具

承蒙访学海外的云影提供ALCTS虚拟会议“元数据自动化”(We Can Do It, You Can Too! Metadata Automation for Everyone)的会议报告,其中介绍了很多元数据处理工具,比如Excel扩展KutoolsTextWrangler大数据集文本处理(支持正则表达式替换)、Tableau Public可视化等,以及最为常用的OpenRefine、MARCEdit
几个报告中提到的OpenRefine应用涉及数据审核与分析、数据清洗与调和,包括分面、过滤、分簇与编辑、正则表达式转换、外部数据源调和(增强),甚至还能用于转换元数据方案(从DC到MODS、MARCXML),相当强大

OpenRefine就是原来的Google Refine。密歇根大学Bentley历史图书馆ArchivesSpace项目,曾使用Google Refine,通过VIAF API查询LC规范记录,增强档案记录中的名称和主题。参见:利用关联数据、验证名称和主题(LC和VIAF)(2015-8-30)

OpenRefine是安装后本机运行的软件,可以处理的数据文件大小取决于电脑内存(4G内存上网本,无法加载85MB的Excel文件)。
基础应用有Excel知识就行,表达式可选3种语言:GREL(General Refine Expression Language)、Jython(Python的纯Java实现)、clojure(Java平台的Lisp方言)。高级应用需要了解JSON

OpenRefine网站:http://openrefine.org
最新软件为2013-8-27的2.6版(存储于amazon S3,如无梯、能否下载成功看运气)。入门wiki在github(包括GREL语法)。
软件解压后执行,需要Java环境,如电脑没有安装过JRE,会自动打开浏览器到Java官网下载页面,下载安装即可。有意思的是安装过程中提示Google Chrome可能无法使用 Java 插件,实际完全没有问题。

OpenRefine中文资料不易找到。基本功能可参考Google Refine 2.0的3个视频,已有热心人士从Youtube转到优库。

0、运行程序,自动启动浏览器,网址:http://127.0.0.1:3333/
导入数据4个途径 :1 本机,2 网址(URL),3 剪贴板,4 Google数据
支持多种格式数据导入,包括CSV, Excel (.xls 和 .xlsx), JSON, XML, RDF等;导出数据格式有CSV, Excel, HTML, ODF电子表格以及自定义模板。

一、清洗数据(参见视频:Google Refine 2.0 -1. Explore Data (1/3)
1、找到问题数据
(1)分面(facet),分组结果显示在屏幕左栏
文本分面:不同取值及出现数量,可按字顺/数量排序,易于发现不一致取值。可直接批修改/替换。
数值/时间分面:不同取值分布图,可调节取值区间、找到可能有问题的数值。还可对数值进行操作(比如取对数)改变显示的分布图,以更清楚了解数值是否在合理区间。
(2)文本过滤(filter),查找特定值,可以用正则表达式。后续修改/替换等处理可仅针对过滤后部分。
(3)排序(sort),可设定有效值、空值、错误值的排序位置,易于找到问题数值。
2、批处理(edit cells)
除了上述1找到问题数据后直接处理,还有更强大的批处理功能:
(1)通用转换(common transforms):去空格,改大小写,改取值类型(文本、数值、日期)等
(2)编辑/修改/替换:修改单元格值时,可选择适用所有相同单元格(apply to all identical cells)
(3)自动归类相似取值(Cluster):可一键合并为相同值。这是快速完成数据一致性处理的强大工具。
(4)定制文本转换(transform):使用各种表达式(公式/函数),结果即时预览,确认正确后再执行。
可惜“帮助”缺少样例,对新手不够友好。
(5)电子表格通常有的功能当然也是有的:分列/合并、填充等。
向下填充是智能的,无需指定范围、自动复制其值到后续空格。
3、最后也是最重要的,所有操作历史自动保留
(1)可随时通过回退Undo/Redo找回某个处理前的状态——只要选择到某步骤,单击即完成回退操作。
(2)处理步骤可复制(比如用于对另一批数据做相同处理),可抽取(Extract)复制操作代码,粘贴到Apply窗口运行(当然也可在运行前修改代码)。

二、转换格式(参见视频:Google Refine 2.0 -2.Clean and Transform Data (2/3)
把其他格式数据(清单、键/值等),通过分组处理、行列变换等转换为需要的电子表格形式。
视频为维基百科格式的清单改为表格的详细实例。导出模板默认为JSON格式,可修改模板为其他格式。

三、增强数据(参见视频: Google Refine 2.0 -3. Reconcile and Match Data
通过API获取外部数据,增强电子表格中的内容。视频中有3个例子:
1、由具体地址获取经纬度(wiki.openstreetmap.org/wiki/Nominatim)
先新增栏(edit column -> add column by fetching URLs),通过调用URI取得返回值(JSON格式),再由返回值栏分析结构取出经纬度部分(parseJson())
2、分析语种(google语种检测API):方法同上。
3、为电影清单增加信息:评价网站链接,导演、主演等其他信息。
菜单中选择Reconcile。默认从Freebase获取数据。可惜Freebase2016-8-30将关闭,软件的这部分需要更新了。