metodología de limpieza de datos con la herramienta de

51
Metodología de limpieza de datos con la herramienta de OpenRefine

Upload: others

Post on 25-Jun-2022

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Metodología de limpieza de datos con la herramienta de

Metodología de limpieza dedatos con la herramienta de

OpenRefine

Page 2: Metodología de limpieza de datos con la herramienta de

MONITOREO TECNOLÓGICO. PLATAFORMA DE ANALÍTICA PREDICTIVA PARA EVA-LUACIÓN Y SEGUIMIENTO DE ACCIONES DE ADMINISTRACIÓN PÚBLICA Y EMPRE-SARIAL, ETAPA 2. PEI 231758

Proyecto apoyado por el Programa de Estímulos a la Investigación, de Desarrollo o deInvocación Tecnológica del CONACYT

Octubre 2016

Page 3: Metodología de limpieza de datos con la herramienta de

Comite EditorialIng. Daniel Eugenio Muñoz Caballero

Lic. Dora Elia Martínez RojasM.C. Rodrigo Márquez Castillo

Dr. Eduardo Ramírez RangelElisa García Vargas

Fernando Ángel Juárez CueyactleDr. Daniel Villanueva Vásquez

Dr. Anselmo Osorio Mirón

Page 4: Metodología de limpieza de datos con la herramienta de
Page 5: Metodología de limpieza de datos con la herramienta de

Índice general

1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2 Marco Teórico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.1 Antecedentes de OpenRefine 11

2.2 OpenRefine 12

2.3 Herramientas de OpenRefine 142.3.1 Fingerprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.3.2 N-Gram Fingerprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.3.3 Phonetic Fingerprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.3.4 Nearest Neighbor Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.3.5 PPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.4 Refinamiento de datos con OpenRefine. 16

3 Metodología . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.1 Instalación de OpenRefine 19

3.2 Importación de datos con OpenRefine 24

3.3 Operaciones básicas 253.3.1 Conversión de mayúsculas/ minúsculas . . . . . . . . . . . . . . . . . . . . . . . 253.3.2 Eliminación espacios en blanco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.3.3 Facet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.3.4 Separación automática de columnas . . . . . . . . . . . . . . . . . . . . . . . . 293.3.5 Cambio de nombre a una columna . . . . . . . . . . . . . . . . . . . . . . . . . 303.3.6 Eliminación de una columna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

Page 6: Metodología de limpieza de datos con la herramienta de

6

3.3.7 Organización de columnas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.3.8 Eliminación de espacios consecutivos . . . . . . . . . . . . . . . . . . . . . . . . 323.3.9 Filtrado de valores en blanco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.4 Métodos de OpenRefine 363.4.1 Clustering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.4.2 Método Key Collision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.4.3 Método Key-Collision-Fingerprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.4.4 Método Key-Collision-Ngram-Fingerprint=2 . . . . . . . . . . . . . . . . . . . . . 393.4.5 Método Nearest Neighbor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.4.6 Método Nearest-Neighbor con distancia PPM, R=1, Block Chars=6 403.4.7 Método Nearest-Neighbor con distancia Levenhstein, R=1, Block Chars=6

413.4.8 Método Nearest-Neighbor con distancia PPM, R=2, Block Chars=6 423.4.9 Método Nearest-Neighbor con distancia Levenhstein, R=2 y Block

Chars=5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.4.10 OpenRefine Expression Language (GREL, expresiones regulares) . . 44

4 Conclusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

Page 7: Metodología de limpieza de datos con la herramienta de

1. Introducción

En los últimos años la disponibilidad de datos abiertos ha sido de gran

ayuda para analistas e investigadores en diversas áreas y ámbitos. Sin em-

bargo, a pesar de la disponibilidad de la información, a menudo esta no es

fácilmente utilizable, debido a errores e inconsistencias (hablando en térmi-

nos técnicos) que posee, o la diversidad de formatos en los cuales se puede

encontrar. Es otras palabras, es muy común que los datos encontrados en

internet estén sucios o se encuentren en formatos incompatibles. Por lo tanto,

antes de que la información sea utilizable, es necesario que sea sometida a

un proceso de limpieza. Es posible encontrar diversas herramientas en línea

gratuitas o de paga que sirvan al propósito de limpieza de datos, sin embargo,

la gran mayoría son poco prácticas, [6].

OpenRefine (anteriormente, Google Refine), es una herramienta de có-

digo abierto que puede ayudar a convertir datos sucios en datos limpios y

utilizables de manera sencilla. OpenRefine se ejecuta como un servidor web

en el ordenador del usuario, de tal manera que no se consumen muchos

recursos del mismo. Este utiliza un navegador web como su interfaz, para

que los datos se guarden en el ordenador local, [5]. Una gran ventaja que

Page 8: Metodología de limpieza de datos con la herramienta de

8 Capítulo 1. Introducción

posee es que es capaz de manejar volúmenes grandes de información.

OpenRefine es utilizado por científicos, investigadores de datos, analistas

de negocios, periodistas de datos y administradores de repositorios digi-

tales en una variedad de disciplinas, los cuales necesitan datos utilizables

y limpios. A pesar de no ser una herramienta complicada, si el usuario

desea obtener el mayor provecho de OpenRefine, tendrá que aprender las

principales características y herramientas con las cuales dispone.

