construção de um engenho de busca para entidadestg/2019-1/tg_cc/tg_tpshc2.pdf · 2019. 7. 14. ·...

34
Universidade Federal de Pernambuco Centro de Informática Graduação em Ciência da Computação Construção de um Engenho de Busca para Entidades Túlio Paula e Silva de Holanda Cavalcanti Trabalho de Graduação Recife 03 de Julho de 2019

Upload: others

Post on 17-Nov-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

Universidade Federal de PernambucoCentro de Informática

Graduação em Ciência da Computação

Construção de um Engenho de Busca paraEntidades

Túlio Paula e Silva de Holanda Cavalcanti

Trabalho de Graduação

Recife03 de Julho de 2019

Page 2: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

Universidade Federal de PernambucoCentro de Informática

Túlio Paula e Silva de Holanda Cavalcanti

Construção de um Engenho de Busca para Entidades

Trabalho apresentado ao Programa de Graduação em Ci-ência da Computação do Centro de Informática da Univer-sidade Federal de Pernambuco como requisito parcial paraobtenção do grau de Bacharel em Ciência da Computação.

Orientador: Luciano de Andrade Barbosa

Recife03 de Julho de 2019

Page 3: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

Resumo

Engenhos de busca tradicionais não são muito eficientes em recuperar informações sobre enti-dades. Isso ocorre devido ao fato deles trabalharem com consultas textuais, buscando palavrasespecíficas em documentos. Para resolver esse problema, surgiram os engenhos de busca paraentidades, que devido à sua forma de indexação e busca diferenciadas, os torna capazes derecuperar propriedades relevantes sobre a entidade buscada.

A Wikipédia é uma das maiores fontes de conhecimento da internet, contendo milhares dedocumentos que falam sobre os mais diversos conteúdos. Devido ao seu grande tamanho e suadiversidade de conteúdos, a Wikipédia é uma ótima base de conhecimento para engenhos debusca. Ela também é uma ótima base de conhecimento para engenho de busca para entidades,pois cada documento representa uma entidade com suas propriedades e valores. Esse trabalho,portanto, se propõe a construir um engenho de busca para entidades utilizando a Wikipédiacomo base de conhecimento.

Palavras-chave: Recuperação de Informação. Base de Conhecimento. Engenho de Busca.Busca por Entidade. Wikipédia. DBpedia.

iii

Page 4: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

Abstract

Traditional search engines are not very effective at retrieving information about entities. This isdue to the fact that they work with textual queries, searching for specific words in documents.To solve this problem, entity search engines have emerged, which due to their differentiatedform of indexing and searching makes them able to retrieve relevant properties about the sear-ched entity.

Wikipedia is one of the largest sources of knowledge on the Internet, containing thousandsof documents that express the most diverse contents. Due to its large size and diversity ofcontent, Wikipedia is a great knowledge base for search engines and for entity search engineas well, because each document represents an entity with its properties and values. This work,therefore, proposes to build a entity search engine using Wikipedia as the knowledge base.

Keywords: Information Retrieval. Knowledge Base. Search Engine. Entity Search. Wikipe-dia. DBpedia.

iv

Page 5: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

Sumário

1 Introdução 1

2 Fundamentos 22.1 Recuperação de Informação 22.2 Engenhos de Busca 3

2.2.1 Indexação 42.2.2 Consulta 7

2.3 DBpedia 7

3 Extração dos dados e criação dos Índices 83.1 Extração dos dados 83.2 Índices 10

3.2.1 Índice Category 103.2.2 Índices infobox 11

4 Sistema de Busca para Entidades 134.1 Aplicação Cliente 13

4.1.1 Ranking 144.1.2 Geolocalização das entidades 18

5 Caso de Uso 19

6 Conclusão 246.1 Trabalhos futuros 24

6.1.1 Criar o índice de referências 246.1.2 Buscas por tipos não textuais 24

v

Page 6: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

Lista de Figuras

2.1 Principais tópicos de Recuperação de Informação e design de Engenhos de Busca. 42.2 Três passos para criação do índice invertido. Primeiramente listar todos os ter-

mos por documento (coluna da esquerda), depois ordenar em ordem alfabéticapor termo (coluna do meio), e finalmente agrupar os termos iguais, mapeadopara uma lista de documentos que o termo se encontra (coluna da direita). 5

2.3 Exemplo de índice invertido posicional, onde o além de listar os documentosque o termo ocorre, lista-se também frequência ocorrida no documento e aposição do texto onde o documento ocorreu. 6

3.1 Tripla RDF do documento article_categories_en.ttl 93.2 Exemplo de um Wikicode (esqueda) e o seu conteúdo renderizado na página

da Wikipédia (direita). No campo número 1 vemos o infobox renderizado napágina web. No campo 2, é visto o template do infobox. Nos campos 3 e 4,pode-se ver as propriedades do infobox e o valor dessa propriedade, respectiva-mente. O mapeamento entre propriedade e valor, visto no campo 5, é tambémchamado de tupla. 9

3.3 Schema do índice category 113.4 Exemplo do índice category 113.5 Nomes mais populares de propriedades de infoboxes da Wikipédia. 123.6 Schema do índice infobox 123.7 Exemplo do índice infobox 12

4.1 Diagrama de sequencia do sistema 144.2 Função de consulta de categorias 154.3 Função de consulta de entidades 154.4 Função de listagem de todos os infoboxes pertencentes a uma das entidades

listadas 164.5 Função que lista as 5 propriedades mais frequentes da categoria 164.6 Função de consulta de entidade a partir de suas propriedades. 17

5.1 Página inicial 195.2 Campo de busca por categorias preenchido com oil 205.3 Resultado da busca por categorias contendo oil no nome 215.4 Pagina inicial da busca por entidades da categoria Oil fields in Norway 215.5 Campos da consulta de entidade preenchidos 225.6 Resultado da busca por entidades 22

