• Nenhum resultado encontrado

Motor de Pesquisa Avançada com Inteligência Artificial

N/A
N/A
Protected

Academic year: 2021

Share "Motor de Pesquisa Avançada com Inteligência Artificial"

Copied!
96
0
0

Texto

(1)

Faculdade de Engenharia da Universidade do Porto

Motor de Pesquisa Avan¸cada com Inteligˆencia

Artificial

Nuno Diogo Gon¸calves Martins

Disserta¸c˜ao de Mestrado

Mestrado Integrado de Engenharia Eletrot´ecnica e de Computadores Major em Telecomunica¸c˜oes, Eletr´onica e Computadores

Orientador: Andr´e Monteiro de Oliveira Restivo Supervisor Externo: Telma Salgueiro

(2)
(3)

Resumo

Na ´epoca em que vivemos ´e cada vez mais comum o abandono dos t´ıpicos formatos f´ısicos, como o papel, em prol do formato digital. Atrav´es de solu¸c˜oes inform´aticas existentes no mercado ´e poss´ıvel `as empresas organizarem e gerirem os seus arquivos documentais de uma forma f´acil e eficiente. Uma dessas solu¸c˜ao ´e o iPortalDoc, um Sistema de Gest˜ao Documental e de workflows desenvolvido pela IPBRICK, que vem permitir a desmaterializa¸c˜ao de toda a informa¸c˜ao das empresas e facilitar a sua gest˜ao e o acesso por parte dos colaboradores.

No entanto, o iPortalDoc apresenta uma grande lacuna, que ´e o seu motor de pes-quisa. Este motor ´e ineficiente, apresentando tempos de resposta muito elevados que levam a perdas de tempo dos colaboradores, o que se pode refletir numa quebra de produtividade da empresa. Quando os resultados das pesquisas s˜ao finalmente apresentados verifica-se que, muitas vezes, estes s˜ao insatisfat´orios, apresentando documentos que pouco ou nada tˆem a ver com o que o utilizador procura no topo da lista. Surge ent˜ao a necessidade de renovar o motor de pesquisa do iPortalDoc, com o objetivo de melhorar o seu desempenho, colmatando ent˜ao a principal falha do iPortalDoc.

A solu¸c˜ao encontrada passou ent˜ao por delegar a pesquisa de texto, que era respon-sabilidade do sistema de gest˜ao de bases de dados, para uma ferramenta dedicada, o Apache Solr. Para complementar esta mudan¸ca foi tamb´em desenvolvido um m´odulo de classifica¸c˜ao de documentos que aprende com as pesquisas dos utilizadores. O conhecimento retirado das pesquisas ´e ent˜ao usado para prever a categoria do do-cumento que o utilizador procura, e promover ent˜ao os documentos dessa categoria para o topo de lista de resultados.

Atrav´es da solu¸c˜ao encontrada foi poss´ıvel reduzir drasticamente o tempo de res-posta do motor de pesquisa e ao mesmo tempo melhorar a qualidade dos resultados, aumentando-se o n´umero de campos em que ´e feita a pesquisa e promovendo os re-sultados que possivelmente s˜ao mais relevantes para o utilizador. Al´em disso, com o uso do Solr, tornou-se o iPortalDoc mais future proof, deixando-o melhor preparado para escalar junto com o aumento do volume de informa¸c˜ao que armazena.

(4)
(5)

Abstract

In the times we live in, it is getting more and more usual to store information in digital format, instead of the more traditional physical formats, like paper. Through the use of software solutions existent in the market, it is possible for companies to organize and manage their document archives in an easy and efficient way. One of those solutions is iPortalDoc, a Document and Process Management tool which allows the dematerialization of all the companies information and makes it easy to manage and access that information remotely.

However, iPortalDoc suffers from a flawed search engine. The engine is very ineffi-cient, showing extremely high response times that lead to a waste of collaborators time, which could potentially reflect itself in a drop of productivity. Also, when search results are finally presented to the user, most of the times they are not sa-tisfactory, with high ranking documents that have little to do with what the user is after. Because of this, the need arose to renew iPortalDoc’s search engine, with the objective of improving its performance, thus fixing its main flaw.

The solution found for this problem, was to migrate text search tasks, formerly done by the database management system, to a new dedicated Apache Solr server. To complement this change, a document classifier was also developed to learn from users searches and use the acquired knowledge to predict the category of the document the user is searching for, and boost documents belonging to that category to the top of the list.

Through this solution, we managed to drastically reduce the search engine’s response time and at the same time improve result precision, by searching in fields beside the document’s title and boosting the most likely relevant results to the top. Besides that, through the use of Solr, iPortalDoc has become more future proof, as it’s now better prepared to scale accordingly to the growth of volume of documents it manages.

(6)
(7)

Agradecimentos

Com a conclus˜ao desta disserta¸c˜ao, chega ao fim o meu percurso na grande Facul-dade de Engenharia da UniversiFacul-dade do Porto, sendo que reservo este espa¸co para agradecer a quem me apoiou nesta pequena longa viagem:

Aos meus pais, Isabel e Jorge, em primeiro lugar por sempre me terem apoiado na persegui¸c˜ao dos meus sonhos. Em segundo lugar, por me terem dado for¸ca sempre que precisei e por demonstrarem um enorme orgulho em terem formado um engenheiro, sendo que deles vieram as maiores li¸c˜oes: as de trabalho, esfor¸co, dedica¸c˜ao e paix˜ao por aquilo que fazemos. S´o dessa forma ´e poss´ıvel sermos bem sucedidos.

`

A minha irm˜a, por puxar por mim e me incentivar a continuar a trabalhar quando a vontade era pouca e tamb´em por de certa forma o seu sucesso escolar me ter dado alento para estudar, s´o para ela n˜ao dizer que ´e mais inteligente que eu.

`

A minha namorada Patr´ıcia, por me aturar e compreender nos momentos mais dif´ıceis deste curso. Acompanhou-me desde o inicio desta viagem (que rapariga n˜ao quer namorar com um engenheiro?) e foi sempre um grande pilar que sempre me apoiou e deu motiva¸c˜ao, e que esteve sempre presente para me ouvir.

Aos meus colegas de curso, em especial o Jo˜ao Meira e a Sara Sousa, com os quais passei momentos que recordarei com saudade e com os quais fiz amizades que ficar˜ao para sempre.

Ao meu orientador, Andr´e Restivo, pelos conselhos que me deu durante a realiza¸c˜ao desta disserta¸c˜ao. Foi um professor que me marcou neste percurso pela forma como ensina, deixando transparecer para os alunos um gosto enorme pelo que faz. Al´em disso pelas nossas conversas e piadas durante as aulas e reuni˜oes.

`

A IPBRICK, em especial `a Eng.ª Telma, que me deu a oportunidade de realizar esta disserta¸c˜ao, que me enriqueceu pessoal e profissionalmente. Tamb´em a toda a equipa pelo bom ambiente em que vivi durante este per´ıodo e pela disponibilidade que demonstraram ao ajudar sempre que foi necess´ario.

A toda a minha fam´ılia e amigos sempre me apoiaram e estiveram presentes nos momentos mais importantes.

(8)
(9)

”Do, or do not. There is no try.” Yoda

(10)
(11)

Conte´

udo

1 Introdu¸c˜ao 1 1.1 Motiva¸c˜ao . . . 1 1.2 Objetivos . . . 2 1.3 Metodologia . . . 2 1.4 A Empresa . . . 3 1.5 Estrutura do Documento . . . 3

2 Revis˜ao Bibliogr´afica 5 2.1 Recupera¸c˜ao de Informa¸c˜ao . . . 5

2.1.1 Introdu¸c˜ao `a Recupera¸c˜ao de Informa¸c˜ao . . . 6

2.1.2 O Utilizador . . . 7

2.1.3 Os Documentos . . . 8

2.1.4 O Processo de Recupera¸c˜ao de Informa¸c˜ao . . . 9

2.1.5 M´etricas de Avalia¸c˜ao . . . 10 2.2 T´ecnicas . . . 12 2.2.1 Modelo Booleano . . . 12 2.2.2 Modelo Vetorial . . . 13 2.2.3 Modelos Probabil´ısticos . . . 14 2.3 Indexa¸c˜ao . . . 17 2.3.1 Heap Files . . . 17 2.3.2 ´Indices . . . 19 2.4 Pesquisa no PostgreSQL . . . 22

(12)

Conte´udo

2.4.1 LIKE/ILIKE . . . 22

2.4.2 Full Text Search . . . 23

2.5 Ferramentas de Pesquisa . . . 25 2.5.1 Sphinx . . . 25 2.5.2 Apache Lucene . . . 25 2.5.3 Apache Solr . . . 25 2.5.4 Elasticsearch . . . 26 2.6 Aprendizagem Computacional . . . 26

