• Nenhum resultado encontrado

MODELO DE REFINAMENTO DE CONJUNTOS DE DADOS NA WEB

O refinamento de conjuntos de dados publicados na Web é um processo no qual são re- alizadas operações de identificação e correção de erros, adição e atualização de dados, metadados e anotações semânticas, visando o aumento da qualidade dos conjuntos de da- dos. O processo de refinamento envolve quatro atividades essenciais, são elas: atividade de limpeza, atividade de enriquecimento, atividade de documentação e atividade de homolo- gação. Em especial, para que o processo de refinamento possa ser exercido é fundamental contemplar pelo menos uma das atividades, ou a atividade de limpeza ou a atividade de enriquecimento.

Com base nas definições encontradas na literatura, propomos um Modelo de Refina- mento de dados na Web. O modelo proposto apresenta uma definição para o refinamento de conjuntos de dados publicados na Web, conduzindo a comunidade ao entendimento de todo o processo de refinamento aplicado sobre os conjuntos de dados. Conforme o modelo ilustrado na Figura 9, o processo de refinamento pode seguir dois rumos diferentes que definem a motivação do refinamento, seja para a limpeza ou enriquecimento dos conjuntos de dados. Tanto a atividade de limpeza, quanto a atividade de enriquecimento são com- postas de operações que manipulam o conjunto de dados com o propósito de identificar e corrigir erros ou enriquecer o conjunto. Por sua vez, as operações são compostas de procedimentos específicos que realizam mudanças sobre o conjunto de dados conforme a necessidade, e.g., remoção de registros duplicados, e podem ser realizadas pelo consumi- dor de dados que também é responsável por documentar todo o processo de refinamento. A Figura 9 também apresenta o publicador de dados que é incubido de homologar o refinamento realizado anteriormente pelo consumidor.

Figura 9 – Modelo de Refinamento de Conjuntos de Dados na Web Fonte:Autor

Por outro lado, a Figura 10 descreve uma visão geral do Modelo de Refinamento que se assemelha a uma refinaria de dados, no qual um conjunto de dados publicado na Web é a entrada, e o conjunto de dados refinado é a saída. Os conjuntos de dados na Web podem apresentar três tipos de estruturas diferentes, sendo eles estruturados, semi-estruturados ou não estruturados, e também podem ser de diferentes domínios e formatos, tais como, Extensible Markup Language (XML), CSV e RDF.

Como estamos tratando com dados na Web, é necessário atentarmos para duas variá- veis: a estrutura dos dados e o volume dos dados. Essas duas variáveis impactam direta- mente nas operações realizadas na atividade de limpeza, como também na atividade de enriquecimento. Dependendo da estrutura do conjunto de dados que será refinado ou do seu volume, se faz necessário o uso de métodos e tecnologias mais apuradas, de forma que se adéquem a realidade. Por exemplo, um conjunto de dados no formato CSV composto de mais de 500 mil linhas, torna-se inviável analisá-lo manualmente, a busca de erros se torna mais difícil, como também a realização de procedimentos de limpeza e enriqueci- mento ficam mais custosos, e muitas vezes inviáveis. Dessa forma, como já mencionado, é

fundamental o uso de tecnologias que apoiem a realização desses procedimentos.

Figura 10 – Visão geral do Modelo de Refinamento de Conjuntos de Dados na Web Fonte:Autor

As seções a seguir descrevem as principais atividades, operações e procedimentos que envolvem o processo de refinamento.

4.2.1 Limpeza de dados

A atividade de limpeza de dados tem o objetivo de corrigir erros e inconsistências que constantemente são inseridos nos conjuntos de dados, no qual muitos destes erros são inseridos na criação do conjunto ou até mesmo em atualizações efetuadas constantemente. Esta atividade envolve duas operações que são mutuamente dependentes e conforme a dimensão e complexidade do conjunto de dados, a realização dessas operações pode se tornar algo ainda mais complexo. Dessa forma, para que um conjunto de dados esteja livre de erros, se faz necessário a realização das operações de busca e correção de erros. Operação Buscar