vi

Page 7: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

LISTA DE FIGURAS vii

5.7 Pagina do Wikipédia direcionada pela entidade da lista de resultados 235.8 Propriedades da entidade selecionada no mapa 23

Page 8: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

CAPÍTULO 1

Introdução

Por conta da grande quantidade de dados e informações existentes na Web, é necessária a cri-ação de ferramentas de filtro e de busca desses dados. Por essa razão, surgiram engenhos ouferramentas de busca como, por exemplo, o Google, Yahoo e Bing. Engenhos de busca sãoferramentas práticas de recuperação de informação em coleções de texto. Essas ferramentaspodem ser usadas de diversas formas como, por exemplo, pesquisas na web e buscas por arqui-vos dentro do computador.

Para um engenho de busca funcionar, ele precisa passar por uma série de procedimentos.Usando busca na Web como exemplo, a ferramenta tem que acessar os sites (conhecido comoweb crawl), baixar seus conteúdos, e colocá-los numa base de conhecimento, um índice - umaestrutura de dados que aprimora a velocidade da consulta. Com o índice formado, a ferramentaestá pronta para ser utilizada. O engenho de busca, então, recebe os dados da busca do usuário(query ou consulta), busca essas informações no índice, e então recupera os dados ranqueadospor similaridade em relação às informações fornecidas pelo usuário.

Uma grande fonte de documentos e informações na internet é a Wikipédia, a maior enciclo-pédia online do mundo. Sendo uma coleção de entidades, que identifica unicamente lugares,pessoas, organizações, etc., pode-se encontrar artigos falando sobre quase tudo existente noplaneta. Por ela ser uma ótima fonte de informações e conhecimento, existem muitas ferra-mentas computacionais que trabalham em cima desses dados e informações, o DBpedia é umadelas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo é extrair con-teúdo estruturado das informações da Wikipédia. Permitindo aos usuários realizar consultassobre o conteúdo da Wikipédia de forma similar a consultas de banco de dados [4].

O objetivo deste trabalho é criar uma ferramenta de busca por entidades. Para isso usaremoscomo base de conhecimento os infoboxes das entidades da Wikipédia. A ferramenta permitiráque o usuário inicialmente escolha um domínio para a busca, e em seguida faça consultas apartir dos atributos das entidades pertencentes ao domínio escolhido.

1

Page 9: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

CAPÍTULO 2

Fundamentos

2.1 Recuperação de Informação

Buscar por informação na web é, para muita gente, uma atividade diária. Por isso, pessoasestão trabalhando na área de Recuperação de Informação para melhorar as buscas tornando-asmais fáceis e rápidas.

O termo "informação" é bem genérico, e recuperação de informação inclui trabalho emdiferentes tipos de informação e uma variedade de aplicações relacionadas à pesquisa. O pri-meiro foco na área, desde 1950, foi em documentos de texto [19]. Emails, livros, páginas web,notícias de jornal são alguns dos muitos exemplos de documentos. Todos esses documentostêm algum nível de estruturação, como: título, autor, data, e outras informações abstratas as-sociadas ao conteúdo. Os elementos dessa estrutura são chamados de atributos ou campos,quando referenciado a um registro de banco de dados. Uma diferença importante entre um do-cumento e um típico registro de banco de dados, como uma conta bancária ou uma reserva deviagem, é que grande parte das informações contidas no documento estão no formato de texto,que é não estruturado. Qualquer aplicação que envolva uma coleção de texto ou informaçõesnão estruturadas, precisará organizar e buscar essa informação[19].

Relevância é um conceito fundamental em recuperação de informação. Falando de formasimples, um documento relevante tem as informações que a pessoa procura quando submeteuma consulta. Isso parece simples, mas há muitos fatores que entram na decisão para que umapessoa possa considerar um documento relevante ou não. Esses fatores terão de ser levados emconsideração pelo algoritmo na hora de comparar os textos e gerar o ranking dos documentos.Fazer uma simples comparação de strings entre o texto de consulta e o texto do documento,buscando por um match exato, como rodar um comando grep, terá uma grande chance de gerarum resultado ruim. Uma razão clara para isso acontecer é porque a língua pode expressar omesmo conceito de formas diferentes, utilizando palavras diferentes. As frases "Neymar foi ojogador que fez mais gols no campeonato deste ano" e "O jogador camisa 10 foi o artilheirodo torneio de 2019" exemplificam bem esse problema.

Para abordar a questão da relevância, pesquisadores propõem modelos de recuperação etestam o quão bem os mesmos trabalham. Um modelo de recuperação é a representação formaldo processo de match da consulta com o documento. Ele é a base do algoritmo de ranking queé usado no engenho de busca. Um bom modelo irá retornar documentos que terão uma maiorchance de serem considerados relevantes pelo usuário. Alguns modelos são mais focados emrelevância de tópico. Relevância de tópico leva em consideração o tópico consultado e o tópicopresente no documento como, por exemplo, uma consulta de "fenômenos climáticos adversos"e um documento sobre um tornado no Kansas, Estados Unidos. No entanto, um engenho

2

Page 10: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

2.2 ENGENHOS DE BUSCA 3

de busca implantado num ambiente real deve se preocupar com a relevância para o usuário.Relevância do usuário, neste caso, é quando o documento sobre o tornado em Kansas terá umranking menor pois o usuário já viu a história antes [19].

Uma característica interessante sobre modelos de recuperação, que são usados em recupe-ração de informação, é que eles são modelados a partir de propriedades estatísticas, em vezda estrutura linguística do texto. Isso significa, por exemplo, que o algoritmo de ranking estámais preocupado com a contagem de ocorrências da palavra do que se ela é um substantivo,adjetivo ou verbo [19]. Modelos mais avançados incorporam características linguísticas, masgeralmente possuem um grau de importância menor.

