Pular para o conteúdo principal

CS 520 - Knowledge Graphs - Spring 2021 - Seminário 19

CS 520 - Knowledge Graphs - Spring 2021 - Seminário 19

Data Models, Knowledge Acquisition, Inference and Applications
Department of Computer Science, Stanford University, Spring 2021 

Link para o Vídeo -> https://youtu.be/3UJgXWB48r0

Provocação inicial: KG seriam somente semantic networks "hehased" ou possuem particularidades a serem exploradas? 

A primeira apresentação apresentou algumas ferramentas para manipulação de KG

"What are some implementation tools for Knowledge Graphs?"

Como escolher qual pacote com tantas opções? 

Um problema comum é juntar dados de diferentes fontes e nessa atividade é necessário realizar o JOIN através do Entity Linkage pq muitas vezes não existe um identificador único compartilhado entre as fontes

Pacote: Dedupe

Opções de fuzzy match com base em atributos (semântica) e tipo de dados, aprendizado supervisionado (distância do cosseno é o default),aprendizado supervisionado (classificadores) e active learning. 

Tarefa de Person Name matching

Usar dicionários e regras quando não é possível usar ML

Soundex para lidar com diferentes grafias do mesmo nome

Lista de pacotes para Record Linkage disponível em -> https://github.com/J535D165/data-matching-software

Extração de Informações de dados não estruturados (texto)

Spacy (NLP assim como NLTK), inclui um Entity Linking framework que mapeia para Wikidata e Dependancy parsing (grafo no formato de triplas a partir de frases)

SpikeX: pipes com propósitos específicos prontos para o Spacy (reuso)

GraphDB: armazenar o KG depois de criado, +OLTP e -OLAP, não existe padrão para linguagem de consulta

Neo4J: LPG, escalabilidade horizontal, controle de acesso, Cypher, conectores para diferentes linguagens

Amazon Neptune: LPG e RDF, interfaces de consulta através de Apache Thinker Pop Gremlin e SPARQL

Graph Compute Engines: OLAP para processamento analítico e ML, podem estar acopladas ao GraphDB ou não. 

networkx: python, in memory, vários!!!! algoritmos disponíveis (por exemplo Page Rank, Steiner Tree, Clusterização, Vertex Cover, Mixing, ...)    

d3: detecção de comunidades visualmente

GraphX : Apache Spark (o Diego apresentou esse no grupo BioBD), processamento paralelo,  extensão do RDD (Resileint Distributed Dataset),  somente PageRank para ML, outros algoritmos para Particionamento, Componentes Conexas e contagem de triângulos. 

>> KGTK também entra nessa categoria

Benchmarks costumam ser específicos para as tarefas

Ainda existe muito trabalho manual apesar de muitas abordagens se "venderem" como totalmente automatizadas

As linguagens de consulta não são intuitivas como SQL

Característica ACID dos GraphDBs é importante somente para as atualizações, operações de percorrer o grafo são melhor atendidas em termos de desempenho por GraphDB do que RDBMS 

Desconhecem abordagens de construção/aprendizado de esquemas para KGs a partir dos dados (engenharia reversa)

"How to KG relate to AI?"

Três direções: Simbiose, Graph Data Science, KG para AI

Simbiose bi-direcional: KG viabilizam aplicações em AI e algoritmos AI para construir KG

KGs para assistentes pessoais (Alexa, Siri, Google Now), sistemas de recomendação e ferramentas de busca para Q&A. Como usar Wikidata para sistemas de busca

Entity Linking com active learning (ML), NLP para Entity Extraction, Inferência e Q&A com NLP, 

Graph Data Science: Big Data incluindo graph data

ML para predições (Analytics)

Engenharia de features para identificar com os modelos ML respondem as features, conhecimento do domínio

Como o usuário pode explorar/visualizar os dados em escala sem ficar perdido com o volume e variedade?

AI + KG: Redes Semânticas, DL, Rules Languages e Modelos gráficos (?)

Aprendizado indutivo para a parte simbólica, ML é mais recente

Volume é um desafio contemporâneo

Construção pode ser bottom-up ou uma abordagem híbrida (mixed) com bastante suporte automatizado

Tempo: IIIII



Comentários

Postagens mais visitadas deste blog

Connected Papers: Uma abordagem alternativa para revisão da literatura

Durante um projeto de pesquisa podemos encontrar um artigo que nos identificamos em termos de problema de pesquisa e também de solução. Então surge a vontade de saber como essa área de pesquisa se desenvolveu até chegar a esse ponto ou quais desdobramentos ocorreram a partir dessa solução proposta para identificar o estado da arte nesse tema. Podemos seguir duas abordagens:  realizar uma revisão sistemática usando palavras chaves que melhor caracterizam o tema em bibliotecas digitais de referência para encontrar artigos relacionados ou realizar snowballing ancorado nesse artigo que identificamos previamente, explorando os artigos citados (backward) ou os artigos que o citam (forward)  Mas a ferramenta Connected Papers propõe uma abordagem alternativa para essa busca. O problema inicial é dado um artigo de interesse, precisamos encontrar outros artigos relacionados de "certa forma". Find different methods and approaches to the same subject Track down the state of the art rese...

Aula 12: WordNet | Introdução à Linguagem de Programação Python *** com NLTK

 Fonte -> https://youtu.be/0OCq31jQ9E4 A WordNet do Brasil -> http://www.nilc.icmc.usp.br/wordnetbr/ NLTK  synsets = dada uma palavra acha todos os significados, pode informar a língua e a classe gramatical da palavra (substantivo, verbo, advérbio) from nltk.corpus import wordnet as wn wordnet.synset(xxxxxx).definition() = descrição do significado É possível extrair hipernimia, hiponimia, antonimos e os lemas (diferentes palavras/expressões com o mesmo significado) formando uma REDE LEXICAL. Com isso é possível calcular a distância entre 2 synset dentro do grafo.  Veja trecho de código abaixo: texto = 'útil' print('NOUN:', wordnet.synsets(texto, lang='por', pos=wordnet.NOUN)) texto = 'útil' print('ADJ:', wordnet.synsets(texto, lang='por', pos=wordnet.ADJ)) print(wordnet.synset('handy.s.01').definition()) texto = 'computador' for synset in wn.synsets(texto, lang='por', pos=wn.NOUN):     print('DEF:',s...

DGL-KE : Deep Graph Library (DGL)

Fonte: https://towardsdatascience.com/introduction-to-knowledge-graph-embedding-with-dgl-ke-77ace6fb60ef Amazon recently launched DGL-KE, a software package that simplifies this process with simple command-line scripts. With DGL-KE , users can generate embeddings for very large graphs 2–5x faster than competing techniques. DGL-KE provides users the flexibility to select models used to generate embeddings and optimize performance by configuring hardware, data sampling parameters, and the loss function. To use this package effectively, however, it is important to understand how embeddings work and the optimizations available to compute them. This two-part blog series is designed to provide this information and get you ready to start taking advantage of DGL-KE . Finally, another class of graphs that is especially important for knowledge graphs are multigraphs . These are graphs that can have multiple (directed) edges between the same pair of nodes and can also contain loops. The...