Pular para o conteúdo principal

CS 520 Knowledge Graphs - Prof Vinay K. Chaudhri

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

What is a Knowledge Graph? -> https://youtu.be/FRcF6sh8sI0

ML & KG: incorporar conhecimento, representar o conhecimento e explicação o que foi aprendido

Integração de dados sem esquema a priori, os mapeamentos podem ser feitos na abordagem "pay as you go" 

Tem explicação para word embeddings com exemplo e node / graph embeddings !!!

>> Converter representação simbólica em números (Vetores), por volta de 200 dimensões após etapa de redução, um caminho do grafo pode ser equiparado a uma sentença de texto (cada palavra é um nó e estão ligadas em sequencia como aparecem na sentença)

What are some Graph Data Models? -> https://youtu.be/fJLCCmk0-ok

RDF

URI só permite ASCII caracteres, IRI pode ter qq tipo de caracter(Universal CharacterSet) 

named graphs: cada grafo tem o seu IRI

Reificação para suportar atributos nas arestas como por exemplo dados de proveniência. Uso de nós brancos

(L)PG

As arestas podem ter propriedades/atributos mas não suportam IRI/URI e nós brancos. É possível realizar reificação em LPG

Como converter RDF em LPG e vice-versa

SPARQL e Cypher (CRUD além de Query)

Mapeamento do modelo de grafo em modelo relacional

GraphDB não teria diferença entre o esquema e a forma como o dado é armazenado, no RDBMS tabelas podem representar nós e seus atributos uma mas se seguir o modelo E-R (Relacional) um entidade com seus atributos pode ser armazenada em uma tabela mas essa tabela também pode conter as relações (FK),além de existirem tabelas para relacionamentos N x M assim como ajustes de projeto físico para atender a requisitos de desempenho.

Quad em RDF é para representar named graph e não para as arestas ...

How to Create a Knowledge Graph?

Recursos informacionais (com URI) e não informacionais (mundo real)

URIs devem recuperar "partes" de KGs em RDF

Reusar vocabulários 

Reificação também se aplica a LPG para relações n-árias 

How to Create a Knowledge Graph from Data? 

Modelagem -> https://youtu.be/-dZzHgM2950

Schema free é possível mas um esquema pode tornar o KG mais útil 

Linked Data Principles (Tim Bernes Lee) 

Usar vocabulários padronizados como por exemplo Schema.org  

LPG: Modelar propriedades como nós  se for necessário incluir metadados paras as propriedades (relationship properties) e reificação para relacionamentos com aridade > 2

Discussão ao final: semantic search será separada da busca textual?  

Conversão de dados estruturados -> https://youtu.be/tTL-BxlwU-8  

Schema mapping para mapear a fonte de dados para o KG de interesse (como no caso do Lattes2WD): manual, atividade não tem volume para treinamento ML, mapeamento pode ser expresso em alguma linguagem (exemplo Datalog), (semi)automatizar com apoio linguístico para o nome dos atributos, entidades e relações

Mapeamento pode ser feito usando os metadados (nomes de colunas, tabelas, atributos, ...) e também instâncias.

Record Linkage para verificar se dois registros se referem ao mesmo objeto do mundo real: nessa tarefa o volume de dados é grande, blocking and matching (random forest), blocking seriam heurísitcas para reduzir o número de candidatos, active learning é usada para construir a random forest baseada em um conjunto de regras que fazem uso de funções de similaridade simples

How to Create a Knowledge Graph from Text? -> https://youtu.be/XcBCtt30bV8

Tarefas: entity extraction, relation extraction, entity resolution.

Atividades necessárias para Q&A e Raciocínio Senso Comum. 

Language Models (Neural Models): prever qual é a próxima  palavra dada um trecho de frase, muito usadas para autocompletar. Por exemplo

Dado: Os estudantes abriram seus ...
Previsão: livros, notebooks

Formalização 

(single direction) Entrada {x1, ...xn-1} 
                             Resultado P {xn | x1, ..., xn-1}
(bi directional)     Entrada {x1, ...., xk-1}{xk+1, ...., xn} 
                             Resultado P {xk | x1, ...., xk-1, xk+1, ...., xn }

BERT - Bidirectional Encoder Representations from Transformers

Para entity extraction, cada palavra da potencial entidade deve ser taggeada.

Sujeito a ambiguidade (Apple empresa ou fruta, Rio de Janeiro cidade ou estado, ...)

Relation Extraction precisa reconhecer o domain e range das relações nas sentenças

HITL e volume para dados de treinamento são desafios

Exemplo de aplicação Intelligent Textbook (texto + KG): muito interessante para ensino e tem HITL para revisão da construção do KG (mesmo atores da escrita e revisão do texto e um novo papel)

What are some Knowledge Graph Inference Algorithms? -> https://youtu.be/ndldSg0CcHI

Variações de algoritmos de caminhos: shortest path (par de nós ou entre todos os pares de nós do grafo) para identificar a rota ótima para percorrer um conjunto de pontos, encontrar minimum spanning tree (MST) é útil em problemas como planejamento de viagens.

Centrality detection mede a importância dos nós no grafo, várias opções de cálculo: degree centrality (grau de entrada e saída), closeness centrality (nó que é mais próximo de todos os demais nós, pode ser interessante para logisitica), between-ness centrality (nó onde passam a maior parte dos caminhos mais curtos), PageRank (tem explicação e fórmula). 

Community detection: nós de uma comunidade tem mais relações com nós da propria comunidade do que com nós de outras comunidades. Formas de cálculo: connected components, strongly connected components, label propagation and fast unfolding (aka Louvain algorithm), sendo os dois últimos conhecidos como Bottom-up.

Label propagation begins by assigning each node in the graph to a different community. We then arrange the nodes in a random order to update their community as follows. We examine the nodes in the assigned order, and for each node, we examine its neighbors, and set its community to the community shared by a majority of its neighbors. The ties are broken in a unform random manner. The algorithm terminates when each node is assigned to a community that is shared by a majority of its neighbors.

In the fast unfolding algorithm, there are two phases. We initialize each node to be in a separate community. In the first phase, we examine each node and each of its neighbors and evaluate if there would be any overall gain in modularity in placing this node in the same community as a neighbor. A suitable measure to calculate modularity is defined. If there will be no gain, the node is left in its original community. In the second phase of the algorithm, we create a new network in which there is a node corresponding to each community from Phase 1, and an edge between the two nodes if there was an edge between some nodes in their corresponding phase 1 communities. Links between the nodes of the same community in phase 1 lead to self-loops for the node corresponding to their community in Phase 2. Once Phase 2 is completed, the algorithm repeats by applying phase 1 to the resulting graph.

Inferências baseadas em ontologias: Taxonomia e Regras.

Organizar o conhecimento em classes que são relações unárias.
class membership (instance_of), class specialization (subclass_of, transitiveness), disjoint classes, class definition (necessary and sufficient relation values), value restriction (domain, range), inheritance (constraint violation in case of multiple classes) and various inferences that can be drawn using them.

class(male)    
class(female)

instance_of(art,male)    
instance_of(bea,female)

subclass_of(male,person)    
subclass_of(female,person)

instance_of(X,person) & has_hair_color(X,brown)

~instance_of(I,male) :- disjoint(female,male) & instance_of(I,female)
~instance_of(I,female) :- disjoint(female,male) & instance_of(I,male)

Baseado em regras normalmente são regras lógicas em geral.
Conflito de interesse é um exemplo de relação ternária.

What are some High Value Use Cases of Knowledge Graphs?

Ontologia FIBO (Financial Industry Business Ontology) 

How do Users Interact with a Knowledge Graph? -> https://youtu.be/SvPZYKEvwyI

An Example Property Graph Schema 

Visualização de consultas sobre KGs (tabular ou grafo): grafos (nós e arestas) podem ser eficientes para mostrar o esquema mas em caso de instâncias pode ser muito confuso.

Usar símbolos para cada tipo de entidade do KG (o MAS/MAG usa ...) 

Consultas estruturadas: esquema conhecido, quais entidades são alvo da busca, a gramática (opções de consulta) são pré definidas e só permitem consultas mapeadas nessa gramática

Consultas em linguagem natural: parse semântico começa com uma gramática mínima e passa por uma etapa de treinamento, que tem como desafio o problema da massa de dados para treinamento. Acurácia entre 50-60%

Exemplo de aplicação de Busca: Neeva

  • Usou Wikipedia (infobox, imagem, primeiro parágrafo de cada artigo),  Wikidata, OpenStreetMap (reduzindo o número de coordenadas)
  • Não usou GraphDB, sim Key Value Store (Scylla) e JSON Blob da Wikidata (1 hop do QNode)
  • Template para entidades do WD, definem quais predicados serão usados e usou PySpark para converter o JSON WD para o formato da aplicação. 
  • O MAG também usa o primeiro parágrafo de cada artigo para uma explicação sobre o conceito. 
  • Contexto do usuário: IP (localização), histórico de busca. 

How to Evolve a Knowledge Graph? -> https://youtu.be/cQvIsVeYxXQ

O que define uma classe, como por exemplo as constraints, pode mudar com um melhor entendimento do domínio, com a evoluçãodo conceito, etc.... 

Schema Evolution para KG é mais complexo que DB: incluir ou remover classes e superclasses (classes ou instâncias órfãs), incluir ou remover propriedades, qual o impacto dessas operações para as instâncias? 

Visões para KG: pouco explorado

Sistemas baseados em regras: Como manter o rastreamento das informações inferidas nos KGs ainda em aberto

How do Knowledge Graphs Relate to AI?

Esse seminário está em outro post pq tem duas palestras interessantes no mesmo vídeo


Comentários

Postagens mais visitadas deste blog

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

truth makers AND truth bearers - Palestra Giancarlo no SBBD

Dando uma googada https://iep.utm.edu/truth/ There are two commonly accepted constraints on truth and falsehood:     Every proposition is true or false.         [Law of the Excluded Middle.]     No proposition is both true and false.         [Law of Non-contradiction.] What is the difference between a truth-maker and a truth bearer? Truth-bearers are either true or false; truth-makers are not since, not being representations, they cannot be said to be true, nor can they be said to be false . That's a second difference. Truth-bearers are 'bipolar,' either true or false; truth-makers are 'unipolar': all of them obtain. What are considered truth bearers?   A variety of truth bearers are considered – statements, beliefs, claims, assumptions, hypotheses, propositions, sentences, and utterances . When I speak of a fact . . . I mean the kind of thing that makes a proposition true or false. (Russe...

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