Outra questão crucial para recuperação de informação é a avaliação. O ranqueamento dosdocumentos depende totalmente de o quanto eles atendem às expectativas da pessoa, por issofoi necessário a criação de medidas de avaliação de modelos de recuperação. O modelo cri-ado por Cleverdon em 1960, e muito popular até os dias de hoje, é o de precisão e revocação.Significam a proporção dos documentos retornados que são relevantes e a proporção dos do-cumentos relevantes que não foram retornados, respectivamente. Quando a revocação é usado,é assumido que todos os documentos relevantes são conhecidos. Isto é claramente uma supo-sição bem problemática em um ambiente de consultas na web, mas com uma pequena coleçãode teste, essa medida pode ser bem útil.

2.2 Engenhos de Busca

Engenhos de busca possuem uma grande quantidade de configurações que refletem na aplica-ção para qual foram criadas. Eles são compostos, de forma geral, por duas funções principais:Indexação e Busca. Indexação é o armazenamento dos dados em índices de forma a otimizaras consultas posteriormente. Busca é a consulta para recuperar esses dados armazenados. En-genhos de busca da Web, como Google e Yahoo!, devem ser capazes de extrair terabytes dedados, e provê-los em consultas para milhões de pessoas com um tempo de resposta menorque segundo. Engenhos de busca de Desktop, como a funcionalidade de busca do WindowsVista™, deve ser capaz de incorporar rapidamente novos documentos, páginas web, emails eprover uma interface intuitiva para buscar essas informações tão heterogêneas.

Os grandes problemas de design de recuperação de informação estão contidos nos pro-blemas de Engenho de busca, estes são: algoritmo de ranking eficaz, avaliação do modelo, einteração com o usuário. No entanto, inclui-se também aspectos críticos para o engenho debusca, que são resultantes de sua implantação em ambientes operacionais de grande escala.

Dentre esses aspectos, o mais importante é a performance, onde é medido o tempo deresposta, a quantidade de consultas que podem ser realizadas simultaneamente, e o tempo deindexação. Outra medida de performance é o quão rápido novos dados podem ser incorporadosnos índices. Tipicamente, engenhos de busca trabalham com dados dinâmicos, que são muda-dos constantemente. Esses dados têm que ser reindexados com certa frequência e, por isso, oíndice tem que ser capaz de incorporar novos dados rapidamente. A figura 2.1 cita bem essescasos.

Engenhos de busca podem ser utilizados para pequenas coleções de dados, como algumascentenas de emails ou documentos num computador, como também podem ser usados para

Page 11: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

2.2 ENGENHOS DE BUSCA 4

coleções gigantescas como toda a web. Portanto, escalabilidade é um problema importante.O serviço tem que ser capaz de continuar retornando resultados de forma rápida e com quali-dade enquanto a quantidade de dados e de usuários cresce. Para suportar tarefas de diferentesaplicações, os engenhos de busca precisam ser customizáveis. Isso quer dizer que para diferen-tes aspectos, como o algoritmo de ranking, ele deve ser capaz de se adaptar aos requisitos daaplicação.

Fonte: [19]

Figura 2.1 Principais tópicos de Recuperação de Informação e design de Engenhos de Busca.

2.2.1 Indexação

Para otimizar a performance da consulta, engenhos de busca armazenam seus dados em índices.O índice, abreviação de índice invertido, é uma estrutura de dados que faz o mapeamento entrepalavra e documento, o que torna as consultas mais rápidas. Sem um índice, teria-se que esca-near todos os documentos do corpus, consumindo muito tempo e recursos computacionais. Porexemplo, enquanto um índice de 10.000 documentos pode ser consultado em milissegundos,um scan sequencial de cada palavra de 10.000 documentos poderia levar horas.

Page 12: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

2.2 ENGENHOS DE BUSCA 5

Fonte: [7]

Figura 2.2 Três passos para criação do índice invertido. Primeiramente listar todos os termos pordocumento (coluna da esquerda), depois ordenar em ordem alfabética por termo (coluna do meio), efinalmente agrupar os termos iguais, mapeado para uma lista de documentos que o termo se encontra(coluna da direita).

A criação de um índice invertido consiste nos seguintes passos:

1. Coletar os documentos a serem indexados.

2. Tokenizar o texto, transformando cada documento em uma lista de tokens (geralmentepalavras).

Page 13: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

2.2 ENGENHOS DE BUSCA 6

3. Fazer a retirada de stopwords e/ou normalizações linguísticas nos tokens, como porexemplo stemming e case-folding. Stopwords (ou palavras de parada – tradução livre)são palavras que podem ser consideradas irrelevantes para o conjunto de resultados a serexibido em uma busca realizada em uma search engine (engenho de busca). Exemplos:as, e, os, de, para, com, sem, foi [15]. Stemming é o processo de reduzir palavras flexio-nadas (ou às vezes derivadas) ao seu radical (stem) [14]. Case-folding é o processo quereduz todas as letras para minúsculas.

4. Indexar os documentos em que cada termo ocorre ao criar um índice invertido, que con-siste em um dicionário e um mapa de posições.

Dentro de uma coleção de documentos, assumimos que cada documento tem um identifi-cador único ( docID ). Para facilitar, podemos atribuir números inteiros sucessivos a cada novodocumento lido. A entrada para indexação é uma lista de tokens normalizados para cada docu-mento, que podemos igualmente pensar como uma lista de pares de termos e docID, como naprimeira coluna da Figura 2.2. Depois é ordenada a lista em ordem alfabética em relação aostermos. Em seguida, múltiplas ocorrências do mesmo termo são agrupadas. Esse agrupamentoresulta em um dicionário, onde o termo é a chave, e o conjunto de documentos o valor. Nessedicionário pode-se conter informações adicionais, como o número de documentos que o termoocorre, como é mostrado na figura 2.2.