A operação buscar tem o propósito detectar erros inseridos em um conjunto de dados D. Esta operação pode ser definida como:

Operação 1 Buscar. A operação buscar pode ser vista como uma função buscar que, a partir de um conjunto de dados D, retorna um conjunto de erros Er’:

𝐸𝑟 = 𝑏𝑢𝑠𝑐𝑎𝑟(𝐷)

Esta operação pode ser representada como ilustra a Figura 11:

Figura 11 – Operação de busca. Fonte:Autor

A operação buscar pode ser desempenhada por um atorA de duas formas: manual ou automática. A forma manual diz respeito a análise do conjunto de dados sem o auxílio de métodos ou ferramentas que tenham este objetivo. Dessa forma, é comum que a busca manual possa ser realizada em conjuntos de dados compostos de estruturas de dados simples e que não tenham grande número de registros.

Por outro lado, a busca automática se caracteriza pelo uso de métodos e ferramentas que auxiliam a busca de erros em conjuntos de dados complexos e com grande volume de dados. Há 2 tipos de abordagens que podem ser aplicadas nesse tipo de busca: data

profiling e data mining. Essas abordagens são comuns dentro da área de integração de

dados e data warehouse, podendo também ser aplicadas no contexto deste trabalho. A

data profiling, como mencionada na Subseção 2.2.1, tem o objetivo de analisar precisa-

mente cada atributo dentro do conjunto de dados, isto em nível de instância. O uso de ferramentas de data profiling nos traz várias informações sobre erros relacionadas ao con- junto de dados, como valores que estão nulos quando não deveriam estar. A abordagem

data mining trabalha com modelos descritivos de mineração de dados, como clustering e summarization. O objetivo é descobrir padrões relacionados aos conjuntos de dados que

fornecem previsões sobre erros existentes.

A literatura nos fornece um conjunto de erros comuns encontrados dentro de conjuntos de dados, não somente no contexto da Web, mas em formatos e domínios variados. A Seção 2.2.1 descreve alguns erros encontrados no estudo realizado por Rahm e Do (2000), que também classifica esses erros em dois níveis: esquema e instância. É importante ressaltar que alguns dos erros relatados neste estudo são difíceis de serem descobertos no contexto de dados na Web, como um erro relacionado a integridade referencial entre dois registros. Operação Corrigir

A operação corrigir é o ponto chave de todo o processo de limpeza. O objetivo desta operação é corrigir e remover erros e inconsistências presentes no conjunto de dados, uma vez que, após a conclusão da operação Buscar, é necessário remover estes erros, tornando o conjunto de dados limpo. Esta operação pode ser definida como:

Operação 2 Corrigir. A operação corrigir pode ser vista como uma funçãocorrigir que, a partir de um conjunto de dadosD, uma lista de erros Er e um conjunto de procedimentos de limpeza P, retorna um conjunto de dados limpo e corrigido D’:

𝐷= 𝑐𝑜𝑟𝑟𝑖𝑔𝑖𝑟(𝐷, 𝐸𝑟, 𝑃 )

Esta definição pode ser representada como ilustra a Figura 12:

Figura 12 – Operação Corrigir. Fonte:Autor

A correção dos erros através da operação Corrigir, assim como na operação Buscar, pode ser realizada manualmente ou de forma automática com o auxílio de ferramentas, tais como ferramentas Extract Transform Load (ETL) (RAHM; DO, 2000). A correção manual pode ser feita por meio de editores de texto como o Notepad++1, que tem a capacidade de editar não somente arquivos com extensão .txt, como também arquivos de dados, tais como RDF, CSV, JSON, XML. Para arquivos CSV, pode ser feito o uso de ferramentas editoras de planilhas, como o Microsoft Excel2 e o Library Office3, por permi- tir uma interface gráfica mais amigável, suprida de inúmeros recursos de manipulação de dados, como agrupamentos, filtros e ordenação. Por outro lado, apesar de existirem tais ferramentas para a manipulação dos dados, elas não são recomendadas para a realização desta operação em conjuntos de dados com grande quantidade de registros, e.g., um con- junto de dados com grande quantidade de registros e atributos necessita de ferramentas automatizadas para correção de erros.

Dada a necessidade de refinar conjuntos de dados com grandes quantidades de regis- tros e atributos, existem ferramentas específicas de refinamento de dados que são providas de mecanismos que otimizam e facilitam a manipulação de conjuntos de dados de grande porte. Em especial, a ferramenta OpenRefine4 é uma ferramenta open source construída na linguagem Java e permite a manipulação de grandes conjuntos de dados, com enorme 1 <https://notepad-plus-plus.org/>

2 <https://products.office.com/en/excel> 3 <http://www.libreoffice.org/>

número de registros. Para isso, ela possui um sistema de paginação que permite o carre- gamento dos dados conforme a demanda, o que facilita o processamento dos dados.

Por outro lado, a correção automática pode ser executada por meio de ferramentas de manipulação de conjuntos de dados. O papel do ator é configurá-las e programá-las para efetuar as correções necessárias. De fato, nem todos os tipos de erros podem ser corrigidos de forma automática, mas uma parte signticativa sim. As ferramentas ETL possuem a capacidade de executar procedimentos e operações de forma automática. O Pentaho Data Integration5 é a ferramenta ETL mais conhecida no universo da integração de dados. Esta ferramenta é composta de componentes que permitem a execução de procedimentos de correção nos conjuntos de dados, como também em seus esquemas.

4.2.1.1 Procedimentos de Limpeza

Os procedimentos de limpeza fazem parte do conjunto de procedimentos de refinamento

P e são desempenhados dentro da operação Corrigir. Para cada erro er encontrado dentro

de um conjunto de dados D é necessário que um procedimento de limpeza p seja desem- penhado por um ator A a fim de reparar os erros. Cada procedimento está associado a uma operação básica de manipulação de dados, seja uma atualização ou uma remoção. Os procedimentos de limpeza elencados neste trabalho foram criados baseado nos erros descritos na Seção 2.2.1 e compreendem tanto os erros de instância (registros), quanto os erros de esquema (estrutura).

Abaixo, seguem as definições dos procedimentos de limpeza, como também exemplos práticos de instanciação de cada procedimento sobre recortes do conjunto de dados tomado como exemplo neste trabalho (Apêndice A):

Procedimento 1 Correção de valores falsos. O procedimento para a correção de valores falsos pode ser visto como uma função procValorFalso que recebe como entrada um erroer do tipo valor falso, um novo valor v e uma descrição opcional sobre a correção do erro do, e retorna o conjunto de dados corrigido D’:

𝐷= 𝑝𝑟𝑜𝑐𝑉 𝑎𝑙𝑜𝑟𝐹 𝑎𝑙𝑠𝑜(𝑒𝑟, 𝑣, 𝑑𝑜)

O Procedimento Correção de valores falsos pode ser ilustrado na Figura 13.

Figura 13 – Procedimento: Correção de valores falsos. Fonte:Autor 5 <http://www.pentaho.com/product/data-integration>

Procedimento 2 Correção de ortografia. O procedimento para a correção de erros ortográficos pode ser visto como uma função procOrtografia que recebe como entrada um

erro er do tipo ortografia, um novo valor v e uma descrição opcional sobre a correção do

erro do, e retorna o conjunto de dados corrigido D’:

𝐷= 𝑝𝑟𝑜𝑐𝑂𝑟𝑡𝑜𝑔𝑟𝑎𝑓 𝑖𝑎(𝑒𝑟, 𝑣, 𝑑𝑜)

O Procedimento Correção de ortografia pode ser ilustrado na Figura 14.

Figura 14 – Procedimento: Correção de ortografia. Fonte:Autor

Procedimento 3 Correção de valores ocultos. O procedimento para a correção de valores ocultos pode ser visto como uma funçãoprocValorOculto que recebe como entrada um erroer do tipo valor oculto, um novo valor v e uma descrição opcional sobre a correção do erro do, e retorna o conjunto de dados corrigido D’:

𝐷= 𝑝𝑟𝑜𝑐𝑉 𝑎𝑙𝑜𝑟𝑂𝑐𝑢𝑙𝑡𝑜(𝑒𝑟, 𝑣, 𝑑𝑜)