La colección de datos, normalmente denominada Base de Datos, es aqué-

lla que contiene información relevante de una entidad. El objetivo principal

es proporcionar una forma de almacenar y recuperar la información de una

base de datos de manera que sea tanto practica como eficiente. Los sistemas

de bases de datos se diseñan para gestionar y manipular grandes cantidades

de información. Por otro lado, un aislamiento de datos hace referencia a

la dispersión de los datos en distintos archivos o repositorios, pudiéndose

encontrar en diferentes formatos. Lo ideal es integrar la información en uno

solo repositorio donde se encuentre la mayor cantidad de conjuntos para que

puedan ser manipulados fácilmente.

El objetivo principal de la investigación es que el usuario conozca y

utilice una metodología de depuración, limpieza y ordenamiento de datos,

con la finalidad de generar datos listos para ser procesados y analizados. La

metodología aquí mostrada consta de algunos procedimientos y pasos muy

específicos basados principalmente en OpenRefine. Se espera que con esto

el usuario pueda conseguir una base de datos más limpia,

Page 9: Metodología de limpieza de datos con la herramienta de

9

El usuario aprenderá las herramientas principales que Refine ofrece para

realizar tareas de limpieza y depuración de datos. Se mostrarán una serie

de ejercicios y ejemplos a lo largo del documento para ayudar al usuario a

alcanzar este objetivo.

Page 10: Metodología de limpieza de datos con la herramienta de
Page 11: Metodología de limpieza de datos con la herramienta de

2. Marco Teórico

2.1 Antecedentes de OpenRefine

OpenRefine nació a través de base libre (Freebase) GridWorks desarrolla-

do por Metaweb en mayo de 2010. Desde su primera versión como Freebase

GridWorks era un proyecto de código abierto. El creador de OpenRefine

(antes Google Refine) David Huynh fue quien inicio con esta herramienta

diseñada para soportar el Freebase para la limpieza de datos, [7]. Este víncu-

lo histórico con Freebase está todavía presente en OpenRefine, ya que la

solución es compatible con la reconciliación de la base de datos.

En julio de 2010 Google adquirió Metaweb y por extensión, Freebase

y GridWorks y a consecuencia de esto se realizó el cambio de nombre a

OpenRefine. El código y la documentación fue trasladado a code.google.

com. El recién rebautizado OpenRefine continuó siendo un proyecto de

código abierto para la limpieza de datos. Durante el periodo 2010-2012, con

el apoyo de los ingenieros de Google y la comunidad, dieron una nueva

actualización de OpenRefine con las versiones 2.0, 2.1 y 2.5. Se sabe que la

versión 2.6 podría estar en su camino, [8].

Page 12: Metodología de limpieza de datos con la herramienta de

12 Capítulo 2. Marco Teórico

Durante los últimos años se ha visto el enorme interés en OpenRefine de

varias comunidades. Los bibliotecarios, periodistas y analistas de datos han

estado utilizando OpenRefine para limpiar y conciliar sus datos. La interfaz

es fácil de usar y ayuda a miles de usuarios que no son técnicos a la hora de

tomar el control de sus datos.

2.2 OpenRefine

OpenRefine (anteriormente, Google Refine), Figura 2.1, es una herramien-

ta de código abierto libre para convertir datos desordenados en datos limpios

y utilizables. Es una aplicación de escritorio de código abierto independiente

para la limpieza y transformación de datos a otros formatos. OpenRefine

tiene una interfaz similar a las hojas de cálculo, sin embargo, se comporta

más como una base de datos.

Figura 2.1: OpenRefine.

Refine opera en filas de datos que contienen celdas y columnas, lo cual

es muy similar a las tablas de bases de datos. Uno de los proyectos de

OpenRefine es una tabla donde el usuario puede filtrar las filas para mostrar

el uso de las facetas que definen los criterios de filtrado (por ejemplo, mostrar

filas en una columna dada no está vacío). A diferencia de las hojas de cálculo,

Page 13: Metodología de limpieza de datos con la herramienta de

2.2 OpenRefine 13

la mayoría de las operaciones en OpenRefine se realizan en todas las filas

visibles: la transformación de todas las celdas en todas las filas en una misma

columna, la creación de una nueva columna en función de los datos de las

columnas existentes, etcétera. Todas las acciones que se realizaron en un

conjunto de datos son almacenados en un proyecto y se pueden reproducir

en otro conjunto de datos, [5].

La limpieza de datos es el proceso que trata de corregir los errores de una

manera semi-automática, corregir espacios en blanco, información duplicada,

faltas de ortografía, typos, etcétera, haciendo uso de filtros y agrupando los

datos para transformarlos en nuevos datos, los cuales estén organizados.

Cuando se trabaja con datos de terceros, en ocasiones, la información contie-

ne errores como los mencionados. Para poder hacer análisis de calidad de la

información, se necesita que los datos estén libres de estos errores. En mu-

chas ocasiones, limpiar una base de datos implica invertir horas. OpenRefine

ayuda a que el proceso sea mucho más eficiente

Una de las funciones principales de OpenRefine es eliminar registros

duplicados, también separa los distintos valores contenidos en el mismo

campo. Además, puede analizar la distribución de los valores a lo largo de

un conjunto de datos y agrupar las diferentes representaciones de la misma.

Esta herramienta ve el panorama general de los datos en bruto, descubre