Figura 2.3 Exemplo de índice invertido posicional, onde o além de listar os documentos que o termoocorre, lista-se também frequência ocorrida no documento e a posição do texto onde o documento ocor-reu.

Page 14: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

2.3 DBPEDIA 7

Índices usados por engenhos de busca armazenam também a frequência que o termo ocorreem cada documento e a posição em que ele se encontra, como exemplificado na Figura 2.3. Essetipo de índice é chamado de índice invertido posicional. Com a posição do termo armazenada,pode-se levar em consideração a proximidade dos termos no documento na hora da consulta.

2.2.2 Consulta

Uma consulta é uma representação da necessidade de informação do usuário,. Ela porém podenão expressar bem essa necessidade porque o usuário tem dificuldade em expressar sua neces-sidade de informação.

Técnicas de spell checking, query expansion e relevance feedback são projetadas para re-finar a consulta. Spell checking é a recomendação para erros ortográficos da consulta. Queryexpansion utiliza termos relacionados com os da consulta para expandi-la. Em Relevance fe-edback, o usuário provê informações se os documentos recuperados foram relevantes para aconsulta. O objetivo deste processo de refinamento é criar uma consulta que seja uma melhorrepresentação da necessidade de informação do usuário para, consequentemente, recuperar do-cumentos mais relevantes [19].

Consultas breves que consistem num pequeno número de palavras- chave (entre duas e três)são, de longe, a forma mais popular de consulta atualmente utilizada nos engenhos de busca.

2.3 DBpedia

A Wikipédia tornou-se uma das maiores fontes de conhecimento da humanidade, e é mantidapor milhares de contribuidores ao redor do mundo, qualquer pessoa pode criar ou editar umdocumento nela. Os artigos da Wikipédia consistem em sua maioria de textos corridos, porémtambém contendo diferentes tipos de informações estruturadas, como templates de infoboxes,imagens e links para páginas externas.

O projeto DBpedia extrai vários tipos de dados estruturados da Wikipédia em diversas lín-guas, através de um framework de extração open source [22]. Todas essas informações sãocombinadas em uma grande base de conhecimento multidomínio e multilíngue. Para cada pá-gina da Wikipédia, é criado no DBpedia uma Uniform Resource Identifier (URI) para cadaentidade ou conceito sendo descrito na página correspondente.

Para homogeneizar as descrições das informações da base de conhecimento do DBpedia, acomunidade começou a desenvolver uma ontologia, que descreve formalmente os tipos, propri-edades e inter-relações entre entidades, e o mapeamento das propriedades dos infoboxes paraessa ontologia [22]. Isso melhora significantemente os dados brutos dos infoboxes pela tipagemde atributos, unificando variações de nomes e atribuindo tipos de dados específicos à valores.

Page 15: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

CAPÍTULO 3

Extração dos dados e criação dos Índices

Neste capítulo será abordado como foram extraídos os dados, e como esses dados foram inde-xados. O trabalho [23] foi utilizado como base, onde foi aproveitado o módulo de extração dosdados e parte do módulo de indexação. Para fins desse projeto, o índice utilizado foi Elasticse-arch [5], por ser escalável. Portanto, a única parte que difere no módulo de indexação é a parteda chamada à API do Lucene para realizar a indexação, a qual foi substituída por chamadasao Elasticsearch. Os próximos tópicos abordarão com mais detalhes como foi o processo deextração e indexação.

3.1 Extração dos dados

