Aula de 16/08 - https://youtu.be/R8BHDBmCOA4
Artigo Graph Integration of Structured, Semi-structured and Unstructured Data for Data Journalism
Também permite a consulta por palavras chaves
Construção do grafo integrado: a aresta tem um grau de confiança, além do rótulo (diferença em relação ao RDF).
Mapeamento de cada fonte de dados para o grafo: por exemplo no modelo relacional pode ser criado um nó para cada tabela, depois um nó para cada linha, ligado no nó da tabela.
Fazer uma tipagem mais forte nos tipos de dados depois de converter para o grafo.
Pipeline dos Nós: Tokenização, Part-of-Speech(POS), Named-Entity Recognition (NER), Named-Entity Disambiguation (NED), Node Matching .... são tarefas clássicas de integração de dados em grafo
Node matching é justamente a etapa de integração pq até o NER/NED são somente componentes conexas. Nós diferentes podem representar a mesma entidade do mundo real (owl:sameAs), podem usar embeddings ou medidas de similaridade entre features
Aula de 23/08 - https://youtu.be/2w4afoaH5fw
modelo de armazenamento em duas tabelas - modelo relacional: arestas e similaridades entre nós
vantagem de usar um grafo é não requer um esquema conceitual, cada nova fonte de dados sofre um processo de ingestão para ser adicionada ao grafo (o pipeline dos nós acima)
KwS: as arestas são não direcionadas, encontrar a menor árvore/caminho, o menor aqui é no sentido do peso. No paper a lógica foi criar uma árvore com os nós mais importantes (bom ser importante pelo match ou pela nó ter um alto PageRank) e com as arestas mais raras. A raiz da árvore são os nós que fizeram o match com as palavras chaves, repete etapas de Grow e Merge para cada árvore, No Grow acrescenta aresta vizinhas que não fazem loop, no Merge junta as árvores que tenha nó em comum, o Grow pode considerar também as arestas de similaridade entre nós para juntar fontes de dados diferentes. Para ser a menor árvore, a cada pequeno Grow é tentado um Merge! Em caso de empate no keyword match (ou ordenação), escolha a árvore menor e se houver empate no tamanho, escolha a árvore com maior especificidade.
Tamanho dos datasets deve ser maior que 170 milhões de triplas ?!?!?! Um milhão de nós é pouco.
Avaliação de keyword search: não basta dizer a quantidade de árvores ou o tempo de resposta, tem que avaliar o tamanho das árvores de resposta e a qualidade dessas respostas.
Aula de 30/08 - https://youtu.be/yk88UtEJy8o
Gerenciamento de Metadados - Overview
Tempo perdido em Data Discovery (dentro e fora da organização)
Sistema Aurum's: construir, manter e consultar o EKG (Enterprise Knowledge Graph). O EKG é um hipergrafo e as hiper arestas permite aos usuários a consultar com diferentes granularidades.
Sistema Skluma: metadados de arquivos científicos, extratores de metadados por formato/tipo de data sources, a extração de keywords do texto, usado para associar tópicos aos documentos, não tem semântica e usaram o GloVe (rede pré treinada de word embeddings) para o match com top-n keywords, gera um grande arquivo JSON que deve ser adicionado em uma Search Engine para consulta.
Aula 13/09 - https://youtu.be/_daQjbqVlOc
Semantic Type Inference e Sherlock (implementado no TensorFlow e publicado no SIGKDD2019)
Tarefa para Data Lakes. Colunas do mesmo tipo semântico podem ser usadas para join e unions de tabelas/fontes de dados diferentes
tipo de dados sintáticos: string, datas, números
tipo de dados semânticos: nome, data de nascimento, gênero
Problema de Classificação, pode ser feito com heurísticas
Baseline: Como implementar as abordagens existentes caso não tenham código fonte disponível? Como os dados dessas abordagens podem ser obtidos para o teste comparativo?
Como coletar e preparar dados reais para treinamento e teste? Com volume o suficiente para gerar o modelo em ML ou DL.
Feature extraction: como criar uma representação de tamanho fixo para um conjunto de colunas que possuem variabilidade de valores distintas?
27 features: estatísticas / histogramas, Entropia (alta variabilidade é entropia baixa como por exemplo nomes).
960 features: distribuição de caracteres por coluna
200 features: word embeddings para colunas que são texto, usaram o GloVe (inglês) com 50 dimensões, calcularam 4 opções: média, moda, mediana e variancia
400 features: concatena os valores das colunas para formar um grande parágrafo por coluna e converte em vetores one-hot
Cada coluna no final é representada por 1600 descritores / features diferentes: primeira camada do modelo
Primeiro filtro (remover os mais frequentes) é bom pq o modelo pode aprender pouco com eles
Segundo filtro removeu colunas importantes como as de datas e no final ficaram com 10% do conjunto original (686,765 colunas) e de 275 reduziram para 78 tipos de dados semânticos.
Model training: +/- 1600 - 27 features foram comprimidos e gerou uma representação de 78.
Rede neural (A) com duas camadas ocultas (ReLU) e Softmax, diferentes tamanhos das camadas de acordo com o tipo de feature de entrada para reduzir o número de features. Rede neural (B) usa a saída de A + as 27 features estatísticas para no final geral a classificação em 78 possibilidades.
(A)