2.6.1 Introdu¸c˜ao `a Aprendizagem Computacional . . . 27

2.6.2 Classifica¸c˜ao de Texto . . . 29

2.7 Algoritmos . . . 29

2.7.1 Naive Bayes . . . 29

2.7.2 k-Nearest Neighbours . . . 31

2.7.3 Support Vector Machine . . . 31

2.8 Bibliotecas de IA . . . 33 2.8.1 PyBrain . . . 33 2.8.2 TensorFlow . . . 33 2.8.3 scikit-learn . . . 34 3 Caracteriza¸c˜ao do Problema 35 3.1 Defini¸c˜ao do Problema . . . 35 3.2 Testes realizados . . . 35 3.2.1 Tempo de Resposta . . . 36

3.2.2 Qualidade dos Resultados . . . 39

3.3 Escalabilidade da Solu¸c˜ao Atual . . . 39

3.4 Objetivos . . . 41

4 Solu¸c˜ao Proposta 43 4.1 Testes de Performance . . . 43

(13)

Conte´udo 4.1.2 Updates . . . 45 4.1.3 Conclus˜oes . . . 46 4.2 M´odulo de Aprendizagem . . . 47 4.3 Arquitetura . . . 49 4.4 Implementa¸c˜ao . . . 50 4.4.1 Estrutura de Dados . . . 50 4.4.2 Fluxo de Execu¸c˜ao . . . 55 5 Valida¸c˜ao da Solu¸c˜ao 63 5.1 Tempo de Resposta . . . 63

5.2 Qualidade dos Resultados . . . 64

5.3 Previs˜ao . . . 64

6 Considera¸c˜oes Finais 69 6.1 Evolu¸c˜ao . . . 70

(14)
(15)

Lista de Figuras

2.1 Intera¸c˜oes do utilizador com o sistema de recupera¸c˜ao de informa¸c˜ao 8

2.2 Processo de indexa¸c˜ao de documentos . . . 9

2.3 Processo de recupera¸c˜ao de informa¸c˜ao . . . 10

2.4 Ilustra¸c˜ao das m´etricas precision e recall . . . 11

2.5 Organiza¸c˜ao de ficheiro heap em lista ligada . . . 18

2.6 Organiza¸c˜ao de ficheiro heap em diret´orio de p´aginas . . . 19

2.7 ´Indice em hash no campo idade . . . 20

2.8 ´Indice em ´arvore no campo idade . . . 21

2.9 Arquitetura t´ıpica de um sistema de aprendizagem computacional . . 28

3.1 Opera¸c˜ao mais demorada da pesquisa com ILIKE . . . 37

3.2 Opera¸c˜ao mais demorada da pesquisa com to_tsquery() . . . 38

4.1 Tempos de execu¸c˜ao (ms) de query sem cache . . . 44

4.2 Tempos de execu¸c˜ao (ms) de query com cache . . . 45

4.3 Tempos de processamento (ms) de updates . . . 46

4.4 Arquitetura da solu¸c˜ao proposta . . . 49

4.5 Excerto do modelo relacional do iPortalDoc . . . 50

(16)
(17)

Lista de Tabelas

2.1 Matriz termo-documento para pesquisa booleana . . . 12

2.2 Estrutura (simplificada) de um ´ındice invertido . . . 22

2.3 Exemplos de uso do operador LIKE . . . 23

3.1 Termos mais pesquisados . . . 36

3.2 Tempos de resposta para os termos mais pesquisados (ILIKE) . . . . 36

3.3 Tempos de resposta para os termos mais pesquisados (full text search) 38 3.4 Primeiros 25 resultados da pesquisa ’manual iportaldoc’ . . . 40

4.1 Tempos m´edios de resposta (sem cache) . . . 44

4.2 Tempos m´edios de resposta (com cache) . . . 45

4.3 Tempos m´edios de processamento de updates . . . 46

5.1 Tempos de resposta a solu¸c˜ao implementada . . . 63

5.2 M´edias do tempo de resposta das diferentes solu¸c˜oes . . . 64

5.3 Primeiros 25 resultados da pesquisa ’manual iportaldoc’ com a solu¸c˜ao encontrada . . . 65

5.4 Pesquisa por ’manual iportaldoc’ sem IA . . . 66

5.5 Pesquisa por ’manual iportaldoc’ com IA . . . 66

5.6 Primeira pesquisa por ’teste’ com IA . . . 67

(18)
(19)

Lista de Listagens

1 Excerto do componente de treino . . . 48

2 Excerto do componente de classifica¸c˜ao . . . 49

3 Primeira itera¸c˜ao da estrutura de dados do Solr . . . 51

4 Segunda itera¸c˜ao da estrutura de dados do Solr . . . 52

5 Ultima itera¸c˜´ ao da estrutura de dados do Solr . . . 53

6 Estrutura de dados final . . . 54

7 Configura¸c˜oes da periodicidade dos commits . . . 55

8 Configura¸c˜oes da cache de resultados de queries . . . 55

9 Configura¸c˜ao da janela de resultados das queries . . . 55

10 Verifica¸c˜ao do funcionamento do Solr no caso de queries ao ´ındice . . 57

11 Constru¸c˜ao das queries . . . 58

12 Ciclo de recupera¸c˜ao de documentos . . . 59

13 Ordena¸c˜ao e configura¸c˜ao do pr´oximo documento a recuperar . . . 60 14 Verifica¸c˜ao do funcionamento do Solr no caso de modifica¸c˜ao do ´ındice 61

(20)
(21)

Abreviaturas e S´ımbolos

AJAX Asynchronous JavaScript And XML BD Base de Dados

CSS Cascading Style Sheets HTML HyperText Markup Language IA Inteligˆencia Artificial

JS JavaScript

JSON JavaScript Object Notation PHP PHP: Hypertext Preprocessor RI Recupera¸c˜ao de Informa¸c˜ao

SGBD Sistema de Gest˜ao de Bases de Dados

SMART System for the Mechanical Analysis and Retrieval of Text SQL Structured Query Language

TREC Text Retrieval Conference WWW World Wide Web

(22)
(23)

Cap´ıtulo 1

Introdu¸

ao

Nos dias que correm ´e cada vez maior o fluxo de informa¸c˜ao com que as empresas lidam diariamente. Esta informa¸c˜ao pode existir nas mais diversas formas, sejam fa-turas, propostas, manuais, ou at´e correspondˆencia trocada dentro e fora da empresa, como emails ou at´e chamadas telef´onicas.

O crescente volume da informa¸c˜ao e a forma como est´a dispersa pelos v´arios depar-tamentos das organiza¸c˜oes tornam a sua gest˜ao complexa e demorada. Al´em disso, hoje em dia espera-se que a informa¸c˜ao esteja facilmente acess´ıvel e que seja simples a sua partilha, possibilitando colabora¸c˜ao `a distˆancia [1].

Estas quest˜oes exigem uma solu¸c˜ao que permita a desmaterializa¸c˜ao da informa¸c˜ao e o seu arquivamento central, assim como o seu acesso remoto e autenticado. Apro-veitando esta lacuna de mercado a IPBRICK lan¸cou o iPortalDoc, um Sistema de Gest˜ao Documental e Workflows.

Esta ferramenta permite `as empresas aumentar a produtividade dos seus funcion´arios, n˜ao s´o porque estes gastam menos tempo na gest˜ao da documenta¸c˜ao, mas tamb´em porque possibilita um maior controlo das v´arias fases dos processos que a docu-menta¸c˜ao percorre dentro da organiza¸c˜ao.

1.1

Motiva¸

ao

Como foi descrito anteriormente, o iPortalDoc permite a gest˜ao centralizada de toda a documenta¸c˜ao e comunica¸c˜oes das empresas, tornando o acesso a essa informa¸c˜ao mais simples e independente da localiza¸c˜ao dos colaboradores.

´

E importante, com a crescente quantidade de informa¸c˜ao, os utilizadores do iPor-talDoc conseguirem aceder aos documentos de uma forma expedita. Para isso, o iPortalDoc disponibiliza duas op¸c˜oes de pesquisa, simples e avan¸cada. A pesquisa simples procura todos os documentos que contenham o texto inserido e retorna todos os resultados poss´ıveis. Com o enorme volume de documentos na base de dados, este tipo de pesquisa acaba por ser pouco eficiente, apresentando os resultados com um

(24)

1.2. Objetivos

tempo de resposta inaceit´avel que acaba por fazer perder tempo dos colaboradores e assim reduzir a produtividade da empresa. Al´em disso, muitos dos resultados devol-vidos s˜ao irrelevantes para a pesquisa do utilizador, estando os resultados realmente importantes perdidos no meio destes.

A pesquisa pode ser feita de uma forma mais refinada, atrav´es do uso de c´odigos (que retornam um documento espec´ıfico) ou atrav´es de filtros. Embora este tipo de pesquisa seja mais exata, implica um esfor¸co adicional por parte do utilizador que se quer evitar, melhorando assim a facilidade de utiliza¸c˜ao da aplica¸c˜ao.

1.2

Objetivos

Os objetivos deste projeto passam por em primeiro lugar melhorar o tempo de resposta do motor de pesquisa do iPortalDoc de forma a que os utilizadores percam o m´ınimo de tempo poss´ıvel na procura dos documentos que necessitam para realizar o seu trabalho.

Numa segunda fase dever´a ser integrado no iPortalDoc um m´odulo com capacidade de aprendizagem, utilizando uma t´ecnica baseada em aprendizagem computacional, para melhorar a qualidade dos resultados que s˜ao apresentados ao utilizador. Este m´odulo dever´a, com cada pesquisa realizada, aprender qual o(s) documento(s) mais relevante e dessa forma alterar a ordena¸c˜ao dos documentos, promovendo o(s) resultado(s) pretendidos para o topo da lista.

Al´em disto, o motor de busca deve funcionar na l´ıngua do sistema, de forma a permitir a utiliza¸c˜ao da funcionalidade nos diversos mercados em que a aplica¸c˜ao ´e comercializada.

1.3

Metodologia

Como foi referido nas sec¸c˜oes anteriores, o principal problema do iPortalDoc est´a no tempo de resposta do motor de pesquisa. Al´em disso, um segundo problema ´e a pobre qualidade dos resultados apresentados.

Para se poder compreender melhor o problema do tempo de resposta, e tamb´em para permitir encontrar a solu¸c˜ao mais adequada, realizaram-se testes de performance, tanto do motor de pesquisa existente, como das solu¸c˜oes consideradas. Estes testes serviram para se poder, de uma forma quantitativa, avaliar qual o melhor plano de ataque ao problema. Os testes foram realizados numa r´eplica da base de dados de produ¸c˜ao da IPBRICK, pelo que apresentam resultados fi´aveis devido ao grande volume de amostras.

J´a para compreender melhor o problema da qualidade dos resultados, os testes re-alizados tiveram como objetivo a recolha de amostras de resultados de pesquisas,

(25)

1.4. A Empresa

para se poder, de forma qualitativa, avaliar a relevˆancia dos documentos. No en-tanto, ap´os a implementa¸c˜ao do m´odulo de aprendizagem, n˜ao foi poss´ıvel testar com uma amostra volumosa de dados, pelo que n˜ao ´e poss´ıvel avaliar com precis˜ao o desempenho da solu¸c˜ao.

Embora o problema do iPortalDoc seja muito espec´ıfico, o que impede reproduzir os resultados obtidos fora do ambiente de desenvolvimento da IPBRICK, a solu¸c˜ao encontrada pode ser adaptada a diversos casos semelhantes, pois esta foi desenhada utilizando m´etodos usados frequentemente em problemas deste g´enero.

1.4

A Empresa

A IPBRICK S.A. surgiu no ano 2000, na altura pelo nome de iPortalMais, fundada pelo Eng.º Ra´ul Oliveira, ex-professor de Engenharia Eletrot´ecnica e de Computa-dores na FEUP, impulsionada por ´epoca de intensa atividade de apoio ao sistema operativo Linux.

A sua ´area inicial de interven¸c˜ao prendia-se no desenvolvimento de aplica¸c˜oes para a internet, assentes em software open source. Em 2001 come¸cou a dar os primeiros passos de investiga¸c˜ao e desenvolvimento e a conceber solu¸c˜oes para comunica¸c˜oes empresariais.

Devido `a sua impossibilidade de formar parceiros para a instala¸c˜ao de servidores Linux, decidiu criar uma ferramenta para instalar automaticamente o servidor Linux de intranet, surgindo assim o produto IPBrick.

J´a em 2005, aproveitando a estabiliza¸c˜ao tecnol´ogica dos seus produtos e das cres-centes solicita¸c˜oes do mercado externo deu passos ambiciosos na internacionaliza¸c˜ao da empresa.

Hoje, a IPBRICK ´e uma empresa saud´avel que concorre num mercado mundial com grande potencial e quase sem limites com o que chama de quadrante m´agico: comunica¸c˜oes unificadas, gest˜ao de documentos e processos, email e groupware e a sua rede social corporativa.

1.5

Estrutura do Documento

Este documento encontra-se organizado em seis cap´ıtulos. Neste primeiro cap´ıtulo foi feita uma breve apresenta¸c˜ao do projeto, apresentando o contexto em que este se insere, a motiva¸c˜ao para esta disserta¸c˜ao e os seus objetivos gerais.

No Cap´ıtulo 2 ´e feita uma revis˜ao bibliogr´afica, onde e apresenta o campo de recu-pera¸c˜ao de informa¸c˜ao, alguns m´etodos de pesquisa existentes e v´arias ferramentas relevantes. Descrevem-se tamb´em as solu¸c˜oes de pesquisa textual que nos s˜ao dis-ponibilizadas no PostgreSQL, o sistema de gest˜ao de bases de dados utilizado no

(26)

1.5. Estrutura do Documento

iPortalDoc, assim como v´arios tipos de ´ındices, estruturas de dados que permitem aumentar a velocidade da recupera¸c˜ao da informa¸c˜ao. Al´em disso ´e feito tamb´em um levantamento da ´area de aprendizagem computacional e mais especificamente de t´ecnicas de classifica¸c˜ao de documentos. Nesta sec¸c˜ao analisar-se-´a tamb´em v´arias ferramentas dispon´ıveis para a conce¸c˜ao de sistemas com capacidades de aprendi-zagem, com o intuito de escolher a mais adequada para ser integrada no iPortal-Doc.

Feita a revis˜ao bibliogr´afica, ´e ent˜ao apresentado em mais detalhe, no Cap´ıtulo 3, a g´enese do problema, onde s˜ao expostos testes realizados que demonstram que a performance do motor de pesquisa do iPortalDoc est´a longe do que ´e aceit´avel. Conhecendo o problema em detalhe s˜ao estudadas diferentes possibilidades para a solu¸c˜ao, que s˜ao apresentadas no Cap´ıtulo 4. Aqui ´e apresentado o modelo rela-cional do iPortalDoc, atrav´es do qual ´e poss´ıvel compreender a especificidade do problema e as dificuldades que foram encontradas ao longo do desenvolvimento do trabalho. Exp˜oe-se tamb´em testes que foram realizados na tentativa de compreender a performance de v´arias solu¸c˜oes e que levaram `a escolha da solu¸c˜ao implementada e revelada a arquitetura da solu¸c˜ao. J´a no Cap´ıtulo 5 apresentam-se os resultados obtidos com a solu¸c˜ao implementada.

Por fim, no Cap´ıtulo 6, s˜ao tiradas as conclus˜oes da disserta¸c˜ao e discutem-se ideias interessantes para trabalho futuro.

(27)

Cap´ıtulo 2

Revis˜

ao Bibliogr´

afica

Para compreender melhor o problema ´e necess´ario antes compreender o estado do campo de recupera¸c˜ao de informa¸c˜ao e ter uma no¸c˜ao das diferentes t´ecnicas existen-tes e as vantagens e desvantagens de cada uma para quando for feita a arquitetura do sistema a desenvolver.

Neste cap´ıtulo ´e feita uma introdu¸c˜ao ao campo de recupera¸c˜ao de informa¸c˜ao, se-guido de uma listagem e breve explica¸c˜ao de diferentes t´ecnicas usadas para o efeito. Exploram-se tamb´em as solu¸c˜oes de pesquisa disponibilizadas no PostgreSQL, o SGBD utilizado no iPortalDoc, assim como os tipos de ´ındices que podem ser utili-zados para o efeito. S˜ao enumeradas algumas ferramentas relevantes.

Segue-se com uma introdu¸c˜ao ao campo de inteligˆencia artificial, mais especifica-mente, ao campo de aprendizagem computacional e apresentam-se alguns dos algo-ritmos mais relevantes para a classifica¸c˜ao de documentos. S˜ao por fim apresentadas algumas ferramentas dispon´ıveis de serem utilizadas para integrar capacidades de aprendizagem no iPortalDoc.

2.1

Recupera¸

ao de Informa¸

ao

As primeiras bibliotecas surgiram `a volta do ano 3000 AC, consistindo em arquivos de placas de barro, sendo que os sum´erios desenvolveram formas de classificar e identificar cada placa, j´a percebendo na altura a importˆancia de manter os arquivos organizados [2, 3].

Ao longo dos s´eculos, com o aparecimento do papel, tornou-se cada vez mais impor-tante encontrar formas eficientes de armazenar e recuperar a informa¸c˜ao [2]. Com o aparecimento do computador come¸cou-se a perceber que estes poderiam ser usados para armazenar e recuperar grandes volumes de informa¸c˜ao e estas ideias come¸caram a materializar-se na d´ecada de 50 [2].

As bibliotecas foram das primeiras a adotar sistemas de recupera¸c˜ao de informa¸c˜ao [4]. Estes sistemas foram inicialmente desenvolvidos em ambientes acad´emicos e

(28)

2.1. Recupera¸c˜ao de Informa¸c˜ao

apenas mais tarde surgiram solu¸c˜oes comerciais. Numa primeira fase estes sistemas permitiam simplesmente pesquisar t´ıtulo e autor. Mais tarde os sistemas vieram-se a desenvolver para permitir a pesquisa por queries mais complexas [4].

Na d´ecada de 60 deram-se alguns grandes avan¸cos, com o desenvolvimento do sistema SMART na universidade de Cornell, onde se desenvolveram t´ecnicas como a do modelo vetorial. Nos anos 70 e 80 v´arios novos modelos foram desenvolvidos e experimentalmente comprovados em pequenas cole¸c˜oes de dados. No entanto, devido `

a falta de cole¸c˜oes de tamanho consider´avel os investigadores possu´ıam d´uvidas quanto `a escalabilidade destes modelos [5, 2]. Para dar resposta a isto, surgiu nos anos 90 a TREC, uma conferˆencia cujo objetivo era fomentar a colabora¸c˜ao na constru¸c˜ao de grandes cole¸c˜oes de dados, o que levou `a reformula¸c˜ao de t´ecnicas j´a existentes e ao desenvolvimento de novas t´ecnicas que fossem eficientes em grandes volumes de dados [6].

Com o aparecimento da WWW, a necessidade de pesquisa na web levou a que algoritmos de recupera¸c˜ao de informa¸c˜ao (RI) fossem aplicados nesta ´area. Ao longo dos anos estes sistemas evolu´ıram para tirar partido das hiperliga¸c˜oes entre p´aginas [7]. Hoje em dia, a web ´e a forma mais f´acil e r´apida para aceder a informa¸c˜ao, o que permite chegar a um cada vez maior n´umero de pessoas sem haver limita¸c˜oes de fronteiras [4].

2.1.1

Introdu¸

ao `

a Recupera¸

ao de Informa¸

ao

O campo de recupera¸c˜ao de informa¸c˜ao pode ser definido como o campo que lida com a pesquisa e recupera¸c˜ao de informa¸c˜ao n˜ao estruturada (geralmente texto) que se encontram armazenados em cole¸c˜oes, regra geral em computadores [5]. A informa¸c˜ao dita n˜ao estruturada refere-se a informa¸c˜ao que n˜ao tem uma estrutura clara para um computador, pois como ´e claro para n´os humanos, o texto apresenta estrutura, como t´ıtulos, por exemplo. J´a do mesmo ponto de vista, a informa¸c˜ao estruturada ´e informa¸c˜ao que ’encaixa’ bem, por exemplo, numa base de dados.

Portanto um sistema de recupera¸c˜ao de informa¸c˜ao deve ser capaz de armazenar os dados de uma forma a que seja poss´ıvel disponibilizar ao utilizador formas de pesquisa estruturada [5], como ´e o exemplo do iPortalDoc que permite realizar as pesquisas em diversos campos como t´ıtulo, sum´ario, descri¸c˜ao, entre outros. A representa¸c˜ao e organiza¸c˜ao desta informa¸c˜ao deve permitir ao utilizador um acesso f´acil e r´apido aos dados que procura [4].

A componente de recupera¸c˜ao de dados de um sistema de recupera¸c˜ao de informa¸c˜ao tem como objetivo selecionar os documentos que contˆem os termos pelos quais o uti-lizador pesquisou, o que geralmente n˜ao ´e suficiente para satisfazer o utilizador. En-quanto que um sistema de recupera¸c˜ao de informa¸c˜ao tem como objetivo recuperar a informa¸c˜ao relevante para o utilizador, a recupera¸c˜ao de dados apenas se interessa pela recupera¸c˜ao da informa¸c˜ao que satisfaz a query, sendo que se um simples erro implica que todo o processo falhou quando num sistema de RI, a recupera¸c˜ao de alguma informa¸c˜ao que n˜ao ´e totalmente precisa ou at´e relevante para o utilizador

(29)

2.1. Recupera¸c˜ao de Informa¸c˜ao

por vezes passa despercebida [4]. ´

E portanto importante reter o conceito de relevˆancia que ´e fundamental no campo de recupera¸c˜ao de informa¸c˜ao. Para a constru¸c˜ao de uma solu¸c˜ao que satisfa¸ca as necessidades dos seus utilizadores, um sistema de RI deve conseguir analisar os conte´udos dos documentos e com esses dados ordenar os resultados de acordo com a relevˆancia para a query do utilizador [4].

Um sistema de informa¸c˜ao pode ser classificado com respeita `a escala em que ope-ram: pesquisas web, recupera¸c˜ao de informa¸c˜ao pessoal e o interm´edio destes dois extremos, que ´e onde o iPortalDoc encaixa, o dom´ınio institucional [5].

A primeira categoria, de web, ´e obviamente a maior e provavelmente a mais compli-cada de trabalhar. A esta escala lidam-se com milhares de milh˜oes de documentos, espalhados por in´umeros servidores por todo o mundo. Os principais desafios s˜ao a constru¸c˜ao de sistemas que funcionem a esta escala, a indexa¸c˜ao do enorme volume de informa¸c˜ao e o desenvolvimento de algoritmos que sejam capazes de compreen-der o markup das p´aginas web para poderem eficazmente realizar o ranking e evitar tentativas fraudulentas de manipular esse ranking [5].

Na escala de recupera¸c˜ao de informa¸c˜ao pessoal compreendem-se por exemplo os sistemas de pesquisa integrados nos sistemas operativos. Os pontos foco destes sistemas s˜ao lidar com a enorme variedade de documentos existentes no computador do utilizador, evitar a necessidade de manuten¸c˜ao do sistema e tamb´em assegurar que este ´e um sistema leve no que diz respeito ao consumo de recursos [5].

Por fim, no dom´ınio institucional temos, por exemplo, um sistema para recuperar informa¸c˜ao das cole¸c˜oes de uma empresa. Nestes casos, a informa¸c˜ao tipicamente encontra-se armazenada numa base de dados, tendo um servidor que oferece fun¸c˜oes de pesquisa dessa informa¸c˜ao [5].

2.1.2

O Utilizador

A tarefa do utilizador, quando utiliza um sistema de recupera¸c˜ao de informa¸c˜ao, ´e a introdu¸c˜ao da query no sistema [4]. Regra geral esta query ´e feita utilizando uma combina¸c˜ao dos termos procurados.

Quando um utilizador realiza uma pesquisa num sistema de RI ou motor de pesquisa, est´a a comandar o sistema a executar uma a¸c˜ao de recupera¸c˜ao.

No entanto, pode acontecer que o utilizador n˜ao tenha uma ideia concreta do que procura e a sua intera¸c˜ao com o sistema pode limitar-se a navegar na cole¸c˜ao de dados at´e encontrar algo do seu interesse. Um exemplo concreto poder´a ser na-vegar por uma loja online. Nesta caso dir-se-´a que est´a a executar uma a¸c˜ao de navega¸c˜ao.

(30)

2.1. Recupera¸c˜ao de Informa¸c˜ao

Figura 2.1: Intera¸c˜oes do utilizador com o sistema de recupera¸c˜ao de informa¸c˜ao

Atrav´es da figura ´e poss´ıvel visualizar que geralmente os sistemas de RI oferecem a possibilidade de executar os dois tipos de a¸c˜oes mencionadas (recupera¸c˜ao e na-vega¸c˜ao). No caso do iPortalDoc, um utilizador tanto pode encontrar o documento que procura atrav´es da pesquisa ou navegando a hierarquia de diretorias. O sis-tema pode tamb´em oferecer uma forma de utiliza¸c˜ao que combina a recupera¸c˜ao e a navega¸c˜ao, no entanto ainda n˜ao ´e uma pr´atica comum [4].

Tamb´em ´e poss´ıvel perceber que as a¸c˜oes podem repetir-se, ou seja, o utilizador solicita a informa¸c˜ao de uma forma interativa [4]. Um exemplo disto pode ser simplesmente a pagina¸c˜ao que ocorre quando ´e realizada uma pesquisa. Quando o utilizador solicita mais documentos, a a¸c˜ao de recupera¸c˜ao repete-se para atender ao pedido do utilizador.

2.1.3

Os Documentos

Os documentos de uma cole¸c˜ao s˜ao frequentemente representados por um ´ındice que contˆem as suas palavras-chave. Estas palavras chave podem ser tiradas diretamente do texto do documento ou introduzidas manualmente pelo utilizador no momento de inser¸c˜ao. De qualquer das formas esta representa¸c˜ao das palavras-chave do do-cumento representam a vis˜ao l´ogica dos documentos [4].

Hoje em dia os computadores j´a permitem armazenar o texto completo do docu-mento, ou seja, representa-lo pelo conjunto completo de termos que contˆem. No entanto, para cole¸c˜oes com um grande volume de documentos esta solu¸c˜ao torna-se pouco vi´avel, recorrendo-se a processos de redu¸c˜ao dos termos do documento como

(31)

2.1. Recupera¸c˜ao de Informa¸c˜ao

´

e poss´ıvel observar na Figura 2.2 [4].

Figura 2.2: Processo de indexa¸c˜ao de documentos

Atrav´es da figura ´e poss´ıvel observar as diferentes fases por que um documento pode passar, desde ter o texto completo at´e o este estar representado pelo m´ınimo de termos poss´ıvel, que se encontram descritas de seguida [4]:

1. Nesta primeira fase, de an´alise de estrutura, o texto ´e analisado com o objetivo de reconhecer a estrutura do mesmo, como cap´ıtulos, sec¸c˜oes, entre outros; 2. Na segunda fase ocorre a tokenization, ou seja, o texto ´e divido pelos espa¸cos

e pontua¸c˜ao, passando a ter v´arias strings com as palavras (tokens) em vez de apenas uma com o texto completo;

3. Na terceira fase realiza-se a remo¸c˜ao de stopwords s˜ao retiradas palavras co-muns cujo significado ´e reduzido (como ’o’, ’a’, ’de’, ’do’);

4. Na fase de stemming as palavras s˜ao reduzidas `a sua raiz (gatos, gata, gatinho s˜ao todos armazenados como gato, por exemplo)

5. Por fim os termos restantes, que descrevem o documento, s˜ao indexados Como ´e l´ogico, a indexa¸c˜ao completa do documento ´e a solu¸c˜ao que melhor o repre-senta, no entanto implica um maior custo computacional. ´E ent˜ao comum armazenar uma vis˜ao l´ogica do documento mais concisa que ir´a levar a uma melhor performance do sistema mas poder´a levar a resultados mais pobres [4].

2.1.4

O Processo de Recupera¸

ao de Informa¸

ao

O processo de recupera¸c˜ao de informa¸c˜ao ´e um processo que pode ser dividido em v´arias etapas que encontram representadas no esquema da Figura 2.3 [4].

Antes da execu¸c˜ao do processo poder ter in´ıcio ´e necess´ario definir a vis˜ao l´ogica dos documentos. Para isso ´e necess´ario definir quais os documentos a serem usados, as opera¸c˜oes que podem ser realizadas sobre o texto e modelo do texto que representa a sua estrutura e quais os campos que podem ser pesquisados [4].

(32)

2.1. Recupera¸c˜ao de Informa¸c˜ao

Com a vis˜ao l´ogica dos documentos definida ´e constru´ıdo um ´ındice com os termos dos documentos. Um ´ındice ´e uma estrutura indispens´avel num sistema de RI pois permite agilizar o processo de pesquisa sobre grandes volumes de dados [4]. Existem diferentes tipos de ´ındices que ser˜ao descritos mais `a frente.

Figura 2.3: Processo de recupera¸c˜ao de informa¸c˜ao

O processo de recupera¸c˜ao de informa¸c˜ao inicia-se ent˜ao quando o utilizador insere o termos da sua pesquisa. Este texto introduzido pelo utilizador pode sofrer algumas opera¸c˜oes (das referidas na fase de indexa¸c˜ao, por exemplo) e com o resultado destas opera¸c˜oes ´e formulada uma query que ´e ent˜ao submetida ao sistema que armazena os documentos e ´e executada a pesquisa. Quando os resultados s˜ao devolvidos estes passam por uma fase de ordena¸c˜ao onde o sistema ir´a reordenar os documentos tendo em conta a sua relevˆancia para a pesquisa do utilizador [4].

2.1.5

etricas de Avalia¸

ao

Quando o utilizador realiza uma pesquisa num sistema de recupera¸c˜ao de informa¸c˜ao, o objetivo deste deve ser apresentar a informa¸c˜ao considerada relevante, devida-mente ordenada. No entanto, ´e normal que parte da informa¸c˜ao recuperada seja de pouco interesse ou at´e mesmo irrelevante visto que um sistema de recupera¸c˜ao de informa¸c˜ao lida com linguagem humana, que pode conter ambiguidades ou at´e erros, enquanto que a informa¸c˜ao est´a tipicamente armazenada em computadores onde existe uma estrutura de dados bem definida.

A eficiˆencia de um sistema de recupera¸c˜ao de informa¸c˜ao pode ser medida com as m´etricas precision e recall [8] que se encontram representadas na Figura 2.4.

(33)

2.1. Recupera¸c˜ao de Informa¸c˜ao

Figura 2.4: Ilustra¸c˜ao das m´etricas precision e recall

Note-se que o conjunto R representa todos os documentos relevantes e o conjunto D todos os documentos devolvidos pelo sistema de recupera¸c˜ao de informa¸c˜ao. A interce¸c˜ao dos dois, o conjunto X, representa ent˜ao o conjunto de documentos rele-vantes que foram devolvidos.

Precision define-se ent˜ao como a rela¸c˜ao entre o conjunto de documentos relevantes que foram retornados e o conjunto total de documentos retornados:

X D

Recall define-se como a rela¸c˜ao entre o n´umero de documentos relevantes que foram devolvidos e o conjunto total de documentos relevantes:

X R ´

E poss´ıvel aumentar aumentar uma m´etrica `a custa da outra [9]. Isto deve-se ao facto de se estar a lidar com texto, que pode muitas vezes ser subjetivo. Se o utilizador quiser uma pesquisa mais abrangente poss´ıvel o sistema pode pesquisar n˜ao s´o pelos termos inseridos mas tamb´em por sin´onimos ou conceitos relacionados, o que leva a um aumento da probabilidade de retornar documentos n˜ao relevantes. Por outro lado, se a pesquisa for muito estrita pode acontecer que haja documentos relevantes que n˜ao satisfazem a query e portanto n˜ao s˜ao devolvidos.

Tamb´em ´e necess´ario referir que a relevˆancia de um documento ´e bastante subjetiva, podendo variar de utilizador para utilizador.

´

E ent˜ao importante, durante a conce¸c˜ao de um sistema de RI, encontrar um compro-misso entre estas m´etricas. Embora obter uma percentagem elevada de recall seja desej´avel e at´e relativamente simples (percorrendo a base de dados completamente),

(34)

2.2. T´ecnicas

´e geralmente prefer´ıvel obter maior precis˜ao, sendo que os utilizadores costumam necessitar apenas de um ou dois resultados relevantes [9]. A combina¸c˜ao das duas m´etricas ´e conhecida por F-measure e ´e descrita pela seguinte equa¸c˜ao:

F = (1 + α

2) · P · R

(α2· P ) + R (2.1)

A vari´avel P representa precision e R recall. α permite dar mais peso a uma ou outra m´etrica, sendo que α = 1 equivale a um balanceamento das duas.

2.2

ecnicas

Nesta sec¸c˜ao ir˜ao ser apresentados alguns dos principais modelos de recupera¸c˜ao, come¸cando pelo modelo booleano, o mais b´asico, e cobrindo depois alguns dos mais usados nos dias que correm, o modelo vetorial e o modelo probabil´ıstico.

2.2.1

Modelo Booleano

Um dos primeiros modelos de recupera¸c˜ao de informa¸c˜ao a surgir foi o modelo booleano em que as queries s˜ao colocadas utilizando combina¸c˜oes dos operadores AND, OR e NOT [2].

Devido a esta natureza bin´aria os resultados retornados correspondem exatamente `

as condi¸c˜oes impostas na query, n˜ao pode haver uma correspondˆencia parcial [5]. Al´em disso tamb´em se torna complicado para o utilizador exprimir queries mais complexas.

A desvantagem deste modelo ´e que apenas permite ordenar os documentos pela existˆencia dos termos pesquisados. A sua grande vantagem reside na sua simplici-dade.

De seguida ´e apresentado um exemplo de utiliza¸c˜ao deste modelo. O primeiro passo ´e criar uma matriz que indique quais os documentos em que cada termo indexado est´a presente [5]:

T´aticas de Futebol B´ıblia Watchmen RI

Jesus 1 1 0 0

Rorschach 0 0 1 0

Boole 0 0 0 1

Tabela 2.1: Matriz termo-documento para pesquisa booleana

Cada coluna desta matriz ´e um vetor que contem informa¸c˜ao acerca dos termos existentes no documento correspondente. O modelo booleano acaba ent˜ao por ser um caso espec´ıfico do modelo vetorial que ser´a apresentado na sec¸c˜ao seguinte.

(35)

2.2. T´ecnicas

Se o utilizador quiser encontrar quais os documentos que contˆem ’Boole’ ou ’Rors-chach’ mas n˜ao ’Jesus’ ent˜ao poderia exprimir a query da seguinte forma: ’Boole’ OR ’Rorschach’ AND NOT ’Jesus’. De seguida calculava-se o resultado da seguinte express˜ao:

0001 OR 0010 AND 0011

O resultado desta express˜ao ´e 0011, correspondendo aos documentos ’Watchmen’ e ’RI’.

2.2.2

Modelo Vetorial

No modelo vetorial, tal como no booleano, os documentos s˜ao representados num vetor de termos, tipicamente palavras, em que cada uma se torna uma dimens˜ao num espa¸co dimensional que ser´a tanto maior quanto o n´umero de termos existentes. Um determinado termo que exista num texto ter´a um valor n˜ao nulo no vetor do texto, na dimens˜ao correspondente. Como um documento tem um conjunto limitado de termos de um enorme vocabul´ario, estes vetores s˜ao tipicamente muito esparsos [2].

Neste modelo ´e obtida a ’pontua¸c˜ao’ de um documento calculando a similaridade entre o vetor que representa a query colocada pelo utilizador e o vetor do documento. Esta similaridade poderia ser calculada atrav´es do produto interno entre os vetores

~

D que representa o documento e ~Q que representa a query [10]:

~

D · ~Q (2.2)

No entanto esta forma de calcular n˜ao leva em conta o tamanho do documento. Um documento muito longo tende a ser considerado mais relevante pois como existe mais texto, as palavras tendem a aparecer mais vezes [10, 5], enquanto que os termos pesquisados aparecerem num documento mais curto indica, provavelmente, que esse documento ´e mais relevante.

Para compensar este efeito, ´e comum atribuir-se diferentes pesos aos termos exis-tentes num documento, tendo em conta a sua relevˆancia. A similaridade entre dois documentos ´e tipicamente calculada pelo ˆangulo que existe entre os dois vetores aproveitando a propriedade do co-seno que nos d´a o valor 1 para ˆangulos idˆenticos e 0 para ˆangulos ortogonais. Normalizando o valor dos vetores para ocuparem valores entre 0 e 1, o c´alculo da similaridade ´e reduzido ao produto interno dos vetores do documento ~D e da query ~Q [2]:

Sim( ~D, ~Q) = X

ti∈Q,D

wtiQ· wtiD (2.3)

Onde wtiQ representa o peso do termo i na query Q e wtiD representa o peso do termo i no documento D. Estes pesos s˜ao geralmente calculados usando o m´etodo

(36)

2.2. T´ecnicas

de pesagem tf -idf (Term Frequency - Inverse Document Frequency).

O m´etodo tf -idf funciona relacionando duas m´etricas. A primeira, tf , indica a frequˆencia do termo no documento, ou seja, o n´umero de vezes que este aparece no documento [11]. Logo, quantas mais vezes o termo aparece no documento, maior vai ser este valor.

Para poder ter em conta o facto de v´arias palavras serem comuns ao longo da cole¸c˜ao de documentos, o peso do termo ´e ajustado usando a idf que indica a propor¸c˜ao do termo na cole¸c˜ao de documentos, ou seja, este valor vai ser maior quanto mais raro for o termo. Este valor ´e calculado da seguinte forma [11]:

idf (t, D) = log N |ft,D|

(2.4)

Em que N representa o n´umero total de documentos na cole¸c˜ao e ft,D representa o

n´umero de documentos em que o termo t aparece.

O valor final do peso ´e ent˜ao calculado da seguinte forma [11]:

tf · idf = ft,d· log

N |ft,D|

(2.5)

A vantagem do modelo vetorial em rela¸c˜ao ao modelo booleano ´e a possibilidade de obter correspondˆencias parciais e calcular a semelhan¸ca entre as queries e os documentos e fazer desta forma uma ordena¸c˜ao por relevˆancia que leva em conta a frequˆencia com que os termos aparecem nos documentos da cole¸c˜ao.

2.2.3

Modelos Probabil´ısticos

Os modelos probabil´ısticos s˜ao uma fam´ılia de modelos de recupera¸c˜ao de informa¸c˜ao cujo princ´ıpio reside na ideia de que os documentos devem ser ordenados por ordem decrescente da probabilidade de serem relevantes a uma determinada query. A isto d´a-se o nome de Probabilistic Ranking Principle (PRP). Estes modelos estimam essa probabilidade, mas a forma como o fazem varia de modelo para modelo [2].

O primeiro modelo probabil´ıstico foi proposto por Maron e Kuhns e tinha como principal ideia calcular a probabilidade de relevˆancia dos termos de um documento para a query que foi realizada [12]. No entanto este modelo nunca foi posto em pr´atica devido `a dificuldade em estimar os parˆametros necess´arios [13].

Apresenta-se ent˜ao de seguida o Binary Independence Model (BIM), um modelo frequentemente usado com o PRP pois introduz algumas assun¸c˜oes que tornam mais simples o calculo das probabilidades [5].

(37)

2.2. T´ecnicas

Binary Independence Model

O BIM surge como uma generaliza¸c˜ao do modelo proposto por Maron e Kuhns [13]. O modelo assume que os termos s˜ao independentes entre si (da´ı o nome). Embora esta assun¸c˜ao seja errada, na pr´atica os resultados s˜ao satisfat´orios [5].

Este modelo come¸ca por representar a query por um vetor ~q = (q1, ..., qi) que

apre-senta o valor 1 nas dimens˜oes correspondentes aos termos que contˆem e 0 nas res-tantes (semelhante ao modelo vetorial):

qi =



1, Se a query contˆem o termo ti

0, Caso contr´ario



(2.6)

O objetivo do modelo ´e ent˜ao calcular a probabilidade de um documento ~d ser relevante dada uma query ~q, P (R, |dm, qk). Usando o teorema de Bayes:

P (R = 1| ~d, ~q) = P ( ~d|R = 1, ~q) · P (R = 1|~q)

P (~x|~q) (2.7)

P (R = 0| ~d, ~q) = P ( ~d|R = 0, ~q) · P (R = 0|~q)

P (~x|~q) (2.8)

As express˜oes P ( ~d|R = 1, ~q) e P ( ~d|R = 0, ~q) representam a probabilidade de, re-cuperado um documento relevante (R = 1) ou n˜ao (R = 0), a representa¸c˜ao desse documento ser ~d. No entanto, como ´e complicado estimar estas probabilidades pode-se ordenar os documentos de acordo com a sua raz˜ao de relevˆancia:

O(R| ~d, ~q) = P (R = 1| ~d, ~q) P (R = 0| ~d, ~q) = P ( ~d|R=1,~q)·P (R=1|~q) P (~x|~q) P ( ~d|R=0,~q)·P (R=0|~q) P (~x|~q) = P ( ~d|R = 1, ~q) · P (R = 1|~q) P ( ~d|R = 0, ~q) · P (R = 0|~q) (2.9)

A express˜ao P (R=1|~P (R=0|~q)q) ´e constante para uma dada query, pelo que n˜ao ´e necess´ario estimar. Como foi mencionado no inicio, assume-se que os termos s˜ao independentes entre si. Desta forma pode-se simplificar a equa¸c˜ao para:

O(R| ~d, ~q) = O(R|~q) · n Y t=1 P (dt|R = 1, ~q) P (dt|R = 0, ~q) (2.10)

(38)

2.2. T´ecnicas

Como dt= 1 ∨ dt = 0 ´e poss´ıvel separar os termos obtendo ent˜ao:

O(R| ~d, ~q) = O(R|~q) · Y t:dt=1 P (dt = 1|R = 1, ~q) P (dt = 1|R = 0, ~q) · Y t:dt=0 P (dt = 0|R = 1, ~q) P (dt = 0|R = 0, ~q) (2.11)

Fazendo pt = P (dt = 1|R = 1, ~q) e ut = P (dt = 1|R = 0, ~q), e assumindo que

os termos que n˜ao ocorrem na query podem ocorrer igualmente em documentos relevantes e n˜ao relevantes, obt´em-se ent˜ao:

O(R| ~d, ~q) = O(R|~q) · Y t:dt=qt=1 pt ut · Y t:dt=0,qt=1 1 − pt 1 − ut = O(R|~q) · Y t:dt=qt=1 pt(1 − ut) ut(1 − pt) · Y t:qt=1 1 − pt 1 − ut (2.12) A express˜ao Qn t:qt=1 1−pt

1−ut ´e constante pelo que n˜ao ´e necess´ario estimar. ´E ent˜ao apenas necess´ario estimar Retrieval Status Value (RSV):

RSVd= log Y t:dt=qt=1 pt(1 − ut) ut(1 − pt) = X t:dt=qt=1 log pt(1 − ut) ut(1 − pt) = X t:dt=qt=1 log pt (1 − pt) + log(1 − ut) ut (2.13)

Assumindo que os documentos relevantes s˜ao raros (o que se torna pr´oximo da verdade em cole¸c˜oes de grande volume) [2] ´e poss´ıvel fazer ut = fNt, em que ft

representa o n´umero de documentos em que o termo t aparece e N sendo o n´umero total de documentos: ut= log (1 − ut) ut ≈ logN − ft ft ≈ logN ft (2.14) ´

E poss´ıvel observar similaridade com a equa¸c˜ao 2.4. Como este ´e um modelo bin´ario, pode-se assumir que pt = 0.5, sendo que a express˜ao log1−pptt = 1 e RSV torna-se

um somat´orio das idf .

Este modelo probabil´ıstico teve grandes influˆencias no campo de RI, este apresenta algumas ’falhas’ que levam a que o seu uso, na forma apresentada, seja reduzido [14]. Em primeiro lugar o modelo n˜ao leva em conta as frequˆencias dos termos

(39)

2.3. Indexa¸c˜ao

no documento, pelo que a repeti¸c˜ao de um termo num documento n˜ao leva a que este documento seja considerado mais relevante quando deveria. Em segundo lugar, e tal como o modelo vetorial, tamb´em n˜ao considera o tamanho do documento, pelo que um termo que ocorre muitas vezes num documento longo vai levar a que esse documento tenha uma relevˆancia maior quando provavelmente esse termo ter´a menos significado num documento longo do que num mais curto.

2.3

Indexa¸

ao

As t´ecnicas de pesquisas que foram apresentadas preocupam-se apenas com a qua-lidade dos resultados, enquanto que para melhorar a performance de um sistema s˜ao utilizados ´ındices. Um ´ındice ´e uma estrutura de dados que permite organizar a informa¸c˜ao de modo a otimizar as opera¸c˜oes de recupera¸c˜ao dessa informa¸c˜ao [15].

Para compreender melhor o funcionamento de um ´ındice ´e necess´ario primeiro per-ceber a forma como a BD armazena os dados das tabelas.

2.3.1

Heap Files

Os dados encontram-se armazenados em heap files, que s˜ao ficheiros desordenados, ou seja, os dados encontram-se guardados de forma aleat´oria ao longo de v´arias p´aginas, sendo que uma p´agina ´e uma unidade de dados em disco [15].

Como os dados se encontram armazenados de forma n˜ao ordenada, quando se rea-liza uma opera¸c˜ao de pesquisa ´e necess´ario percorrer todas as p´aginas do ficheiro, verificando todos as entradas existentes e recuperar as que satisfazem as condi¸c˜oes postas. Para se realizarem as pesquisas ´e necess´ario manter contagem das p´aginas e para se realizarem inser¸c˜oes de novos dados ´e tamb´em necess´ario manter a listagem das p´aginas que tˆem espa¸co livre [15].

Existem v´arias formas de manter estes ficheiros, sendo que se ir´a apresentar a lista ligada de p´aginas e o diret´orio de p´aginas.

Lista Ligada de P´aginas

Na organiza¸c˜ao por lista ligada o SGBD sabe onde se encontra a primeira p´agina guardando pares de hnome ficheiro, apontador pagina 1 i. A organiza¸c˜ao do ficheiro encontra-se ilustrada na Figura 2.5 [15].

Cada apontador representa um identificador da p´agina. Repare-se tamb´em que na verdade existem duas listas ligadas: uma com as p´aginas com espa¸co livre e outra com as p´aginas que se encontram preenchidas. Isto permite ter acesso direto

(40)

2.3. Indexa¸c˜ao

Figura 2.5: Organiza¸c˜ao de ficheiro heap em lista ligada

a p´aginas com espa¸co para se poderem fazer inser¸c˜ao de novos dados. Caso seja necess´aria uma nova p´agina basta adicionar os apontadores `a lista [15].

A grande desvantagem deste tipo de organiza¸c˜ao dos ficheiros heap ´e que, caso os dados que se inserem sejam de tamanho vari´avel, ´e altamente prov´avel que todas as p´aginas estejam na lista de p´aginas livres pois ao inserir dados novos procura-se uma p´agina que tenha espa¸co suficiente e ´e comum sobrarem sempre alguns bytes de espa¸co [15]. Para atacar este problema pode-se utilizar um diret´orio de p´aginas.

Diret´orio de P´aginas

Neste tipo de organiza¸c˜ao o SGBD tamb´em guarda a localiza¸c˜ao da primeira p´agina de cada ficheiro heap, tal como na lista ligada [15]. A organiza¸c˜ao do ficheiro encontra-se ilustrada na Figura 2.6 [15].

Como ´e poss´ıvel perceber atrav´es da figura, cada diret´orio ´e uma cole¸c˜ao de p´aginas, e os diret´orios est˜ao conectados atrav´es de uma lista ligada. Cada entrada no di-ret´orio identifica uma p´agina do ficheiro. `A medida que o ficheiro cresce ou diminui de tamanho o n´umero de entradas no diret´orio aumenta ou diminui em concordˆancia [15].

A gest˜ao do espa¸co livre pode ser efetuada mantendo um bit por cada entrada do diret´orio que indica se a p´agina correspondente tˆem espa¸co livre. Pode-se, em alternativa, guardar o espa¸co livre da p´agina correspondente. Desta forma, ao inserir novos dados pode-se verificar qual o espa¸co livre de cada entrada e determinar se os dados podem ser armazenados na p´agina correspondente. Desta forma torna-se mais eficiente procurar uma p´agina com espa¸co suficiente para armazenar os dados.

(41)

2.3. Indexa¸c˜ao

Figura 2.6: Organiza¸c˜ao de ficheiro heap em diret´orio de p´aginas

2.3.2

´

Indices

Os ´ındices permitem recuperar eficientemente todas as entradas de uma tabela que satisfazem uma condi¸c˜ao de um determinado campo, ou coluna. Para isto ser poss´ıvel ´e criado um ficheiro que organiza os dados numa de trˆes op¸c˜oes [15]:

1. Cada entrada k∗ contˆem toda a informa¸c˜ao de uma fila cujo valor indexado seja k;

2. Cada entrada armazena o par hk, eidi, sendo que eid representa o id de um entrada cujo valor indexado seja k;

3. Cada entrada armazena o par hk, lista eidi, sendo que listaeid representa uma

lista de ids de entradas cujos valores indexados sejam k;

No 1º tipo os dados, por defini¸c˜ao, encontram-se ordenados pelo valor da coluna indexada, sendo portanto classificado de ´ındice agrupado (clustered ) [15]. Tamb´em ´

e poss´ıvel armazenar os tipos 2 e 3 como ´ındices agrupados ordenando pela coluna indexada, no entanto esta opera¸c˜ao torna-se complicada de manter com a inser¸c˜ao de novos dados logo ´e mais comum us´a-los como ´ındices desagrupados (unclustered ) [15].

Para efetuar queries de intervalos (por exemplo: SELECT ... BETWEEN x AND y), os ´ındices agrupados tornam-se muito mais eficientes pois os ids das entradas que satisfazem a query apontam para p´aginas cont´ıguas enquanto que num ´ındice

(42)

desa-2.3. Indexa¸c˜ao

grupado levaria a ter de ir muitas p´aginas separadas [15].

´Indices Hash

Os ´ındices hash, como o nome indica, utilizam hashing para encontrar os dados pretendidos de forma r´apida e eficaz [15].

Os dados que se encontram num ficheiro est˜ao agrupados, sendo que o grupo contˆem uma p´agina principal e, possivelmente, p´aginas adicionais ligadas. Para se descobrir o grupo em que uma determinada entrada se encontra basta fazer o hash da chave que se procura. Sabendo o grupo ´e poss´ıvel recuperar a p´agina correspondente com apenas uma ou duas chamadas ao disco. Nas inser¸c˜oes os dados s˜ao armazenados no grupo correspondente, criando mais p´aginas se for necess´ario [15].

Na Figura 2.7 [15] ´e poss´ıvel observar o funcionamento de um ´ındice hash. No exemplo apresentado a indexa¸c˜ao ´e feita no campo idade, portanto, quando ´e feita uma consulta ao ´ındice, o valor procurado da idade passa por uma fun¸c˜ao de hash que vai servir para identificar o grupo em que se encontram as entradas com essa hash (no exemplo, o grupo ´e identificado atrav´es dos dois ´ultimos bits da hash).

Figura 2.7: ´Indice em hash no campo idade

Note-se que o ´ındice est´a representado com o 1º tipo apresentado anteriormente. A principal desvantagem destes ´ındices, ´e o facto de apenas suportarem compara¸c˜oes de igualdade, pelo que quando ´e necess´ario compara¸c˜oes em intervalos ou ordena¸c˜ao de resultados ´e necess´ario usar outro tipo de ´ındices, como os ´ındices em ´arvore.

´Indices em ´Arvore

Outro m´etodo de indexa¸c˜ao existente ´e a organiza¸c˜ao dos dados em ´arvore. Neste tipo de ´ındices os dados s˜ao armazenados no n´ıvel mais baixo da ´arvore, a que se chamam folhas, e a estrutura em ´arvore permite localizar as entradas relevantes eficientemente comparando a chave procurada com os intervalos dos n´os da ´arvore [15].

(43)

2.3. Indexa¸c˜ao

Em cada n´o existe uma s´erie de valores e um apontador de cada lado desses valores. Comparando o valor procurado com os valores do n´o, ´e fornecida a localiza¸c˜ao do pr´oximo n´o at´e se alcan¸car a folha procurada. Este fluxo pode ser observado na Figura 2.8 [15].

Figura 2.8: ´Indice em ´arvore no campo idade

A pesquisa come¸ca no n´o da raiz. ´E poss´ıvel verificar que cada n´o tem dois valores como j´a foi dito. `A esquerda de cada valor k est´a um apontador para um sub-n´o que contˆem apenas valores menores que k e `a sua direita encontra-se um apontador para um sub-n´o que contˆem valores maiores ou iguais a k [15].

´Indices Invertidos

Os ´ındices invertidos s˜ao um tipo de ´ındice muito usado para pesquisa textual devido `

a sua simplicidade e boa performance [15].

A principal desvantagem dos ´ındices invertidos s˜ao o espa¸co que ocupam: podem chegar a ter 300% do tamanho do ficheiro original e s˜ao muito sens´ıveis ao n´umero de termos existentes na cole¸c˜ao [15]. Para tentar reduzir o tamanho do ´ındice ´e comum eliminar stopwords e aplicar stemming como foi mencionado na sec¸c˜ao 2.1.3. O nome invertido vem da forma como o ´ındice est´a constru´ıdo: ´e mantida uma lista dos termos existentes, sendo que para cada termo cont´em uma lista invertida que aponta os documentos que contˆem esse termo. Cada documento da lista pode conter uma lista que mostra onde o termo pode ser encontrado dentro do docu-mento [15]. Na tabela 2.2 apresenta-se uma simplifica¸c˜ao da estrutura de um ´ındice invertido.

A cole¸c˜ao de listas invertidas, chamada de postings file, pode-se tornar muito grande para cole¸c˜oes de documentos muito volumosas. Muitas vezes os motor de pesquisa

(44)

2.4. Pesquisa no PostgreSQL

Termo Documentos (postings file) elefante 1, 3

azul 1, 2, 5

filme 4

computador 2, 4

Tabela 2.2: Estrutura (simplificada) de um ´ındice invertido

na web armazenam cada lista invertida numa p´agina separada, e muitas listas podem ocupar v´arias p´aginas, sendo que nessa situa¸c˜ao s˜ao mantidas como listas ligadas. Para se poder encontrar a lista invertida de um determinado termo ´e comum criar-se um segundo ´ındice em ´arvore [15].

A lista de termos, chamada de lexicon, ´e muito menor que o postings file uma vez que apenas cont´em uma entrada por termo. Cada entrada cont´em a posi¸c˜ao (em disco) da sua lista invertida e pode tamb´em conter informa¸c˜ao acerca dessa lista. O lexicon ´e geralmente mantido em mem´oria permitindo assim recuperar a lista invertida de um dado termo muito rapidamente [15].

Para recuperar os documentos relevantes a uma pesquisa, come¸ca-se por percor-rer o lexicon para se recuperarem as listas invertidas correspondentes aos termos pesquisados. Com essas listas ´e poss´ıvel ent˜ao recuperar os documentos que interes-sam. Feito isto, ´e comum ent˜ao proceder-se `a ordena¸c˜ao por relavˆancia, como j´a foi descrito anteriormente.

2.4

Pesquisa no PostgreSQL

O PostgreSQL apresenta duas maneiras de realizar pesquisa de texto, os operadores LIKE e ILIKE e as fun¸c˜oes de full text search. Nesta sec¸c˜ao ser˜ao apresentadas ambas as op¸c˜oes.

2.4.1

LIKE/ILIKE

Os operadores LIKE e ILIKE s˜ao usados para verificar se uma determinada string corresponde ao padr˜ao submetido. N˜ao ´e ent˜ao tanto uma ferramenta de pesquisa de texto mas mais uma ferramenta de express˜oes regulares. O operador ILIKE, ao contr´ario do ILIKE, ´e case-insensitive.

Na tabela 2.3 encontram-se exemplos de uso destes operadores [16]:

O s´ımbolo % faz o matching de qualquer sequˆencia de 0 ou mais caracteres, enquanto que o _ apenas faz match a um.

(45)

2.4. Pesquisa no PostgreSQL

Declara¸c˜ao Resultado ’abc’ LIKE ’abc’ true ’abc’ LIKE ’a%’ true ’abc’ LIKE ’_b_’ true ’abc’ LIKE ’c’ false

Tabela 2.3: Exemplos de uso do operador LIKE raz˜oes [16]:

• N˜ao suportam ordena¸c˜ao por relevˆancia dos resultados; • N˜ao tem suporte lingu´ıstico (stopwords, stemming)

Al´em destas raz˜oes, as opera¸c˜oes de pesquisa com estes operadores apenas conse-guem tirar partido de ´ındices no caso de o padr˜ao a pesquisar ser constante e estar ancorado ao ´ınicio da string [16].

2.4.2

Full Text Search

As fun¸c˜oes de full text search permitem pesquisar o texto de documentos armaze-nados numa BD e orden´a-los de acordo com a relevˆancia dos documentos.

O sistema de full text search do PostgreSQL permitem que os documentos sejam pr´e-processados e indexados para melhorar o acesso `a informa¸c˜ao. Al´em de permitir realizar stemming e a remo¸c˜ao de stopwords, tamb´em torna poss´ıvel armazenar a localiza¸c˜ao dos termos dentro do documento [16]. Esta informa¸c˜ao ´e ´util quando se realiza a ordena¸c˜ao pois um documento que contenha os termos pesquisados pr´oximos uns dos outros vai ser considerado mais relevante do que outro que tamb´em contenha os termos mas muito espa¸cados.

Al´em disso disponibiliza tamb´em funcionalidades como fuzzy search que permitem encontrar correspondˆencias mesmo quando existem erros ortogr´aficos na query rea-lizada [16, 17].

Observe-se um exemplo de uma pesquisa utilizando o full text searching do Post-greSQL:

SELECT ’O s´ımbolo do postgres ´e um elefante azul’ @@ to_tsquery(’elefantes’);

,→

O texto armazenado na base de dados encontra-se no tipo tsvector, que parte a string em palavras e a cada uma atribui um n´umero que indica a sua posi¸c˜ao. Sem qualquer tipo de remo¸c˜ao de stopwords ou stemming, o resultado da convers˜ao para tsvector do texto ’O s´ımbolo do postgres ´e um elefante azul’ seria:

(46)

2.4. Pesquisa no PostgreSQL

A string ´e ent˜ao matched ao tsquery pelo operador @@. O tsquery ´e o tipo de dado usado para fazer as compara¸c˜oes com o tsvector. Caso existisse stemming, ent˜ao ’elefantes’ seria reduzido `a raiz e o resultado do exemplo seria true.

O PostgreSQL disponibiliza dois tipos de ´ındice pr´oprios para utilizar com o full text search, o GiST (Generalized Search Tree) e o GIN (Generalized Inverted In-dex).

GiST

O GiST ´e um ´ındice de ´arvore lossy: isto quer dizer que durante as pesquisas pode produzir falsos positivos, sendo necess´ario recuperar essas entradas da tabela para verificar se realmente o match est´a correto [16].

Isto acontece pois no ´ındice os documentos s˜ao representados por uma stream de bits de tamanho fixo. Esta stream ´e criada fazendo uma hash de cada palavra para um bit na stream de n bits. Depois ´e feito um OR de todos os bits que produz a stream. Se a hash de duas palavras produzir bits na mesma posi¸c˜ao ir´a causar um falso positivo [16].

Esta carater´ıstica do ´ındice faz com que a performance se degrade devido a ter de recuperar entradas na tabela que ser˜ao falsos positivos.

GIN

O GIN ´e um ´ındice invertido. Ao contr´ario do GiST n˜ao produz falsos positivos. No entanto a sua performance depende logaritmicamente com o n´umero de termos existentes no ´ındice [16].

Al´em disso este tipo de ´ındice n˜ao suporta o uso de pesos nos termos, pelo que para utilizar esses pesos ´e necess´ario recuperar as entradas novamente.

Os dois tipos de ´ındice apresentam performances diferentes para opera¸c˜oes diferen-tes: Enquanto que os ´ındices GIN s˜ao mais r´apidos nas pesquisas, os GiST apre-sentam a vantagem no que toca a inser¸c˜oes e atualiza¸c˜oes de entradas. Tamb´em h´a que ter em conta que os ´ındices GIN s˜ao duas a trˆes vezes maiores que os GiST [16].

Portanto, os ´ındices GiST funcionam melhor quando os dados s˜ao dinˆamicos, so-frende inser¸c˜oes ou atualiza¸c˜oes constantes, e se o n´umero de termos andar na ordem dos 100 000. J´a se houver uma cole¸c˜ao de termos superior a 100 000 as pesquisas com o GIN ser˜ao cerca de trˆes vezes mais r´apidas mas ser´a mais lento a atualizar [16].

A t´ecnica de full text searching j´a foi implementada no motor de pesquisa existente no iPortalDoc [18].

(47)

2.5. Ferramentas de Pesquisa

2.5

Ferramentas de Pesquisa

Nesta sec¸c˜ao encontram-se enumeradas algumas ferramentas de pesquisa que foram consideradas para o desenvolvimento de um novo motor de pesquisa para o iPortal-Doc.

2.5.1

Sphinx

O Sphinx ´e um motor de full text search desenhado para integrar com bases de dados e ser facilmente acedido por linguagens de scripting.

´

E poss´ıvel interagir com o Sphinx atrav´es de APIs nativas para PHP, Perl, Python, Ruby e Java. Al´em disso, sendo uma ferramenta focada exclusivamente em full text search tem um desempenho muito otimizado e um elevado n´umero de funcionali-dades, como ordena¸c˜ao por relevˆancia leva em conta rankings de proximidades de termos [19].

Tamb´em ´e importante referir que suporta nativamente intera¸c˜ao com o PostgreSQL, permitindo assim importar os documentos existentes no iPortalDoc.

2.5.2

Apache Lucene

O Lucene ´e uma biblioteca de RI em Java disponibilizada pela Apache Software Foundation que oferece elevada performance e escalabilidade, consumindo poucos recursos [20].

Esta biblioteca possibilita variadas formas de querying, permite configurar o mo-delo ordena¸c˜ao e apresenta tempos de resposta muito baixos e sendo muito mais poderoso no que toca a pesquisa do que o PostgreSQL, visto ser uma ferramenta especializada.

No entanto, n˜ao ´e uma ferramenta trivial de trabalhar, existindo ferramentas de mais alto n´ıvel que constroem sobre o Lucene que ser˜ao expostas de seguida.

2.5.3

Apache Solr

O Solr ´e uma plataforma de pesquisa que constr´oi sobre o Apache Lucene, que foi descrito anteriormente.

Como ´e desenvolvida sobre o Lucene, o Solr permite fazer pesquisas extremamente avan¸cadas e disponibiliza imensas funcionalidades como por exemplo sugest˜oes au-tom´aticas ou agrupar resultados pelo valor de determinado campo, que pode ser ´util para casos como e-commerce em que o utilizador pode querer filtrar os resultados por intervalo de pre¸co ou pela categoria do produto [21].

(48)

2.6. Aprendizagem Computacional

O Solr permite tamb´em que o motor de pesquisa possa escalar com a aplica¸c˜ao, atrav´es de clustering de servidores. Desta forma ´e poss´ıvel aumentar a disponi-bilidade da aplica¸c˜ao (pois existe redundˆancia), a velocidade de pesquisa (pois o ´ındice fica dividido por v´arios servidores, cada um ficando respons´avel apenas por

pesquisar uma pequena parte) e balancear a carga dos servidores.

Al´em disso, das solu¸c˜oes apresentadas, ´e a ´unica que disponibiliza uma interface de administra¸c˜ao a partir da qual ´e poss´ıvel configurar o servidor e realizar debugging se necess´ario.

Esta ferramenta acabou por ser a utilizada na implementa¸c˜ao pois, como se ver´a, apresentou resultados bastante satisfat´orios na fase de testes. Outro fator que aju-dou a decis˜ao foi o facto de na IPBRICK j´a terem explorado esta solu¸c˜ao breve-mente.

2.5.4

Elasticsearch

Outra ferramenta que foi considerada foi o Elasticsearch. `A semelhan¸ca do Solr, o n´ucleo desta plataforma ´e tamb´em o Apache Lucene.

Como s˜ao constru´ıdas com base na mesma ferramenta, o Elasticsearch apresenta, no geral, funcionalidades semelhantes ao Solr, focando-se tamb´em em ser uma solu¸c˜ao mais orientada para a cloud [22].

O Elasticsearch aparenta ser uma solu¸c˜ao mais ’chave na m˜ao’ do que o Solr pois quase n˜ao necessita de configura¸c˜ao e permite um funcionamento schema-less, ou seja, sem definir a estrutura dos dados a indexar. No entanto n˜ao oferece uma forma trivial de indexar os documentos a partir de bases de dados como o PostgreSQL, pelo que por esta raz˜ao e tamb´em por mostrarem performances semelhantes [23] decidiu-se implementar o motor de pesquisa com o Solr.

2.6

Aprendizagem Computacional

As primeiras tentativas de integrar capacidades de aprendizagem nos computado-res deram-se no in´ıcio da segunda metade do s´eculo XX, com o desenvolvimento de sistemas que iniciavam com um conhecimento pr´oximo de inexistente mas que aumentava com o que era ’experienciado’ pelo sistema [24].

De uma dessas tentativas surgiu o perceptron, um algoritmo para aprendizagem supervisionada de classificadores bin´arios, ou seja, decide se uma entrada pertence a uma classe ou `a outra [25]. Come¸caram tamb´em a surgir sistemas que aprendiam, por exemplo, a jogar xadrex ou damas [24].

Nos anos 60 o campo de aprendizagem separou-se do de inteligˆencia artificial pois os investigador de aprendizagem computacional come¸caram a dar mais enfˆase a m´etodos n´umericos enquanto que os investigadores de IA trabalhavam mais com

(49)

2.6. Aprendizagem Computacional

m´etodos simb´olicos [26]. J´a nos anos 70 come¸cou a surgir novamente o interesse de explorar aprendizagem computacional dentro do campo de inteligˆencia artificial. Surgiu interesse em automatizar tarefas de extra¸c˜ao de conhecimentos em dominios especificos e tamb´em em modelar a aprendizagem humana. Houve tamb´em o apa-recimento de diversos novos m´etodos assim como o reaparecimento de outros que haviam sido abandonados anos antes [26].

Durante os anos 80, o campo de aprendizagem computacional continuou a crescer e os investigadores come¸caram a aperceber-se que os sistemas com capacidade de aprendizagem revelavam muito potˆencial e poderiam ter um impacto no mercado. Este campo tamb´em se assentou em bases metodol´ogicas mais firmes, dando lugar a experiˆencias sistem´aticas e analises te´oricas mais precisas do que havia acontecido at´e `a altura [26]. Nos anos 90 o computador Deep Blue, projeto da IBM, conseguiu vencer o ent˜ao campe˜ao mundial de xadrez, Garry Kasparov [27].

Claramente esta ´area cresceu bastante desde o seu aparecimento, sendo que hoje a aprendizagem computacional est´a presente no dia-a-dia das pessoas, sendo poss´ıvel encontrar algoritmos a funcionar por detr´as dos motores de pesquisa (como o Go-ogle), nas redes sociais ou at´e nos smartphones atrav´es de assistentes pessoais, por exemplo. Este campo n˜ao d´a sinais de paragem, dando lugar a projetos inovadores como carros auto-guiados [28].

2.6.1

Introdu¸

ao `

a Aprendizagem Computacional

A aprendizagem computacional pode ser definida como a ´area que desenvolve siste-mas que atrav´es de informa¸c˜ao externa alteram a sua ’estrutura’ de forma a melhorar a performance no futuro [29]. Pode-se tamb´em descrever um sistema de aprendi-zagem como tendo a capacidade de aprender a teoria a partir dos dados que trata, atrav´es de processos de inferˆencia, sendo portanto adequado para aplica¸c˜oes onde existem bastantes dados mas sem um padr˜ao reconhec´ıvel [29, 30].

Os sistemas que apresentam capacidade de aprendizagem s˜ao geralmente sistemas de inteligˆencia artificial, sendo que a aprendizagem serve para alterar o sistema ou ent˜ao para sintetizar ou gerar o seu estado inicial [29]. Os computadores apenas executam as instru¸c˜oes que lhes s˜ao dadas, sendo que para tal ´e necess´ario definir e implementar algoritmos, o que ´e uma tarefa que consome bastante tempo de pessoal especialmente treinado para isso. Os computadores n˜ao possuem a capacidade de aprender a desempenhar uma tarefa a partir de exemplos nem conseguem executar melhor as suas tarefas aprendendo com experiˆencias passadas ou at´e por observa¸c˜ao. A aprendizagem computacional surge para dar ferramentas aos programadores que permitam criar solu¸c˜oes que tirem partido do cada vez maior volume de informa¸c˜ao e possibilitar aos computadores adaptarem-se e evolu´ırem com a experiˆencia das tarefas que executam [30].

O campo de aprendizagem computacional encontram-se dividido em trˆes grandes focos de investiga¸c˜ao [31]:

Referências

Documentos relacionados

Neste trabalho, foram estudadas as plântulas e plantas jovens de Erythrina speciosa (Phaseoleae), Holocalyx balansae e Sophora tomentosa (Sophoreae), Swartzia langsdorffii

libras ou pedagogia com especialização e proficiência em libras 40h 3 Imediato 0821FLET03 FLET Curso de Letras - Língua e Literatura Portuguesa. Estudos literários

- Declaração de Imposto de Renda Pessoa Física - IRPF, completa, exercício 2017, ano base 2017, ou a mais recente, de todos os membros do Grupo Familiar maiores de

FIGURA 1: Valores médios da porcentagem de germinação de sementes de Hymenaea stigonocarpa submetidas a diferentes tratamentos pré-germinativos.. contrapartida, Souza et

Passiflora edulis, popularly known in Brazil as sour passion fruit is the most widely cultivated species of the genus Passiflora, and is of economic importance in Brazil for

a) O modo de aplicação única ou parcelada do regulador de crescimento na densidade populacional de 6 a 14 plantas m -1 não interfere na produção de algodão em caroço das

O presente trabalho aborda a temática trânsito, especificamente seu processo administrativo, tendo por objetivo analisar como este deve se desenvolver, com observância dos

A indústria alimentar recorre usualmente a aditivos sintéticos para garantir ou melhorar as características e propriedades dos alimentos [1]. O sorbato de potássio (E202) é um dos