las inconsistencias para corregirlo y también permite crear y seleccionar un

subconjunto de filas. Aunque ahora la empresa de Google no está apoyando

su desarrollo, el proyecto y su documentación y promoción se está trabajando

Page 14: Metodología de limpieza de datos con la herramienta de

14 Capítulo 2. Marco Teórico

por voluntarios.

2.3 Herramientas de OpenRefine

OpenRefine trabaja con una herramienta de limpieza llamada clustering,

este método sólo funciona entre similitudes que contengan un raw data (datos

en bruto). Los algoritmos de agrupamiento utilizados han sido divididos en

dos clases: 1) Key Collision y 2) Nearest Neighbor Method. Esta clase de

métodos de clustering trabaja básicamente considerando dos componentes:

keys y buckets.

2.3.1 Fingerprint

Es el método más sencillo y más rápido, en donde se manipulan los

registros, tales como la eliminación de puntuación y espacios en blanco y se

estandariza la entrada de los elementos. También, se declaran todas las letras

acentuadas con los equivalentes no acentuados, los contadores duplicados se

eliminan y los contadores se escriben con minúscula, ordenados y unidos

juntos de nuevo [1].

2.3.2 N-Gram Fingerprint

Este método N-Gram fingerprint es actualmente una extensión del método

Fingerprint. A diferencia del Fingerprint, N-Gram también puede señalar

conjuntos de caracteres de un elemento. Realiza las mismas operaciones

descritas en el algoritmo de una Fingerprint, pero una diferencia esencial es

Page 15: Metodología de limpieza de datos con la herramienta de

2.3 Herramientas de OpenRefine 15

que se divide la cadena en sub cadenas de caracteres similares. Este método

puede ser utilizado para emparejar dos conjuntos que presentan pequeñas

diferencias, por ejemplo, errores de sintaxis, [1].

2.3.3 Phonetic Fingerprint

Este método difiere de los demás anteriores por la forma en que considera

los elementos, pues agrupa aquellos elementos en base a su similitud fonética,

por lo que debe tener en cuenta la igualdad de dos frases que tienen el mismo

"sonidoçuando se pronuncian. Esto método puede detectar errores de falta de

ortografía que no pueden ser reconocidos a partir de la Fingerprint y N-Gram

Fingerprint, [2].

2.3.4 Nearest Neighbor Method

Este método contiene un algoritmo muy eficiente y rápido. Nearest Neigh-

bor se asocia comúnmente al K-NN que en realidad hace una clasificación.

El concepto de neighborhood ha sido utilizado para realizar una agrupación

llamada nearest que contiene un algoritmo de cadena neighbor. Su acción

consiste en considerar una cadena que representa el elemento entre dos

grupos. Se parte de las agrupaciones donde cada conjunto es el número de

elementos y comienza a unir la cadena de neighborhood. Las operaciones de

agrupamiento terminar cuando dos clusters son iguales, [1].

Page 16: Metodología de limpieza de datos con la herramienta de

16 Capítulo 2. Marco Teórico

2.3.5 PPM

PPM funciona para dar una complejidad y estimar las similitudes entre las

cadenas. Este método se desarrolló a partir de modelo de Markov. También,

se relaciona con la longitud y la distancia del elemento, ya que forma una

secuencia de datos y busca los errores en algunos casos. Encuentra una gran

cantidad de numero de falsos positivos, que son caracteres iguales, pero

realmente están correctos, [2].

2.4 Refinamiento de datos con OpenRefine.

El refinamiento de datos consiste en organizar, limpiar y eliminar algunas

inconsistencias que pudiera tener una base de datos. En ocasiones, cuando

se extraen datos de un sitio web estos contienen errores, los cuales deben ser

corregidos para utilizar los datos. La herramienta de OpenRefine consta de

tres pasos generales: 1) obtención de los datos, 2) refinamiento de los datos

y 3) análisis de la información con la herramienta de Open Office.

A continuación, se muestra una base de datos, Figura 2.2, que contiene

información extraída de diversas fuentes de internet. Utilizando esta base de

datos como ejemplo, se le realizará un refinamiento para eliminar las incon-

sistencias que contenga. Para ello se utilizarán las herramientas principales

de OpenRefine.

Page 17: Metodología de limpieza de datos con la herramienta de

2.4 Refinamiento de datos con OpenRefine. 17

Figura 2.2: Base de datos.

Page 18: Metodología de limpieza de datos con la herramienta de
Page 19: Metodología de limpieza de datos con la herramienta de

3. Metodología

3.1 Instalación de OpenRefine

El primer paso a seguir es instalar OpenRefine, es decir descargarlo en

http://openrefine.org/download.html y seguir las instrucciones de

instalación. Funciona en todas las plataformas: Windows, Mac y Linux [Ma,

Hong]. OpenRefine se abrirá en su navegador, pero es importante tomar

en cuenta que la aplicación se ejecuta localmente y que sus datos no serán

almacenados en línea. Es necesario considerar que para poder acceder a

OpenRefine es necesario tener el software libre de Java, si no se cuenta con

este software no se podrá hacer uso del programa. Se observa en la Figura

3.1 la herramienta libre de Java.

OpenRefine se ejecuta localmente en el ordenador en que se instala,