Os dados utilizados por esse projeto vêm de uma combinação da extração do dump da Wikipé-dia com os datasets do DBpedia. DBpedia é uma base de conhecimento representada por umaTripla RDF (Resource Description Framework, uma família de especificações da World WideWeb Consortium (W3C) [12] criada da extração de informações estruturadas da Wikipedia ede ontologias mapeadas.

Para este estudo, foi usada a mesma versão do Dump da Wikipedia para a extração dosinfoboxes e do mapeamento de categorias e entidades. A versão escolhida foi da língua inglesaextraída em Outubro de 2016, lançada oficialmente em 2017 1. O Dump da Wikipedia é umacópia exata de todas as páginas e documentos da Wikipédia. Os documentos se encontram noformato Wikitext, também conhecido como Wiki Markup [18], e o Dump coloca os documentos(em Wikitext) embutidos no formato XML (Extensible Markup Language).

A comunidade do DBpedia disponibiliza dois tipos de serialização: turtle (.ttl) e quad-turtle (.tql). O tipo de serialização turtle é formado por uma sequência de dados no formatode n-triplas (<subject> <predicate> <object>.), enquanto o tipo quad-turtle adiciona um quartoelemento, o contexto. Esse quarto componente contém o nome do grafo e a procedência decada tripla. O formato do quad-turtle é (<subject> <predicate> <object> <graph/context>.).[23] restringiu sua abordagem a usar o formato de serialização turtle (.ttl) já que não é utilizadoo contexto do grafo em seu trabalho.

O dataset articles-categories guarda a relação entre os artigos e categorias. Através daestrutura de Tripla RDF, que segue o seguinte formato:

• subject: URI do artigo

• predicate: propriedade1Encontrado em: https://wiki.dbpedia.org/downloads-2016-10

8

Page 16: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

3.1 EXTRAÇÃO DOS DADOS 9

• object: URI da categoria

Fonte: [23]

Figura 3.1 Tripla RDF do documento article_categories_en.ttl

Fonte: [23]

Figura 3.2 Exemplo de um Wikicode (esqueda) e o seu conteúdo renderizado na página da Wikipédia(direita). No campo número 1 vemos o infobox renderizado na página web. No campo 2, é vistoo template do infobox. Nos campos 3 e 4, pode-se ver as propriedades do infobox e o valor dessapropriedade, respectivamente. O mapeamento entre propriedade e valor, visto no campo 5, é tambémchamado de tupla.

Page 17: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

3.2 ÍNDICES 10

Para a indexação do mapeamento dos artigos e categorias, o campo predicate não foi utili-zado pois não guardava informações relevantes para o estudo. Para guardar apenas informaçõesúteis e melhorar a legibilidade, durante a indexação, foi tokenizado cada elemento da tripla re-movendo parte da URI e caracteres especiais como "<", ">"e aspas. Foi selecionado paraindexação apenas o último token da URI de cada campo da tripla, conforme é mostrado naimagem 3.1.

Os dados dos Infoboxes foram extraídos diretamente do Dump da Wikipedia. Isso ocorreupor causa do problema do DBpedia de cobertura das informações dos Infoboxes. Ainda há mui-tas entidades a serem mapeadas para suas ontologias e, consequentemente, a serem extraídaspara o DBpedia.

Um problema encontrado por [23] na hora de usar o Dump da Wikipédia foi o formatodas páginas que continham sintaxe usada pelo software MediaWiki para gerar as páginas Wiki,chamada de Wikicode ou Wikitext. Um trecho do código usado para gerar os infoboxes podeser visto em 3.2. Perceba que nem todo nome de propriedade usado no Wikicode se mantémo mesmo depois da página ser renderizada. [23] tentou solucionar isso utilizando um webcrawler, extraindo diretamente o HTML das páginas, porém essa abordagem retornou dadosincompletos ou com ruídos. Por conta disso, a solução utilizada por ele foi navegar pelo Dump,parseando o Wikicode com a ferramenta mwparserfromhell em Python.

3.2 Índices

Como mencionado anteriormente, a ferramenta utilizada para indexar os dados foi o Elastic-search. Elasticsearch é um engenho de busca e de Analytics open source que foi criado emcima do Apache Lucene. Ele trabalha via requisições REST (Representational State Transfer),e pode-se indexar, atualizar, buscar e remover documentos de diversos formatos [13]. Ele es-cala muito bem, pois pode-se ter inúmeras instâncias do índice rodando simultaneamente emum cluster [2]. Elasticsearch provê a habilidade de subdividir o índice em múltiplos peda-ços, chamados de shards. Cada shard é um índice totalmente funcional que pode ser colocadoem um nó de um cluster. Elasticsearch permite que se crie uma ou mais cópias dos shards,chamadas de replica shards ou apenas replicas. Replicas são importantes para aumentar o vo-lume/throughput da consulta, pois elas são uma cópia exata dos shards, e consequentementemúltiplas replicas podem ser consultadas em paralelo [2].

Ao criar um índice, pode-se escolher o número de shards e de réplicas a serem criados. Aconfiguração escolhida foi de 1 shard e 4 réplicas. Múltiplos shards podem atrapalhar o scoredas consultas já que cada shard é responsável por produzir o seu score próprio [8].

Para este projeto, foram criados dois índices, o category e o infobox.

3.2.1 Índice Category

O índice category foi criado para fazer o mapeamento das entidades com as categorias. Foiarmazenada a relação categoria-entidade em forma de pares.

O índice category é utilizado para duas consultas, uma consulta de texto no campo cate-gory_name, onde o usuário busca por uma categoria específica, e uma busca por entidades, que

Page 18: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

3.2 ÍNDICES 11

lista entidades pertencentes à uma dada categoria. Para essa busca por entidades, é utilizado ocampo category_kw, que por ser do tipo keyword tem um desempenho maior que uma consultapor texto. O tipo keyword é tipicamente utilizado para filtragens e agregações. Campos do tipokeyword só podem ser buscados pelo seu valor exato [9]. O tipo text é utilizado para indexaçãode textos como o corpo de um email ou descrição de um produto [17].

1 {2 "category_name": {"type": "text"},3 "category_kw": {"type": "keyword"},4 "entity": {"type": "keyword"}5 }

Figura 3.3 Schema do índice category

1 {2 "category_name" : "Oil fields of New Zealand",3 "category_kw" : "Oil fields of New Zealand",4 "entity" : "Maui gas field"5 }

Figura 3.4 Exemplo do índice category

O texto é analisado por um "Analyzer"que converte a string em uma lista de termos indivi-duais, normalmente palavras, antes de serem indexados [1].

3.2.2 Índices infobox

O índice "infobox" armazena as entidades e todas suas propriedades. A figura 3.5 exemplificabem a lista de propriedades mais frequentes de infoboxes.

Ao extrair as propriedades do Dump da Wikipedia, é criado um array de pares, propertye value. O campo property refere-se ao nome da propriedade como, por exemplo, Idade, e ocampo value refere-se ao valor dessa propriedade, como por exemplo, 23 anos. Esses dados,no entanto, não são armazenados em formato de tupla. Os campos property e value são conca-tenados e transformados em uma única string, separados por um espaço (" "). Caso o campoproperty contenha mais de uma palavra como, por exemplo, birth date, é substituído o espaço(" ") por um underscore ("_"), resultando em birth_date. Com essa abordagem, garante-se quea primeira palavra da string seja o nome da propriedade, e o resto o seu valor. Dessa formainserimos no Índice um array de strings, o qual cada uma contém uma tupla de property - valueconcatenada.

Page 19: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

3.2 ÍNDICES 12

Fonte: [23]

Figura 3.5 Nomes mais populares de propriedades de infoboxes da Wikipédia.

1 {2 "entity": {"type": "keyword"},3 "properties": {"type": "array"}4 }

Figura 3.6 Schema do índice infobox

1 {2 "entity" : "Korolev oil field",3 "properties" : [4 "name Korolev Oil Field",5 "country Kazakhstan",6 "operator Tengizchevroil",7 "discovery 1986",8 "start_production 1993",9 ]

10 }

Figura 3.7 Exemplo do índice infobox

Page 20: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

CAPÍTULO 4

Sistema de Busca para Entidades

Uma entidade é qualquer objeto singular, identificável e individual. Entidades referem-se aindivíduos, organizações, sistemas, bits de dados ou mesmo componentes de sistemas distintosque são considerados significativos por si mesmos [6]. Uma entidade pode ser representada porum identificador único (_id), e por um conjunto de propriedades descritas em forma de pares(<atributo>, <valor>). A propriedade de uma entidade pode incluir, por exemplo, o seu nomeou seu tipo [20].

Recuperação de Entidades, em comparação com recuperação de informação clássica, visaencontrar entidades individuais em vez de documentos relevantes. Encontrar uma lista de enti-dades requer portanto, técnicas diferentes dos engenhos de busca clássicos [20].

Nossa proposta é usar a Wikipédia como corpus para encontrar entidades na Web. A Wiki-pédia nos permite identificar adequadamente as entidades e algumas de suas características, ea elaborada estrutura de categorias da Wikipédia nos permite lidar com o tipo de entidade [21].

4.1 Aplicação Cliente

Foi desenvolvida uma ferramenta de busca por entidades em Python. Essa foi a linguagemescolhida por ser simples e de rápida implementação. A interface com o usuário escolhida foia Web, utilizando o framework Flask. Flask é um micro framework web, simples, e de fácilexpansão, também escrito em Python. Essa ferramenta de busca permite ao usuário, para umadada categoria, buscar entidades a partir de propriedades comuns a entidades pertencentes àcategoria escolhida.

Na imagem 4.1 podemos ver com clareza como é feita a comunicação entre o usuário, aaplicação, e os índices.

A seguir será descrito detalhadamente como cada consulta ao serviço do Elasticsearch foirealizada.

13

Page 21: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

4.1 APLICAÇÃO CLIENTE 14

Figura 4.1 Diagrama de sequencia do sistema

4.1.1 Ranking

Inicialmente, o usuário busca uma categoria desejada. Nessa busca, é submetida uma consultapara o serviço do Elasticsearch, onde é realizada um busca de texto no campo category_namedo índice category, como podemos ver no trecho do código em 4.2. O campo match contidoem query, referido na imagem, ranqueia todos os documentos de acordo com texto text. Ele fazuma operação booliana OU (ou OR) com cada termo do texto text [11].

Por o indice category conter o mapeamento um para um de entidades e categorias, ha-verá múltiplas ocorrências de uma mesma categoria, cada uma referenciando uma entidadediferente. Portanto foi necessário agrupar esses dados resultantes da consulta utilizando o co-mando de query aggs, o qual agrega as categorias por termos [3]. O resultado dessa agregaçãoserá uma lista de 10 categorias que melhor se encaixam na consulta realizada. O usuário, então,escolhe uma das categorias listadas.

Em seguida, com a categoria escolhida, é submetida uma nova query para o índice category,como podemos ver na imagem 4.3. Essa consulta é mais eficiente que a anterior, pois utilizamoso campo category_kw para filtrar os dados, que, como mencionamos no capitulo anterior, é dotipo keyword. Campos do tipo keyword só podem ser buscados pelo seu valor exato [9] e são

Page 22: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

4.1 APLICAÇÃO CLIENTE 15

mais eficientes que campos do tipo text. Essa consulta recupera todas as entidades pertencentesa essa dada categoria.

1 def _search_category(text):2 index = "category"3 query = {4 "query": {5 "match": {6 "category_name": text7 }8 },9 "aggs": {

10 "categories": {11 "terms": { "field": "category_kw" }12 }13 }14 }15 return search(index, query)

Figura 4.2 Função de consulta de categorias

1 def _get_entities(category, max_count):2 index = "category"3 query = {4 "query": {5 "match": {6 "category_kw": category7 }8 },9 "size": max_count

10 }11 return search(index, query)

Figura 4.3 Função de consulta de entidades

Com todas as entidades, é buscado, agora no índice infobox, todos os infoboxes que perten-çam à uma das entidades listadas anteriormente. Como vemos na imagem 4.4 é usado um filtroterms. O filtro terms recupera todos os documentos nos quais seus campos, neste caso entity,

Page 23: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

4.1 APLICAÇÃO CLIENTE 16

tenham seu valor contido na lista fornecida, neste caso entity_list. O filtro terms pode ser usadoapenas nos campos do tipo keyword [16].

1 def _get_properties(entity_list):2 index = "infobox"3 query = {4 "query": {5 "bool": {6 "filter": {7 "terms": {8 "entity": entity_list9 }

10 }11 }12 },13 "size": len(entity_list)14 }15 return search(index, query)

Figura 4.4 Função de listagem de todos os infoboxes pertencentes a uma das entidades listadas

1 def _get_most_frequent_properties(properties):2

3 property_names = map(lambda _str: _str.split(' ')[0],4 properties)5

6 name_by_frequency = Counter(property_names) \7 .most_common(5)8

9 top_property_names = [x[0] for x in name_by_frequency]10

11 return top_property_names

Figura 4.5 Função que lista as 5 propriedades mais frequentes da categoria

Com todos os infoboxes recuperados, são extraídas as 5 propriedades mais frequentes dessalista, como podemos ver no trecho de código em 4.5, e então exibidas para o usuário comocampos de busca.

Page 24: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

4.1 APLICAÇÃO CLIENTE 17

1 def _search_entity(entity_list, user_query):2

3 fields = [key + ' ' + user_query[key]4 for key in user_query.keys()5 if user_query[key]]6

7 index = "infobox"8 query = {9 "query": {

10 "bool": {11 "must": {12 "terms": {13 "entity": entity_list14 }15 },16 "should": [{"match": {"properties": f}}17 for f in fields]18 }19 }20 }21 return search(index, query)

Figura 4.6 Função de consulta de entidade a partir de suas propriedades.

O usuário, agora, com esses 5 campos, formula sua consulta, preenchendo os campos quelhe interessam. Com os campos preenchidos, o usuário submete sua consulta. A consulta ésimilar à 4.4, porém agora restringindo também o campo properties, com uma lista de pro-priedades a serem buscadas, ilustrada na imagem 4.6. A lista de propriedades é formulada daseguinte maneira:

1. Caso o usuário preencha um dado campo da propriedade.

(a) Substitui os espaços (" ") por underscore ("_") nos nomes das propriedades.

(b) Concatena-se esse resultado (nome das propriedades com underscore) com o valorda propriedade preenchida pelo usuário, colocando um espaço (" ") entre eles. Issocriará então o seguinte resultado:"nome_da_propriedade valor da propriedade".

2. Caso contrário, esse campo/propriedade não é inserido na consulta.

Como resultado, o índice infobox retornará as entidades que melhor se encaixam na con-sulta, ordenadas pelo maior ranking.

Page 25: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

4.1 APLICAÇÃO CLIENTE 18

4.1.2 Geolocalização das entidades

Foi desenvolvido também um serviço de plotagem da geolocalização das entidades em ummapa. Foi utilizada a ferramenta leaflet [10] para essa funcionalidade. A ferramenta leafleté uma biblioteca JavaScript open source, e roda diretamente no browser do usuário. Nelao usuário é capaz de navegar pelo mapa, aumentar e diminuir o zoom, e clicar em balões,que representam as entidades, para ver suas descrições. Essa funcionalidade só é visível parao usuário caso o domínio (também chamado de categoria) escolhido possua ao menos umaentidade com a propriedade coordinate, que representa as coordenadas daquela entidade.

A propriedade coordinate não possui um formato padrão, pois é preenchido manualmentepela pessoa que criou/editou o documento na Wikipédia. Portanto foi necessária a implemen-tação de um parser que fosse capaz de ler e tratar grande parte das possíveis formas de sepreencher o campo de coordenadas. Após os dados de coordenadas serem extraídos, é feito ummapeamento coordenada - infobox, onde o infobox contém o nome da entidade e todas as suaspropriedades, para então plotar esse mapeamento coordenada - infobox no mapa. Dessa formao usuário é capaz de ver todas as informações salvas no índice daquela entidade.

Page 26: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

CAPÍTULO 5

Caso de Uso

Neste capítulo será mostrado o funcionamento da ferramenta na prática, simulando um usuáriocomum.

Para dar início a sua busca, o usuário acessa o site do serviço 5.1.O usuário então preenche o campo Category name com a categoria que ele deseja buscar.

Neste caso, ele estava interessado em conhecer mais sobre petróleo. Por isso ele buscou nosistema por oil 5.2.

O sistema então retornou a ele uma lista de categorias que melhor se encaixavam na consultadele por oil 5.3. Se deparando com essas opções, ele se interessou pela categoria Oil fields inNorway.

Figura 5.1 Página inicial

Após a categoria Oil fields in Norway ser selecionada, o usuário é direcionado para a páginade busca por entidades 5.4. Nesta página encontram-se as 5 propriedades mais frequentes dasentidades da categoria Oil fields in Norway. Neste caso, essas propriedades foram:

1. name

19

Page 27: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

CAPÍTULO 5 CASO DE USO 20

2. coordinates

3. country

4. offonshore

5. location map

Figura 5.2 Campo de busca por categorias preenchido com oil

O usuário então preenche os campos desejados. Neste exemplo, ele quis buscar por entida-des (pretencentes à categoria Oil fields in Norway) que possuem os campos country, offonshoree location map com valores Norway, Offshore e Norway respectivamente 5.5.

Após a consulta ser submetida, o sistema retornará as entidades que melhor se encaixamnessas propriedades buscadas pelo usuário. Neste caso, as entidades que tiveram os maioresrankings foram: Goliat field, Norne oil field, Heidrun oil field, Draugen oil field, Heilo pros-pect, Vale gas field, Grane oil field, Snorre oil field, Johan Sverdrup oil field e Gjøa oilfield 5.6.Essas entidades estão ordenadas por maior ranking.

Essas entidades resultantes possuem um link de redirecionamento para as suas respectivaspáginas do Wikipédia. Nesta situação, ao clicar na entidade Goliat field, o usuário é redirecio-nado para a sua página do Wikipédia (https://en.wikipedia.org/wiki/Goliat_field) 5.7.

Pelo fato das entidades da categoria Oil fields in Norway possuírem o atributo coordinate,foi disponibilizado para o usuário a opção de visualizá-las no mapa. Cada balão azul no maparepresenta uma entidade. Ao clicar em um desses balões, o mesmo é expandido, e então sãoexibidas todas as propriedades da dada entidade, como podemos ver em 5.8.

Page 28: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

CAPÍTULO 5 CASO DE USO 21

Figura 5.3 Resultado da busca por categorias contendo oil no nome

Figura 5.4 Pagina inicial da busca por entidades da categoria Oil fields in Norway

Page 29: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

CAPÍTULO 5 CASO DE USO 22

Figura 5.5 Campos da consulta de entidade preenchidos

Figura 5.6 Resultado da busca por entidades

Page 30: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

CAPÍTULO 5 CASO DE USO 23

Figura 5.7 Pagina do Wikipédia direcionada pela entidade da lista de resultados

Figura 5.8 Propriedades da entidade selecionada no mapa

Page 31: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

CAPÍTULO 6

Conclusão

O objetivo deste trabalho foi desenvolver uma ferramenta de busca por entidades em cimados artigos da Wikipédia. Isso foi atingido através da criação de dois índices de busca, ocategory, que mapeia as entidades a suas categorias, e o infobox, que mapeia as entidades asuas propriedades de infobox. Tal desenvolvimento permite que o usuário, baseando-se em umdomínio predefinido, faça consultas por entidades, a partir de atributos pertencentes a entidadesdesse seu domínio.

6.1 Trabalhos futuros

6.1.1 Criar o índice de referências

Atualmente os únicos documentos que as entidades referenciam são as suas próprias páginasda Wikipédia, contudo pode-se facilmente colocar artigos de outros sites que mencionem essasentidades. Enriquecendo, assim, o nosso sistema.

6.1.2 Buscas por tipos não textuais

Atualmente a ferramenta só dá suporte a buscas do tipo texto, então mesmo que o campo sejauma data, será feita uma comparação de texto na hora de recuperar essa informação. Isso pre-judica o ranking da consulta, por isso é de grande importância que nas versões futuras desseprojeto, o sistema seja capaz de fazer consultas de propriedades não textuais, como proprieda-des numéricas e de coordenadas.

24

Page 32: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

Referências Bibliográficas

[1] Analyzers. https://www.elastic.co/guide/en/elasticsearch/reference/6.7/analysis-analyzers.html. Accessed: 2019-06-11. 3.2.1

[2] Basic concepts. https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started-concepts.html. Accessed: 2019-06-11. 3.2

[3] Bucket aggregations. https://www.elastic.co/guide/en/elasticsearch/reference/6.7/search-aggregations-bucket.html. Accessed: 2019-06-13. 4.1.1

[4] Dbpedia. https://pt.wikipedia.org/wiki/DBpedia. Accessed: 2019-06-17. 1

[5] Elasticsearch. https://www.elastic.co/pt/products/elasticsearch.Accessed: 2019-06-13. 3

[6] Entity. https://www.techopedia.com/definition/14360/entity-computing. Accessed: 2019-06-12. 4

[7] A first take at building an inverted index. https://nlp.stanford.edu/IR-book/html/htmledition/a-first-take-at-building-an-inverted-index-1.html. Acces-sed: 2019-06-09. 2.2.1

[8] Getting consistent scoring. https://www.elastic.co/guide/en/elasticsearch/reference/master/consistent-scoring.html.Accessed: 2019-06-11. 3.2

[9] Keyword datatype. https://www.elastic.co/guide/en/elasticsearch/reference/current/keyword.html. Accessed: 2019-06-11. 3.2.1, 4.1.1

[10] Leaflet. https://leafletjs.com/. Accessed: 2019-06-13. 4.1.2

[11] Match query. https://www.elastic.co/guide/en/elasticsearch//reference/6.7/query-dsl-match-query.html. Accessed: 2019-06-13.4.1.1

25

Page 33: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

REFERÊNCIAS BIBLIOGRÁFICAS 26

[12] Resource description framework. https://pt.wikipedia.org/wiki/Resource_Description_Framework. Accessed: 2019-06-09. 3.1

[13] The search api. https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started-search-API.html. Accessed:2019-06-11. 3.2

[14] Stemming. https://en.wikipedia.org/wiki/Stemming. Accessed: 2019-06-10. 3

[15] Stop words – como funcionam palavras de pa-rada? https://www.agenciamestre.com/seo/stop-words-como-funcionam-palavras-de-parada/. Accessed: 2019-06-10. 3

[16] Terms query. https://www.elastic.co/guide/en/elasticsearch/reference/6.7/query-dsl-terms-query.html. Accessed: 2019-06-13.4.1.1

[17] Text datatype. https://www.elastic.co/guide/en/elasticsearch/reference/current/text.html. Accessed: 2019-06-11. 3.2.1

[18] Wikitext. https://en.wikipedia.org/wiki/Help:Wikitext. Accessed:2019-06-09. 3.1

[19] B. Croft, D. Metzler, and T. Strohman. Search Engines: Information Retrieval in Practice.Pearson Education, 2011. 2.1, 2.2, 2.2.2

[20] Gianluca Demartini, Sava Claudiu, Tereza Iofciu, Ralf Krestel, and Wolfgang Nejdl. Whyfinding entities in wikipedia is difficult, sometimes. Information Retrieval, 13:534–567,10 2010. 4

[21] Rianne Kaptein, Pavel Serdyukov, Arjen De Vries, and Jaap Kamps. Entity ranking usingwikipedia as a pivot. In Proceedings of the 19th ACM International Conference on In-formation and Knowledge Management, CIKM ’10, pages 69–78, New York, NY, USA,2010. ACM. 4

[22] Pablo Mendes, Max Jakob, and Christian Bizer. DBpedia: A multilingual cross-domainknowledge base. In Proceedings of the Eighth International Conference on LanguageResources and Evaluation (LREC-2012), pages 1813–1817, Istanbul, Turkey, May 2012.European Language Resources Association (ELRA). 2.3

[23] Johny Moreira. Extracting structured information from text to augment knowledge bases,2019. 3, 3.1, 3.1, 3.1, 3.2.2

Page 34: Construção de um Engenho de Busca para Entidadestg/2019-1/TG_CC/tg_tpshc2.pdf · 2019. 7. 14. · delas. Como definido no próprio Wikipédia: DBpedia é um projeto cujo objetivo

Este volume foi tipografado em LATEX na classe UFPEThesis (www.cin.ufpe.br/~paguso/ufpethesis).Para detalhes sobre este documento, clique aqui.