O Procedimento Correção de valores ocultos pode ser ilustrado na Figura 15.

Figura 15 – Procedimento: Correção de valores ocultos. Fonte:Autor

Procedimento 4 Correção de valores abreviados. O procedimento para a correção de valores abreviados pode ser visto como uma função procValorAbrev que recebe como entrada um erro er do tipo valor abreviado, um novo valor v e uma descrição opcional sobre a correção do erro do, e retorna o conjunto de dados corrigido D’:

𝐷= 𝑝𝑟𝑜𝑐𝑉 𝑎𝑙𝑜𝑟𝐴𝑏𝑟𝑒𝑣(𝑒𝑟, 𝑣, 𝑑𝑜)

Figura 16 – Procedimento: Correção de valores abreviados. Fonte:Autor

Procedimento 5 Correção de erros referenciais. O procedimento para a correção de erros referenciais pode ser visto como uma função procErroRef que recebe como entrada um erro er do tipo erro referencial, um novo valor v e uma descrição opcional sobre a correção do erro do, e retorna o conjunto de dados corrigido D’:

𝐷= 𝑝𝑟𝑜𝑐𝐸𝑟𝑟𝑜𝑅𝑒𝑓 (𝑒𝑟, 𝑣, 𝑑𝑜)

O Procedimento Correção de erros referenciais pode ser ilustrado na Figura 17.

Figura 17 – Procedimento: Correção de erros referenciais. Fonte:Autor

Procedimento 6 Correção de valores agregados. O procedimento para a correção de valores agregados pode ser visto como uma função procValorAgreg que recebe como entrada um erroer do tipo valor agregado, um identificador do novo registro i, um atributo

a, os valores separados (v1, v2) e uma descrição opcional sobre a correção do erro do, e

retorna o conjunto de dados corrigido D’:

𝐷= 𝑝𝑟𝑜𝑐𝑉 𝑎𝑙𝑜𝑟𝐴𝑔𝑟𝑒𝑔(𝑒𝑟, 𝑖, 𝑎, 𝑣1, 𝑣2, 𝑑𝑜)

O Procedimento Correção de valores agregados pode ser ilustrado na Figura 18.

Procedimento 7 Correção de valores desviados. O procedimento para a correção de valores desviados pode ser visto como uma função procValorDesv que recebe como entrada um erro er do tipo valor desviado, um novo valor v e uma descrição opcional sobre a correção do erro do, e retorna o conjunto de dados corrigido D’

𝐷= 𝑝𝑟𝑜𝑐𝑉 𝑎𝑙𝑜𝑟𝐷𝑒𝑠𝑣(𝑒𝑟, 𝑣, 𝑑𝑜)

O Procedimento Correção de valores desviados pode ser ilustrado na Figura 19.

Figura 19 – Procedimento: Correção de valores desviados. Fonte:Autor

Procedimento 8 Remoção de registros duplicados: O procedimento para a remoção de registros duplicados pode ser visto como uma função procRegistroDuplic que recebe como entrada um erro er do tipo registro duplicado e uma descrição opcional sobre a correção do erro do, e retorna o conjunto de dados corrigido D’:

𝐷= 𝑝𝑟𝑜𝑐𝑅𝑒𝑔𝑖𝑠𝑡𝑟𝑜𝐷𝑢𝑝𝑙𝑖𝑐(𝑒𝑟, 𝑑𝑜)

O Procedimento Remoção de registros duplicados pode ser ilustrado na Figura 20.

Figura 20 – Procedimento: Remoção de registros duplicados. Fonte:Autor

4.2.2 Enriquecimento de dados

A atividade de enriquecimento de um conjunto de dados tem como objetivo adicionar va- lor ao conjunto de dados, podendo o conjunto ser enriquecido com dados, com metadados ou semanticamente. Para que o enriquecimento seja realizado é fundamental, primeira- mente, identificar o tipo de enriquecimento, como também o que será enriquecido. Neste trabalho, consideramos os seguintes tipos de enriquecimento: enriquecimento por dados, enriquecimento por metadados e enriquecimento semântico. Assim, identificar o que deve

