Vous êtes sur la page 1sur 51

Metodología de limpieza de

datos con la herramienta de


OpenRefine
M ONITOREO T ECNOLÓGICO . P LATAFORMA DE ANALÍTICA PREDICTIVA PARA EVA -
LUACIÓN Y SEGUIMIENTO DE ACCIONES DE ADMINISTRACIÓN PÚBLICA Y EMPRE -
SARIAL , E TAPA 2. PEI 231758

Proyecto apoyado por el Programa de Estímulos a la Investigación, de Desarrollo o de


Invocación Tecnológica del CONACYT

Octubre 2016
Comite Editorial
Ing. Daniel Eugenio Muñoz Caballero
Lic. Dora Elia Martínez Rojas
M.C. Rodrigo Márquez Castillo
Dr. Eduardo Ramírez Rangel
Elisa García Vargas
Fernando Ángel Juárez Cueyactle
Dr. Daniel Villanueva Vásquez
Dr. Anselmo Osorio Mirón
Í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 14
2.3.1 Fingerprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3.2 N-Gram Fingerprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3.3 Phonetic Fingerprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3.4 Nearest Neighbor Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.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 25
3.3.1 Conversión de mayúsculas/ minúsculas . . . . . . . . . . . . . . . . . . . . . . . 25
3.3.2 Eliminación espacios en blanco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.3.3 Facet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3.4 Separación automática de columnas . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3.5 Cambio de nombre a una columna . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.3.6 Eliminación de una columna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
6

3.3.7 Organización de columnas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31


3.3.8 Eliminación de espacios consecutivos . . . . . . . . . . . . . . . . . . . . . . . . 32
3.3.9 Filtrado de valores en blanco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.4 Métodos de OpenRefine 36


3.4.1 Clustering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.4.2 Método Key Collision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.4.3 Método Key-Collision-Fingerprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.4.4 Método Key-Collision-Ngram-Fingerprint=2 . . . . . . . . . . . . . . . . . . . . . 39
3.4.5 Método Nearest Neighbor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.4.6 Método Nearest-Neighbor con distancia PPM, R=1, Block Chars=6 40
3.4.7 Método Nearest-Neighbor con distancia Levenhstein, R=1, Block Chars=6
41
3.4.8 Método Nearest-Neighbor con distancia PPM, R=2, Block Chars=6 42
3.4.9 Método Nearest-Neighbor con distancia Levenhstein, R=2 y Block
Chars=5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.4.10 OpenRefine Expression Language (GREL, expresiones regulares) . . 44

4 Conclusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
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
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,
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.
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].
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,
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
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
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].
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.
2.4 Refinamiento de datos con OpenRefine. 17

Figura 2.2: Base de datos.


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
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.
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
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
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.


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].
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
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
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
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.
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
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
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


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].
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].
34 Capítulo 3. Metodología

Figura 3.16: Re-ordenar la columna.

Figura 3.17: Eliminar una columna y agruparlo.


3.3 Operaciones básicas 35

Figura 3.18: Eliminación de espacios consecutivos.

Figura 3.19: Valores en blanco.


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.
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
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-


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
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
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
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.
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.
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,
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
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]+)?
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 (\[)
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
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.
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.

Vous aimerez peut-être aussi