(http://127.0.0.1:3333/) pero este no cuenta con un interfaz de usuario

propio, sino que utiliza la del navegador en el cual se ejecuta. Es importante

señalar que los datos que se utilizan en OpenRefine en ningún momento son

subidos a la red, ni pueden ser vistos por terceros, [3].

La Figura 3.2 muestra que Refine contiene varias versiones, en este caso

Page 20: Metodología de limpieza de datos con la herramienta de

20 Capítulo 3. Metodología

Figura 3.1: Herramienta Java.

es necesario seleccionar la versión 2.5. Una vez comenzado el proceso de

instalación solo es necesario seguir las instrucciones.

La Figura 3.3 muestra la ventana que ofrece Refine antes de iniciar, este

cuenta con un seguimiento de cómo se debe utilizar la herramienta. Para

poder observar cómo se utiliza, se agregó una numeración para que el usuario

pueda seguir los pasos. A continuación, se muestra los pasos:

1. Para crear un nuevo proyecto es necesario seleccionar Create Project,

el usuario deberá buscar el archivo en su ordenador local y hacer una

búsqueda del archivo al que requiera hacer el refinamiento. Una vez

cargado el archivo se da clic en, Next.

2. Cuando se haya realizado el primer proyecto y se necesite continuarlo,

solo selecciona Open Project. Esta pestaña es donde se encuentran

guardados los proyectos.

Page 21: Metodología de limpieza de datos con la herramienta de

3.1 Instalación de OpenRefine 21

Figura 3.2: Versión de OpenRefine.

3. Se observa que esta herramienta cuenta con una variedad de extensiones

que pueden ser importadas y estas también pueden ser manipuladas.

Se realizará la limpieza de datos con las herramientas básicas de Refine.

La configuración del OpenRefine no es tan compleja, dado que el mismo

programa nota que tipo de extensión fue cargado, también se puede realizar

algunos cambios como el nombre del proyecto, la primera línea que analiza

una columna, etcétera. Una vez configurado, se da clic en Create Projetc.

Este botón se encuentra en la parte superior derecha, tal como se observa en

Page 22: Metodología de limpieza de datos con la herramienta de

22 Capítulo 3. Metodología

Figura 3.3: Panel de OpenRefine.

la Figura 3.4.

En la Figura 3.5 se muestra la ventana de OpenRefine, en ella se indica

que se tienen 203 records o filas que contienen información para comenzar

un procedimiento de refinamiento. Una de las mejores características que

tiene Refine es la opción Undo/Redo que muestra todos los cambios que se

realizan en la base de datos. Esta pestaña ayuda a regresar a los cambios

anteriores.

Por otra parte, también cuenta con la herramienta de Open. Aquí también

se encuentran los proyectos que se han realizado. La pestaña de Export se

utiliza cuando ya se haya realizado la limpieza y organización de una base

de datos y Help. Todas estas herramientas se encuentras en la parte superior

Page 23: Metodología de limpieza de datos con la herramienta de

3.1 Instalación de OpenRefine 23

Figura 3.4: Sección de configuración .

derecha, que sirven de ayuda al usuario.

Figura 3.5: Base de datos.

Page 24: Metodología de limpieza de datos con la herramienta de

24 Capítulo 3. Metodología

3.2 Importación de datos con OpenRefine

Para comenzar a utilizar OpenRefine, es necesario importar los datos. Es

decir, subir el archivo de datos. Los formatos soportados actualmente (en la

versión 2.5) incluyen,

TSV, CSV, o valores separados por un separador personalizado que

especifique.

Excel (XLS, XLSX)

XML, RDF como XML

JSON

Google Spreadsheets

RDF N3 triplica

Si se tienen datos en un formato de texto, se tiene que importar sin

líneas de división en columnas. Una vez que han sido importados, se hace la

división de columna personalizada, [6].

Cuando un archivo se importa con extensión .zip, .tar.gz, .tgz, tar.bz, .gz o

.bz2, OpenRefine detecta la extensión de archivo más común en ella y carga

todos los archivos con esa extensión en un solo proyecto. También puede

señalar OpenRefine a una URL de un archivo de datos o una hoja de cálculo

de Google. Una vez importados, los datos se almacenan en formato propio

de OpenRefine y el archivo de datos original se deja en reposo, [10].

Page 25: Metodología de limpieza de datos con la herramienta de

3.3 Operaciones básicas 25

3.3 Operaciones básicas

3.3.1 Conversión de mayúsculas/ minúsculas

En algunas ocasiones es necesario cambiar algunas celdas de minúsculas

a mayúsculas o viceversa, para esto se da clic en Edit Cells >Common

Transforms >To title case, To upper case, o To lowercase, tal como se

observa en la Figura 3.6.

Figura 3.6: Conversión de mayúsculas/ minúsculas .

3.3.2 Eliminación espacios en blanco

En algunos casos las celdas contienen espacios en blanco. Para ello se

da clic en Edit Cells >Commons transforms >Trim leading and trailing

Page 26: Metodología de limpieza de datos con la herramienta de

26 Capítulo 3. Metodología

whitespace, en la Figura 3.7 se indica el procedimiento.

Figura 3.7: Eliminación de los espacios en blanco.

3.3.3 Facet

OpenRefine permite analizar y filtrar los datos mediante el uso de la

herramienta de Facet. Es un filtro que muestran algunas inconsistencias, es

decir, indica aquellas palabras que se repiten o que estan mal escritas. Se da

clic en Facet >Text. Esta es una herramienta que se utiliza manualmente en

OpenRefine, es por ello que solo encuentra muy pocas inconsistencias. La

secuencia se observa en la Figura 3.8.

Ahora en la columna izquierda de OpenRefine muestran unas facetas o

filtros con todos los valores distintos de la columna, así como el número

de repeticiones de cada valor. También, es posible ordenar los valores por

Page 27: Metodología de limpieza de datos con la herramienta de

3.3 Operaciones básicas 27

Figura 3.8: Herramienta Facet.

número de repeticiones, en vez de por orden alfabético, se selecciona la

opción count. Por otra parte, se pueden editar y hacer registro de cada valor

como indica la Figura 3.9.

Para corregir errores e inconsistencias generados cuando se capturan

distintos datos, existen dos formas. La primera es seleccionando Edit con el

botón derecho. La segunda es seleccionando Edit y solo pasar el cursor por

encima del valor de la faceta del lado izquierdo. El procedimiento se observa

en la Figura 3.10.

Con cualquiera de los dos métodos se puede corregir el error. Para guardar

el cambio, se selecciona el botón Apply. También es posible buscar y corregir

aquellas palabras repetidas o que contengan algún error y son diferentes de

los demás. Sin embargo, si la palabra se repitiera más de una vez, Refine

Page 28: Metodología de limpieza de datos con la herramienta de

28 Capítulo 3. Metodología

Figura 3.9: Valores distinto de cada columna.

Figura 3.10: Valores distinto de cada columna.

dará la opción de aplicar el cambio en todos los casos con la pestaña de

Apply to all identical Cells. Se observa en la Figura 3.11 el procedimiento.

Page 29: Metodología de limpieza de datos con la herramienta de

3.3 Operaciones básicas 29

Figura 3.11: Valores distinto de cada columna.

3.3.4 Separación automática de columnas

Una de las funciones que ofrece OpenRefine es dividir o separar alguna

columna, esto se realiza cuando el usuario necesita dar un orden a sus datos

o simplemente extraer cierta información.

En este caso, se realizará una nueva columna en la base de datos propuesta.

Con los datos de la primera columna, en la parte de Entidad o Institución se

requiere observar las siglas de la dependencia, para ello es necesario agregar

una nueva columna. Se selecciona Edit column >Split into several columns,

Figura 3.12. Se puede observar en la parte derecha de la imagen, Figura 3.14,

que se creó otra columna, que solo proporciona las siglas de la Entidad o

Institución.

Posteriormente, aparecerá una nueva ventana, Figura 3.13, la cual requiere

de algunos datos para realizar el procedimiento de dividir las columnas, para

este ejemplo se quiere partir la columna de entidad. Esto se realiza utilizando

un punto, OpenRefine por defecto utiliza una coma para separar el nombre

de la entidad. En esta parte se agregarán las siglas a la nueva columna. Esta

Page 30: Metodología de limpieza de datos con la herramienta de

30 Capítulo 3. Metodología

Figura 3.12: Manejo de Columnas.

columna se podría eliminar posteriormente si el usuario lo requiere. Por

último, es necesario guardar los cambios dando clic en Ok.

3.3.5 Cambio de nombre a una columna

OpenRefine permite cambiar el nombre a las columnas, la Figura 3.14

muestra el procedimiento que se sigue para realizar el cambio de nombre a

la columna.

Siguiendo con el ejemplo, se requiere que la primera columna contenga

el nombre de Entidad y la siguiente sea Siglas. Es necesario seleccionar en

Page 31: Metodología de limpieza de datos con la herramienta de

3.3 Operaciones básicas 31

Figura 3.13: Ingreso del separador ("..o",".)

el menú Edit Column >Rename this column. Una vez realizado lo anterior,

aparecerá una nueva ventana, en esta se escribirá el nombre de la nueva

columna, como se muestra en la Figura 3.14.

3.3.6 Eliminación de una columna

Para eliminar una columna, se selecciona las siguientes opciones Edit

column >Remove this column como se observa en la Figura 3.15.

3.3.7 Organización de columnas

El método anterior es una forma básica de eliminar las columnas, pero

es un poco tedioso ir de columna en columna. Para realizarlo de forma más

rápida y visualizar todas la columnas, se selecciona en All y se da clic en

Edit columns >Re-Order/Remove, Figura 3.16.

Para organizar las columnas, es necesario seleccionar la pestaña de cada

Page 32: Metodología de limpieza de datos con la herramienta de

32 Capítulo 3. Metodología

Figura 3.14: Renombrar columna.

columna y arrastrarla tal como se indica en la Figura 3.17, de tal manera que

aquí se visualizan todas las columnas y el usuario puede re ordenarlas más

fácilmente, [11].

3.3.8 Eliminación de espacios consecutivos

En la Figura 3.18 se observa la eliminación de espacios consecutivos. Este

tipo de errores es muy común. Se selecciona en cualquiera de las columnas,

Edit cells >Commun transforms >Collapse consecutive whitespace , [13].

Page 33: Metodología de limpieza de datos con la herramienta de

3.3 Operaciones básicas 33

Figura 3.15: Eliminación de una columna.

3.3.9 Filtrado de valores en blanco

El filtrado de valores se utiliza para observar si las celdas contienen

registros en blanco. Este procedimiento se realiza tomando una columna,

posteriormente se selecciona Facet >Customized facets >Facet by blank, tal

como se observa en la Figura 3.19. Después aparecerá una nueva ventana, la

cual mostrará aquellas celdas que estén en blanco, así como el número de

registros en blanco, esta aparecerá en la parte inferior izquierda, [12].

Page 34: Metodología de limpieza de datos con la herramienta de

34 Capítulo 3. Metodología

Figura 3.16: Re-ordenar la columna.

Figura 3.17: Eliminar una columna y agruparlo.

Page 35: Metodología de limpieza de datos con la herramienta de

3.3 Operaciones básicas 35

Figura 3.18: Eliminación de espacios consecutivos.

Figura 3.19: Valores en blanco.

Page 36: Metodología de limpieza de datos con la herramienta de

36 Capítulo 3. Metodología

3.4 Métodos de OpenRefine

3.4.1 Clustering

OpenRefine cuenta con la herramienta de Clustering que se refiere a la

operación de .agrupación de diferentes valores que podrían ser representacio-

nes alternativas de una misma cosa". Es decir, la operación de clustering se

basa, principalmente, en la definición de la distancia entre dos objetos, [2].

El clustering detecta similitudes entre registros iguales, permite reempla-

zar algunos datos similares por un valor concreto. Una de las ventajas de

OpenRefine es hallar errores e inconsistencias de forma automática, es decir,

que detecta aquellos conjuntos que contiene valores similares entre sí con el

proceso de refinamiento de clustering, [4].

Es necesario señalar que clustering en OpenRefine sólo funciona a nivel

sintáctico (la composición de carácter del valor de la celda). Esta es la razón

por la cual OpenRefine utiliza los servicios de conciliación semánticamente-

aware externos (como Freebase ’s) para compensar las deficiencias de la

agrupación a nivel de la sintaxis por sí solos, [2].

Como ya se mencionó, los algoritmos de agrupamiento de OpenRefine

se dividen en dos clases: 1) Key Collision y 2) Nearest Neighbor Method. A

