+ - 0:00:00
Notes for current slide
Notes for next slide

Geração e avaliação de pares questão-sparql

Jessica Sousa

Ivan Pereira

PUC-Rio

2019-07-09


Geração e avaliação de pares questão-sparql

com o QApedia

Get Started

Questões de pesquisa

  • Conseguimos realizar uma geração semi-automática de pares questões-sparql para a língua portuguesa

Questões de pesquisa

Questões de pesquisa

  • Conseguimos realizar uma geração semi-automática de pares questões-sparql para a língua portuguesa

  • Quais tipos de melhorias podemos inserir na metodologia de geração do dataset

Questões de pesquisa

  • Conseguimos realizar uma geração semi-automática de pares questões-sparql para a língua portuguesa

  • Quais tipos de melhorias podemos inserir na metodologia de geração do dataset

    • Realizamos a inserção de ruídos no dataset com intuito de melhorar o aprendizado.

Questões de pesquisa

  • Conseguimos realizar uma geração semi-automática de pares questões-sparql para a língua portuguesa

  • Quais tipos de melhorias podemos inserir na metodologia de geração do dataset

    • Realizamos a inserção de ruídos no dataset com intuito de melhorar o aprendizado.
  • O quão bem os modelos de aprendizado de máquina realizam a predição das sparqls

Questões de pesquisa

  • Conseguimos realizar uma geração semi-automática de pares questões-sparql para a língua portuguesa

  • Quais tipos de melhorias podemos inserir na metodologia de geração do dataset

    • Realizamos a inserção de ruídos no dataset com intuito de melhorar o aprendizado.
  • O quão bem os modelos de aprendizado de máquina realizam a predição das sparqls

    • Utilizamos o BLEU score para avaliar a qualidade de predição.

Introdução

Introdução

  • Base de conhecimento do DBpedia:
    • Informações estruturadas da Wikipédia
    • Dados fornecidos seguindo os princípios da Linked Data propostos por Tim Berners-Lee:
    1. Use Uniform Resource Identifier (URIs) para nomear para coisas
    2. Use HTTP URIs para que as pessoas possam procurar esses nomes.
    3. Quando alguém procura um URI, forneça informações úteis, usando os padrões (RDF*, SPARQL)
    4. Inclua links para outros URIs. Para que eles possam descobrir mais coisas.

Introdução

  • Base de conhecimento do DBpedia:
    • A versão do DBpedia 2014 consiste em 3 bilhões de informações (triplas RDF)
    • O DBpedia RDF Data Set é hospedado e publicado usando o OpenLink Virtuoso
    • A infra-estrutura Virtuoso fornece acesso aos dados RDF da DBpedia por meio de um endpoint SPARQL

Fig. 1: Virtuoso SPARQL Query Editor

Introdução

# prefix declarations
# nomeia uma URI de forma a abreviar
PREFIX foo: <http://example.com/resources/>
...
# dataset definition
# Indica os grafos RDFS consultados
FROM ...
# result clause
# Indica a informação a ser retornada da consulta
SELECT ...
# query pattern
# Especifica o que consultar no conjunto de dados
WHERE {
...
}
# query modifiers
# reorganiza os dados da consulta
# pode limitar a quantidade de resultados, reordenar, etc.
ORDER BY ...

Introdução

  • Question Answering (QA) corresponde a uma área em ciência da computação que se encontra dentro dos campos de Natural Language Processing (NLP) e Information Retrieval (IR).
  • Knowledge Base Question Answering (KBQA):
    • QALD-9 - construída por especialistas que mapeiam uma linguagem natural para conversões SPARQL baseadas na base de conhecimento DBpedia 2016-10 (Ngomo, 2018).

Fig. 2: Arquitetura geral de um sistema de questão-resposta. (Ray, Al Chalabi, and Shaalan, 2015)

Conseguimos realizar uma geração semi-automática de pares questões-sparql para a língua portuguesa?

Fundamentação

Arquitetura da Neural SPARQL Machine (Soru, Marx, Moussallem, Publio, Valdestilhas, Esteves, and Neto, 2017):

  • Generator - A partir de um conjunto de templates de consultas são gerados o conjunto de dados de treino.
  • Learner - O aprendendor pegas as entradas em linguagem natural e gera uma sequência que codifica a SPARQL query.
  • Interpreter - Realiza a decodificação da SPARQL query.

Fig. 3: Arquitetura de uma Neural SPARQL Machine na fase de treinamento (esquerda) e na fase de predição (direita). (Soru, Marx, Moussallem, et al., 2017)

Fundamentação

where is <A> located in?
-> select ?a where { <A> dbo:location ?a }
what are the <A> northernmost <B>?
-> select ?a where { ?a rdf:type <B> . ?a geo:lat ?b }
order by desc(?b) limit <A>
was <A> finished before <B>?
-> ask where { <A> dbp:complete ?a . FILTER(?a <= <B>) }
  • As lacunas são definidas como <A> e <B> e estão presentes tanto na linguagem natural quanto na sparql.

  • São usados no máximo três entidadades, as geração do dataset é limitado a língua inglesa e ao endpoint da DBpedia1.

