Pular para o conteúdo principal

KGTK @ VM029 - NTriples extraída do Allegro - parte I

Instalado na VM029 com os passos:

Installing KGTK from pip

Before you start: Our installation will use a conda environment.

(Instalei com Miniconda3, caminho /home/cloud-di/miniconda3)

    Set up your own conda environment:

conda create -n kgtk-env python=3.7
conda activate kgtk-env

Note: Installing Graph-tool is problematic on python 3.8 and out of a virtual environment. Thus: the advised installation path is by using a virtual environment.

    Install: pip install kgtk

You can test if kgtk is installed properly now with: kgtk -h.

    Install graph-tool: conda install -c conda-forge graph-tool.

Testar

kgtk -h
kgtk import-ntriples -h
cd kgtk
kgtk import-wordnet -o wordnet.tsv

Exportação dos dados do lattes que estão no Allegro (VM032) - o arquivo gerado tem 750M

~/agraph-7.0.3$ ./agtool export -o ntriples "<lattes-professores-mai21>+<lattes-professores2-mai21>" /home/cloud-di/etl/output/lattes-prof-mai21.nt

Importação dos dados do lattes de NTriples para KGTK - o arquivo gerado tem 571M

conda activate kgtk-env

kgtk import-ntriples -i /home/cloud-di/lattes-data/input/lattes-prof-mai21.nt -o /home/cloud-di/kgtk/lattes-prof.tsv --reject-file /home/cloud-di/kgtk/lattes-prof.err --namespace-file prefix.tsv

Rejeitadas

Todas as arestas com langtag (@pt ou @en) foram rejeitadas, nenhuma biografia foi convertida. Abri uma issue

kgtk validate -i lattes-prof.tsv

Análise estatística do grafo

kgtk deduplicate -i lattes-prof.tsv -o lattes-prof2.tsv -v > lattes-dpk.log

Duplicidades

Read 5.697.105 records, wrote 5.649.736 records. ... aproximadamente 50 mil removidas

kgtk graph_statistics --log graph_stat_prof2.log --pagerank --statistics-only --degrees --hits -v -i lattes-prof2.tsv -o lattes-stat.tsv

kgtk sort -c node1 -i lattes-stat.tsv -o lattes-stat-sorted.tsv

Comentários sobre o log

It has 1.990.267 nodes and 5.649.736 edges ... quase 3x, próximo a média do grau

###Degrees:
in degree stats: mean=2.838682, std=0.342223, max=1
out degree stats: mean=2.838682, std=0.008119, max=1
total degree stats: mean=5.677365, std=0.342312, max=1

###Top relations: ... rdf:first e rdf:rest são decorrentes de reificação (ordem dos autores)
rdf:type    1155494
foaf:name    676062
foaf:citationName    633313
dc:creator    529267
rdf:first    510786
rdf:rest    510786

skos:prefLabel    260624
dc:title    177882
foaf:identifier    147196
skos:broader    144904

###PageRank... rdf:nil é decorrente de reificação (ordem dos autores)
Max pageranks
710    foaf:Person    0.067649
41    cnpq:grandeArea    0.011384
30    rdf:nil    0.010474
39    cnpq:Area    0.007176
6    cnpq:subArea    0.005457

###HITS
... 8374950313063279 é o ID de Maria Clara Lucchetti Bingemer
... 9705170158456125 é o ID de Jaime Tupiassú Pinho de Castro
... o lattes de Mariza Tavares Figueira é 7674534956269436

HITS hubs
710    foaf:Person    0.999587
1576020    "8374950313063279"    0.001845
1598489    "Maria Clara Lucchetti Bingemer"    0.001735
1888267    "Mariza Tavares Figueira"    0.001641
1568794    "9705170158456125"    0.001614
HITS auth
1915144    lattes:8374950313063279#author-8374950313063279    0.001246
1643264    lattes:1860929687731797#author-1860929687731797    0.001246
1668227    lattes:2491891766759477#author-2491891766759477    0.001246
1595250    lattes:0818273339577951#author-0818273339577951    0.001246
1881308    lattes:7476904353230115#author-7476904353230115    0.001246

Estatísticas das demais classes

bibo:Article    vertex_in_degree        57988   bibo:Article-vertex_in_degree-7769665
bibo:Book       vertex_in_degree        12041   bibo:Book-vertex_in_degree-1615
bibo:Chapter    vertex_in_degree        8571    bibo:Chapter-vertex_in_degree-7771605
bibo:Conference vertex_in_degree        29292   bibo:Conference-vertex_in_degree-75
bibo:Journal    vertex_in_degree        22217   bibo:Journal-vertex_in_degree-760
bibo:Periodical vertex_in_degree        6479    bibo:Periodical-vertex_in_degree-2050
bibo:Proceedings        vertex_in_degree        29292   bibo:Proceedings-vertex_in_degree-135
bibo:Thesis     vertex_in_degree        17451   bibo:Thesis-vertex_in_degree-7770000
vivo:FacultyMember      vertex_in_degree        1030   

kgtk connected-components -i lattes-prof2.tsv -o lattes-conn.tsv

kgtk graph_statistics --log graph_stat_conn.log --pagerank --statistics-only --degrees --hits -v -i lattes-conn.tsv -o lattes-conn-stat.tsv

kgtk sort -c node2 -i lattes-conn.tsv -o lattes-conn-sorted.tsv

Comentários sobre o log

###PageRank

... componente CLUSbhXqpneKh5EhKsqsqoN/cw== tem grau de entrada 1990237, ou seja, quase todos os nós do grafo estão na mesma cc

Max pageranks
28    CLUSbhXqpneKh5EhKsqsqoN/cw==    0.459448
19    CLUSQ1ga6O0qVLdWQ8ls+GZu4A==    0.000001
22    CLUSYBdf46xwQO3SV+MJNuc7/w==    0.000001
1990272    CLUSp1DQefhDpBK+OVs32Dygow==    0.000001
10    CLUSAjpzxTEI3vMAW2deRr0L9g==    0.000001

Reificação

kgtk add-id -i lattes-prof2.tsv / unreify-values --trigger-label rdf:type --trigger-node2 cnpq:Area    --value-label skos:broader --old-label skos:broader -o lattes-prof3.tsv

kgtk add-id -i lattes-prof2.tsv / unreify-values --trigger-label rdf:rest --trigger-node2 rdf:nil   --value-label bibo:authorList --old-label bibo:authorList -o lattes-prof3.tsv

Comentários 

O unreify-rdf-statments e unreify-values não fizeram nenhum efeito ou eu não entendi como usar !!! 

Análise de caminhos do grafo 

kgtk add-id -i lattes-prof2.tsv -o lattes-prof3.tsv

kgtk paths --path-file pairs-lattes-prof.tsv --path-source source --path-target target -i lattes-prof3.tsv -o lattes-prof3-path-undirected.tsv --statistics-only --undirected
kgtk paths --path-file pairs-lattes-prof.tsv --path-source source --path-target target -i lattes-prof3.tsv -o lattes-prof3-path.tsv --statistics-only

kgtk reachable-nodes -i lattes-prof3.tsv --root lattes:6075905438020841 -o lattes-prof2-reach-bfs-undirected.tsv --show-properties True --breadth-first True --undirected
kgtk reachable-nodes -i lattes-prof3.tsv --root lattes:6075905438020841 -o lattes-prof2-reach-nobfs-undirected.tsv --show-properties True --breadth-first False --undirected

Comentários sobre o resultado

Somente na opção não direcionado é possível chegar do nó do lattes do Sérgio ao nó do lattes do professor Herman e vice-versa. O lattes de cada professor não alcança as publicações na opção direcionado pq o predicado usado foi o isReferencedBy

kgtk filter -i lattes-prof2.tsv -p " ; dcterms:isReferencedBy ; " -o lattes-prof2-Refs.tsv
** abrir o arquivo e trocar node1 e node2
sed -i 's/dcterms:isReferencedBy/dcterms:references/g' lattes-prof2-Refs.tsv
kgtk cat -i lattes-prof2.tsv lattes-prof2-Refs.tsv / add-id -o lattes-prof3.tsv

Comentários sobre a ação

Criei na "força bruta" uma aresta do tipo CV Lattes - dcterms:references > Publicação. Sugeri uma nova funcionalidade para que esse tipo de operação (criação de arestas com base em propriedades inversas que permitam a análise bidirecional das relações)

kgtk reachable-nodes -i lattes-prof3.tsv --root lattes:6075905438020841 -o lattes-prof3-reach-bfs.tsv --show-properties True --breadth-first True
kgtk reachable-nodes -i lattes-prof3.tsv --root lattes:6075905438020841 -o lattes-prof3-reach-nobfs.tsv --show-properties True --breadth-first False

kgtk reachable-nodes -i lattes-prof3.tsv --root lattes:6075905438020841#author-6075905438020841 -o lattes-author-reach-nobfs.tsv --show-properties True --breadth-first False

Comentários sobre o resultado

As publicações, conferências, veículos, etc ... passaram as ser alcançaveis com o grafo direcionado mas o autor não alcança as publicações pq o predicado é o dc:creator