ser enriquecido parte da necessidade do consumidor ou do publicador do conjunto de dados.

O enriquecimento por dados diz respeito a adição de novos dados a um conjunto de dados. Geralmente, encontramos conjuntos de dados que necessitam de dados comple- mentares para que o entendimento se torne concreto. Por exemplo, dado um conjunto de dados que nos traz todos os estados do Brasil e não são registrados os dados referentes as suas capitais, há, assim, a necessidade de enriquecer o conjunto de dados com os dados das capitais, nome, localização, população, entre outros.

De modo geral, o enriquecimento por metadados diz respeito à adição ou atualização de metadados. Os metadados são dados estruturados ou informações que descrevem um objeto, sejam dados, objeto digital, recurso ou entidade (VNUK; KORONIOS; GAO, 2012). O enriquecimento por metadados compreende adicionar ou atualizar metadados ao conjunto de dados com o objetivo de melhorar o entendimento sobre os seus dados, facilitando o consumo do conjunto de dados.

Enriquecimento semântico é a atividade de associar aos dados ou metadados uma descrição de seu significado a fim de melhorar a compreensão humana, a interoperabili- dade das máquinas, e gerenciamento avançado de informações automáticas (recuperação, mineração, apresentação) (DIAMANTINI; BOUDJLIDA, 2006). O enriquecimento semântico pode ser realizado por meio da adição de anotações semânticas. O objetivo das anotações é facilitar o processamento de conteúdos, tal como, textos, jornais, livros,guidelines, aumen- tando a velocidade e precisão no processamento e leitura desses dados pelo computador (HULL; JENKINS; MCCUTCHEN, 2006).

A seguir, descrevemos a operação Enriquecer, juntamente com os procedimentos de enriquecimentos.

Operação Enriquecer

A operação Enriquecer é a operação principal da atividade de enriquecimento. O objetivo desta operação é realizar o enriquecimento de conjuntos de dados por meio de procedi- mentos de enriquecimento específicos. Esta operação pode ser definida como:

Operação 1 Enriquecer. A operação enriquecer pode ser vista como uma função en-

riquecer que, a partir de um conjunto de dados D e um conjunto de procedimentos de

refinamento P, retorna o conjunto de dados enriquecido D’:

𝐷= 𝑒𝑛𝑟𝑖𝑞𝑢𝑒𝑐𝑒𝑟(𝐷, 𝑃 )

Figura 21 – Operação Enriquecer. Fonte:Autor

A operação Enriquecer é responsável pelo acréscimo de dados, metadados, como também de anotações semânticas nos conjuntos de dados. Tanto o enriquecimento de da- dos, quanto o enriquecimento de metadados podem ser desempenhados manualmente ou automaticamente. Em especial, o enriquecimento semântico requer uma atenção maior do usuário, pois é necessário um conhecimento prévio do conteúdo para poder realizar a adição das anotações. O enriquecimento semântico deve ser auxiliado por ferramentas es- pecíficas, como o AKTiveMedia, sistema voltado para anotação semântica de conjuntos de dados semi-estruturados e não estruturados (e.g., textos, documentos HyperText Markup Language (HTML), arquivos XML, RDF e CSV) (CHAKRAVARTHY; CIRAVEGNA; LAN- FRANCHI, 2006). Outras ferramentas de enriquecimento de dados por meio de anotações semânticas podem ser vistas no estudo realizado por Oliveira e Rocha (2013).

O enriquecimento de dados pode ser apoiado por ferramentas de integração de dados como o SQL Server Integration Services (SSIS)6, ferramenta criada pela Microsoft que provê um conjunto de componentes para a transformação e junção de dados, e o Oracle Data Integrator7, solução da Oracle para realizar a integração de dados de grande volume com alto desempenho. De modo geral, as ferramentas de integração de dados provêm componentes que permitem a inserção e junção de dados e conjuntos de dados, tendo como resultado final o enriquecimento do conjunto de dados. Essas ferramentas permitem que os procedimentos de enriquecimento sejam realizados de forma simples e menos propensa a erros, bastando apenas uma configuração prévia. Por outro lado, o enriquecimento de metadados pode ser suportado por ferramentas de geração de metadados, como o Advanced Dublin Core Generator8 e o StreamSets Data Collector9, que realizam a geração automática de metadados. 6 <https://docs.microsoft.com/pt-br/sql/integration-services/sql-server-integration-services?view= sql-server-2017> 7 <http://www.oracle.com/technetwork/middleware/data-integrator/overview/index.html> 8 <https://nsteffel.github.io/dublin_core_generator/index.html> 9 <https://streamsets.com/documentation/datacollector/latest/help/index.html>

4.2.2.1 Procedimentos de Enriquecimento

Os procedimentos de enriquecimento fazem parte do conjunto de procedimentos de refi- namento P e são desempenhados por um ator A. Abaixo, seguem as definições dos pro- cedimentos de enriquecimento, como também exemplos práticos de instanciação de cada procedimento sobre recortes do conjunto de dados tomado como exemplo neste trabalho (Apêndice A):

Procedimento 1 Adição de dados em atributos com valores vazios. O procedi- mento para a adição de dados em atributos com valores vazios pode ser visto como uma função procAddAtributoValorVazio que, recebe como entrada o identificador do registro que contém o campo vazio i, o atributo com o valor vazio a e o valor que será adicionado

v, e retorna o conjunto de dados enriquecido D’:

𝐷= 𝑝𝑟𝑜𝑐𝐴𝑑𝑑𝐴𝑡𝑟𝑖𝑏𝑢𝑡𝑜𝑉 𝑎𝑙𝑜𝑟𝑉 𝑎𝑧𝑖𝑜(𝑖, 𝑎, 𝑣)

O Procedimento Adição de dados em atributos com valores vazios pode ser ilustrado na Figura 22.

Figura 22 – Procedimento: Adição de dados em atributos com valores vazios. Fonte:Autor

Procedimento 2 Adição de atributo. O procedimento para a adição de um ou mais atributos pode ser visto como uma função procAddAtributo que recebe como entrada uma lista de atributos {a1,...,an} e retorna o conjunto de dados enriquecido D’:

𝐷= 𝑝𝑟𝑜𝑐𝐴𝑑𝑑𝐴𝑡𝑟𝑖𝑏𝑢𝑡𝑜(𝑎1, ..., 𝑎𝑛)

O Procedimento Adição de atributos pode ser ilustrado na Figura 23.

Procedimento 3 Adição de registros. O procedimento para a adição de um ou mais registros pode ser visto como uma função procAddRegistro que recebe como entrada uma lista de registros {r1,...,rn}, tal que, cada registro r é um conjunto de valores {v1,...,vn}, e retorna o conjunto de dados enriquecido D’:

𝐷= 𝑝𝑟𝑜𝑐𝐴𝑑𝑑𝑅𝑒𝑔𝑖𝑠𝑡𝑟𝑜(𝑟1, ..., 𝑟𝑛)

O Procedimento Adição de registros pode ser ilustrado na Figura 24.

Figura 24 – Procedimento: Adição de registros. Fonte:Autor

Procedimento 4 Adição de metadado. O procedimento para a adição de metadado pode ser visto como uma funçãoprocAddMetadado que recebe como entrada um metadado

m e o valor do metadado v, e retorna o conjunto de dados enriquecido D’: 𝐷= 𝑝𝑟𝑜𝑐𝐴𝑑𝑑𝑀 𝑒𝑡𝑎𝑑𝑎𝑑𝑜(𝑚, 𝑣)

O Procedimento Adição de metadados pode ser ilustrado na Figura 25.

Figura 25 – Procedimento: Adição de metadados. Fonte:Autor

Procedimento 5 Atualização de metadados. O procedimento para a atualização de metadados pode ser visto como uma função procAttMetadado que recebe como entrada um metadadom e o novo valor do metadado v, e retorna o conjunto de dados enriquecido

D’:

O Procedimento Atualização de metadados pode ser ilustrado na Figura 26.

Figura 26 – Procedimento: Atualização de metadados. Fonte:Autor