(B)
Outros classificadores ML (Random forest - 10 e Decision tree) e abordagens de Dicionários, Expressões Regulares, Crowdsourcing, ... também precisam ser testados para comparação.
Métricas de avaliação precisam ser balanceadas pelo número de instâncias: média ponderada do F1 score.
As features isoladas geraram um resultado pior que combinadas.
Sugestão: usar ML somente para aquilo que não tem um dominio padrão para criar um dicionário ou um formato padrão para criar uma expressão regular.
Aula 20/09 Deequ - https://youtu.be/sb27_P57N-o
AWS Deequ da Amazon Research, dois artigos
Apache SPARK com linguagem Scala para testes unitários em dados (que não são iguais a testes e software) ... mas tem uma opção de Python (PyDeequ)
Verificação de Qualidades de Dados: Sugestão de Restrições e Verificação de Restrições
Dados passam por ingestão e depois as restrições são verificadas, gerando um relatório de métricas e qualidade
Especificar de modo declarativo as restrições
Extrai diversas métricas do Dataset
Outra fonte: https://medium.com/data-hackers/qualidade-de-dados-na-pr%C3%A1tica-com-spark-e-aws-deequ-ec8127979ee
Aula 27/09 - https://youtu.be/skibEm4lL0o
Named Entity Recognition (NER)
Inclusão de fontes externas ajuda nessa atividade e as abordagens Neural fim a fim acabam não fornecendo explicabilidade
Quatro categorias
1) knowledge agnostic, só usa parâmetros de natureza sintática ou linguística
2) named-based knowledge, outras fontes que contem entidades nomeadas, as entidades possuem padrões (uso de determinadas expressões e também combinações)
3) knowledge-base knowledge, páginas da wikipedia associadas a tokens
4) entity-based knowledge, considerar sinônimos, abreviações como alias para a mesma entidade
Calculou o F1 ao incluir cada categoria, mas é uma melhoria acumulada e não isolada. Usou quatro datasets e 3 tipos de entidades: pessoas, organização e localização. Não usou Redes Neurais.
BERTimbau: Pretrained BERT Models for Brazilian Portuguese
https://link.springer.com/chapter/10.1007/978-3-030-61377-8_28
O estado da arte envolvem arquiteturas de redes neurais usando linguagens de modelagem pré-treinadas
Linguagens pré-treinadas reduzem a necessidade de dados rotulados para aprendizado supervisionado
Documentos de entrada > Tokenização > Spans de tamanho fixo (2x) com overlapping > BERT (word embeddings) > Classificador (Linear ou LSTM) > [probabilidade de cada token pertencer a cada classe] > CRF > [token, classe]
Dataset HAREM para NER em Português. Usou Multi lingual BERT-Base, Portugues BERT-Base e BERT-Large.
Aula 04/10 - https://youtu.be/0pOvoWgbCMk
Entity Linking / Matching / Recognition
Magellan está descrito em um artigo do VLDB, usa um stack comum de Data Science como numpy e depois foi utilizado em vários outros trabalhos
3 frameworks com Deep Learning nos artigos
Paper 1 (2018) ... 4 soluções de DL baseados no Magellan, que foi usado como baseline = DeepMatcher
Uso de word embeddings na primeira camada, na segunda camada é calculada a similaridade e na terceira camada (MLP) está o classificador
DL não ajudou muito em dados estruturados mas para semi-estruturados e não estruturados houve algum ganho. O maior ganho foi em caso de dados "sujos".
Paper 2 (2018) ... Knowledge Graphs = LinkNBed -> Entity Linking para pares de KG
Treinamento linear
Entrada como embeddings de entidades, atributos, relações e tipos
Camada contextual com funções de agregação
Camada de representação é entrada para a função de score final para gerar a predição
Dois datasets, um deles é do IMDB. Fizeram versões parciais do próprio modelo.
Paper 3 (2018) ... DeepER
etapa de blocking semantico baseda em LSH, é semelhante a busca por approximate nearest neighbor (ANN) no espaço de similaridade, reduz o número de comparações desnecessárias
captura a similaridade sintática e semântica sem feature engineering e tuning de parâmetros
representação distribuídas (DR) para tuplas permite a representação da tupla como embeddings e computar a distância entre os vetores de tuplas distintas para avaliar o match. O vetor da tupla é a concatenação dos vetores gerados pela média dos vetores dos tokens de cada atributo. Ao invés da média é possível usar uma rede LSTM-RNN para obter o vetor final de cada atributo e preservar características originais do atributo como a estrutura linguística.
Vocabulary Expansion e Vocabulary Retrofitting
Sete datasets (e-commerce, citações, proteômica). Também se compararam com o Magellan
Aula 18/10 -> https://youtu.be/0VPe9CeZYtU
Data Integration
Dois artigos sobre Schema Matching
Correspondência de conceitos (entidades, atributos e relacionamentos) entre esquemas de bases de dados diferentes com mínima intervenção de especialista de domínios.
Matriz de similaridade: ajuste com matcher de segunda linha
Métricas como precisão, cobertura (recall) e F1 score (média harmônica entre precisão e cobertura) para avaliar a matriz
MWBG: seleciona o atributo mais similar do segundo esquema
Usou duas DNNs (Deep Neural Networks) no algoritmo, uma para ajustar e outra como avaliação para modificar a matriz de similaridade
No segundo artigo é com ML. Features baseadas no schema (tipo de dado, tamanho médio, se é chave, média/mínimo/máximo de valores numéricos, etc ...). Agrupar atributos semelhantes (K-means clustering).
Aula 18/10 -> https://youtu.be/z5SVG3Au5ro
SATO - Semantic Type Inference (Detection)
Evolução do Sherlock
Dados um conjunto de dados como por exemplo uma coluna de uma tabela, o objetivo é identificar além do tipo sintático (string, data, número) o tipo semântico (nome de pessoa, nome de lugar, data de nascimento, data da transação, quantidade de itens, ...)
É um problema de classificação, logo o conjunto de tipos (classes) deve ser definido (por exemplo os tipos extraídos da DBPedia)
No Sherlock: pega o header da coluna e os valores da coluna. Nos valores das colunas é realizado um Feature Extraction considerando: distribuição de caracteres, word embeddings (em caso de strings), paragraph vectors (toda a coluna é tratada comoum parágrafo) e estatísticas globais (27 tipos). As features são agrupadas para serem classificadas em 78 tipos da DBPedia (ontologia genérica). Usa redes neurais, a primeira RN é para compactar as features e a segunda para classificar.
Como adicionar novos tipos? Como adaptar a modelos conceituais específicos?
Como melhorar o desempenho de alguns tipos? Como considerar o CONTEXTO da coluna (a tabela, outras colunas)? .... SATO
O contexto aqui considera toda a tabela, suas linhas (global) e o tipo das demais colunas da mesma tabela (local) ... aqui não é RN
Exemplo: cidade natal (natural de) ou cidade como elemento da divisão do território.
Usam topic modeling para estimar o que se trata da tabela. Uma tabela tem uma intenção, existe uma entidade associada a tabela. LDA é um modelo probabilístico que dado um conjunto de palavras descrevem os tópicos.
A entrada é a saída do Sherlock + o vetor global da tabela e a saída é a probabilidade da coluna pertencer a cada um dos 78 tipos semânticos ... melhoria da predição considerando o contexto global.
Usam CRF (Conditional random fields) para identificar o contexto local, as colunas vizinhas (anterior e posterior) são consideradas. Para a coluna K temos a maior probabilidade do tipo t(K) e devem ser associados os t(K-1) e t(K+1) então é feita a combinação par a par dos tipos ... melhoria da predição considerando o contexto local.
Aula 25/10 - https://youtu.be/7uMpnOo8KzQ
Skluma prático ... não funcionou !!!
Usou 3 fontes de informação, uma do site basededados.org
Cada extrator é um container docker separado o que isola as dependência e permite a execução em paralelo. Usa o sqlite para metadados dos arquivos.
o principal é o skluma.py e o arquivo de configuração é o skluma.config
Só funcionou até a etapa de crawler dos arquivos (de acordo com o path informado)
Aula 08/11 - https://youtu.be/YPBr2Guj9NE
Projeto de Interoperabilidade da TECGRAF aceito na iiWAS2021
Polystores: multi modelos, base de dados heterogêneas e uma única linguagem de consulta,podem ter diferentes níveis de acoplamento
BDA = Virtual KG .... integração virtualizada, dados integrados em uma visão de grafo e enriquecidos com ontologias
Microserviço: fontes de dados consumidas através de serviços de modo independente, flexível e autônomo. Alta capacidade de escalabilidade.
Trabalhos relacionados usam ontologias.
Modelo Conceitual e protótipo da arquitetura de micro serviços. Ontologia de domínio para definir o vocabulário comum e uma Ontologia de serviço para montar as consultas. Interface do usuário para a especificação das consultas.
Ontop - camada de mapeamento entre a ontologia e as fontes de dados (SPARQL x SQL)
Apache Kafta - orquestração de micro serviços
Caso de Uso para avaliar a efetividade e eficiência da arquitetura em realizar a integração. O gargalo foi o Ontop.
Aula 08/11 - https://youtu.be/Finl6ugepS8
Integrity Constraints: projeto de BD, integridade de dados, consistência, regras para dependência funcional (condicional ou não) = SE ISSO ENTÃO AQUILO
Lógica de primeira ordem tem espaço de busca muito grande e baixa eficiência = Denial Constraints seriam um subconjunto de lógica de primeira ordem que possui decidibilidade com um conjunto de regras de inferência e uma algoritmo.
As DCs precisam ser rankeadas para apresentação ao usuário, mais relevantes. Uma métrica (score) é calculado baseado nos conceito de quão sucinta é a DC (mais curta) e de cobertura da DC (mais longas, baseadas em significância estatística)
Se a base de dados já contém erros não será possível gerar automaticamente todas as DC válidas ao mesmo tempo que um número excessivo de DCs geradas podem derivar regras que estão muito ajustadas a instância do BD (overfitting) e não permitem a inserção de novos dados válidos segundo as regras de negócio. Logo a geração de DCs deve ser aproximada e não exata.
Não gera todas as DCs possíveis, segue regras baseadas nas tabelas e atributos para gerar um conjunto mínimo de predicados. Para cada tupla gera o conjunto de evidência para identificar para cada par de tupla quais predicados são válidos (Nt x Np) mas pode ser otimizado, paralelizando. Remove redundantes e faz poda no espaço de busca.
DCFinder é uma otimização na geração de um conjunto de evidências. Gera uma lista indexada (PLIs) em tempo linear para a busca de quais pares de tuplas atendem a um determinado predicado. Adiciona um novo conceito para a métrica de rankeamento (grau de aproximação para quantas tuplas podem violar a DC) e também usa a métrica para a poda.
Aula 29/11 - https://youtu.be/EPaBspZTpIU & https://youtu.be/Nz6RrLiu3dA
Ferramenta ADnEV para schema match ... também não funcionou bem, o código do GitHub tinha pouca informação sobre dependência e pré-requisitos, erros na instalação
Vídeo adicional sobre Debate - Search Engines como Solr e ElasticSearch -> https://youtu.be/SzZ_A9G6PMY .... sem apresentação, somente a fala.
Comentários
Postar um comentário
Sinta-se a vontade para comentar. Críticas construtivas são sempre bem vindas.