continuación se hablará de ellos.

Page 37: Metodología de limpieza de datos con la herramienta de

3.4 Métodos de OpenRefine 37

3.4.2 Método Key Collision

El método Key Collision se basa en la idea de crear una representación

alternativa de un valor (una çlave") que contiene sólo la parte más valiosa

o significativa de la cadena, de ahí el nombre de Key Collision. Esta clase

de métodos es la más rápida en OpenRefine porque su complejidad compu-

tacional es lineal en el número de valores transformados y puede producir

resultados en segundos, incluso con millones de valores de cluster. Este

método es un poco menos agresivo en la búsqueda de errores e inconsisten-

cias en cada columna de la base de datos. Básicamente, este método busca

aquellas palabras similares o iguales.

Para utilizarlo se selecciona la columna que contiene algunas inconsisten-

cias y se da clic en Edit cells >Cluster and Edit, Figura 3.20, [2].

3.4.3 Método Key-Collision-Fingerprint

OpenRefine detectó 7 inconsistencias, Figura 3.20 y se observa que po-

drían ser idénticas, pero no es así, ya que algunos de los errores encontrados

por Refine podrían contener espacios en blanco, una letra de más, alguna

coma, acento o punto, Sin embargo, con la herramienta de clustering se

puede limpiar. Para remediar los errores solo se da clic en cada recuadro,

así se le indica a OpenRefine que se está de acuerdo, pero también se puede

editar y resolver de manera manual.

Para aplicar los cambios seleccionados se da clic en Merge Selected &

Re-Cluster en la parte inferior de la pantalla. Se observa en la Figura 3.21 que

Page 38: Metodología de limpieza de datos con la herramienta de

38 Capítulo 3. Metodología

Figura 3.20: Corrida de la herramienta de Key-Collision + Fingerprint.

se encuentra modificado, por lo que OpenRefine no encuentra más errores.

Figura 3.21: Botón Merge Selected & Re-cluster.

Por defecto, OpenRefine utiliza un método de búsqueda de errores po-

Page 39: Metodología de limpieza de datos con la herramienta de

3.4 Métodos de OpenRefine 39

co agresivo y que posiblemente no detecta todos los errores existentes. El

método Key Collision – Fingerprint consiste en convertir el texto en mi-

núsculas, quitar espacios y signos de puntuaciones y ordenar las palabras

alfabéticamente.

3.4.4 Método Key-Collision-Ngram-Fingerprint=2

Para realizar una búsqueda aún más exhaustiva y agresiva se selecciona en

Method: Key Collision, Keying Function: Ngram-Fingerprint, y se aumenta

de uno a dos Ngram Size: 2, tal como se observa en la Figura 3.22.

Figura 3.22: Method: Key Collision, Keying Funtion: Ngram-fingerprint, Ngram Size: 2

3.4.5 Método Nearest Neighbor

Mientras que los métodos de Key Collision son muy rápidos, tienden a

ser demasiado estrictos o demasiado ambiguos y no hay forma de afinar la

Page 40: Metodología de limpieza de datos con la herramienta de

40 Capítulo 3. Metodología

gran diferencia entre los datos. Los métodos de Nearest Neighbor (también

conocidos como kNN), proporcionan un parámetro conocido como Radius,

que representa un umbral de distancia. Cualquier par de cadenas que está

más cerca de un cierto valor se declaran como juntos.

Nearest Neighbor es un método alternativo de búsqueda de errores y

consiste en calcular el número de cambios que hay que hacer a una palabra

para convertirla en otra. Si una par de palabras se encuentra a una distancia

menor que un límite fijado por el usuario, se considera que es un error.

Para probar este método en el ejemplo de la base de datos se elige Nearest

Neighbor en el desplegable Method situado en la parte superior izquierda,

tal como se observa en la Figura 3.23, [2].

Figura 3.23: Método Nearest-Neighbor

3.4.6 Método Nearest-Neighbor con distancia PPM, R=1, Block Chars=6

En esta parte se ejecutarán los comandos tal como se observa en la Figura

3.24. En el panel de Cluster & Edit Column se selecciona, Nearest-Neighbor

con PPM, R=1 y BlockChars=6

Page 41: Metodología de limpieza de datos con la herramienta de

3.4 Métodos de OpenRefine 41

Figura 3.24: Nearest-Neighbor con distancia PPM, R=1, BlockChars=6

3.4.7 Método Nearest-Neighbor con distancia Levenhstein, R=1, Block

Chars=6

Con la finalidad de buscar aún más errores. En el panel de Cluster &

Edit Column se selecciona, Nearest-Neighbor con Levenhstein, R=1 y Block-

Chars=6, Figura 3.25,

Se observa inmediatamente que Refine encuentra una serie de inconsis-

tencias como “Instituto Nacional de Estadística y Geografía” e “Instituto

Nacional de Estadística y Geografia” (que se diferencia por un acento). Es

posible corregir estos errores tal como se vio en el apartado anterior, se-

leccionando el nombre correcto en cada caso o seleccionando el recuadro,

para indicarle a Refine que se esta de acuerdo. Por otra parte, se debe poner

Page 42: Metodología de limpieza de datos con la herramienta de

42 Capítulo 3. Metodología

Figura 3.25: Nearest-Neighbor con distancia Levenhstein, R=1, BlockChars=6.

atención para no corregir aquellos casos en los que no hay ningún error o

también llamados, falsos positivos.

3.4.8 Método Nearest-Neighbor con distancia PPM, R=2, Block Chars=6

OpenRefine ofrece una búsqueda aún más intensiva en los errores al

aumentar el valor del parámetro Radius, que es la distancia por debajo de la

cual se considera que dos palabras son iguales entre sí. Se selecciona en el

panel, lo siguiente Cluster & Edit Column y Run.

Ahora Refine encuentra algunas inconsistencias y para poder resolverlas

es necesario seleccionar en el recuadro y dar clic en el botón Merge Selected

& Re-Cluster, 3.26 y así declarar que se está de acuerdo con lo que indica

OpenRefine.

Page 43: Metodología de limpieza de datos con la herramienta de

3.4 Métodos de OpenRefine 43

Figura 3.26: Aplicación del Merge Selected & Re-Cluster

Con los nuevos cambios en Radious=2, Figura 3.27, se encuentran más

clusters y se realiza un refinamiento más agresivo. Esto es más útil para

estandarizar nombres largos. A veces es necesario realizar más iteraciones

que reduzcan el número de errores e inconsistencias que pudieran aparecer.

Figura 3.27: Nearest-Neighbor con distancia PPM, R=2, Block Chars=6.

Para dar solución a las inconsistencias se aplica el mismo procedimiento

que en el caso anterior y se seleccionan los recuadros.

Page 44: Metodología de limpieza de datos con la herramienta de

44 Capítulo 3. Metodología

3.4.9 Método Nearest-Neighbor con distancia Levenhstein, R=2 y Block

Chars=5

Luego progresivamente disminuir y aumentar Radius y Block Chars. Esto

conforme el campo se va estandarizando. Se van encontrando palabras más

similares tal como se observa en la Figura 3.28.

Figura 3.28: Método Nearest-Neighbor con distancia Levenhstein, R=2 y Block Chars=5

3.4.10 OpenRefine Expression Language (GREL, expresiones regula-

res)

Una expresión regular es un comando que describe un texto con patrón

en otras cadenas. Considerando el texto,

Page 45: Metodología de limpieza de datos con la herramienta de

3.4 Métodos de OpenRefine 45

”Once upon a time in the land of King Arthur”

El número de espacios consecutivos entre palabras varía. Debido a un

cambio en el texto que ahí no es precisamente un espacio entre alguna de

las dos palabras consecutivas. Conceptualmente, cuando se quiere remplazar

cualquier secuencia continua de uno o más espacios (no importa cuántos) con

exactamente un espacio, es posible usar una expresión regular para describir

“cualquier secuencia continua de un o más espacios"(no importa cuántos),

[9]”.

OpenRefine y OpenRefine Expressions Languaje (GREL) admite las

agrupaciones habituales en la sintaxis de Java regular expressions:

Jython supported Regex.

También se puede utilizar Jython Regex en lugar de las funciones de

GREL y usar el Custom Text Facet, con algunos de estos ejemplos.

import re

g = re.search(ur"\u 2014 (.*),\s *BWV", value)

return g.group(1)

GREL admite Regex. Para escribir una expresión regular dentro de una

expresión GREl, se coloca entre un par de diagonales /. Por ejemplo, va-

lue.replace(/\s +/, ), donde la expresión regular es /s+.

Algunas de las funciones GREL que admite REGEX,

Replace

Page 46: Metodología de limpieza de datos con la herramienta de

46 Capítulo 3. Metodología

Match

Partition

Repartition

Split

Para describir un patrón se necesitan elementos que se repiten. Por ejem-

plo, si en un artículo científico se ve una secuencia de letras A, C, T, G, se

intuye que se refiere al ADN. Como primer intento, se podría formular esta

expresión regular para que coincida con una secuencia de ADN, [ACTG].

Los corchetes significan “Uno de los caracteres adentro” y el signo de (+)

significa “Uno o más veces”. Utilizando eso para probar si el valor de texto

de una celda contiene cualquier secuencia de ADN, se tiene,

120.0232898

-0.2909

+2.343

Es posible describir un número decimal de la siguiente manera. Opcional-

mente se inicia con un signo (menos o más). A continuación, se compone

de una secuencia de uno o más dígitos que opcionalmente si tiene una parte

decimal, que contiene,

un punto, seguido por

uno o más dígitos

Se puede expresar que a medida esta expresión es regular. [-+]?[0-9]+(\.[0-

9]+)?

Page 47: Metodología de limpieza de datos con la herramienta de

3.4 Métodos de OpenRefine 47

El signo de interrogación, ”?” denota una opción de carácter o grupo de

caracteres. El punto ".", necesita estar en posición por una procedencia con

una diagonal invertida "\". Un dígito se denota como un rango de carácter de

0 a 9.

Hay que tomar en cuenta que cualquier carácter que se utilice para des-

cribir los comandos dentro de las expresiones regulares, deber ser escrito.

Por ejemplo, si se requiere escribir un carácter de "..en lugar de cualquier ca-

rácter, entonces debe escribirse "\"porque solo escribir "."significa cualquier

carácter similar [9]. Por ejemplo,

+ debe ser escrito como (\+)

? debe ser escrito como (\?)

[ debe ser escrito como (\[)

Page 48: Metodología de limpieza de datos con la herramienta de
Page 49: Metodología de limpieza de datos con la herramienta de

4. Conclusión

A diferencia de otras herramientas encontradas en la web, OpenRefine es

una herramienta gratuita y está hecha específicamente para el propósito de

limpieza y transformación de datos. Además, su amigable interfaz la hace

ideal para cualquier tipo de usuario, desde estudiantes hasta científicos de

datos.

Como ya se ha comentado, en internet existe una gran cantidad de infor-

mación, que a pesar de tener un gran potencial para ser utilizada con diversos

propósitos; en muchas ocasiones se encuentra sucia y con inconsistencias.

Si se desea realizar estudios de calidad utilizando información de bases

de datos, es fundamental que esta sea inicialmente sometida a un proceso

de limpieza. GoogleRefine es una herramienta que evitara que el usuario

invierta horas innecesarias en esta labor, cuando su objetivo principal es

extraer información relevante de la base de datos.

La búsqueda de errores es un proceso exploratorio que a veces depende del

tipo de errores que se encuentran en la base de datos. Lo más recomendable

es comenzar por un método sencillo de búsqueda como lo es Key Collision

y después pasar a uno más intenso como Nearest Neighbor e ir probando

Page 50: Metodología de limpieza de datos con la herramienta de

50 Capítulo 4. Conclusión

distintos valores para el parámetro Radius. Estos métodos encuentran una

mayor cantidad de inconsistencias, sin embargo, también pueden dar una

mayor cantidad de falsos positivos.

A través del desarrollo de esta metodología y los ejemplos presentados,

se concluye que OpenRefine es una herramienta capaz de generar una base

de datos organizada, limpia y utilizable. Gracias a sus avanzados métodos,

el usuario puede eliminar los errores e inconsistencias que pudiera tener una

base de datos, de manera práctica y eficiente.

Page 51: Metodología de limpieza de datos con la herramienta de

Bibliografía

[1] Concina. Alessandro. “Thesis: Data cleansing Different approaches for different

datasets”. En: (2014-2015), págs. 38-42.

[2] Clustering un Depth. Enero de 2013.

[3] Nguyen Dan. “Data Exploration with OpenRefine”. En: (jun. de 2013).

[4] Huynh. David. “Google Refine:Cell editing”. En: (feb. de 2011).

[5] Ma Hong. “Google Refine”. En: 29 (jun. de 2012), págs. 242-243.

[6] Ham. Kelli. “OpenRefine (version 2.5), open-source tool for cleaning and transfor-

ming data”. En: (jul. de 2013), págs. 233-234.

[7] Per Larsson. “Evaluation of Open Source Data Cleaning Tools: Open Refine and

Data Wrangler”. En: (jun. de 2013), pág. 6.

[8] OpenRefine History. Oct. de 2013.

[9] OpenRefine: Understanding Regular Expressions. Oct. de 2014.

[10] OpenRefine:Importers. Jun. de 2013.

[11] Stephens Owen. Introduction to OpenRefine. Jul. de 2014.

[12] Tillman. Ruth. “Extracting, Augmenting, and Updating Metadata in Fedora 3 and 4

Using a Local OpenRefine Reconciliation Service”. En: (Enero de 2016).

[13] Verborgh. Max de Wilde Seth van Hooland. Ruben. “Cleaning Data with OpenRefine”.

En: (Agosto de 2013), págs. 242-243.