[1] Datasets disponíveis no FigShare e projeto disponível no repositório ASKW/NSpM.

QApedia

O QApedia realiza a geração de um conjunto de pares questão-sparql a partir do endpoint especificado. Além de permitir ao usuário trabalhar com o idioma desejado. Para isso necessitamos das seguintes informações:

  • Endpoint SPARQL — Informado apenas uma vez, indica o endpoint sparql utilizado para realização as consultas.
  • Language — Informado apenas uma vez, indica o idioma utilizado nas perguntas.
  • Template query — Arquivo csv contendo a query, a question e a generator_query.
  • SPARQL prefixes — Arquivo txt contendo a lista de prefixos utilizados pelas consultas presentes no arquivo de template.

QApedia

A Template query utilizado pelo QApedia contém:

  • question (pergunta) — pergunta em linguagem natural
  • query — resposta da pergunta em formato de SPARQL
  • generator query (consulta geradora) — consulta que gera as possíveis opções que podem ser utilizadas para preencher as lacunas.

QApedia

A Template query utilizado pelo QApedia contém:

  • question (pergunta) — pergunta em linguagem natural
  • query — resposta da pergunta em formato de SPARQL
  • generator query (consulta geradora) — consulta que gera as possíveis opções que podem ser utilizadas para preencher as lacunas.
    question query template
    o <A> é um manga? ask where { <A> dbo:type dbr:Manga} select ?a where { ?a dbo:type dbr:Manga}
    <A> é autor de <B>? ask where {<B> dbo:author <A>} select ?a ?b where {?a dbo:author ?b}
    <A> e <B> nasceram em <C>? ask where { <A> dbo:birthPlace <C>. <B> dbo:birthPlace <C>.} select ?a ?b ?c where { ?a dbo:birthPlace ?c. ?b dbo:birthPlace ?c.}

    Tab. 1: Template utilizado pelo QApedia.

Visão Geral

Fig. 4: Visão geral da biblioteca QApedia.

Dataset

  • Poucos datasets de QA sobre uma base de conhecimento disponíveis
  • Utilizando a DBpedia os mais famosos são o QALD e o LC-QuAD.
  • Soru, Marx, Moussallem, et al. (2017) construíram um conjunto de templates com base nesses dois datasets.
  • Para o nosso trabalho, adaptamos mil perguntas desse conjunto para a língua portuguesa.

Tab. 2 Template utilizado para gerar os pares questões-sparql.

Quais tipos de melhorias podemos inserir na metodologia de geração do dataset?

Aumento do dataset

Com o objetivo de enriquecer o dataset aplicamos algumas operações disponíveis na biblioteca nlpaug2. A biblioteca possui as seguintes funcionalidades:

  • Caractere: OCR Augmenter, QWERTY Augmenter e Random Character Augmenter
  • Palavra: WordNet Augmenter, word2vec Augmenter, GloVe Augmenter, fasttext Augmenter, BERT Augmenter, Random Word Character
  • Fluxo: Aumento Sequencial, às vezes Augmentation

[2] Disponível no PyPI.

Aumento do dataset

As operações de aumento de carecteres fazem:

  • Substituição de caracteres por similares (OCRAug).

    Fig. 5: Substituição por OCR.3

Aumento do dataset

As operações de aumento de carecteres fazem:

  • Substituição de caracteres por similares (OCRAug).

    Fig. 5: Substituição por OCR.3

  • Substituição por caracteres próximos no teclado(QWERTYAug)

    Fig. 6: Substituição por proximidade.4

Aumento do dataset

As operações de aumento de carecteres fazem:

  • Substituição de caracteres por similares (OCRAug).

    Fig. 5: Substituição por OCR.3

  • Substituição por caracteres próximos no teclado(QWERTYAug)

    Fig. 6: Substituição por proximidade.4

  • Substituição de caracteres aleatoriamente (RandomCharAug)

Aumento do dataset

As operações de aumento de palavras utilizadas foram feitas com auxílio de outro script e permite:

  • A substituição de uma palavra pelo seu sinônimo
  • Trocar palavras de lugares aleatoriamente
  • Inserir palavras aleatoriamente
  • Remover palavras aleatoriamente

Fig. 7: Técnicas de aumento utilizando palavras.5

[3] A imagem foi retirada da postagem Data Augmentation library for text.

[4] Retirado do Towards of Data Science

Aumento do dataset

import basic_augmentation as ba
from nltk.corpus import stopwords
import nltk
import pandas as pd
stopwords = stopwords.words("portuguese")
texto = "|A| foi local de nascimento de |B| e |C|?"
exemplos = {"original": texto,
# Pega uma palavra aleatória e substituí pelo seu sinônimo
"synonym_replace":ba.do_synonym_replacement(texto, stopwords),
# Realiza inserção aleatória 2x
"random_insertion": ba.do_random_insertion(texto, 2, stopwords),
# Realiza a troca entre duas palavras 1 vez
"random_swap": ba.do_random_swap(texto, 1),
# Remove com probabilidade de 20%
"random_deletion": ba.do_random_deletion(texto, 0.2)}
exemplos = pd.DataFrame(exemplos.items(), columns=['Operação', 'Resultado'])