Comentários

  1. Fui informado que já corrigiram e esclareceram seus pedidos/comentários.

    ResponderExcluir
  2. Na verdade, descobriram que a lista de language tags do RDF é ligeiramente diferente da lista do WD, que foi a que eles usaram inicialmente. Estarão atualizando a lista.
    Em rel a props inversas e simétricas, o Pedro indicou como vc pode materializar as arestas correspondentes com queries Kypher. A filosofia deles é n aumentar as features se for possivel obter o mesmo resultado usando as funcionalidades já existentes.
    Em rel. ao reify e unreify, o Craig (o engenheiro de software que é responsável pela implementação dos comandos) comentou que acha que foi má compreensão sua do que o comando faz, e ia melhorar a documentação. Mas se vc precisar, pode se comunicar com ele que ele está ciente e vai ajudar (é gente finissima).
    N entendi porque o autor n é alcançável... faltou a inversa de dc:creator?
    Uma observação - talvez seja mais prático quebrar estes post longos em vários pedaços, para que a gente consiga fazer comentários mais próximo do ponto relevante no texto...

    ResponderExcluir
    Respostas
    1. Sobre "Em rel a props inversas e simétricas, o Pedro indicou como vc pode materializar as arestas correspondentes com queries Kypher. A filosofia deles é n aumentar as features se for possivel obter o mesmo resultado usando as funcionalidades já existentes." ...... eu vi a atualização deles lá no GitHub e fiz novos testes usando o Kypher como ele orientou. Funcionou perfeitamente, coloquei nesse post -> https://versant-pesquisadedoutorado.blogspot.com/2021/05/inferencia-de-arestas-com-kgtk-issue-392.html

      Sobre "N entendi porque o autor n é alcançável... faltou a inversa de dc:creator?" ..... esse predicado não tem inversa no vocabulário mas não é um problema em si, é só uma observação mesmo pq um teste eu usei o nó do lattes como root e em outro eu usei o nó do professor/pesquisador.

      Quantos aos demais, está empilhado aqui comigo para rever e testar. A medida que for progredindo vou atualizando.

      Muito obrigada pela força !!! Tô empolgada !!!

      Excluir
    2. Testei também a atualização dos language tags e funcionou corretamente. Registrei aqui -> https://versant-pesquisadedoutorado.blogspot.com/2021/05/kgtk-import-ntriples-discards-triples.html e comentei na issue do GitHub

      Excluir
  3. Daniel, a ideia de quebrar postagens para assuntos "encapsulados" ou "autocontidos" é boa mesmo, se a Veronica conseguir OK.

    Por outro lado, eu uso este esquema com meus alunos de graduação e pós há muito tempo e mesmo nestes casos eu consigo comentar tranquilamente, copiando os trechos relevantes no comentário. Por exemplo:

    "Uma observação - talvez seja mais prático quebrar estes post longos em vários pedaços, para que a gente consiga fazer comentários mais próximo do ponto relevante no texto..."
    --- Sim, concordo com o Daniel, seria bem mais prático! :-)

    ResponderExcluir
    Respostas
    1. Já fiz uma quebra nesse aqui, tirei a parte de embeddings e vou deixar em outro post quando terminar de executar. Vou procurar segmentar mais os posts para a dinâmica de interação ficar mais focada.

      Excluir

Postar um comentário

Sinta-se a vontade para comentar. Críticas construtivas são sempre bem vindas.

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

Knowledge Graph Embedding with Triple Context - Leitura de Abstract

  Jun Shi, Huan Gao, Guilin Qi, and Zhangquan Zhou. 2017. Knowledge Graph Embedding with Triple Context. In Proceedings of the 2017 ACM on Conference on Information and Knowledge Management (CIKM '17). Association for Computing Machinery, New York, NY, USA, 2299–2302. https://doi.org/10.1145/3132847.3133119 ABSTRACT Knowledge graph embedding, which aims to represent entities and relations in vector spaces, has shown outstanding performance on a few knowledge graph completion tasks. Most existing methods are based on the assumption that a knowledge graph is a set of separate triples, ignoring rich graph features, i.e., structural information in the graph. In this paper, we take advantages of structures in knowledge graphs, especially local structures around a triple, which we refer to as triple context. We then propose a Triple-Context-based knowledge Embedding model (TCE). For each triple, two kinds of structure information are considered as its context in the graph; one is the out...

KnOD 2021

Beyond Facts: Online Discourse and Knowledge Graphs A preface to the proceedings of the 1st International Workshop on Knowledge Graphs for Online Discourse Analysis (KnOD 2021, co-located with TheWebConf’21) https://ceur-ws.org/Vol-2877/preface.pdf https://knod2021.wordpress.com/   ABSTRACT Expressing opinions and interacting with others on the Web has led to the production of an abundance of online discourse data, such as claims and viewpoints on controversial topics, their sources and contexts . This data constitutes a valuable source of insights for studies into misinformation spread, bias reinforcement, echo chambers or political agenda setting. While knowledge graphs promise to provide the key to a Web of structured information, they are mainly focused on facts without keeping track of the diversity, connection or temporal evolution of online discourse data. As opposed to facts, claims are inherently more complex. Their interpretation strongly depends on the context and a vari...