Aumento do dataset

O quão bem os modelos de aprendizado de máquina realizam a predição das sparqls?

Modelo de aprendizado

  • Nós utilizamos redes neurais recorrentes, técnica de sucesso na área de Deep learning para processamento de texto
  • O Pacote NMT feito em tensorflow fornece a rede para treinamento
  • A tarefa de tradução é a mais comumente explorada
  • Bleu Score é utilizado como métrica de avaliação

RNN

Fig. 8: Arquitetura Encoder-decoder

Fig. 9: Neural machine translation

RNN

Fig. 10: Greedy decoding

Bleu

  • Um algoritmo para avaliar a qualidade do texto que foi traduzido de uma linguagem natural para outra.

Bleu

  • Um algoritmo para avaliar a qualidade do texto que foi traduzido de uma linguagem natural para outra.
  • Qualidade é considerada de ser a correspondência entre a saída do modelo e a de um humano
    • o mais próximo a tradução do modelo é de um humano profissional, melhor é a avaliação da métrica

Bleu

  • Um algoritmo para avaliar a qualidade do texto que foi traduzido de uma linguagem natural para outra.
  • Qualidade é considerada de ser a correspondência entre a saída do modelo e a de um humano
    • o mais próximo a tradução do modelo é de um humano profissional, melhor é a avaliação da métrica
  • A pontuação é calculada para segmento traduzidos ao compara-los com um conjunto de traduções de boa qualidade. A média das pontuações sobre o corpus inteiro dão uma estimitiva da qualidade da tradução.

Bleu

  • Um algoritmo para avaliar a qualidade do texto que foi traduzido de uma linguagem natural para outra.
  • Qualidade é considerada de ser a correspondência entre a saída do modelo e a de um humano
    • o mais próximo a tradução do modelo é de um humano profissional, melhor é a avaliação da métrica
  • A pontuação é calculada para segmento traduzidos ao compara-los com um conjunto de traduções de boa qualidade. A média das pontuações sobre o corpus inteiro dão uma estimitiva da qualidade da tradução.
  • A saída do Bleu é sempre um número entre 0 e 1, indicando oquão similar é o texto candidato aos textos de referência.
    • Geralmente humanos não obtém pontuação 1
    • A pontuação 1 não indica necessariamente que o resultado é o melhor possível

Experimentos

  • Sem augmentation
  • Treino Loss

.

Fig. 11: Experimentos 1.

Experimentos

  • BLEU

    .

    Fig. 11: Experimentos 2.

Predição

src: Quantos arquitetos existem que fizeram algo usado nos Jogos Europeus de 2015?
ref: SELECT DISTINCT COUNT(?uri) where { ?x <http://dbpedia.org/ontology/tenant>
dbpedia:2015_European_Games . ?x <http://dbpedia.org/property/architect> ?uri }
nmt: SELECT DISTINCT COUNT(?uri) where { ?x <http://dbpedia.org/ontology/tenant>
dbpedia:2015_Pan_American_Games . ?x <http://dbpedia.org/property/architect> ?uri }
src: Quais prêmios foram concedidos a William H. McNeill e John Crowe Ransom?
ref: SELECT DISTINCT ?uri where { dbpedia:William_H.McNeill(historian)
<http://dbpedia.org/property/awards> ?uri . dbpedia:John_Crowe_Ransom
<http://dbpedia.org/ontology/award> ?uri }
nmt: SELECT DISTINCT ?uri where { dbpedia:William_H.McNeill(historian)
<http://dbpedia.org/property/awards> ?uri . dbpedia:Ernest_J._Gaines
<http://dbpedia.org/ontology/award> ?uri }

Trabalhos futuros

  • Fazer o Deploy do modelo treinado, para que possa ser utilizado por humanos como serviço (Via API ou Sistema web)
  • Testar outras possíveis melhorias
    • encoding
    • novas formas de augmentation de texto
    • outros modelos de aprendizado (BERT)

Referências

[1] N. Ngomo. "9th Challenge on Question Answering over Linked Data (QALD-9)". In: language 7 (2018), p. 1.

[2] S. Ray, H. Al Chalabi, and K. Shaalan. "Semantic Based Query Expansion for Arabic Question Answering Systems". In: abr. 2015. DOI: 10.1109/ACLing.2015.25.

[3] T. Soru, E. Marx, D. Moussallem, et al. "SPARQL as a Foreign Language". In: 2017. URL: http://w3id.org/neural-sparql-machines/soru-marx-semantics2017.html.

[4] T. Soru, E. Marx, A. Valdestilhas, et al. "Neural Machine Translation for Query Construction and Composition". In: 2018. URL: https://arxiv.org/abs/1806.10478.

Thanks!

Slides criados via o pacote R xaringan.

Slides: Disponíveis em http://bit.ly/slides-INF2420


Geração e avaliação de pares questão-sparql

com o QApedia

Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
Number + Return Go to specific slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow