Vous êtes sur la page 1sur 174

Joo Paulo da Costa Cordeiro

Extraco de Elementos Relevantes em Texto/Pginas da World Wide Web

Tese submetida Faculdade de Cincias da Universidade do Porto para a obteno do grau de Mestre em Inteligncia Artificial e Computao

Departamento de Cincia de Computadores Faculdade de Cincias da Universidade do Porto Junho de 2003

Agradecimentos
Porque Deus amou o mundo de tal maneira que deu o seu Filho unignito para que todo aquele que nele cr no perea, mas tenha a vida eterna S. Joo 3:16 Quero expressar aqui o meu profundo agradecimento a Deus, por todo amor, esperana e sentido que trouxe minha vida. Porque inmeras vezes, nos momentos mais turbulentos da minha existncia, trouxe paz e alegria ao meu corao. Obrigado Jesus porque, sem Ti, onde estaria eu? Na dimenso humana, o meu primeiro agradecimento dirige-se ao meu orientador, Professor Doutor Pavel Brazdil. Sem ele, o prezado leitor no estaria a ler estas linhas, neste momento. Agradeo no s os inmeros conselhos recebidos, mas tambm todo a pacincia, apoio, disponibilidade e sempre boa disposio manifestada. Obrigado Professor Pavel! Agradeo a todos os professores que tive no LIACC e da FEUP, que muito contriburam para a minha formao. Quero agradecer aos meus pais, pela educao recebida e pelo constante apoio e amor que sempre me deram. Agradeo tambm minha esposa Adelina todo o apoio, amor e pacincia nos meus momentos mais areos e distantes.

Resumo
Nos ltimos anos, o aumento da quantidade de informao digital disponvel um facto irrefutvel, nomeadamente a que se encontra na World Wide Web, sob a forma de documentos de texto. Nunca na histria da humanidade houve um to elevado volume de informao acessvel. Apesar dos aspectos positivos que isto representa e do potencial que permite, existe uma nova problemtica que surge e consiste na necessidade de ferramentas eficazes na pesquisa e extraco de informao. O trabalho desenvolvido, no mbito desta dissertao, enquadra-se neste contexto. O principal objectivo deste trabalho consiste em aplicar um conjunto de tcnicas da Inteligncia Artificial (IA), nomeadamente da rea da Extraco de Informao, para a criao de um sistema capaz de identificar e extrair certos elementos de texto, considerados relevantes, em documentos. Embora o alvo tenha sido o de implementar uma metodologia genrica, adaptvel a qualquer domnio, fixamos a nossa ateno num domnio concreto, de modo demonstrar a essa mesma metodologia. Esse domnio consistiu nos anncios (em Portugus) relativos venda de habitaes. O sistema desenvolvido utiliza Aprendizagem Supervisionada, para que possa ser treinado, com uma coleco de documentos anotados e assim aprenda a reconhecer/extrair os elementos relevantes no texto. Uma das preocupaes foi que o processo de treino produzisse conhecimento simblico, de maneira que para alm de poder ser aplicado, pudesse tambm ser analisado. Assim, no processo de treino so induzidas regras lgicas de extraco dos elementos relevantes, satisfazendo esta exigncia. A metodologia proposta foi devidamente avaliada, mostrados os resultados obtidos e feita alguma comparao com outros sistemas. O sistema obteve resultados muito satisfatrios, no domnio fixado, abrindo assim novas possibilidades para futuras aplicaes interessantes.

Abstract
In the last years the amount of information available in digital form, including text documents available on World Wide Web, has increased rather dramatically. Never before have we witnessed such volumes of available information. Despite the positive aspects that this represents and the potential that this offers, this increase poses also new kinds of problems. It is not always easy to find always what is needed. We thus need tools that enable us to search for relevant documents and extract information from them. The work that we have developed, which is described in this dissertation, addresses this issue. The main objective of the work discussed consists of selecting and identifying suitable techniques from the field of Artificial Intelligence and Information Retrieval and adapting them as necessary. Our goal was to construct a system capable of identifying and extracting certain text elements, considered relevant, from a given set of documents. Although our aim was to devise a methodology that is quite generic that could be adapted to any specific domain, we have focussed our attention to one domain in particular, to be able to exemplify the method. The domain chosen is that of announcements (in Portuguese) concerning sales or offers of houses or flats. The methodology adopted includes Machine Learning methods that make the system easily adaptable to diverse domains. We have developed a system that can be trained to identify and extract the relevant elements in the text. One of our concerns was that the system should produce symbolic knowledge that, apart from being applied, could also be inspected. Our system induces, during the training process, logical rules that satisfy this requirement. The methodology proposed have been evaluated and comparative studies carried out. We show that the system works quite satisfactorily in the domain chosen and so our work opens new possibilities for new interesting applications in future.

ndice
1 Introduo...............................................................................................................................9 1.1 Contextualizao................................................................................................................9 1.2 Motivaes.......................................................................................................................12 1.3 Resumo dos captulos......................................................................................................14 2 Web / Text Mining...............................................................................................................15 2.1 Web Mining.....................................................................................................................17
2.1.1 Web Content Mining..............................................................................................................................17 2.1.2 Outros Subdomnios do Web Mining....................................................................................................20

2.2 Text Mining.....................................................................................................................23


2.2.1 AutoSlog................................................................................................................................................23 2.2.2 HASTEN................................................................................................................................................24 2.2.3 CRYSTAL..............................................................................................................................................25 2.2.4 LOLITA.................................................................................................................................................27

3 Mtodos e Tcnicas de Inteligncia Artificial....................................................................31 3.1 Inteligncia Artificial.......................................................................................................31 3.2 Aprendizagem Automtica..............................................................................................34 3.3 Aprendizagem Baseada em Instncias.............................................................................37
3.3.1 O Mtodo dos K-Vizinhos Mais Prximos............................................................................................37

3.4 Aprendizagem Bayesiana................................................................................................40


3.4.1 Teorema de Bayes..................................................................................................................................40 3.4.2 Naive Bayes...........................................................................................................................................43

3.5 Induo de rvores de Deciso.......................................................................................45


3.5.1 Ganho de Informao.............................................................................................................................46 3.5.2 Mtodo Bsico (Algoritmo ID3)............................................................................................................47 3.5.3 Mtodo Melhorado (C4.5 / C5)..............................................................................................................49

4 O Projecto de Extraco de Informao da Web..............................................................51 4.1 O Domnio de Aplicao.................................................................................................51 4.2 Classificao de Anncios...............................................................................................56
4.2.1 Aprendizagem Baseada em Instncias (k-vizinhos)..............................................................................58 4.2.2 Aprendizagem Bayesiana (Naive Bayes)...............................................................................................61 4.2.3 Aprendizagem Bayesiana (com escolha de atributos)...........................................................................63

4.3 Extraco de Elementos - Preliminares...........................................................................67


4.3.1 Extraco Utilizando Regras Pr-definidas...........................................................................................68 4.3.2 Extraco Utilizando Sistemas de Aprendizagem.................................................................................77

4.4 Extraco com Aprendizagem e Generalizao..............................................................87


4.4.1 O Algoritmo de Extraco.....................................................................................................................89 4.4.2 Pr-processamento: Escolha dos Atributos ...........................................................................................99 4.4.3 Generalizando a conceitos...................................................................................................................106 4.4.4 Gerao de Instncias Negativas..........................................................................................................111 4.4.5 Regras Induzidas e Sua Aplicao.......................................................................................................115

4.5 Funcionamento e Detalhes do Sistema..........................................................................121


4.5.1 Classificao de Anncios...................................................................................................................121 4.5.2 Extraco de Elementos.......................................................................................................................123

5 Avaliao e Resultados......................................................................................................131 5.1 Classificao de Anncios.............................................................................................135 5.2 Extraco de Elementos.................................................................................................139 6 Concluses...........................................................................................................................145

7 Bibliografia.........................................................................................................................149 Anexo A Alguns anncios anotados.................................................................................155 Anexo B Regras induzidas (C5)........................................................................................157 Anexo C Principais classes e mtodos..............................................................................163 Anexo D Cdigo dos principais mtodos..........................................................................170

1 - Introduo

1 Introduo
1.1 Contextualizao
Desde um passado muito remoto que o ser humano tem tentado conhecer e compreender melhor o universo que o rodeia, quer distante quer prximo. Tal como um rio perto da sua nascente, assim comeou o saber humano. No princpio muito incipiente, muito incerto, restrito de um pequeno grupo de sbios. Hoje o oceano do saber imenso e a cada hora que passa j sabemos mais alguma coisa. A cada minuto, centenas de laboratrios e centros de saber operam, nos pontos mais diversos e remotos do planeta. Vivemos na j muito rotulada era da informao. O ser humano do final do sculo XX e principio do sculo XXI est cada vez mais consciente e desperto para esta nova e surpreendente realidade que a informao. Por outro lado, o acesso a toda esta informao est, hoje mais que nunca, aberta a muitos. Na Idade Mdia eram os centros clericais que detinham e mantinham, muito bem, os manuscritos do conhecimento, mas no final do sculo XV, com Gutenberg, d-se uma das revolues mais marcantes da nossa histria do conhecimento, com a inveno da imprensa tipogrfica. A partir da vrios exemplares de manuscritos antigos, passaram a ser reproduzidos em srie e portanto o acesso a estes meios aumentou consideravelmente. As implicaes na histria, resultantes desta inveno, foram tremendas. Na segunda metade do sculo XX o advento da micro tecnologia vem dar um novo impulso ao avano do saber humano e acessibilidade ao mesmo. Temos actualmente meios de informao ao nosso alcance que os nossos antepassados mal conseguiriam imaginar. Hoje possvel que um grupo de empresrios realizem uma reunio, estando estes em continentes distintos, ou que um cientista posicionado no meio da floresta amaznica, realizando um qualquer estudo, esteja consultando informao vital para o seu trabalho que por sua vez est localizada numa qualquer base de dados em Nova York ou Paris. Nunca como hoje houve um

1 - Introduo

10

to forte intercmbio cientfico no nosso planeta. Dizem que vivemos numa aldeia global, talvez a expresso teia global, fosse mais apropriada, uma teia de troca de conhecimentos, de saber, uma teia que permite que em pases subdesenvolvidos existam jovens que com poucos recursos possa aceder a este conhecimento e cultivarem-se. Este trabalho no pretende, evidentemente, ser uma reflexo sobre a histria do conhecimento humano ou outra coisa qualquer semelhante, mas o apresentado em cima ainda e s a printroduo, o pano de fundo mais distante, de todo este trabalho. Uma coisa que, certamente, esta sociedade da informao tem produzido informao, volumes incomensurveis de contedos informativos, pginas e pginas de livros impressos ou virtuais. Este monstro informativo est ficando cada vez mais gigantesco, por cada vez que o planeta completa uma rbita em torno do seu prprio eixo. Assim surge frequentemente uma inevitvel questo a todos ns: Onde se encontra a informao de que eu necessito, neste momento ? Este trabalho enquadra-se, num domnio de aco que tenta dar resposta a esta, cada vez mais presente e frequente, questo. A procura da informao relevante e necessria em tempo til torna-se cada vez mais uma necessidade crtica. Cada vez mais difcil encontrar informao relevante na crescente selva de informao no estruturada, disponvel. Quando, no final dos anos 60, surge o projecto ARPANET, o embrio daquilo que viria a ser a Internet, ningum imaginava o to rpido crescimento, disseminao e divulgao desta rede de computadores. Durante as duas dcadas que se seguiram (70, 80), um verdadeiro exrcito de especialistas na rea das Cincias da Computao, contriburam para este crescimento. Por um lado os meios infraestruturais aumentaram e por outro os servios disponibilizados, sobre estes meios, tambm foram aumentando. Vrios protocolos foram desenhados e implementados, entre estes destacam-se os to conhecidos: TELNET, UUCP, TCP/IP. Tambm o numero de pases ligados a esta crescente rede de computadores subiu consideravelmente, neste perodo. Todavia, o que mais contribuiu para que a Internet se tornasse naquilo que hoje , foram os vrios servios implementados, sobre esta rede, e disponibilizados para os utilizadores: e-mail, GOPHER, WWW.

1 - Introduo

11

Em 1991 o aparecimento da World Wide Web (WWW) veio dar um novo e potente impulso ao crescimento da Internet. Desenhado por Tim Berners-Lee no CERN, este sistema providncia a possibilidade de ser publicado um conjunto de ficheiros de texto, denominados de pginas, com hiperligaes mtuas. Este novo conceito de apresentar a informao teve um grande acolhimento por parte de um cada vez maior numero de utilizadores. A partir da o numero de pginas publicadas na Internet, sob este sistema, cresceu exponencialmente. Utilizadores das mais diversas reas comearam a publicar as suas pginas: cientistas, empresrios, polticos, etc. Vrias organizaes humanas passaram tambm a publicar o seu rosto electrnico, neste revolucionrio meio de informao. Toda esta adeso humana, em massa, a estes novos meios, veio fazer com que actualmente tenhamos um pesado numero de contedos publicados no WWW. O grfico que se apresenta em baixo mostra a evoluo do numero de portais disponveis no WWW.

Figura 1.1 - Evoluo de nmero de Web Sites. Ningum sabe ao certo qual o numero exacto de pginas disponveis, neste sistema, todavia estima-se que andar por volta das 3,000,000,000, segundo dados de Maio de 2003. Perante esta realidade torna-se bem evidente a necessidade de meios automticos de procura de informao. A partir dos meados da dcada de 90 comearam a surgir os denominados motores de pesquisa. Estes so pequenas aplicaes informticas, disponveis em determinados sites/portais1, que numa descrio simples, possibilitam a obteno de um
1 Site termo anglo-saxnica para designar um local no WWW (em portugus o termo portal costuma ser empregue com o mesmo significado).

1 - Introduo

12

conjunto de links (URL' s) de pginas contendo informao relacionada com aquilo que um utilizador procura. Por exemplo, pginas sobre: histria, arte, cincia, poltica, etc. Embora muito teis e suficientes em muitas situaes, os motores de pesquisa tm se mostrado incapazes e muito limitados para satisfazer determinados tipos de pesquisas mais exigentes e especificas. Assim tem surgido toda uma comunidade cientfica, da rea da Inteligncia Artificial, que se debrua sobre esta problemtica e tenta encontrar solues inovadoras que ultrapassem as limitaes dos motores de pesquisa.

1.2 Motivaes
Atendendo ao estado actual da Internet, no que diz respeito aos contedos publicados no WWW, so de vital importncia as ferramentas que pesquisam e extraem, de forma Inteligente, informao da Web. O problema pode colocar-se da seguinte forma: embora existam mais de 3,000,000,000 de pginas disponveis no WWW e seja possvel armazenar a quase totalidade destas numa mquina com capacidades adequadas, esta no entender nenhuma destas pginas. O termo entender, empregue anteriormente, tem uma conotao de representao semntica, isto , embora uma mquina possa conter as pginas referidas, esta poder no possuir qualquer representao semntica das mesmas. Poder no ser capaz de reconhecer elementos considerados relevantes e contidos num subconjunto de pginas, por exemplo, para assim os extrair e armazenar nalguma forma ou estrutura representativa de alguma semntica. A informao contida numa pgina do WWW essencialmente texto, para alm das marcas do HTML, se for uma pgina HTML, ou outras marcas SGML quaisquer que se encontram subjacentes na pgina e que so invisveis para o utilizador. No essencial estamos a trabalhar com texto que na maior parte dos casos no contm qualquer estrutura implcita. um documento de texto, escrito em linguagem natural, tal como o Portugus, sobre um determinado tema ou assunto. Temos portanto aquilo que denominado de informao no estruturada, ao contrrio daquilo que temos, por exemplo, numa Base de Dados, que informao estruturada. So bem conhecidas as vantagens de ter informao estruturada quando surge a necessidade de pesquisar algo, no caso duma base de dados pode-se efectuar

1 - Introduo

13

uma query que responde procura pretendida, mas se estamos perante a informao no estruturada, ento o que fazer? Uma das abordagens questo anterior consistem em tentar gerar informao estruturada a partir da informao no estruturada existente, isto , estruturar a informao. Nos ltimos anos tem sido investido um enorme esforo, por parte de vrios ramos das Cincias de Computao, para criar mtodos, ferramentas, sistemas, capazes de estruturar automaticamente informao. Neste contexto o objectivo dotar a informao no estruturada, como o caso dum texto, de alguma estrutura, focando aquilo que considerado semanticamente relevante, num dado domnio e par um objectivo especifico. Esta a principal motivao deste trabalho conceber um sistema capaz de conseguir extrair determinados elementos considerados relevantes, a partir duma determinada classe de documentos de texto. Embora j exista algum trabalho realizado nesta rea, algum do qual referido na seco 2.2 desta dissertao, no tm sido muito aquele que emprega tcnicas de aprendizagem mquina ou aprendizagem automtica, para a realizao dessa tarefa. O objectivo deste trabalho consistem em explorar um conjunto de tcnicas de aprendizagem automtica, no problema da extraco de informao a partir de texto, para um domnio concreto escolhido previamente (anncios de venda de habitao) e na lngua portuguesa, mostrando que o utilizao dessas tcnicas da IA conveniente e consegue obter relativamente bons resultados, de maneira expedita.

1 - Introduo

14

1.3 Resumo dos captulos

Apresentamos aqui uma breve descrio da estruturao do resto desta dissertao e do contedo de cada captulo que se segue. No primeira parte do captulo dois (2.1) apresenta-se uma contextualizao mais pormenorizada do domnio, a problemtica em si, que motiva todo o trabalho. A segunda parte do captulo dois (2.2) faz referncia a algum trabalho j realizado nesta rea, descrevendo alguns sistemas desenvolvidos. O captulo trs inicia com uma apresentao geral da Inteligncia Artificial e da subrea denominada de Aprendizagem Automtica, descrevendo depois as principais tcnicas experimentadas no trabalho implementado no mbito da dissertao, tais como Aprendizagem Baseada em Instncias (3.2), Aprendizagem Bayesiana (3.3) e Induo de rvores de Deciso (3.4). O captulo quatro o ncleo de toda a dissertao, apresentando o trabalho desenvolvido. Este captulo encontra-se funcionalmente organizado segundo dois grandes grupos, correspondendo a duas questes abordadas uma na rea do Information Retrieval1 (4.2) e outra na rea do Information Extraction (4.3) sendo esta ltima a que constitui o ponto principal do trabalho. A primeira seco do captulo apresenta o domnio escolhido, para a implementao do trabalho e a ltima seco (4.5) descreve os pormenores dos sistemas implementados, quer a nvel de estrutura e organizao, quer de funcionamento. No captulo cinco so apresentados os resultados obtidos, para cada um dos sistemas implementados (na classificao de anncios e na extraco de elementos) e resultantes do conjunto de experincias e testes realizados. O captulo seis conclui o trabalho e aponta possveis melhoramentos futuros, que podero ser continuados a partir deste.

Ver seco 4.1

2 - Web / Text Mining

15

2 Web / Text Mining

Com crescimento exponencial de informao disponvel na World Wide Web, que se tem verificado nos ltimos anos, torna-se imperioso que existam ferramentas eficazes na procura de informao considerada relevante. Existe j todo um trabalho que tem vindo a ser desenvolvido, essencialmente aps a segunda metade da dcada de 90, nesta rea. Tambm bastante esforo de investigao tem sido despendido, dando origem a vrias tcnicas que so j bem conhecidas entre os investigadores, nesta rea. Como esta nova rea identificada como Web/Text Mining, iremos apresentar um breve historial, esclarecendo assim as suas origens. A expresso Web Mining, muito recente e tem a sua origem na expresso Data Mining. A Data Mining designa uma rea de trabalho e investigao, pertencente Inteligncia Artificial, que tem como principal objectivo a descoberta de conhecimento, de estruturas e relaes no seio dos contedos das Bases de Dados. Esta expresso est associada a outra tambm muito utilizada recentemente Knowledge Discovery. De entre as vrias definies de Data Mining, propostas por vrios autores, existe uma que aceite na generalidade: A extraco implcita de conhecimento, previamente desconhecido, e potencialmente til, a partir de dados.

Nesta rea, o alvo dirigido descoberta de conhecimento a partir dos dados, conhecimento esse que ser posteriormente utilizado no apoio tomada de decises. Por exemplo, para profissionais da rea do Marketing, de uma enorme importncia conhecer os principais hbitos dos consumidores. Para um poltico o possuir um determinado conhecimento acerca dos padres comportamentais de uma populao, pode ser vital para o lanamento de uma nova estratgia. Desde o aparecimento das Bases de Dados que muita gente procura obter o conhecimento subjacente e escondido nos dados que povoam os enormes bancos de informao. Existe um novo repositrio de informao emergente, que avana com grandes desafios World Wide Web (WWW). Este sem dvida um gigantesco banco de informao, com o acrscimo de a maioria dessa informao ser de carcter no estruturado,

2 - Web / Text Mining

16

no sentido de no existir nenhuma estrutura explcita associada mesma, como acontece por exemplo num texto. A propsito disto, o WWW metaforizado por alguns autores como sendo uma selva de informao. Assim a expresso Web Mining consiste na pesquisa de conhecimento no World Wide Web o Data Mining orientado para o World Wide Web. O Web Mining uma rea de trabalho j com um tamanho considervel e contendo um conjunto de subreas mais especificas. Embora exista ainda alguma falta de consenso quanto ao reconhecimento e definio das vrias subreas do Web Mining, a maioria dos autores unnime em reconhecer a rvore que se mostra na figura 2.1, sobretudo os trs primeiros ns da rvore.

Figura 2.1 - Sub-domnios do Web Mining Nas prximas seces passar-se- a uma breve descrio das trs principais reas do Web Mining, representadas pelos trs primeiros ns da rvore da figura anterior.

2 - Web / Text Mining

17

2.1 Web Mining

2.1.1

Web Content Mining

Neste subdomnio do Web Mining aquilo que est em causa o contedo das pginas, em si. So estudadas metodologias de procura de paginas que obedeam a um determinado critrio, como o caso dos motores de pesquisa, paginas relevantes e informativas para um determinado tpico ou assunto. Por outro lado so tambm estudadas metodologias de extraco de sub-partes de pginas. Existem, portanto, duas grandes preocupaes ou orientaes de investigao neste sub-dominio: Information Retrieval e Information Extraction

Extraco de Documentos (Information Retrieval) O tpico diz respeito obteno de pginas que obedeam a determinados critrios de alguns utilizadores. A ttulo de exemplo, suponhamos que uma empresa imobiliria pretende obter o maior numero de pginas da Web que contenham informao relacionada com a venda ou compra de apartamentos. Neste caso necessrio fazer uma escolha daquilo que realmente interessa, no meio de tantas potenciais pginas disponveis. evidente que um ser humano pode fazer este trabalho, mas o problema est no tempo que uma pessoa necessita de despender para realizar esta tarefa. Assim existe um crescente interesse em todos os mtodos automticos que realizem este trabalho e cujo desempenho se aproxime o mais possvel do conseguido pelos humanos. Extraco da Informao (Information Extraction) Este subdomnio tem como alvo a obteno ou extraco de elementos pertencentes a determinados documentos [Riloff & Lehnert 1994]. Por outras palavras o input do sistema uma sequncia de texto e o output uma representao dos elementos relevantes a extrair [Hobbs & Israel 1994]. Enquanto que o Information Retrieval pretende extrair documentos importantes, entre um universo de documentos possveis, o Information Extraction pretende identificar elementos relevantes no interior de determinados documentos, os quais j sabemos que contm a informao que nos interessa. Os elementos relevantes extrados sero depois armazenados nalguma estrutura previamente definida, por exemplos numa tabela de uma Base de Dados. As estruturas nas quais so armazenados os elementos extrados, dos documentos, costumam ser designadas na

2 - Web / Text Mining

18

literatura por templates [Hobbs & Israel 1994]. Cada template composto por um conjunto de elementos designados por campos [Riloff & Lehnert 1994], o equivalente aos campos duma tabela numa base de dados. Para melhor ilustrar isto, apresenta-se de seguida um exemplo do domnio do Information Extraction: Suponhamos que o alvo de um sistema deste gnero era analisar uma srie de documentos, contendo cada um deles notcias relativas a operaes financeiras e de investimento. Um exemplo de dois documentos, deste domnio, contendo informao relevante mostrada na figura 2.3. O objectivo seria extrair os elementos mais relevantes que compe um investimento ou uma participao financeira de uma organizao noutra. Assim esses elementos poderiam ser: a entidade investidora, o alvo do investimento, o valor do investimento e possivelmente o pas no qual o investimento alvo. Um template num problema deste gnero seria um como o apresentado de seguida:
TEMPLATE: Investimento Investidor Alvo Valor Pas FIM TEMPLATE

Figura 2.2 - Exemplo dum template

Neste caso o template denominar-se-ia de Investimento e possuiria quatro slots: Investidor, Alvo, Valor, Pas. O objectivo seria ento preencher este template automaticamente mediante os novos documentos analisados.

2 - Web / Text Mining

19

Jernimo Martins: vai investir 49,2 milhes de euros no Brasil


12 Dezembro 08:36 ISI O grupo Jernimo Martins vai investir
49,2 milhes de euros na consolidao e expanso da rede de supermercados S controlada pela JM, esta rede est colocada no stimo lugar em termos retalhistas no Brasil.

Quarta, 12 Dez 2001 20:29


A Sonae Imobiliria anunciou hoje que vai construir o seu quarto centro comercial em Espanha, na cidade de Toledo, num investimento previsto de 110 milhes de euros (22,05 milhes de contos) cuja construo vai iniciar no primeiro semestre de 2002.

Figura 2.3 - Exemplos de anncios. Na figura anterior (2.3) os elementos que se encontram sublinhados so aqueles considerados relevantes para o preenchimento do template definido anteriormente. A prxima figura mostra o template preenchido com duas linhas, relativas aos elementos extrados dos dois documentos apresentados anteriormente.

INVESTIDOR
Jernimo Martins Sonae Imobiliria

ALVO
S ?

VALOR ()
492 00 000 110 000 000

PAS
Brasil Espanha

Figura 2.4 - Template preenchido com dois exemplos.

Uma grande quantidade de esforo de investigao tem sido investida nos dois pontos descritos anteriormente, nos ltimos anos. O forte desejo de aproximar o desempenho dos sistemas de Information Retrieval e Information Extraction, para nveis prximos dos do desempenho humano, tem motivado o aparecimento de campeonatos ao jeito de conferncias, nos ltimos anos. A partir de 1990 comearam a ser disputados os campeonatos TREC Text Retrieval Conference para a modalidade de Information Retrieval, e MUC Message Understanding Conference na modalidade de Information Extraction. Nestes

2 - Web / Text Mining

20

campeonatos tm participado grupos de vrias universidades e alguns de empresas. Vrias so j as edies decorridas dos TRECs e dos MUCs, as ultimas verses destas conferncias realizaram-se em Novembro de 2002, a TREC-10, e em Abril de 1998 a MUC-7.

2.1.2

Outros Subdomnios do Web Mining

Web Usage Mining Este sub-domnio tem como alvo descobrir os padres comportamentais de determinados utilizadores, no que diz respeito consulta de contedos na Web. sabido que a maioria dos servidores que se encontra na Internet faz um registo dos acessos realizados aos mesmos [Mena 1999]. Portanto, para muitas organizaes muito importante conhecer os hbitos de acesso dos utilizadores, por exemplo: que utilizadores acedem a determinados portais e porqu; se um utilizador acede a um recurso A, ser que ele tambm estar interessado no recurso B, que provavelmente desconhecer ? So questes semelhantes a esta que orientam e motivam todo o trabalho realizado neste subdomnio. Para muitas empresas, como as relacionadas com actividades comerciais, este gnero de informaes muito valiosa. Tambm o conhecimento dos padres de navegao dos utilizadores, num determinado site, ajudam os gestores desses sites a restruturar melhor os mesmos: saber por exemplo quais os contedos mais solicitados, qual a informao que deve estar mais visvel e aquela que poder estar mais escondida. Em muitas situaes interessa ter web sites cuja estrutura se adapta dinamicamente, de acordo com os padres de utilizao e preferncia dos utilizadores. Noutras interessa informar o utilizador de algum link que lhe poder ser til ou de algum produto que este poder desconhecer, como o caso do bem conhecido site: http://www.amazon.com, que por vezes sugere algum livro ou outro qualquer produto no qual este possa estar interessado.

Web Structure Mining Para alm dos contedos disponibilizados pelas pginas da web, existe um conjunto de informao subjacente s mesmas que, para determinados fins, se reveste de uma grande

2 - Web / Text Mining

21

importncia. Este subdomnio do Web Mining foca, essencialmente, questes relacionadas com a estrutura topolgica do World Wide Web [Mena 1999]. Tendo presente que as pginas publicadas na Web so hipertexto, cada pgina poder conter vrias ligaes para outras pginas e uma determinada pgina poder ser referenciada por outras. Podemos ento modelar este universo por uma estrutura a que os matemticos denominam de grafo, ou mais especificamente um grafo orientado.

Figura 2.5 - Um grafo orientado Sabendo que a teoria de grafos vem sendo desenvolvida desde Euler, contendo assim um legado histrico com mais de duzentos anos, natural que esta seja utilizada neste subdomnio. Todavia tm-se feito trabalhos, recentemente, com o objectivo de expandir e adaptar a teoria de grafos a esta nova rea. Novos tipos de grafos so investigados actualmente, como o caso dos Grafos Aleatrios, para melhor modelar a estrutura da Web. Neste subdomnio interessam questes como: Quais as pginas que contm mais ligaes para outras? Quais as pginas mais referenciadas ?

Uma pgina com muitas ligaes para outras pginas, poder ser indicativo da variedade de informao ou da riqueza de contedo dessa mesma pgina. Por outro lado e tal como nas citaes bibliogrficas, uma pagina que muito referenciada, pode ser indicativo da importncia ou popularidade da mesma.

2 - Web / Text Mining

22

Uma outra preocupao deste subdomnio realizar aglomeraes de pginas consoante determinadas propriedades ou segundo determinados assuntos [Berkhin 2002].

2 - Web / Text Mining

23

2.2 Text Mining

Em 1993, na conferncia MUC-5, entre todos os sistemas propostos para realizar as tarefas de extraco exigidas, somente dois sistemas apresentavam a capacidade de gerar automaticamente regras de extraco: AutoSlog e o sistema PALKA. Desde essa data e essa conferncia, muitos tm sido os sistemas apresentados com a capacidade de produzir alguma forma de regras de extraco. Entre os mais conhecidos temos os seguintes: CRYSTAL [Soderland 1996], LIEP [Huffman 1995], RAPIER [Califf 1999], WISHK [Soderland 1999], SRV [Freitag 1998], STALKER [Muslea et al. 1998], HASTEN [Krupka 1995]. Alguns destes mtodos baseiam-se em dicionrios, outros em mtodos mais estatsticos, como por exemplo os baseados em modelos de Markov (HMM) [Peng 2000], e uma grande parte tem como fundamento a gerao de regras para extraco. De seguida passarei a descrever alguns dos sistemas que foram referidos no pargrafo anterior.

2.2.1

AutoSlog

Este foi o primeiro sistema de extraco baseado na criao de um dicionrio de extraco. Esse dicionrio consiste numa coleco de padres de extraco designados por concept nodes. Este concept node consiste numa palavra de activao e nalguma restrio lingustica a ser aplicada ao texto a extrair.

Name: Target-subject-passive-kidnapped Trigger: Kidnapped

Figura 2.6 -Um concept node do sistema AutoSlog

Desenvolvido por Ellen Riloff em 1993 [Riloff 1993], este sistema opera com algumas heursticas de padres de linguagem. treinado com um conjunto de exemplos anotados previamente e a palavra que desencadeia a extraco normalmente um verbo, podendo tambm ser um substantivo se o objecto a ser extrado for um sintagma nominal (noun

2 - Web / Text Mining

24

phrase). Assim, os elementos a extrair podero pertencer a uma das seguintes categorias sintcticas: subject, direct object ou noun phrase. As frases so primeiro analisadas com um analisador sintctico e o resultado depois confrontado com a matriz de heursticas que determinar se ser realizada uma extraco mediante a proximidade melhor heurstica. Em 1995 Riloff apresentou uma verso melhorada do sistema onde foram incluidas trs alteraes mais significativas [Riloff 1996]. Por um lado deixou de ser necessrio anotar todos os exemplos de treino, mas s aqueles que eram considerados relevantes para o domnio. Uma outra alterao importante foi o aumento do numero de heursticas relativas a padres de extraco. Por outro lado o numero de padres de extraco possveis de ser activados, passou a ser superior a um. So realizados alguns clculos estatsticos adicionais, em relao verso mais antiga, para criar um ranking com os padres de extraco, guardando depois os melhores no dicionrio.

2.2.2

HASTEN

O Hasten foi um sistema desenvolvido por George Krupka [Krupka 1995] e participante na conferncia MUC-6 com distino. Este sistema induz um conjunto de padres de extraco a partir dos dados de treino (pequenas notcias num domnio). Cada padro de extraco designado por Egraph e o equivalente ao concept node do sistema AutoSlog, descrito anteriormente, embora um pouco mais elaborado. A prxima figura mostra um exemplo dum Egraph, para o evento dum ataque terrorista (ex: The Parliement was bombed by the guerrilas):

Figura 2.7 - Um Egraph do sistema Hasten Cada Egraph expressa uma lista de pares (Etiqueta Semntica, Elemento Estrutural), definindo um conjunto de restries identificao dos elementos relevantes. O Elemento Estrutural define restries semnticas ou sobre os elementos estruturais das frases, como por exemplo a sua sintaxe. Na figura anterior, um exemplo dum pare destes : (TARGET, NP

2 - Web / Text Mining

25

semantic = physical-object), definindo uma restrio sobre o alvo do elemento a extrair: um sintagma nominal (NP), cujo sujeito um objecto fsico. Uma etiqueta comum a todos os Egraphs a designada por ANCHOR. Nesta etiqueta definida a condio principal de identificao dum elemento relevante num texto, e essencialmente constituda pela raz do verbo que caracteriza a aco, por exemplo root = bomb na figura anterior. Para cada exemplo positivo de treino, so ajustados pesos relativos a cada Egraph, pesos esses que sero depois utilizados no processo de identificao dos novos elementos relevantes. Para cada nova instncia feito um clculo usando uma mtrica de similaridade relativa a cada Egraph. Este clculo, tem tambm em considerao os pesos ajustados no processo de treino, estabelece um ranking para cada Egraph que traduz o quanto este aplicvel extraco numa determinada instncia de texto em anlise. Se a similaridade duma instncia a um Egraph, for superior a um certo limiar, fixado previamente, ento concretizada a extraco.

2.2.3

CRYSTAL

Este sistema surge em 1995 e da autoria de Stephen Soderland [Soderland 1996]. Para alm de ser um sistema baseado na tcnica de criar um dicionrio de extraco, com restries morfolgicas, sintcticas e de conceito, vai tentar induzir um conjunto de regras de extraco. Este sistema foi testado, inicialmente, em dois domnios: noticias relativas sucesso de gestores de empresas, publicadas no Wall Street Journal, sendo o objectivo a extraco dos intervenientes numa sucesso de administradores de organizaes, e o segundo em pequenos resumos clnicos, com o alvo de identificar possveis diagnsticos ou sintomas. Inicialmente as frases dos vrios exemplos so etiquetadas sintacticamente e so preenchidos uns templates que iro conter a frase segmentada e sintacticamente etiquetada. Na figura 2.8 mostrado um exemplo de um destes templates, j preenchido. Tal como se pode visualizar no exemplo, para alm de uma etiquetagem sintctica feita tambm um etiquetagem semntica, tendo em ateno o domnio em causa. feita uma tentativa de identificar a ocorrncia de certas classes de conceitos, nos elementos do texto, como por exemplos: <Generic Person>, <Person Name>, <Generic Organization>, <Event>, <Corporate Office>. Assim, da coleco

2 - Web / Text Mining

26

de exemplos de treino, apresentados ao sistema feito, logo numa primeira fase, alguma generalizao, com esta etiquetagem e preenchimento dos templates. evidente que estes no so os templates finais a serem preenchidos com os elementos relevantes extrados, mas iro ser as instncias de treino do CRYSTAL. Observa-se tambm que estes templates consistem na definio de conceitos, como por exemplos o conceito de Instncia , como o caso do apresentado na figura 2.8, o conceito Sucesso, etc.

Figura 2.8 - Template representando o conceito de Sucesso. O sistema CRYSTAL utiliza uma verso do algoritmo de cobertura, para induzir regras com um certo grau de generalizao. As restries, impostas pelos templates iniciais, vo sendo relaxadas at que a cobertura dos exemplos de treino seja satisfeita com um certo erro mximo, fixado previamente. Um desafio enfrentado nesta rea saber qual o nvel certo de generalizao. Um nvel muito especfico faz com que existiro muitos novos exemplos que o sistema no conseguir identificar e portanto extrair. Por outro lado um sistema muito genrico, far com que nos novos exemplos apresentados, sejam extrados elementos no relevantes, isto , lixo. Um bom sistema ser aquele que induza regras com um grau de generalizao equilibrado e adequado. Assim, a estratgia utilizada pelo CRYSTAL partir de regras ou conceitos muito especficos e particulares indo relaxando estes mesmos

2 - Web / Text Mining

27

conceitos at que o maior numero de exemplos de treino sejam cobertos e um certo nvel de erro no seja ultrapassado. Para cada novo passo de generalizao feito o teste nos exemplos e medido o erro que determinar a paragem ou continuao do processo de induo. Uma das preocupaes deste sistema foi o de conseguir ser expressivo, no que diz respeito s regras de extraco.

2.2.4

LOLITA

O Sistema LOLITA um projecto em desenvolvimento no laboratrio de engenharia de linguagem natural, da Universidade de Durham, desde 1986. O nome deste sistema significa Large-scale, Object-based, Linguistic Interactor, Translator, and Analyser [Garigleano et al. 1998] e o sistema participou nas conferncias MUC mais recentes (MUC-6 e MUC-7) com um sucesso considervel. Este um sistema de processamento de linguagem natural com fins genricos, no tendo sido desenhado com o objectivo de satisfazer algum fim especfico, nalgum domnio. O ncleo do sistema consiste numa complexa e vasta rede semntica (SemNet), com cerca de 100000 ns e 1500 regras gramaticais, inspirada na j clebre WordNet [Miller 1990]. Este sistema considerado um dos maiores sistemas de processamento de linguagem natural [Garigliano et al. 1998] e serve de motor para um conjunto de aplicaes implementadas que vo desde a traduo de sentidos entre lnguas (ex: entre Ingls e Italiano) at extraco de informao, com o caso do trabalho descrito em [Constantino 1997]. A adaptao e utilizao do sistema num domnio especfico feita com relativa facilidade [Constantino, 1997], atravs da definio dum conjunto de Templates de aco para o fim concreto. Um Template uma estrutura j descrita e contendo um conjunto de campos (slots) a serem preenchidos segundo regras explicitamente definidas no prprio template.

2 - Web / Text Mining

28

Figura 2.9 - Ncleo do sistema LOLITA O texto introduzido processado pelos mdulos, representados na figura 2.9 e gerada uma representao interna do texto, formalmente coerente com a SemNet. O processamento realizado sobre o texto inclui anlise morfolgica (separao de palavras, etc), sintctica e semntica, ultrapassando dificuldades como a resoluo de anforas. O ncleo do sistema constitudo por um conjunto de mdulos que interagem entre si e acima de tudo com o mdulo principal e j referido - SemNet - tal como e mostrado na figura anterior, obtida de [Constantino 2001]. Um n, da SemNet, pode estar ligado a um subconjunto de outros ns da rede, semelhana do que acontece num grafo orientado acclico. Cada n representa um conceito relativo a alguma entidade ou evento, por exemplo: a entidade empresa, o evento compra, etc. Cada ligao, entre dois ns, representa uma relao entre esses ns, como por exemplo relaes de sujeito (ex: Joo), objecto (ex: jornal), aco (ex: comprou), especializao/generalizao (ex: FIAT versus Empresa), instanciao/universalizao, etc. Existem cerca de 60 tipos de ligaes diferentes. A figura 2.10 que se segue mostra a representao da frase John will retire as chairman, na SemNet.

2 - Web / Text Mining

29

Figura 2.10 - Extracto da SemNet representando a frase:


John will retire as chairman [Garigliano et al. 1998]

O trabalho realizado pelo autor, consistiu em utilizar o sistema LOLITA para a extraco de informao no domnio dos mercados financeiros. Os textos processados consistiram em pequenos anncios relativos a operaes financeiras, como por exemplo o anncio da compra de uma empresa, por parte de outra, ou quem passou a liderar o conselho administrativo duma empresa. Atravs da implementao de templates, mencionado anteriormente, so definidos os conceitos e elementos relevantes a extrair. Uma das preocupaes deste trabalho consistiu em tornar a definio dos templates facilmente realizvel por qualquer utilizador.
Template-name: Variables: Template main-event: T=TAKEOVER V=COMPANY1 is a company. V=COMPANY2 is a company. V=VALUE is money. V=COMPANY1 acquired V=COMPANY2. V=COMPANY1 acquired V=COMPANY2 with V=VALUE. The acquisition of V=COMPANY2 by V=COMPANY1. The V=VALUE acquisition of V=COMPANY2 by V=COMPANY1. V=COMPANY1 paid V=VALUE for V=COMPANY2. V=COMPANY1 acquired a majority stake in V=COMPANY2. V=COMPANY1 took full control of V=COMPANY2.

Definition of slots: S=COMPANY-PREDATOR: V=COMPANY1 S=COMPANY-TARGET: V=COMPANY2 S=TYPE-OF-TAKEOVER: String-fill: HOSTILE T=TAKEOVER is hostile. String-fill: FRIENDLY otherwise S=VALUE-OF-TAKEOVER: The cost of T=TAKEOVER. V=VALUE

Figura 2.11 - Parte duma template relativa ao evento da aquisio duma empresa,
retirado de [Constantino, 2001]

Como j foi adiantado, uma template tem alguma semelhana com uma tabela duma base de dados, com o acrscimo de ser dotada de regras de preenchimento gerais da template e regras

2 - Web / Text Mining

30

de preenchimento dos campos, aqui designados por slots. A figura 2.11 mostra o extracto duma template (no esto todos os slots), relativo ao evento da aquisio duma empresa, por parte de outra. As strings com o prefixo V= designam variveis e as comeadas por S= definem slots. As linhas contidas na parte designada por Template
main-event:

definem

regras para a identificao do evento e por sua vez as contidas em Definition definem os slots da template com as condies de preenchimento desses slots.

of slots:

Este sistema um sistema cujas regras de extraco de elementos relevantes so definidas pelos utilizadores, atravs das templates. O grande poder do sistema LOLITA reside na sua base de conhecimento interna, sob a forma de uma rede semntica, designada por SemNet, permitindo um bom processamento sobre a linguagem natural.

3 - Mtodos e Tcnicas de Inteligncia Artificial

31

3 Mtodos e Tcnicas de Inteligncia Artificial

Neste captulo, aps uma breve introduo e viso panormica da Inteligncia Artificial (IA) e da sua subrea designada por Aprendizagem Automtica (Machine Learning), sero apresentadas os principais conceitos e tcnicas de IA envolvidos no desenvolvimento do presente trabalho.

3.1 Inteligncia Artificial

The branch of computer science that is concerned with the automation of intelligent behavior
[Luger & Stubblefield, 1993]

De entre as vrias definies de Inteligncia Artificial a anterior traduz as orientaes de uma das perspectivas mais seguidas na actualidade [Russell & Norvig 1995] e para a qual um sistema inteligente consiste num sistema que age racionalmente para uma grande maioria de autores o que esperado dum sistema deste gnero. Ao todo existem quatro prismas de olhar a IA, duas mais centradas nas semelhanas com os humanos (sistemas que pensam como humanos; sistemas que agem como humanos) e duas baseadas no conceito de racionalidade (sistemas que pensam racionalmente; sistemas que agem racionalmente), donde se enquadra esta ultima definio. Desde a origem formal da IA como cincia, em 1956, que a maneira de ver a IA tem passado por estas quatro prismas. Embora para alguns autores as origens da IA remontem ao perodo clssico grego, com Plato e Aristteles [Dreyfus 1979], no contexto cientfico e tecnolgico do final da II Guerra Mundial que se d a fecundao e gestao desta nova cincia. De entre vrios, destacam-se nomes, pelo seu contributo mais directo, como: Alan Turing, McCulloch, Pitts, Shannon, Von

3 - Mtodos e Tcnicas de Inteligncia Artificial

32

Neuman, Minsky e McCarthy atravs do qual foi estabelecido o nome da IA, na clebre escola de vero de Dartmouth, em 1956 [McCarthy et al. 1956]. Aps este perodo embrionrio da IA d-se um perodo de euforia generalizada (final da dcada de 1950 e dcada de 1960), pensando-se que esta cincia iria, em relativamente pouco tempo, acabar por criar uma entidade computacional capaz de ultrapassar os desempenhos mentais prprios do crebro humano, em qualquer domnio. Uma marca de referncia comum da IA, neste perodo, era a do desempenho humano. Vrios foram os problemas e metas avanadas pelos crticos, para os quais a soluo dos mesmos por sistemas desenvolvidos, atribuiriam aos mesmos o estatuto de sistema inteligente. O mais comum na poca eram afirmaes do gnero: um sistema ser considerado inteligente se for capaz de fazer isto, ou aquilo .... Os vrios isto e aquilo foram sendo ultrapassados e novas metas eram de novo desafiadas. neste contexto que surge o clebre Teste de Turing, que consistem basicamente em confrontar um sistema com uma pessoa, num processo de dilogo, sem que a pessoa saiba se est a comunicar com uma mquina ou com outra pessoa. Se o sistema for capaz de iludir essa pessoa, fazendo-a pensar que est a comunicar com um ser humano, ento podemos considerar esse sistema inteligente. No final da dcada de 1960 e inicio da dcada de 1970 a euforia veio a dar lugar a um viso mais realista da IA, contemplando um conjunto de dificuldades e limitaes, inerentes ao mundo real, que no tinham sido ainda tidas em conta. De entre as vrias dificuldades, destaca-se a tomada de conscincia da existncia de problemas pertencentes classe dos NPCompletos, sendo necessrias heursticas concretas para os atacar. A dcada de 1970 viu florescer os denominados sistemas periciais que constituiriam um grande sucesso, quer comercial quer publicitrio, em vrias reas de aplicao. De entre os muitos sistemas deste gnero, implementados nesta altura, destacam-se os seguintes: DENDRAL, na rea da Qumica, para inferir estruturas moleculares, com base na anlise do espectro de massa, MYCIN para diagnstico de infeces hematolgicas e o clebre, bem sucedido e muito publicitado PROSPECTOR que se destinava descoberta de grandes jazigos de Molibdnio.

3 - Mtodos e Tcnicas de Inteligncia Artificial

33

Na dcada de 1980 a IA entra nos meios empresariais. Muitas empresas, como a Digital, Xerox, AT&T, IBM, entre outras, possuam o seu grupo prprio de IA. No final desta mesma dcada renasce o interesse pelas redes neuronais. Na actualidade a IA compreende um conjunto de subreas, que vo desde a robtica at ao processamento de linguagem natural, passando pela aprendizagem automtica, entre outras. Embora para muitos crticos o Teste de Turing ainda no tenha sido satisfeito, os feitos alcanados por esta cincia so notveis e tm implicaes em muitas reas da nossa vida quotidiana. O exemplo do carro que realiza uma viagem autnoma, entre duas cidades, do Deep Blue capaz de vencer o campeo do mundo, no Xadrez, ou das sociedades de agentes que cada vez mais povoam a web, concretizando tarefas de pesquisa ou comrcio electrnico, so alguns dos feitos alcanados. Certamente que todos concordaro que esta uma rea que ainda est no inicio duma longa carreira que ningum sabe muito bem onde nos levar, embora ficcionada por muitos, da literatura ao cinema, mas que continua em marcha e cada vez com mais implicaes para a humanidade.

3 - Mtodos e Tcnicas de Inteligncia Artificial

34

3.2 Aprendizagem Automtica

O Teste de Turing envolve pelo menos quatro grandes subreas da IA [Russell & Norvig 1995]:

Processamento de Linguagem Natural Representao do Conhecimento Raciocnio automtico Aprendizagem Automtica

portanto, a ltima , sem dvida, uma importante subrea da IA. Pretende-se que os sistemas criados tenham a capacidade de adquirir conhecimento, relativo ao ambiente em que se integram, conhecimento esse que no foi inicialmente fornecido. Pretendem-se sistemas capazes de formular teorias a partir de dados relativos ao seu ambiente. Na literatura mais recente da IA, o termo agente empregue para designar um sistema que utiliza metodologias da IA1. Assim um agente capaz de aprender um agente capaz de se adaptar melhor ao ambiente e com maior capacidade de sucesso, relativamente ao objectivo para o qual foi desenhado.

Figura 3.1 - um agente que aprende De acordo com [Russell & Norvig 1995] o modelo geral de um sistema ou agente com capacidades de aprendizagem pode ser esquematizado como mostrado na figura anterior.

1 Este termo tem ganho uma importncia reforada, com o aparecimento dos Sistemas Multi-Agente.

3 - Mtodos e Tcnicas de Inteligncia Artificial

35

Portanto, um agente desenhado com um determinado objectivo que, na generalidade dos casos, depende de um conjunto de problemas existentes e que necessrio solucionar, tal como se pode perceber no esquema da figura 3.1. O agente obtm a percepo do ambiente atravs de sensores e desencadeia aces, nesse mesmo ambiente, atravs de efectuadores ou operadores que controla. Aquilo que distingue um agente cognitivo a capacidade de gerar, estender e reformular a sua base de regras, como resultado da interaco entre este e o ambiente e guiado pelo objectivo de melhorar progressivamente o seu desempenho. A aprendizagem algo muito prprio e especial do ser humano e que todos ns reconhecemos como sendo muito importante. Desde muito cedo habituamos-nos a encetar processos de aprendizagem que nos permitem desenvolver e conhecer o universo que nos envolve e atingirmos os nosso objectivos, at sobreviver. Alargamos os nossos conhecimentos aprendendo em instituies afins que nos transmitem a matriz de saber adquirida no somatrio das geraes passadas e que constituem um precioso patrimnio da humanidade, como caso da cincia. Existem duas formas de conhecimento e consequentemente duas formas cognitivas distintas, mas que se complementam aquilo que na literatura se denomina de: conhecimento simblico e conhecimento sub-simblico. O primeiro traduz a aprendizagem de um conjunto de princpios lgicos, enquanto que o segundo traduza aprendizagem de um processo de aco um savoir faire. A maior parte do conhecimento que adquirimos nas nossas escolas simblico, por exemplo quando estudamos Histria, Qumica ou Matemtica, estamos adquirindo e assimilando ideias, conceitos e teorias, formalmente estabelecidas numa determinada linguagem inteligvel. Por outro lado, quando aprendemos a caminhar, andar de bicicleta ou a jogar tnis, estamos aprendendo sub-simbolicamente, pois aprendemos simplesmente a saber fazer e por norma no nos transmitida nenhuma teoria, mas ns vamos experimentando e melhorando o nosso desempenho. Assim, tambm na IA esto presentes estas duas formas de aprendizagem: simblico e subsimblico. Importantes progressos tm sido concretizados na aprendizagem, em qualquer destas formas. Tenta-se dotar os agentes de capacidades cognitivas simblicas e/ou subsimblicas, consoante as necessidades, consoante o ambiente do agente e a natureza daquilo que necessrio aprender. No que diz respeito ao sub-simblico temos, como exemplo de

3 - Mtodos e Tcnicas de Inteligncia Artificial

36

tcnicas empregues: as Redes Neuronais, a Lgica Difusa, a Aprendizagem por Reforo, a Aprendizagem Bayesiana, utilizada tambm neste trabalho, entre outras. No que diz respeito aprendizagem simblica, temos o exemplo da induo de classificadores, como o caso das rvores/regras de deciso, tambm utilizadas neste trabalho, e a induo de regras lgicas (ILP). Em muitos domnios interessa que seja gerado conhecimento simblico, capaz de ser facilmente percebido por quem interage com os sistemas, ou quem os usa. A aprendizagem referida e utilizada no trabalho, a denominada aprendizagem indutiva aquela que adquirida empiricamente (na linha de Francis Bacon, David Hume e Bertrand Russel, entre outros). Na IA, aprendizagem indutiva consiste em disponibilizar um conjunto de exemplos, denominados de treino, a um agente, de modo que este induza conhecimento relativo a alguma funo objectivo ou funo a aprender. Um exemplo ou instncia de treino contm um conjunto de inputs e o resultado esperado: { x 1, y 1 , x 2, y 2 ,..., x n , y n 6 . Pretende-se induzir algum f * , tal que para todo, ou quase todo, o i se tem: y i = f * x i . Esta forma de aprendizagem tambm classificada de aprendizagem supervisionada, pelo facto do agente ter acesso tanto aos inputs como aos outputs, isto , o agente pode perceber o efeito duma deciso no ambiente ( f * x i ). Nas trs seces que se seguem sero apresentadas em mais detalhe, trs formas de aprendizagem (Aprendizagem Baseada em Instncias, Aprendizagem Bayesiana e Induo de rvores de Deciso), que foram utilizadas no nosso trabalho.

3 - Mtodos e Tcnicas de Inteligncia Artificial

37

3.3 Aprendizagem Baseada em Instncias

A aprendizagem baseada em instncias uma forma de aprendizagem que consiste basicamente em coleccionar e armazenar um conjunto de instncias de treino para depois as utilizar no momento em que uma nova instncia necessita de ser classificada. Este tipo de aprendizagem compreende um conjunto de mtodos, dos quais se descreve a seguir o dos Kvizinhos. Todo o trabalho computacional adiado at ao momento em que necessrio classificar novas instncias, da estes mtodos de aprendizagem serem designados de lazy (preguiosos). Uma outra caracterstica geral, destes mtodos, o facto de a classificao de uma nova instncia ser realizada tendo em conta um subconjunto de instncias treino, prximas da instncia a classificar. Assim a funo ou conceito objectivo a aprender, pode ser avaliada localmente, dependendo unicamente desse pequeno nmero de instncias. Portanto para cada nova instncia a classificar avaliada uma funo diferente, isto constitui uma diferena fundamental em relao a outros mtodos de aprendizagem que tentam induzir uma funo que caracterize todo o conjunto de treino observado. A aprendizagem baseada em instncias compreende essencialmente os trs mtodos seguintes: Mtodo dos k-vizinhos mais prximos, Regresso Local Ponderada (Locally Weighted Regression) e Raciocnio Baseado em Casos. De seguida ser apresentado o mtodo dos k-vizinhos, dado que este utilizado no nosso trabalho, na classificao de documentos, descrita na seco 4.2.1.

3.3.1

O Mtodo dos K-Vizinhos Mais Prximos

O mtodo dos k-vizinhos um dos mtodos mais simples dentre os mtodos da aprendizagem baseada em instncias [Mitchell 1997], este pressupe que os domnios dos atributos so nmeros reais e assim uma instncia interpretada como sendo um ponto no espao euclidiano n-dimensional ( n ), em que n corresponde ao nmero de atributos envolvidos num instncia. Considerando que temos uma coleco de m instncias I = { x 1, x 2, . . . , x m } e

3 - Mtodos e Tcnicas de Inteligncia Artificial

38

cada instncia expressa, atendendo ao valor de m atributos A = { A1, A 2, . . . , A n } , ento para uma qualquer instncia x I , tem-se: x a1 x , a2 x , . . . , a n x , em que, para qualquer i, ai x o valor da instncia x, relativa ao atributo A i . Sendo uma instncia considerada como um ponto de n , pode-se definir uma distncia entre instncias atendendo s mtricas definidas nesse espao, dentre as quais a mais utilizada a distncia euclidiana:
d x , y =

ai x ai y 2
i

O objectivo deste mtodo resume-se aprendizagem duma funo objectivo f : n  C , sendo C um conjunto finito que no caso de um problema de classificao contem as r classes possveis: C = { c1, c2, . . . , cr } . Um conjunto de instncias de treino consiste numa coleco de pares da forma x , f x , sendo x I . Dada uma nova instncia x ? pretende-se estimar
f x ? e este estimador normalmente notado por f ^ x ? .

Considerando que o conjunto I, referido anteriormente, consiste na coleco de instncias de treino, ento para uma nova instncia que se pretende avaliar x ? , o estimador referido obtm-se da seguinte forma:
k

f x?

argmax c , f x i
cC i=1

em que

conhecida funo delta de Kronecker, isto

a , b = 1 se a = b e

a , b = 0

se a b . Portanto f ^ x ? estimado a partir do valor mais frequente de f, nas k instncias mais prximas de x ? , da este mtodo ser designado dos k-vizinhos mais prximos. Este k um valor previamente fixado ou determinado dinamicamente por, validao cruzada, geralmente um valor pequeno (k = 3 ou k = 5). e

3 - Mtodos e Tcnicas de Inteligncia Artificial

39

Para o caso de C = pode-se estimar f x ? , calculando mdia do valor dos k-vizinhos, isto
1 f xi . k i=1
k

^ : f x ?

Uma verso mais refinada deste mtodo consiste em atribuir pesos diferentes aos k-vizinhos [Mitchell 1997], dependendo por exemplo da distncia multiplicar cada parcela do somatrio for um factor que depende do inverso do quadrado da distncia, isto :
wi = d x? , x i
2

Como pontos positivos deste mtodo destaca-se o facto do processo de aprendizagem ser muito simples e incremental, consiste unicamente em ir memorizando instncias, e consequentemente o tempo de aprendizagem baixo. tambm um mtodo aplicvel, mesmo em problemas muito complexos e robusto no que diz respeito a instncias com rudo. Relativamente aos pontos negativos, tem-se o preo pago pela simplicidade do treino e que obriga ao armazenamento de muita informao e em consequncia a classificao de uma nova instncia pode tornar-se lenta, pela necessidade de calcular a distncia a todas as instncias armazenadas. Outra dificuldade que este mtodo encontra o chamado problema da dimensionalidade, que reside no facto do nmero de instncias (pontos) representativas necessrias, aumentar exponencialmente com o nmero de atributos das instncias. Um outro problema, tambm relacionado com o nmero de atributos, consiste na possibilidade de existirem atributos irrelevantes, fazendo com que duas instncias que at estariam prximas, encontrarem-se afastadas como consequncia de valores muito diferentes nos atributos no relevantes.

3 - Mtodos e Tcnicas de Inteligncia Artificial

40

3.4 Aprendizagem Bayesiana


"Probability is that degree of confidence dictated by the evidence through Bayess theorem".

E.T. Jaynes

A abordagem bayesiana ao tema da aprendizagem, baseia-se essencialmente em toda a teoria estatstica que envolve e deriva do Teorema de Bayes. Toma-se como premissa que os itens e relaes de interesse so a manifestao de leis de distribuio de probabilidade que esto por detrs. portanto uma abordagem essencialmente quantitativa, aprendizagem, olhando para o problema como a escolha da melhor hiptese de um espao de hipteses aquela que mais coerente com os dados do problema aqui a funo objectivo (conceito alvo a aprender) corresponde escolha da melhor hiptese, escolha essa que realizada tendo em conta o clculo explcito da probabilidade de cada hiptese. Esta abordagem uma pea importante na rea aprendizagem automtica. Por um lado os resultados prticos conseguidos, em muitos domnios, mostram-se competitivos com os alcanados por outros mtodos de aprendizagem, superando-os mesmo em muitas situaes [Mitchell 1997], como o caso das redes neuronais e das rvores de deciso. Por outro lado, este mtodo ajuda a perceber outros mtodos de aprendizagem que no manipulam explicitamente probabilidades.

3.4.1

Teorema de Bayes

O teorema de Bayes, sendo um dos resultados mais importantes da teoria das probabilidades tambm o princpio fundamental da aprendizagem bayesiana.

Teorema Se { A1, A 2, . . . , A m } uma partio do espao de resultados e B um qualquer acontecimento, com P B U 0 e para cada i P A i U 0 , ento:
P A i B = P Ai P B Ai
m

i {1, . . . , m }

P Ai P B Ai
i=1

3 - Mtodos e Tcnicas de Inteligncia Artificial

41

designando P(A) a probabilidade do acontecimento A e P A B a probabilidade de A condicionada por B, definida por


P A B . P B

Um consequncia imediata, deste teorema que para dois acontecimentos A e B, tais


P A U 0 e P B U 0 , se tem:

P A B =

P B A P A P B

Supondo que o nosso conjunto de dados (instncias de treino) designado por D, ento pelo teorema anterior, temos uma forma de calcular a probabilidade duma hiptese h, tendo por base esses dados:
P h D = P D h P h P D

em que a probabilidade P h D a denominada probabilidade posteriori e P h a probabilidade priori da hiptese h. Considerando que temos um espao de hipteses possveis H, ento pretende-se determinar qual a melhor hiptese , tendo em conta os dados observados: D. Se interpretarmos a melhor hiptese, como a mais provvel, atendendo aos dados, isto a hiptese com melhor valor de probabilidade posteriori, designada nalguma literatura por h MAP [Mitchell 1997], ento o que se quer :
h MAP = argmax P h D
h H

e pela relao anterior: h = argmax P D h P h . Como P(D) constante em relao a MAP P D h H h, a formula resume-se a: h MAP = argmax P D h P h .
h H

Nalguns contextos assume-se que todas as hiptese so igualmente provveis e nesse caso esta formula ainda mais simplificada, traduzindo-se naquilo que se designa por hiptese mais verosmil (Maximum likelihood): h ML = argmax P D h . Muitos dos algoritmos de
h H

3 - Mtodos e Tcnicas de Inteligncia Artificial

42

aprendizagem tm implcito o conceito de procura de h ML ou h MAP , por exemplo a procura da minimizao do quadrado dos erros, numa rede neuronal, no mais que a procura de
h ML . Um outro exemplo o que se passa na induo de rvores de deciso, com a tendncia

de escolher rvores pequenas. Se interpretarmos a rvore induzida como sendo a hiptese preferida, luz da aprendizagem bayesiana conclumos que essa hiptese no mais que
h MAP , pois uma forma equivalente de h MAP : h MAP = argmin log 2 P D h log 2 P h , h H

que expressa precisamente, pela teoria de informao, a hiptese mais pequena, assumindo uma certa codificao para as hipteses. Nos problemas de classificao, podemos aplicar o teorema de Bayes como classificador e o objectivo encontrar qual a classe mais provvel, tendo em conta as instncias de treino observadas o caso do trabalho implementado e descrito na seco 4.2.2. Sendo V um
P v j D que pode ser reescrito da conjunto de classificadores, queremos v Bayes = argmax v V
j

forma: v Bayes = argmax v V


j

P v j h D
h H

<=> v Bayes = argmax v V


j

h H

P v j h D P h D e sendo

v j independente de D, sendo h conhecido, tem-se o denominado classificador ptimo de

Bayes: v Bayes = argmax


v j V

P v j h P h D .
h H

Diz-se que este classificador ptimo, significando que em mdia obtm melhores resultados que qualquer outro, a partir da mesma informao. Assim o erro cometido por este classificador o patamar mnimo terico, relativamente a qualquer outro classificador, sendo conhecido pelo Erro do Bayes ptimo. Percebe-se assim a importncia que a abordagem bayesiana tem na aprendizagem indutiva, todavia a sua aplicao prtica algo complicada, na medida em que necessrio conhecer as probabilidades exactas. Na prtica s vamos ter as estimativas dessas probabilidades, que podem no estar correctas. O mtodo Naive Bayes referido a seguir uma abordagem simplificada da abordagem bayesiana, cuja implementao prtica se encontra mais simplificada.

3 - Mtodos e Tcnicas de Inteligncia Artificial

43

3.4.2

Naive Bayes

O mtodo de Naive Bayes assume como premissa fundamental que os atributos das instncias de dados (D) so independentes entre si. Supondo que uma instncia I D consiste num vector de valores relativos aos m atributos a1 , a 2 , . . . , a m 1, pretende-se, de acordo com o apresentado na seco anterior, obter o v MAP , dentre os classificadores possveis de V, isto :
v MAP = argmax P v a1 , a 2 , . . . , a m .
vV

mas, pelo teorema de Bayes, a igualdade apresentada equivalente a:


P a1, a 2, . . . , a m v P v P a1, a 2, . . . , a m

v MAP = argmax
vV

Como o termo que est denominador no interfere no resultado final, por ser independente do classificador em causa (v), pode ser suprimido ficando-se s com:
v MAP = argmax P a1 , a 2 , . . . , a m v P v .
vV

Admitindo agora a independncia de a1 , . . . am chegamos formula do classificador naive Bayes:


m

v MAP = v NB = argmax P v P a i v
vV i =1

Uma primeira observao o facto desta frmula ser mais facilmente aplicvel na prtica, dado que s necessrio calcular k m probabilidades ( k = V ), enquanto que para o classificador v MAP mais geral esse valor da ordem m k , simplificando muito em termos de complexidade computacional.

1 Ver seco anterior.

3 - Mtodos e Tcnicas de Inteligncia Artificial

44

O classificador v NB um classificador amplamente utilizado, mostrando desempenhos que chegam a atingir e mesmo ultrapassar o demonstrado por outros classificadores como as redes neuronais e as rvores de deciso [Michie et al. 1994]. O mtodo de Naive Bayes utilizado no nosso trabalho, bem como uma sua verso melhorada, para induzir um classificador de documentos de texto, no nosso domnio (consultar subseco 4.2.2 e 4.2.3).

3 - Mtodos e Tcnicas de Inteligncia Artificial

45

3.5 Induo de rvores de Deciso

As rvores de deciso so uma das metodologias de aprendizagem indutiva mais utilizadas na actualidade, quer a nvel de aplicao, quer a nvel de trabalho e investigao acadmica. Tm sido concretizadas aplicaes desta metodologia da IA em domnios que vo desde a anlise financeira e econmica, at problemas de diagnstico mdico. Vrios algoritmos de induo de rvores de deciso tm sido desenvolvidos e melhorados nos ltimos anos, como o caso do CART [Breiman et al. 1984], ASSISTANT [Cestnik et al. 1987], ID3 [QUINLAN, 1986], C4.5 [QUINLAN, 1993] e C5, este dois ltimos so verses melhoradas do ID3.

Figura 3.2 - Esboo de uma Arvore de Deciso. Uma rvore de deciso consiste numa rvore em que cada n define uma condio lgica sobre um atributo duma instncia. Denominando um conjunto de instncias por S e o conjunto de atributos considerado por
A = { a1 , . . . , a m } ,

ento

para

x S

tem-se

x a1 x , . . . , a 2 x , sendo ai x o valor assumido pelo atributo a i na instncia x. Assim

o n duma rvore contm uma condio sobre algum elemento de A, por exemplo a k U 3.7 ou a k = alto . Cada ramo derivado dum n consiste num possvel valor do atributo considerado no n. Cada folha da rvore representa um elemento duma classe. Cada caminho, desde a raz, a uma folha, corresponde a uma regra de deciso ou classificao. Portanto uma rvore de deciso traduzvel numa disjuno de conjunes lgicas de condies, condies essas sobre os valores de A, sendo cada ramo da rvore uma conjuno de condies e o conjunto dos ramos disjuntos (DNF Disjuntive Normal Form). Isto significa que qualquer funo da lgica do clculo proposicional, representvel atravs duma rvore de deciso.

3 - Mtodos e Tcnicas de Inteligncia Artificial

46

As rvores de deciso so propcias para problemas de classificao, cujo nmero de classes finito. Uma das vantagens partida, das rvores de deciso o facto de ser gerado conhecimento simblico ao contrrio de muitas outras metodologias de aprendizagem, como por exemplo as redes neuronais. Aqui so geradas regras da lgica proposicional e portanto susceptveis de compreenso, por parte dos seres humanos.

3.5.1

Ganho de Informao

O ganho de informao a medida estatstica que est na base da construo duma rvore de deciso, no algoritmo ID3, referido a seguir. Todavia esta medida, da teoria da informao de Shannon [Shannon & Weaver 1949], no de utilizao exclusiva do ID3, tendo aplicaes variadas em outras reas (ver seces 4.2.3 e 4.4.2). Se tivermos um conjunto de vrias instncias S, e um conjunto de n classes
C = { C 1 , . . . , C n } , sendo
p i a probabilidade da classe C i em S, ento a entropia do

conjunto S, uma medida de homogeneidade deste, traduzida na seguinte igualdade:


n

Entropia S = pi log 2 pi
i=1

A entropia uma medida aplicvel partio dum espao de probabilidade, medindo o quanto esse espao homogneo ou por outro lado o quanto ele desordenado ou catico. A entropia atinge o seu valor mximo, igual a log 2 n , quando
p1 = p 2 = . . . = p n = 1 , n

expressando precisamente a existncia dum mximo de homogeneidade. Considerando um atributo A das instncias de S, com Dominio(A) = { v 1, v 2, . . . , v r } = V ento a considerao de A = v , com v V separa um subconjunto de elementos de S. Denomine-se esse subconjunto de elementos por S v , ento podemos voltar a calcular a entropia deste novo conjunto: Entropia S v . Realizando esta operao para cada elemento de V, podemos determinar o quanto esperado que seja reduzida a entropia, considerando que os valores de

3 - Mtodos e Tcnicas de Inteligncia Artificial

47

A so conhecidos. De outro modo pretende-se saber qual o ganho de informao do atributo A, que dado pela seguinte formula:
S v S

Ganho S , A = Entropia S
vV

Entropia S v

em que S e S v designam a cardinalidade dos conjuntos S e S v , respectivamente.

3.5.2

Mtodo Bsico (Algoritmo ID3)

O algoritmo ID3 consiste num processo de induo de rvores de deciso. A construo da rvore realizada de cima para baixo (top-down), com o objectivo de sempre escolher o melhor atributo para um n da rvore. um processo recursivo que aps ter escolhido um atributo para um n, comeando pela raz, aplica o mesmo algoritmo aos descendentes desse n, at que certos critrios de paragem sejam verificados. Uma verso simplificada deste algoritmo pode ser descrito como se segue:
Dado um conjunto de exemplos S Criar o n raz Se todos os exemplos de S so da mesma classe O n actual uma folha da classe Seno Seleccionar o melhor atributo A, cujo domnio : Dividir o conjunto de instncias em Criar recursivamente as sub-rvores

C j Ento

Cj.

V = { v 1, v 2, . . . , v r }

S 1, S 2, . . . , S m , relativ. aos valores de V T 1, T 2, . . . , T m , para S 1, S 2, . . . , S m . T 1, T 2, . . . , T m .

Gerar a rvore de deciso T, tendo por base o n actual e

Algoritmo 3.1 ID3 simplificado

Para cada n da rvore escolhido o melhor atributo, entre os possveis, essa escolha concretizada tendo em conta a medida do ganho de informao referida anteriormente. Escolhe-se o atributo mais informativo para o n actual. Esta escolha do atributo mais

3 - Mtodos e Tcnicas de Inteligncia Artificial

48

informativo, faz com que em cada partio, das instncias, gerada ( S v ) os exemplos tendam a ser cada vez mais de uma s classe C j (mais homogneos). A escolha do atributo mais informativo que mais reduz a entropia faz com que a tendncia seja a de gerar rvores , que so, em geral, menos profundas. Em suma o algoritmo ID3 realiza uma procura no espao das rvores de deciso, consistentes com os dados. Isto no significa que seja encontrada a melhor rvore, tenha-se presente que o problema da procura global da melhor rvore um problema NP completo. O algoritmo ID3 realiza uma procura vida (greedy), guiada pela heurstica do ganho de informao e feita segundo a estratgia do subir a colina (hill-climbing). Como sabido desta estratgia, corre-se o risco da soluo convergir para um mnimo local. Para os atributos cujos domnios sejam valores numricos, reordenam-se as instncias, de acordo com esse atributo e procuram-se pontos extremos (instncias) nos quais existe uma mudana de valor da classe. Um ponto de mudana de classe marca uma partio binria do conjunto das instncias, mediante uma condio lgica do tipo A U x , sendo A o atributo numrico em causa e x um valor calculado a partir dos dois valores consecutivos de A nesses pontos. Normalmente toma-se x igual mdia dos valores de A, nos pontos consecutivos. Foi mostrado que, neste tipo de atributos, de todos os possveis pontos de referncia, aqueles que maximizam o ganho de informao separam dois exemplos com valores de classe diferentes [Fayyard & Irani 1993]. Um dos problemas a ter em conta na induo de rvores de deciso o chamado problema de Overfitting, isto sobre-ajustamento da rvore aos dados de treino, obtendo um desempenho quase perfeito nesses, mas um desempenho pobre nos novos dados. Isto tem origem na possibilidade de existir rudo nos dados, devido a valores errados dos atributos ou das classes, ou devido existncia de um conjunto de atributos inadequado ou insuficiente. As extenses e desenvolvimentos ao algoritmo ID3, tem em considerao estes problemas, bem como outros de natureza prtica e que sero referidos a seguir.

3 - Mtodos e Tcnicas de Inteligncia Artificial

49

3.5.3

Mtodo Melhorado (C4.5 / C5)

Uma das dificuldades do algoritmo ID3 consiste na possibilidade de gerar rvores demasiado ajustadas aos dados de treino overfitting com um desempenho quase perfeito, nestes dados, mas com um baixo desempenho nos novos dados, tal como foi referido no final da subseco anterior.

Ultrapassando o Sobre-Ajustamento (Overfitting) O algoritmo C4.5 [Quinlan, 1993] um mtodo melhorado do ID3 que, entre outros melhoramentos, combate o problema do overfitting, utilizando uma estratgia de poda da rvore. Existem duas estratgias de combate ao problema do sobre-ajustamento, que pressupe que a rvore tem uma complexidade inadequada e irreal. Assim o princpio orientador o denominado princpio de Occam ou Ocam's razor que d primazia escolha de hiptese menos complexas, compatveis com a realidade observada. As duas estratgias de simplificao de rvores de deciso, existentes so: Interromper prematuramente o crescimento da rvore (pr-poda) Deixar a rvore crescer livremente de depois pod-la (ps-poda)

O algoritmo C4.5 adopta a segunda estratgia (ps-poda). Podar uma rvore, neste contexto, significa reduzir algumas subrvores a folhas, ou de outra forma, um ramo da rvore, a partir de determinado n cortado (transformado em folha). O corte dum ramo da rvore guiado por um teste estatstico que tem conta os erros num n e a soma dos erros nos ns que descendem desse n. Assim, para cada n, a poda s se concretiza se o desempenho da rvore no diminuir. O sistema C4.5 faz uma estimativa pessimista do erro, para cada n.

Outros Melhoramentos Para alm do problema do overfitting, o C4.5 ultrapassa problemas concretos e comuns do mundo real como: atributos com valores numricos; valores omissos e dados contendo rudo. Uma outra possibilidade disponibilizada por este sistema a capacidade de realizar validao

3 - Mtodos e Tcnicas de Inteligncia Artificial

50

cruzada (N-fold cross validation), melhorando assim a estimativa do erro cometido pelo classificador. Uma ultima caracterstica que merece ser destacada a possibilidade deste sistema em gerar regras de deciso a partir de rvores. Dado que uma rvore de deciso se encontra na forma normal disjuntiva (DNF), como referido, relativamente fcil traduzir este classificador para um conjunto de regras de deciso, todavia o sistema C4.5 utiliza um mtodo mais especfico para gerar uma lista ordenada de regras, donde se destaca a realizao da poda adicional nas regras induzidas inicialmente. Para um mesmo problema o nmero de regras induzidas em geral inferior ao nmero de folhas da correspondente rvore j podada [Witten & Frank 2000]. Esta uma caracterstica importante, na medida em que um classificador na forma dum conjunto de regras geralmente mais fcil de perceber que a correspondente forma da rvore de deciso. O sistema C5 [Quinlan, 1997], o sucessor do C4.5, melhorado, para lidar com as exigncias do mundo real. O grande salto foi dado em termos de eficincia, quer a nvel de tempo de processamento e de memria utilizada [Quinlan, 1997]. Por outro lado, os classificadores gerados so normalmente mais pequenos e precisos. Para alm do salto em eficincia o sistema C5 oferece mais alguns melhoramentos como: novos tipos de dados incorporados (ex: pode trabalhar com o tipo no a aplicvel - N/A); atributos definidos a partir de combinaes funcionais doutros atributos; utilizao de custos diferenciados para os erros de classificao. Uma outra caracterstica que permite diminuir a taxa de erro dos classificadores, no C5, a utilizao de Boosting [Schapire 2002]. Esta tcnica consiste em gerar vrios classificadores, a partir dos mesmos dados de treino, e depois combin-los num classificador final no qual cada classificador inicial participa votando com um certo peso. Este peso ajustado durante o processo de treino [Quinlan 1996]. Nalguns casos a reduo dos erros de classificao pode atingir 40% [Quinlan 1997]. O sistema C5 foi utilizado para induzir regras de extraco, no trabalho implementado no mbito desta dissertao.

4 - O Projecto de Extraco de Informao da Web

51

4 O Projecto de Extraco de Informao da Web

Neste captulo apresentado o trabalho realizado, no mbito desta dissertao. Numa primeira parte ser descrito o domnio de aplicao, bem como outras particularidades afins. Nas seces ou partes posteriores, sero apresentados os principais mecanismos aplicacionais, desenvolvidos e empregues.

4.1 O Domnio de Aplicao


Num tempo em que existe tanta informao disponvel, nas mais variadas reas, as possibilidades de escolha da aplicao de um trabalho deste gnero so elevadas. Como j foi referido anteriormente, um grande numero de problemas e necessidades tm sido colmatados com solues das reas do Processamento de Linguagem Natural (PLN) e Inteligncia Artificial (IA), basta observar aquilo que tem sido apresentado nas conferncias TREC e MUC1. interessante constatar que as primeiras aplicaes do trabalho realizado por estas duas reas do conhecimento humano, foram a bolsa e toda a informao que rbita em torno desta, e informao relacionada com administrao e gesto de empresas [Constantino 1997]. J desde os anos 70 que uma das primeiras aplicaes de ferramentas desenvolvidas pela IA so os mercados financeiros. Em muitos casos se no o mercado de capitais que est em causa, outro mercado de outro negcio qualquer e que tem um factor comum que o de envolver valores financeiros - dinheiro. A titulo exemplificativo: actualmente os operadores dos mercados bolsistas tm ao seu dispor um elevado volume de informao, sendo esta vital para a tomada de decises. Na maioria dos casos essas decises tm de ser tomadas em tempo real, dispondo os operadores de muito pouco tempo para digerir toda a informao acedida. Uma grande parte desta informao apresentada sob uma forma textual ou documental, como o caso de pequenos anncios ou notcias, o que complica e torna ainda mais morosa a tarefa dos operadores financeiros, dada a natureza no estruturada, dessa informao. Tendo isto em mente, todos os processos ou ferramentas capazes de sintetizar texto ou extrair elementos considerados relevantes deste, revestem-se de uma importncia preponderante e de grande utilidade prtica.
1 Conferncias na rea de Information Retrieval e Information Extracion (ver subseco 2.1.1)

4 - O Projecto de Extraco de Informao da Web

52

De entre os muitos domnios possveis, resolveu-se optar por um que no diz respeito aos mercados financeiros mas tambm um mercado Mercado Imobilirio Portugus, mais especificamente: compra e venda de habitaes. So bem conhecidos de todos ns os anncios, publicados nos jornais dirios ou semanrios, relativos venda e compra de alguma coisa ou oferta e procura de emprego. Com o advento da Internet e sua vulgarizao em massa nasceu a possibilidade deste tipo de anncios comear a ser realizado em espaos pblicos on-line. isto que sucede actualmente em muitos dos Grupos de Notcias (News Groups), da Usenet, nacionais e internacionais. Relativamente a mercados nacionais apresentam-se em baixo alguns exemplos:
pt.mercado.emprego pt.mercado.veiculos pt.mercado.informatica pt.mercado.imobiliario

Nestes espaos, qualquer utilizador da Internet, poder consultar e publicar, de uma forma livre e fcil, um anncio, utilizando um software cliente de correio electrnico. O numero de utilizadores destes servios, tem vindo a aumentar, at porque so servios gratuitos, se no contarmos com os custos de ligao Internet. Portanto o numero de anncios tm vindo a aumentar consideravelmente, nos ltimos anos, sendo j desejveis ferramentas de tratamento automtico, quer para classificar e categorizar anncios, quer para realizar extraces importantes de elementos dos mesmos. O trabalho desenvolvido foi dirigido neste sentido e orientado para os anncios do tipo: pt.mercado.imobiliario. Apesar de ter sido escolhido este tipo de anncios como alvo, tentou-se manter o trabalho o mais genrico possvel, de modo a que uma migrao deste para outro domnio possa ser realizada com facilidade. Como ser verificado nas seces seguintes, o trabalho no est preso a particularidades do domnio de aplicao em causa, o que o torna facilmente transportvel e adaptvel para outros universos. De entre as vrias maneiras que existem para aceder a documentos da USENET, uma delas consiste em utilizar o WWW, atravs, por exemplo, do motor de pesquisa Google (http://www.google.com). Na figura 4.1 apresentado um anncio do nosso domnio, obtido desta forma. Como se pode ver, temos uma pgina em HTML, onde o essencial um

4 - O Projecto de Extraco de Informao da Web

53

pequeno texto, em Portugus, informando acerca da disposio de algum em vender um apartamento do tipo T2, em Rio de Mouro, pelo valor de 128 000 euros, para alm de outras caractersticas descritas.

Figura 4.1 - Exemplo de um anncio relativo venda dum apartamento. Teoricamente, os anncios publicados neste grupo de notcias seriam exclusivamente de assuntos relacionados com habitaes, todavia no so poucos os anncios publicados, por engano ou outra razo qualquer, cujo tema completamente alheio ao do mercado imobilirio, podendo surgir anncios dos temas mais diversos que se possa imaginar. Mesmo em anncios relacionados com o mercado imobilirio, existem assuntos que no dizem respeito compra e venda de habitaes, todavia faz sentido que estejam publicados ali.

4 - O Projecto de Extraco de Informao da Web

54

Podem, por exemplo, surgir anncios publicitrios, aluguer e reparao de bens imobilirios, os anncios podero ser relativos a escritrios, armazns, terrenos, etc. Existe, portanto, a necessidade de algo que classifique um anuncio, tendo em conta o seu contedo. Torna-se importante saber quais os anncios que dizem respeito compra e venda de habitaes e no a outro assunto qualquer, mesmo que relacionado com estes e muito prximo, como o caso do aluguer de habitaes. Preocupaes deste gnero enquadram-se no mbito do Information Retrieval e uma parte do trabalho desenvolvido e exposto nesta dissertao entra nesta rea. Todavia o principal esforo deste trabalho e alvo preferencial, centra-se na rea da extraco de elementos textuais, a partir de documentos - Information Extraction. Nesta rea a principal preocupao saber extrair elementos textuais, que podero ser palavras ou pequenas expresses, consideradas importantes, a partir desses documentos. Os elementos relevantes extrados sero posteriormente armazenados sob uma forma estruturada, permitindo assim um rpido e eficiente acesso informao. Constata-se assim a existncia de duas componentes bem delimitadas no trabalho realizado, complementares e dotadas de uma certa sequncia cronolgica e tambm funcional. Numa primeira fase pe-se o problema da escolha de documentos relevantes de entre uma vasta coleco disponvel e numa segunda fase o problema centra-se em extrair os elementos relevantes do texto dos documentos previamente escolhidos. Posto isto torna-se evidente e natural apresentar estas duas fases em separado. Assim as duas seces que se seguem iro concretizar a exposio segundo esta ordem. Numa primeira fase o sistema classifica uma coleco de anncios do domnio em duas classes: venda, no venda. Isto se o anuncio diz respeito venda de uma habitao ou no. Este primeiro trabalho importante para que o sistema possa seleccionar de uma forma automtica os anncios que lhe interessam, a partir da vasta coleco disponibilizada, para depois realizar a extraco dos elementos relevantes nestes anncios (Venda de habitaes). A ttulo ilustrativo a figura 4.2 lista uma coleco de anncios do grupo pt.mercado.imobiliario da Usenet.

4 - O Projecto de Extraco de Informao da Web

55

Figura 4.2 - Lista de anncios de pt.mercado.imobiliario Como se pode verificar na figura anterior, nem todos os anncios dizem respeito venda de habitaes, necessrio realizar uma triagem sobre a coleco disponvel. Aps esta triagem temos uma coleco de anncios pronta a ser processada.

4 - O Projecto de Extraco de Informao da Web

56

4.2 Classificao de Anncios


A primeira parte do trabalho realizado enquadra-se na problemtica da obteno de informao (Information Retrieval). Este processo de obteno de informao traduz-se num trabalho de classificao. Mediante um elemento de informao necessrio proceder sua correcta classificao atribuir-lhe o rtulo certo. A forma mais simples de classificao que podemos ter a classificao binria, mas que para muitos domnios e problemas o suficiente, por exemplo: distinguir o que sim e o que no, ou entre certo e errado, verdadeiro e falso, interessante e no interessante, etc. O problema aqui abordado, consiste num problema de classificao binria, uma vez que o que se pretende classificar um anncio de forma a que ele seja seleccionvel ou no. Aqui um anncio seleccionvel se for relativo venda de uma habitao, podendo esta ser um apartamento ou uma moradia. Consideramos ento dois rtulos possveis para as nossas classes e que consistem em venda e no venda, significando que o anncio diz respeito venda duma habitao ou no, respectivamente. Assim, o nosso problema inicial consiste na existncia de documentos que nos interessam (venda) entre outros que no nos interessam. O objectivo implementar um sistema capaz escolher os documentos interessantes entre os existentes separar o trigo do joio. Este um tpico problema de Information Retrieval e j existe trabalho realizado, nesta rea, como referido e descrito no capitulo 2. Desde o incio da dcada de 1990 que a discusso tem crescido e evoludo, em torno de problemas desta natureza. Existe actualmente, j um considervel trabalho realizado e tcnicas desenvolvidas, nesta rea. Pretendemos aqui explorar algumas dessas tcnicas, experimentar alguns procedimentos recentes que melhoram o desempenho dos processos de classificao de documentos. Portanto, o que apresentado nesta seco, consiste num trabalho de pr-processamento relativamente ao nosso objectivo principal, permitindo a implementao e explorao de algumas tcnicas de Information Retrieval, ao mesmo tempo que realizado um trabalho til para a prxima fase do nosso trabalho Extraco de Informao a fase mais importante deste.

4 - O Projecto de Extraco de Informao da Web

57

C : Anuncios A

{venda, no venda} C(A)

Figura 4.3 - Funo de classificao de documentos. A figura anterior esquematiza o que se pretende implementar, nesta fase: um sistema que seleccione anncios da coleco dos apresentados no grupo de notcias
pt.mercado.imobiliario, e que na nossa situao especifica consistem em anncios

relativos venda de habitaes. Tanto nesta primeira fase como na fase seguinte so utilizadas tcnicas de Aprendizagem Automtica1 (Machine Learning), mais concretamente, Aprendizagem Supervisionada. Tendo isto presente, queremos que o sistema tenha a capacidade de ser treinado para realizar determinada tarefa, que nesta primeira fase consiste em distinguir os anncios de venda e no venda, de habitaes. Cada anncio constitui um exemplo susceptvel de ser classificado como positivo (venda) ou negativo (no venda). Na fase de treino utilizada uma coleco de exemplos previamente classificados por um agente exterior ao sistema, normalmente um ser humano. Esta coleco constituda por exemplos de ambas as classes: positivos e negativos, numa proporo equilibrada ou balanceada, isto aproximadamente tantos positivos quanto negativos. A coleco de exemplos previamente classificados depois submetida ao sistema que ir aprender a classificar este tipo de exemplos. De outra forma, um exemplo ou instncia de treino consiste num par (A, C(A)), em que A um anncio e C(A) a correcta classificao desse anuncio. O nosso objectivo induzir a funo C.

Aqui so exploradas vrias tcnicas, nomeadamente: Aprendizagem Baseada em Instncias2 e Naive Bayes3. ainda experimentada uma tcnica de optimizao do desempenho e denominada de Features Subset Selection, na literatura [Mladenic 1998]. Os resultados de

1 Consultar seco 3.2 2 Seco 3.3 3 Seco 3.4

4 - O Projecto de Extraco de Informao da Web

58

cada uma das tcnicas exploradas so apresentados no captulo 5, com as devidas comparaes e comentrios. Em suma, iremos realizar um trabalho que entra nas nas reas do Information Retrieval, nesta seco, e na rea do Information Extraction, na prxima. Adiantamos aqui que algumas das ideias e tcnicas empregues nesta seco, sero convenientemente adaptadas e utilizadas na prxima seco (4.3), como o caso de Features Subset Selection.

4.2.1

Aprendizagem Baseada em Instncias (k-vizinhos)

Uma primeira abordagem soluo do problema referido anteriormente, seria a criao de um sistema dedicado escolha dos anncios pretendidos, com base num conjunto de critrios fixa e previamente estabelecidos. Esses critrios seriam definidos por algum que tivesse um razovel conhecimento do domnio a que os anncios dizem respeito. Por exemplo, para o nosso domnio, os critrios poderiam ter em considerao certas palavras ou pequenas expresses textuais, como as seguintes: sala, cozinha, garagem, preo, vende-se apartamento, ptimas vistas, etc. Esse sistema poderia ento classificar um anncio, com base na ocorrncia destas expresses, por exemplo as frequncias das ocorrncias ou outra medida mais elaborada, digamos um certa funo real F. Se
F v |anuncio

fosse

suficientemente prximo de um certo limiar pr-estabelecido ento o anuncio seria classificado de venda, seno seria no venda. Aqui v um vector de inteiros, contendo, as frequncias de cada palavra (ou expresso) no anuncio. Repare-se que neste processo no seria utilizada qualquer forma de induo, qualquer espcie de aprendizagem. Seria um sistema esttico e com uma definio rgida, de tal forma que um pequeno ajuste no domnio poderia levar necessidade de o reprogramar. Na aprendizagem baseada em instncias, um dos algoritmos amplamente utilizados o chamado algoritmo dos K-Vizinhos Mais Prximos (k-Nearest Neighbor) ou s kVizinhos. A estratgia seguida por este algoritmo tem algumas semelhanas com a abordagem descrita no pargrafo anterior e este foi um algoritmo experimentado com a finalidade de satisfazer o objectivo aqui apresentado. Em traos muito gerais, o algoritmo dos k-Vizinhos considera cada instncia como um vector v de n nmeros reais, contendo os

4 - O Projecto de Extraco de Informao da Web

59

valores dos n atributos, para essa instncia. tambm considerada a classe dessa instncia, dada por uma funo f de R
n

no conjunto de todas as classes, f(v) {venda, no venda},

no nosso caso. Portanto uma instncia interpretada como um ponto no espao euclidiano de dimenso n. Assim considerada tambm a distncia euclidiana entre dois pontos, como uma medida de distncia entre instncias. Sejam v e w dois vectores de duas instncias, tem-se:

d v , w =

v i w i 2
i =1

A classificao de uma nova instncia feita tendo em conta as k instncias mais prximas a essa instncia, medindo-se essa proximidade com a distncia euclidiana referida. Para classes discretas ou simblicas, como o nosso caso, considera-se normalmente a classe mais frequente entre os k-vizinhos. A experincia realizada neste contexto, considerou vectores de frequncias de certas palavras, nos documentos (anncios) e a respectiva classe, como instncias de treino. Essas palavras constituem os atributos que so determinados e fixados antes da fase de treino. Assim podemos considerar, como exemplo, a seguinte sequncia de 6 atributos, para a formao de instncias de treino no nosso domnio: <sala, cozinha, garagem, preo, vende-se apartamento, ptimas vistas>. Para estes atributos, mostram-se a seguir, exemplos de instncias de treino:
(0,0,0,0,0,0) (0,0,0,0,0,0) (0,0,0,1,0,0) (1,1,1,1,0,0) (0,1,0,3,0,0) (0,0,0,1,0,0) (0,0,0,0,0,1) (0,0,0,0,2,0) no venda no venda no venda venda venda no venda no venda venda

4 - O Projecto de Extraco de Informao da Web

60

Ainda para este exemplo simplista (poucos atributos considerados e instncias) e atendendo aos k-vizinhos, com k=3, uma nova instncia da forma (1,1,1,1,0,0) seria classificada de venda e a instncia (1,0,0,0,0,0) de no venda. Nesta abordagem continuamos com o problema dos atributos estarem pr-determinados, semelhana da primeira abordagem descrita no inicio da presente seco. Todavia com este mtodo alcanado um melhoramento, em relao ao anterior, que consiste no facto do sistema no estar dependente de nenhum limiar (valor ou valores) a partir do qual se realiza uma determinada aco (classificao). Por exemplo, aqui no so definidas previamente regras, como a seguinte: se ocorrerem as palavras: vendo, t3 e preo, pelo menos uma vez cada uma, ento o anncio classificado como venda Neste exemplo o limiar est implcito na expresso: pelo menos uma vez cada uma. Na abordagem dos k-vizinhos, estes limiares esto, de certa forma, escondidos e dependentes dos exemplos de treino. Estes exemplos sero computados no momento da classificao do novo anncio, no existindo portanto a necessidade de os pr-determinar. A necessidade de definir previamente os atributos constitui uma dificuldade real, no s no que diz respeito operabilidade do sistema e consequente problemtica de migrar o mesmo para novos domnios, mas tambm quanto sua eficcia ou desempenho. sabido que uma m escolha de atributos ou at a escolha de demasiados atributos, no determinantes para a classificao, compromete seriamente o desempenho do sistema [Mitchell, 1997]. A prxima subseco apresenta uma outra abordagem, na qual o problema da necessidade de definio prvia dos atributos ultrapassada e que acabar por se mostrar mais adequada satisfao da soluo do nosso problema, aqui apresentado. No capitulo 5 mostrada uma comparao, em termos de desempenho, entre estas duas abordagens, onde se conclu que o mtodo apresentado a seguir produz uma soluo prefervel em relao ao actual.

4 - O Projecto de Extraco de Informao da Web

61

4.2.2

Aprendizagem Bayesiana (Naive Bayes)

O algoritmo Naive Bayes enquadra-se na famlia de algoritmos de Aprendizagem Bayesiana (Bayesian Learning), tendo estes por base o teorema de Bayes que relaciona probabilidades condicionadas. Estes algoritmos so muito adequados para domnios cujos dados possuam um comportamento governado por probabilidades. No capitulo 3 feita uma incurso na Aprendizagem Bayesiana e l esto detalhados alguns princpios bsicos, desta rea da aprendizagem automtica. A dificuldade prtica pr-existente aplicao de algoritmos de aprendizagem bayesiana consiste na necessidade de calcular um conjunto considervel de probabilidades ( O m k ), relativas aos dados com os quais estamos a trabalhar, o que constitui uma barreira intransponvel em muitas situaes prticas, quer pela falta dessa informao, quer pela intratabilidade prtica de todos esses clculos. O algoritmo Naive Bayes uma simplificao feita para contornar a dificuldade de calcular o enorme nmero de probabilidades, admitindo como hiptese a independncia de certos eventos probabilsticos, mesmo que seja de forma forada. Segundo vrios autores ([Mitchell 1997], entre outros) este algoritmo encontra-se entre os mais capazes e melhores algoritmos de induo de classificadores para documentos de texto. Esta precisamente a nossa necessidade concreta, apresentada nesta seco.
P v P ai v , sendo V Um classificador Naive Bayes v NB , tem a forma: v NB = argmax vV
i

o conjunto das classes consideradas e a i o atributo i da instncia em causa. O valor dado por
P v j designa a probabilidade da classe v j e P a i v j a probabilidade do atributo a i

condicionado por v j . Como se pode constatar pela frmula anterior, a classificao processada escolhendo a classe cujo o produto daquelas probabilidades atinge o valor mximo, temos um classificador mximo posteriori.

No nosso caso temos V = {venda, no venda} e supondo n atributos: a1 ... an , estes so constitudos por todas as palavras dos exemplos de treino (anncios da Usenet). Assim ao conjunto { a1 ... a n } denomina-se de saco de palavras (bag of words) [Mladenic 1998] e um documento interpretado como um vector de frequncias de palavras nesse documento vector de n-grams. Portanto, os nossas instncias continuam sendo vectores ou pontos num

4 - O Projecto de Extraco de Informao da Web

62

espao euclidiano n-dimensional, semelhana do abordado na seco anterior, com a diferena de aqui n ser um valor significativamente muito superior ao ali considerado. Enquanto que no algoritmo dos k-vizinhos o valor de n era igual ao nmero de atributos prestabelecidos, neste algoritmo n o nmero de todas as palavras distintas que ocorrem nos exemplos de treino. As probabilidades referidas anteriormente sero estimadas com base nos dados de treino e sendo assim P v j o proporo de exemplos de treino da classe v j e P a i v j poder ser estimada calculando a proporo da ocorrncia da palavra a i nos exemplos da classe v j . Todavia isto levanta um problema prtico, que consiste na ocorrncia de novas palavras nos exemplos de teste, que no ocorreram nos documentos de treino. Neste caso a probabilidade referida seria estimada em zero o que anularia o clculo de v NB , para qualquer classe considerada ( v j ) o que conduziria incapacidade de classificao do exemplo dado. Para contornar este problema, podemos utilizar o estimador da probabilidade de Laplace ou mestimador [Mladenic 1998], dado pela seguinte expresso:
Freq W , C S 1

P W C =

Freq W l , C SVocabulario
l

Portanto, P W C significa a probabilidade condicional da ocorrncia da palavra W, na classe C, Freq(W,C) a frequncia da palavra W na classe C e Vocabulario designa o tamanho do saco de palavras, referido anteriormente. Repare-se que neste estimador se Freq(W,C) = 0, o que significa que W uma palavra nunca antes vista (exemplos de treino), ento P W C atingir o seu mnimo, mas que diferente de zero e portanto no anular o produto das probabilidades, consideradas para para a escolha de v NB . De seguida, no algoritmo 4.1, apresenta-se o presente algoritmo, descrito numa linguagem de pseudo-cdigo. Este algoritmo foi implementado e no captulo 5 (Avaliao de Resultados) so apresentados os resultados obtidos e tecidas as devidas observaes, comentrios e comparaes com outros algoritmos implementados, sobretudo a nvel do desempenho.

4 - O Projecto de Extraco de Informao da Web

63

IndutorNaiveBayesText(Anncios, V: classes possveis)

{ Vocabulrio <- Conjunto de palavras distintas dos Anncios


para cada v j V fazer {

docs j <- subconjunto de Anncios, cujo valor v j P v j <-

docs j Anncios
j

Texto <- Concatenao { docs j 6 n <- nmero de palavras distintas em Texto


para cada w k Vocabulrio fazer {

n k <- frequncia de w k em Texto

P w k v j <} }

nk S 1 n S Vocabulrio

} Algoritmo 4.1 - Algoritmo de Naive Bayes para induzir um classificador de texto


[Mitchell 1997]

A prxima subseco consiste num esforo, no sentido de melhorar o desempenho do algoritmo Naive Bayes para a classificao de documentos de texto.

4.2.3

Aprendizagem Bayesiana (com escolha de atributos)

Na subseco anterior constatamos que o algoritmo Naive Bayes faz uso de um elevado nmero de atributos todas as palavras distintas dos exemplos de treino. amplamente conhecido que os atributos considerados assumem uma grande importncia em qualquer processo de aprendizagem automtica. A utilizao de atributos desnecessrios pode comprometer a boa realizao deste processo [Mladenic & Grobel. 1999]. Por outro lado um elevado nmero de atributos torna o processamento mais lento, como evidente. Neste contexto, ir ser apresentada a aplicao de uma outra verso do algoritmo Naive Bayes, que realiza um trabalho de pr-processamento importante, e que consiste na escolha

4 - O Projecto de Extraco de Informao da Web

64

automtica de um subconjunto de atributos significativos, dentro do conjunto de todos os atributos possveis. Como foi referido anteriormente, os atributos so constitudos pelas diferentes palavras que ocorreram nos exemplos de treino. Aps a reunio de todo este vocabulrio, gerada uma representao vectorial para cada documento (anncio) existente na coleco de documentos utilizados no treino. Designe-se uma coleco desses documentos como sendo o seguinte conjunto: D =
{ D1, D 2, ... , D m } , ento para cada documento D i gerada uma sua

representao vectorial v i tendo em conta as palavras que ocorrem em D . Assim supondo que o vocabulrio reunido em D era constitudo pelo conjunto W = { w1, w 2, ... , w n } ento a componente j do vector v i , este relativo ao documento D i , seria igual frequncia de w j em D i , temos aqui o que designado por representao dos documentos por vectores TF (Term Frequency) [Salton & Buckley 1987], expressando a frequncia de w j em D i por
TF w j , D i , isto v i j = TF w j , D i . Uma outra representao muito similar a esta e

largamente utilizada a denominada TFIDF (Term Frequency Inverse Document Frequency) [Salton & Buckley 1987]. Neste caso
v i j = TF w j , D i IDF w j ,

sendo

IDF w = log

D , D = |D | DF w

e DF w o nmero de documentos para os quais w

ocorre pelo menos uma vez. Pode suceder que n (tamanho do vocabulrio) seja da ordem das dezenas ou mesmo centenas de milhar e regra geral muitos dos atributos considerados em W so completamente

irrelevantes para a classificao dum documento. Assim interessa escolher um subconjunto de W , para gerar a representao vectorial dos documentos, o que tem implicaes na diminuio da dimenso dos vectores, aumentando assim a eficincia (menos atributos a considerar) do processo de classificao e aumentando tambm o desempenho geral do sistema (mais acertos), como alguns trabalhos o tm mostrado [Mladenic & Grobel. 1999], bem como ns tambm o pudemos constatar, para o nosso domnio, encontrando-se esse resultado expresso na seco 5.1.

4 - O Projecto de Extraco de Informao da Web

65

A escolha de um subconjunto de atributos a partir de W

processada com a ajuda e

orientao duma funo de clculo do valor dum atributo. Existem vrias medidas conhecidas para este fim, em baixo so mostradas trs que foram experimentadas neste trabalho e cuja comparao referida na seco 5.1.
P C i w P C i P w P C i w P C i

InfGain w = P w P C i w log
i

S P w P C i w log
i

MutualInfoTxt w = P C i log
i

P w C i

OddsRatio w = log

P w C + [ 1 P w C - ] [ 1 P w C + ] P w C -

Mais algumas destas funes ou suas variantes, esto presentes em [Mladenic & Grobel. 1999]. Nas trs formulas anteriores P(w) e
P w

designam respectivamente as

probabilidades de w ocorrer ou no, P C i w a probabilidade da classe C i sabendo que w ocorre, semelhantemente P w C i a probabilidade de ocorrer a palavra w na classe C i e
P C i referente probabilidade da classe C i . Na terceira funo C + e C - designam

duas classes, uma denominada positiva e outra negativa, respectivamente (quando a classificao binria). Fixando uma medida de avaliao dum atributo, das apresentadas anteriormente, construda uma ordenao (ranking) de todos atributos de W . Com base nesta ordenao escolhido o subconjunto dos r melhores atributos ( 0 T r V n ) que iro depois servir para gerar as

instncias representativas dos documentos. O classificador naive bayes v NB = argmax P v P ai v utilizado na subseco anterior
vV i

foi aqui substitudo por outro, mais adequado ao tratamento de texto, sugerido por [McCallum & Nigam 1998] e utilizado em [Mladenic & Grobel. 1999], dado por v NB = argmax P c doc ,
cC

sendo:

4 - O Projecto de Extraco de Informao da Web

66

P c P c doc =

w j doc

P w j c

TF w j , doc

P ci
i w l doc

P w l ci

TF w l , doc

em que doc consiste no documento a classificar, P(c) designa a probabilidade da classe c C , P c doc a probabilidade de termos a classe c, para o documento em causa e de forma geral P w c a probabilidade da palavra w, na classe c.

4 - O Projecto de Extraco de Informao da Web

67

4.3 Extraco de Elementos - Preliminares


Esta seco contempla a segunda fase do trabalho realizado. Esta designada de segunda por razes que se prendem com a ordem de trabalho, no significando que esta seja a menos importante ou naquela onde menos trabalho foi realizado, pelo contrrio, esta a rea principal desta dissertao, onde mais esforo foi despendido. Aqui feita uma incurso na rea da extraco de informao - Information Extraction. Como j foi referido anteriormente, o problema prende-se com a existncia de considerveis volumes de informao, apresentada sob a forma de documentos de texto, dos quais necessrio obter um conjunto de informaes consideradas importantes para um determinado domnio e fim. O problema no est na quantidade de informao documental apresentada, mas na forma como esta informao se apresenta sem qualquer tipo de estrutura explicitamente representada o que normalmente se denomina de informao no estruturada. Um documento de texto, no mais que uma sequncia finita de frases. Cada frase ou conjuntos de frases vo apresentando uma sequncia de informaes ou ideias. Esta sequncia determinada e dirigida pelo autor durante o processo de criao de um documento. Dois autores podem escrever dois textos, com exactamente os mesmos elementos informativos, mas apresentar esses elementos numa ordem diferente e revesti-los de um fundo literrio que depende subjectivamente de cada um dos autores. Afinal nisto que reside a gnese da riqueza literria criada pelo ser humano. neste sentido tambm que a informao textual referida aqui como sendo no estruturada e portanto a dificuldade est quando necessrio processar informao deste gnero, por exemplo encontrar frases que informem determinados eventos ou aspectos da realidade. Facilmente se reconhece a enorme dificuldade e esforo humano que necessrio despender, para a realizao de tarefas deste gnero e consequentemente as dificuldades que se deparam se quisermos que esta informao seja pesquisada por processos automticos. Em contrapartida a informao estruturada, contm uma estrutura explicita que lhe est subjacente. Como exemplo de informao neste estado, temos a informao armazenada

4 - O Projecto de Extraco de Informao da Web

68

numa base de dados, num quadro de um documento ou no formato XML. Tomando o exemplo das bases de dados, o que temos so tabelas que, regra geral, possuem relaes entre si e traduzem um modelo semntico definido previamente Modelo EntidadeRelacionamento. Uma tabela constituda por um conjunto de campos e define uma relao entre esses campos, modelando certos aspectos do mundo real. Um campo um elemento atmico numa base de dados, pertencente a uma tabela, e designa um elemento ou atributo do mundo real. Na prxima figura apresenta-se um exemplo de uma tabela que modela a entidade cliente, num determinado negcio.

Cliente Numero Nome Morada Contacto

Figura 4.4 - Exemplo


duma tabela.

A tabela anterior constituda por quatro campos, sendo os trs ltimos atributos relativos a um determinado cliente. neste sentido que se designa aqui informao estruturada, informao organizada segundo certa estrutura, previamente determinada. Temos portanto uma considervel coleco de documentos, dos quais pretendemos extrair elementos para proceder ao preenchimento de uma tabela do gnero da apresentada na figura anterior. O desafio que posto aqui consiste na gerao de informao estruturada a partir de fontes documentais no estruturadas. Como fazer isto? Que abordagens possveis existem? Sero apresentadas trs abordagens possveis, comeando pela mais simples e consequentemente mais bvia, isto , a primeira abordagem susceptvel de surgir na mente de quem tenta atacar um problema desta natureza.

4.3.1

Extraco Utilizando Regras Pr-definidas

Temos portanto um problema que se apresenta e que pode ser sumariado como se segue:

4 - O Projecto de Extraco de Informao da Web

69

Existe uma numerosa coleco de documentos relativos a um determinado assunto fixo, dos quais se quer obter um conjunto de elementos relevantes, prestabelecidos Para j poder ser questionado qual o significado de elemento relevante, num documento. Todavia a prpria expresso referida elucida o conceito imanente a esta, pois num texto um elemento relevante algo que depende da perspectiva do individuo ou grupo de indivduos que o observam, isto , algo estritamente subjectivo e relacionado com um determinado objectivo que se tenta alcanar. Para uns, elemento relevante, poder ser informao relacionada com a compra de aces, por exemplo, enquanto que para outros o relevante poder consistir em informao relacionada com a meteorologia. Sendo assim, os elementos relevantes j esto definidos priori e, naturalmente, dependem do domnio no qual se est a trabalhar e do ponto de vista de quem os define. A ttulo exemplificativo, suponhamos que estvamos no domnio da compra e venda de um determinado bem: computador, viatura, habitao. Tnhamos portanto uma coleco considervel de pequenos anncios desse bem, tal como o mostrado na figura seguinte:
From: INVESCACEM, LDA (invescacem@mail.telepac.pt) Subject: vendo apartamento t3 Date: 2002-09-07 12:24:09 PST
na Cidade de Agualva Cacm, na freguesia do Cacm, concelho de Sintra, vendo apartamento t3, junto da estao da CP, com quartos 15,19 m2; 15,66 m2; 18,56 m2 e sala 31,10 m2, ainda est em estuque nunca foi pintada, espectacular; belissima vista desafogada, muito soalheira. OPORTUNIDADE PREO 128.440,00? mais informaes tel 219136000 tlm 917621828

Figura 4.5 - Anncio de venda de apartamento, com


elementos relevantes assinalados.

Ento um elemento relevante poder ser o preo desse mesmo bem. Isto significa que estaramos interessados em extrair todas as informaes relativas ao preo dos produtos, nos vrios documentos. A figura anterior exemplifica um anncio tpico de venda de habitao. O

4 - O Projecto de Extraco de Informao da Web

70

texto destacado refere trs elementos que podamos considerar relevantes, neste caso: preo, tipologia e localizao. Mas ento como armazenar os elementos extrados? Evidentemente que o objectivo final ficar com essa informao armazenada segundo uma organizao estruturada, tal como foi referido. Para tal ser utilizado algo semelhante a uma tabela de uma base de dados e que habitual designar por Template [Hobbs & Israel 1994]. Neste trabalho esta estrutura ser designada de tabela. Assim e relativo a anncios do gnero da figura 4.5, uma tabela que contemplasse os trs elementos relevantes referidos, poderia ser a mostrada na figura seguinte:

Tipo Preo Local

Figura 4.6 Neste caso teramos uma tabela constituda por trs componentes. Estes so normalmente designados por slots [Hobbs & Israel 1994] ou campos. Aqui sero denominados de campos, semelhana de uma tabela numa base de dados. Em suma o nosso objectivo est esquematizado na figura 4.7, que se segue:

Figura 4.7 - Objectivo: extraco de elementos relevantes, para insero em estruturas bem
definindas.

Coloca-se ento a seguinte questo: Como realizar esta tarefa? Tenhamos presente que este trabalho ainda feito em larga escala sem auxlio de qualquer sistema automtico, na maioria das organizaes. Ali existem equipas cujo trabalho consiste em ler documentos de certo tipo, por exemplo como o da figura 4.5, e obter as informaes relevantes inserindo

4 - O Projecto de Extraco de Informao da Web

71

posteriormente esses elementos em estruturas de informao, bem definidas e protocolares, como o caso de uma base de dados ou sob uma estrutura XML. At ao momento o ser humano ainda detm o melhor nvel de desempenho, na realizao desta tarefa. Os sistemas automticos experimentados, at agora, atingem um nvel de desempenho que ronda os 60% de um ser humano, atingindo os 80% no melhor dos casos [Appelt & Israel 1999]. Ento qual o problema? Porqu no deixar os humanos realizar este tipo de tarefas, pois se o realizam to bem? Como todos reconhecemos, para realizar um trabalho do gnero do descrito exigido um grande esforo, realizando uma tarefa bastante trabalhosa, repetitiva e um pouco aborrecida. Por outro lado, embora as pessoas consigam acertar mais, repare-se nas percentagens anteriores, os sistemas automticos conseguem processar um maior numero de informao por unidade de tempo. Isto deve-se sobretudo rapidez no processamento da informao, por parte dos computadores, que inclusive tem vindo sempre a aumentar nos ltimos anos. Portanto, apesar da percentagem de desempenho de uma mquina ser inferior de um ser humano, o trabalho daquela desejvel em muitos domnios pois como o numero de documentos processados muito superior, o volume de informao vlida extrada tambm superior, por unidade de tempo. Recolocando de outra forma a questo anterior, tem-se: Que abordagem podemos conceber, para a soluo do problema proposto? A primeira abordagem, que poder ocorrer consiste em definir um conjunto de regras apropriado para a extraco de um determinado elemento relevante. Este conjunto ser definido por um utilizador que conhece minimamente o domnio e ter de ser definido um conjunto de regras, por cada elemento relevante considerado. Portanto estamos a visualizar um sistema, no qual o utilizador introduz conjuntos de regras de extraco, obedecendo estas a certas convenes. Este sistema processar o conjunto de documentos e tentar aplicar as regras sequncia do texto, para assim encontrar o que pretende. A figura seguinte esquematiza esta descrio.

4 - O Projecto de Extraco de Informao da Web

72

Figura 4.8 - O utilizador fornece um conjunto de regras de extraco ao sistema. Uma questo importante aqui : qual a forma das regras a fornecer ao sistema? Com base em qu que estas so formuladas? Sendo um documento textual constitudo por um conjunto de frases que por sua vez so constitudas por uma sequncia de palavras, de esperar que uma regra relativa extraco de um elemento relevante, envolva palavras do texto, pelo menos aquelas que detm alguma relao com as ocorrncias do elemento relevante no texto. Passaremos a apresentar um exemplo para melhor ilustrar o que est sendo exposto. Suponhamos que o nosso domnio consiste em anncios de compra e venda, mais concretamente, compra e venda de habitaes. Vamos supor tambm, para simplificar, que o nico elemento relevante que temos definido, diz respeito ao preo da habitao. Designe-se esse elemento relevante por preo, isto , temos uma nica tabela (template), com um nico campo (slot), denominado de preo1. A ttulo exemplificativo apresentam-se trs regras relativas extraco do elemento preo, que sero explicadas de seguida.
Regra 1: preo(texto, i) se texto[i-1]=preo. Regra 2: preo(texto, i) se texto[i-2]= quantia e texto[i-1]=de Regra 3: preo(texto, i) se texto[i-1]= valor e texto[i+1]=euros

Quadro 4.1 - Regras relativas extraco do elemento preo No quadro 4.1, texto o vector da sequncia de palavras que surgem num documento e texto[i], designa a i-sima palavra, nessa sequncia. Na notao empregue, preo(texto, i), no cabealho duma regra, indica que o objectivo verificar se a i-sima palavra do texto uma instncia do elemento preo. Para cada regra, esta verificao est
1 Os elementos relevantes considerados sero designados em itlico.

4 - O Projecto de Extraco de Informao da Web

73

dependente da satisfao de condies, para a sua execuo, mais concretamente poderemos ter conjuno e disjuno de condies simples. Nas regras apresentadas como exemplo, uma condio simples verificada s se a i-sima palavra do documento igual a uma determinada constante pertencente ao vocabulrio da linguagem, como o caso da palavra preo ou valor. Reforando o que foi dito, estas constantes so especificadas pelo utilizador, bem como toda a regra. Repare-se que a sintaxe das regras do quadro 4.1 utiliza elementos da linguagem natural (como o se, e, ou) e obedecem a um formalismo muito conhecido - Clausulas de Horn [Bratko 2001]. As regras apresentadas em 4.1, podem ser utilizadas no contexto de uma funo que depende do texto dum documento e dum dado elemento relevante. primeira satisfao de uma das regras, seria devolvido o ndice da palavra ou do inicio e fim da expresso que constitui o elemento relevante. Em baixo apresentado o esqueleto desta funo, em pseudo cdigo:
ndices_de_conceito(texto, conceitox) { para cada i j se conceito(conceitox, texto, i, j) ndice_de_conceito <- (i:j)1

ndice_de_conceito }

<- NA2

A funo procura no conjunto das regras definidas, sucedendo primeira regra com sucesso e falhando caso nenhuma sucedesse. Esta funo podia ser utilizada para o preenchimento dos campos das tabelas definidas, como mostrado no seguinte exemplo (em pseudo-cdigo):
(a:b) <- ndices_de_conceito(texto, preo) se (a:b) NA ento TABELA.preo <- texto[a:b]

Tendo presente o quadro 4.1, embora tenhamos somente trs regras, facilmente se reconhece ali j alguma capacidade para extrair preos dos anncios referidos. Todavia observamos que este pequeno conjunto se mostra ainda muito insuficiente. Aplicando aquele quadro de regras a um conjunto de 100 documentos, relativos a anncios de
1 2 Designa o intervalo desde o ndice i at ao ndice j NA No Aplicvel.

4 - O Projecto de Extraco de Informao da Web

74

compra e venda de habitao, obteve-se um desempenho bastante pobre e aqum do desejvel, pois as trs regras s conseguiram encontrar e extrair 5 preos correctamente. Alm disso foram extrados 2 elementos incorrectamente. Tendo em conta que nos 100 documentos1 existiam 92 ocorrncias de preos, podemos concluir que desempenho muito baixo. evidente que tambm s tnhamos 3 regras e portanto pode-se argumentar que se o utilizador definir mais regras ento o desempenho ser superior, todavia para que o mesmo se aproxime dos nveis referidos anteriormente, 60% do desempenho de um ser humano, sero certamente necessrias muito mais regras, semelhantes s do quadro 4.1, e isto s para extrair elemento preo. Se tivermos vrias tabelas a preencher, tendo cada uma vrios campos, imagine-se o esforo que seria necessrio despender. Um dos problemas com as regras de extraco do gnero das do quadro 4.1, que estas so demasiado especificas. Basta ter em conta a enorme variedade sob a qual um preo pode ser expresso num anncio, vejamos alguns exemplos:
... preo: 100 euros ... ... preo 75 contos ... ... pelo preo de 100 euros ... ... no valor de 75.00 ... ... pelo valor de 27000 contos ... ... valor: 12.00 cts ... ...pela modica quantia de 81.00 euros ... ... aproximadamente por 77.00 dolares ... ... 1000.00 .. ... ...

Quadro 4.2 - Formas de preos Por outro lado estas regras dependem fixamente das palavras que se encontram na vizinhana imediata do elemento a extrair, isto da palavra ou sequncia de palavras anteriores ou/e da palavra ou sequncia posterior. Porm existem situaes em que um elemento a extrair poder no depender de qualquer vizinhana ou por outro lado poder depender de uma palavra que se encontra em mdia 3 posies antes da palavra alvo, por exemplo. Tenhamos em mente

1 Para ver pormenores acerca dos dados, consultar seco 4.1 e 4.4.1

4 - O Projecto de Extraco de Informao da Web

75

existem variadssimas formas de escrever um anncio do gnero do apresentado na figura 4.5, dependendo do estilo de escrita de cada autor. Para que um utilizador fosse capaz de definir um quadro de regras minimamente aceitveis ele teria de conhecer muito bem os documentos a processar, para assim definir regras adequadas. Este teria de analisar um grande nmero destes documentos e o seu esforo tenderia a se aproximar do de um operador humano que tem a funo de realizar a tarefa de extraco. O que estamos a defender aqui que o utilizador teria de aprender o padro, as especificidades, o estilo dos anncios a processar, para depois ser capaz de definir regras convenientes. Portanto existe a necessidade de um processo de adaptao ou aprendizagem. precisamente esta ideia que ser apresentada nas duas sub-seces que se seguem, para alm de outras tambm importantes. Antes de iniciar a prxima subseco, apresentamos alguns pontos que mostram claramente, em nosso entender, as desvantagens e limitaes desta primeira abordagem.

Desvantagens e Limitaes Em primeiro lugar esta abordagem exige que algum defina as regras, tem de existir todo um esforo consciente na definio de regras de extraco, por parte de algum. Como foi referido, o numero de regras, para que o sistema atinja um nvel de desempenho minimamente aceitvel, poder ser elevado, s para um campo. Este nmero ser muito ampliado se tivermos em considerao a possibilidade de ter vrias tabelas e estas, por sua vez, vrios campos. Portanto, o sistema exige que seja despendido um elevado esforo, embora seja verdade que aps a criao das regras, este passaria a trabalhar autonomamente. Porm de tempos a tempos seria necessrio proceder a algum ajuste das regras, para contemplar novas situaes ou para dar resposta a uma eventual inovao na forma textual ou pequenas mudanas no estilo de escrita dos anncios. Assim o tal utilizador especialista, responsvel pela definio de regras, no poderia ausentar-se definitivamente do sistema mas teria de continuar a existir um trabalho de manuteno, por parte deste utilizador e um olhar crtico sobre a actuao do sistema, de forma a realizar ajustes se necessrio.

4 - O Projecto de Extraco de Informao da Web

76

Uma segunda desvantagem desta abordagem, que uma consequncia directa da existncia de um utilizador especialista a definir as regras, o facto destas serem definidas segundo critrios subjectivos do prprio utilizador. Assim o sistema ficaria aberto e dependente da subjectividade dessa pessoa, no sendo garantido que a sua actuao seria a melhor, por exemplo se este utilizador fosse pouco experiente. Isto no significa que as regras definidas fossem completamente erradas, mas bastaria que estas estivessem mal ajustadas realidade, fossem por exemplo demasiado gerais ou demasiado especficas, comprometendo desta forma o bom desempenho do sistema. Uma outra limitao desta abordagem prende-se com a possibilidade de existirem regras muito complexas e que um utilizador, mesmo sendo um bom especialista no domnio em questo e conhecendo bem os anncios, no teria capacidade de descobrir e portanto definir. Uma das grandes vantagens do Data Mining a descoberta de conhecimento que no seria facilmente perceptvel a um ser humano e assim permitir a possibilidade de serem omitidas regras importantes. Podemos ter ainda o sistema a operar em ambientes muito dinmicos, em que o tipo e a forma dos documentos processados vai mudando ligeiramente com o tempo, por exemplo. Uma mudana no estilo de documentos implica um desajuste das regras de extraco e consequentemente a necessidade de redefinio de regras. Um ultimo ponto, muito relacionado com o anterior, diz respeito possibilidade ou necessidade de migrar o sistema para outros domnios. Por exemplo, o sistema estar a processar anncios relativos comercializao de um produto e depois querermos coloc-lo a processar textos de Histria, com o objectivo de, por exemplo, extrair personagens histricas, ou datas de eventos importantes, etc. Isto exige uma completa redefinio do quadro de regras, novamente um grande esforo humano exigido, para que o sistema fique adaptado ao novo domnio. As razes aqui apresentadas denotam a debilidade desta abordagem e evidenciam a necessidade de uma outra abordagem, mais capaz de fazer face ao problema em causa.

4 - O Projecto de Extraco de Informao da Web

77

4.3.2

Extraco Utilizando Sistemas de Aprendizagem

Pelo apresentado no final da seco anterior, fica clara a necessidade de uma abordagem tecnicamente mais adequada, para atacar o problema apresentado. Das limitaes expostas, podemos perceber que uma das principais dificuldades e entraves, reside no facto de terem de existir utilizadores especialistas a definir as regras do jogo, dito de uma forma menos formal. Portanto, quase todas as dificuldades apresentadas esto relacionadas com o facto do sistema depender do input de regras, que tm de ser fornecidas, regras essas que so determinantes no desempenho do sistema. A abordagem apresentada nesta seco liberta o utilizador da necessidade de introduzir regras no sistema. O objectivo aqui explorar a aprendizagem, isto , pretende-se que o sistema, mediante a interaco com o mundo, tenha a capacidade de aprender autonomamente, para depois poder agir convenientemente. Coloca-se ento a seguinte questo: aprender o qu?. No nosso caso concreto, queremos que aprenda as regras relativas extraco dos elementos considerados relevantes, em vez de estas serem definidas e fornecidas por um agente externo. Este um importante passo, que dado na direco da Inteligncia Artificial (IA), pois uma importante subrea desta, consiste na Aprendizagem Automtica1. Esta rea da IA tem como alvo de dotar os sistemas, desta capacidade to familiar e importante para o ser humano2. O problema, tal como foi referido, consiste na existncia de grandes quantidades de informao no estruturada, sob a forma de texto. O objectivo consiste em produzir determinada informao estruturada, extraindo-a do grande volume de informao no estruturada disponvel. O nosso sistema enquadra-se num ambiente, no qual recebe entradas ou percepes e no qual realiza aces3. No nosso caso esse ambiente consiste no vasto universo de documentos existentes e as aces consistem na identificao e extraco dos elementos relevantes.

1 Como referido na seco 3.2. 2 Ver seco 3.2. 3 De acordo com literatura recente da IA [Norving & Russel 1995]

4 - O Projecto de Extraco de Informao da Web

78

Em todos os processos de aprendizagem, sejam automticos ou no, existe um factor comum e que ainda no foi referido o treino - uma fase fundamental da aprendizagem supervisionada. Se queremos um agente1 que no dependa do fornecimento de regras, por parte de um humano, ou outro agente qualquer, mas que as induza, ento teremos de o submeter a um processo de treino. Este processo normalmente utilizado para induzir um classificador, como por exemplo uma rede neuronal ou uma rvore de deciso. Este depois utilizado na soluo dum problema. Ento, no nosso caso concreto, em que que consiste o processo de treino? Este traduzir-se- em fornecer, ao sistema, um conjunto de exemplos previamente anotados por algum e denominados de exemplos de treino. A partir destes exemplos ser induzido um classificador para extrair os elementos relevantes considerados, do texto dos anncios.

Gerao de Exemplos Positivos Um exemplo ou instncia de treino, pode ser descrito como um vector de n elementos, dos quais um denominado de classe e os restantes n-1 elementos so os atributos, da instncia. Aquilo que se procura saber a relao que existe entre os atributos e classe, isto , de que forma que os valores dos atributos contribuem para o valor da classe. No nosso problema concreto, a classe pode assumir dois valores: sim ou no. Isto significa que se deve ou no, respectivamente, extrair uma determinada palavra ou expresso do documento, num determinado instante. Quanto aos atributos, temos, nesta abordagem, um conjunto fixo e pr-determinado, cujo domnio se encontra no universo de palavras e expresses existentes na lngua portuguesa. Portanto, em vez de serem fornecidas regras ao nosso agente, como na seco anterior, sero fornecidos exemplos de treino devidamente anotados. Coloca-se ento a questo de saber em que que consiste uma instncia de treino, no nosso caso, uma vez que estamos a trabalhar com texto e no com bases de dados, por exemplo, onde mais fcil definir uma instncia. Aqui sero fornecidos, ao sistema, documentos previamente anotados, por agentes humanos que marcam, de uma forma convencionada, a ocorrncia dos elementos relevantes no texto.
1 Na literatura mais recente da IA, o termo agente empregue para designar um sistema que utiliza metodologias da IA (seco 3.2).

4 - O Projecto de Extraco de Informao da Web

79

Por exemplo, nos anncios referidos na seco anterior, relativos compra e venda de habitao, considerando que o preo referido nesses anncios constitua um elemento relevante, iria ser anotado, nos mesmos, as ocorrncias desses elementos. Estas anotaes podem ser realizadas de vrias formas, mas aqui obriga-se a que seja respeitada uma sintaxe do gnero SGML, mais concretamente XML. De seguida apresenta-se o anncio mostrado na figura 4.5, com os elementos que ali foram considerados relevantes, agora anotados com etiquetas XML.

From: INVESCACEM, LDA (invescacem@mail.telepac.pt) Subject: vendo apartamento <tipo>t3</tipo> Date: 2002-09-07 12:24:09 PST na Cidade de <local>Agualva Cacm</local>, na freguesia do <local>Cacm</local>, concelho de <local>Sintra</local>, vendo apartamento <tipo>t3<tipo>, junto da estao da CP, com quartos 15,19 m2; 15,66 m2; 18,56 m2 e sala 31,10 m2, ainda est em estuque nunca foi pintada, espectacular; belissima vista desafogada, muito soalheira. OPORTUNIDADE PREO <preco>128.440,00</preco>? mais informaes tel 219136000 tlm 917621828

Figura 4.9 - Exemplo de um texto anotado

Como queremos que o agente induza regras de extraco para cada elemento relevante, teremos de fornecer exemplos de treino para cada elemento. Como se pode constatar da figura anterior, num mesmo documento podem ocorrer instncias de vrios elementos relevantes, por exemplo: preo, local, tipo. Cada um destes elementos pode ocorrer mais do que uma vez, num documento, por exemplo pode haver num mesmo anncio duas referncias localizao, como acontece no exemplo do anncio da figura anterior. Isto significa que cada anuncio pode contribuir com mais do que uma instncia de treino, relativamente a um elemento relevante.

Aprendizagem Com rvores de Deciso Uma rvore de deciso um classificador amplamente utilizado em muitos domnios que necessitam e envolvem aprendizagem automtica. A par de uma rvore de deciso podem ser

4 - O Projecto de Extraco de Informao da Web

80

criadas regras do gnero: if <condition> then <action>1. Este precisamente o caminho delineado nesta seco. Assim as regras obtidas no processo de treino sero utilizadas pelo sistema e aplicadas nos novos documentos, de modo a extrair os elementos relevantes e preencher os campos correspondentes nas tabelas, previamente determinadas. Como sabido, uma instncia de treino a submeter a um indutor de rvores de deciso, no pode ser um fragmento de texto, mas como foi referido, ter de possuir uma estrutura semelhante a um vector de n elementos, dos quais n-1 so valores de atributos e o restante consiste na classe a que pertence a instncia. No nosso caso temos dois valores possveis para a classe: sim, no. Portanto, tem de haver um trabalho de pr-processamento dos dados (texto), de forma a que sejam geradas as instncias de treino. O maior problema reside na escolha dos atributos: o que so os atributos das nossas instncias de treino, relativamente a um dado elemento relevante? Esta foi uma questo que exigiu um raciocnio mais cuidadoso e uma reflexo mais demorada, atendendo a que existem muitas possibilidades. semelhana das regras dadas como exemplo na seco anterior no quadro 4.1, podemos considerar as palavras vizinhas do elemento de extraco : por exemplo, a palavra anterior, ou as duas palavras anteriores ao elemento relevante, ou alm do esquema j definido a palavra posterior, que se encontra direita do elemento. De facto, legitimo pensar que existe alguma relao entre a ocorrncia de um determinado elemento relevante e as palavras que lhe esto prximas, no documento. Por exemplo, comum o preo de um produto ser precedido da palavra preo ou da expresso valor de. A seguir apresentam-se exemplos de instncias de treino para o elemento preo, considerando como atributos atributos as duas palavras que precedem o elemento: Instncias relativas ao elemento preo
(texto[i-2], texto[i-1], classe) -----------------------------------(NA2, preo, sim) (pelo, preo, sim) (NA, valor, sim) (valor, de, sim)

1 Ver seco 3.5 2 NA No Aplicvel.

4 - O Projecto de Extraco de Informao da Web

81

Repare-se que o domnio dos atributos formado pelo vocabulrio da linguagem, teoricamente, todas as palavras da lngua portuguesa. Permanece portanto uma questo importante e que ainda no foi esclarecida:Quem define os atributos a considerar? Nesta seco e como uma soluo intermdia, assume-se que os atributos so definidos previamente por um especialista da rea, que conhece bem a estrutura dos anncios e sabe, por exemplo, que suficiente considerar certas palavras (ex: a palavra esquerda e direita).

Gerao de Exemplos Negativos Estamos assim, quase em condies de gerar um conjunto de instncias de treino, pois ainda permanece uma dificuldade no solucionada. At agora s foi feita referncia gerao de instncias todas relativas a uma mesma classe: sim. Portanto s temos instncias relativas aco de extrair um elemento, que como sabido, neste contexto (classificao binria) so geralmente denominadas de instncias positivas. Faltam-nos as instncias negativas, ou seja aquelas que nos indicam que no devemos extrair. Este um problema impeditivo e que tem de ser contornado. Nesta abordagem optou-se por gerar as instncias negativas, a partir do restante texto do anncio, isto o texto que no entra na constituio de instncias positivas. Ser apresentado um exemplo para que melhor se perceba. Suponhamos que estamos nos anncios, que temos vindo a referir, os quais possuem como elemento relevante anotado o elemento preo. Suponhamos tambm que so considerados dois atributos: a palavra que precede a ocorrncia do elemento e a que sucede a mesma. Seja N o numero de palavras envolvidas num instncia positiva deste gnero. Relativamente a esta instncia, podemos considerar o resto do texto do documento como potencial gerador de instncias negativas, do elemento preo, isto partindo do princpio que nesse anncio particular, o elemento preo ocorre uma nica vez. Ento geramos uma instncia negativa relacionada com instncia positiva existente, obtendo aleatoriamente nesse texto uma sequncia de palavras com comprimento N. Por exemplo, no anncio apresentado na figura 4.9, considerando como atributos, relativamente ao preo1, a

1 O elemento (conceito) preo no se deve confundir com a palavra preo, utilizada neste exemplo.

4 - O Projecto de Extraco de Informao da Web

82

palavra esquerda e a palavra direita ao elemento, temos como instncia positiva para esse elemento, a seguinte:
(preo, mais, sim)

Uma correspondente instncia negativa, poderia ser a obtida de: nunca foi pintada e a instncia negativa gerada seria:
(nunca, pintada, no)

Pelo processo descrito, gerada uma coleco de instncias de treino, com igual numero de instncias negativas e igual numero de instncias positivas.

Gerao de Regras Contornados estes obstculos estamos em condies de submeter as instncias de treino a um indutor de rvores de deciso, por exemplo o C4.5 [Quinlan 1993] ou C5 [Quinlan 1997]. Como foi referido e amplamente conhecido, a partir de uma rvore de deciso podemos obter uma coleco de regras. No nosso caso essas regras indicam-nos a aco de extraco ou no, mediante condies sobre os atributos considerados. Assim teremos n regras da forma: if <condition> then <action> Nestas regras e em geral, a condio (condition) poder ser uma composio lgica de condies elementares conjuno lgica. No exemplo que se tem vindo a apresentar, relativo ao elemento preo, e tendo em conta os atributos palavra esquerda (texto[i-1]1) e palavra direita (texto[i+1]2), uma condio poderia ser: texto[i-1] = preo ou ento uma conjuno do gnero: texto[i-1] = preo and texto[i+1] = contacto. Convm notar que as regras apresentadas nesta seco no seguem a sintaxe das geradas pelo C4.5 ou C5, mas uma representao prpria. Para este mesmo exemplo, o conceito aco (action), resume-se a: extrair ou no extrair. A aco extrair, pode ser notada por:
1 Considerando que o elemento ocorre na posio i. 2 Duma forma simplista, estamos a pressupor aqui que o elemento relevante composto duma nica palavra.

4 - O Projecto de Extraco de Informao da Web

83

tabela.preo <- texto[i] isto significa que o campo denominado de preo da tabela, preenchido com a i-sima palavra do texto. Assim um exemplo de regra obtida seria o mostrado em baixo:
if ( texto[i-1] = preo and texto[i+1] = euros ) then

tabela.preo <-- texto[i]

Experincia Segundo a abordagem descrita nesta seco, foi realizada uma experincia envolvendo os anncios referentes venda de habitao e j mencionados na seco anterior. Para simplificar, resolveu-se considerar como nico elemento relevante o preo da habitao, designado por preo. Optou-se tambm por considerar como atributos as palavras esquerda e direita ocorrncia do elemento relevante. As instncias de treino foram obtidas a partir de uma coleco de anncios, contendo esta 55 ocorrncias do elemento preo, alguns destes anncios so apresentados no Anexo A. Apresenta-se a seguir um subconjunto das instncias de treino obtidas a partir dos anncios anotados.

Texto[i-1] preo estado valor dos m2 apenas

Texto[i+1] euros urgente euros contactar euros euros

Aco ou Classe sim no sim no sim sim

Note-se que as instncias mostradas anteriormente obedecem formatao exigida pelo sistema C5 [Quinlan 1997], isto porque para proceder induo das regras de extraco utilizou-se este sistema. O sistema C5 gera um ficheiro com as regras1 induzidas e realizando uma transformao conveniente sobre o mesmo obtm-se a lista de regras com o aspecto e sintaxe descrita anteriormente. Mostra-se de seguida algumas dessas regras obtidas:
1 Exemplo de regra do C5: TextoEsq=preo,
TextoDir=euros -> class sim

4 - O Projecto de Extraco de Informao da Web

84

if ( texto[i-1]="preo" and texto[i+1]=euros ) then tabela.preo <-- texto[i]

if ( texto[i-1]="valor" and texto[i+1]=euros ) then tabela.preo <-- texto[i]

if ( texto[i-1]="preo" ) then tabela.preo <-- texto[i]

Figura 4.10 - Regras de extraco geradas, nesta primeira abordagem.

Resultados desta Experincia Aps a realizao deste processo de induo de regras de extraco, ficamos com uma coleco que constitui uma teoria que permite processar anncios. O passo seguinte pr esta teoria prova, testando o desempenho das regras induzidas. Para tal foi utilizada uma outra coleco de anncios diferente da coleco de treino, denominada de coleco de teste e que contm 86 ocorrncias do elemento preo. Aplicando as regras induzidas, a esta coleco foram realizadas 327 extraces, tendo se conseguido obter s 5 extraces correctas. Isto significa que, em termos de desempenho, o sistema bsico no funciona muito bem. No capitulo 5 apresentamos novamente estes resultados e feita a avaliao, em termos de medidas habitualmente usadas nesta rea (ex: precision, recall), que so definidas ali.

Comentrio Os valores mostrados, resultantes da experincia realizada, so claramente muito maus. Por um lado est a ser extrado muito lixo, pois o sistema concretizou 327 extraces, quando s existiam 86 ocorrncias do elemento relevante e dessas 327 extraces s 5 eram realmente preos, o que d uma preciso muito baixa da informao extrada. Por outro lado o sistema est a encontrar muito poucas ocorrncias do elemento preo, pois das 86 existentes s conseguiu obter 5.

4 - O Projecto de Extraco de Informao da Web

85

Limitaes Apesar do importante passo dado, no sentido de libertar o utilizador da responsabilidade da definio e fornecimento das regras ao sistema, tornando-o mais autnomo, continuam a existir algumas dificuldades nesta abordagem, que sero apresentadas de seguida. Ainda relativamente ao utilizador, este continua a determinar, priori, quais os atributos mais importantes a considerar, no processo de aprendizagem. Portanto persiste alguma prdeterminao em relao escolha dos atributos e como sabido, num processo de aprendizagem automtica, uma m escolha do atributos determinante para a ineficcia da teoria aprendida, tendo ms consequncias nos resultados. Portanto desejvel que seja o sistema a realizar a escolha dos atributos, de forma dinmica e com base nalguma medida orientadora. Uma terceira limitao est relacionada com o uso das prprias palavras nos domnios dos atributos. Isto , para alm dos atributos terem sido pr-determinados, estes so posicionais (ex: texto[i-1]) e assim o domnio destes fica restrito a um conjunto de palavras que ocorrem nas instncias de treino. Com tratar as situaes em que um atributo posicional pode assumir uma grande variabilidade de valores? Um exemplo disto um atributo que possa assumir valores numricos. Por exemplo, natural pensar-se que o prprio texto[i] (o elemento a extrair) constitua um potencial atributo a considerar. Um exemplo de uma regra envolvendo texto[i], poderia ser:
if ( texto[i]="121.500" and texto[i+1]="euros" ) then tabela.preo <-- texto[i]

Repare-se o quo especfica esta regra e de pouca utilidade para extrair, nos novos anncios. O problema aqui que, por exemplo, o texto[i] pode assumir uma grande variao, podendo possuir um domnio que mesmo infinito (todos os valores numricos). Repare-se na seguinte lista :
m2 <preco>121.500</preco> euros valor <preco>24.000</preco> contos andar <preco>109.735,54</preco> euros Preo: <preco>32 mil </preco> contos preo: <preco>77.313</preco> euros Seixal <preco>45.000</preco> contos

4 - O Projecto de Extraco de Informao da Web

86

Nesta pequena lista de 6 exemplos de ocorrncias do elemento preo, verifica-se que para cada ocorrncia tem um texto[i] diferente (121.500,
24.000, etc),

todavia constata-se que

quase todos so valores numricos. Portanto existe uma categoria abstracta que compreende a quase totalidade destes elementos. Isto sugere que talvez seja promissor considerar determinadas formas abstractas, representativas de expresses de texto, isto , generalizaes. Por exemplo, uma generalizao o conceito nmero real uma generalizao de quase todas as strings de texto[i], na listagem anterior. Na prxima seco mostrada a convenincia em trabalhar com generalizaes, tentando induzi-as a partir dos dados de treino. Outra dificuldade, tambm relacionada com os atributos posicionais, o facto desta restrio ser muito rgida. Por exemplo, para o quadro de regras da figura 4.10, anterior, a identificao/extraco de texto[i] ser realizada se a palavra que ocorre na posio anterior for preo ou valor, Repare-se como isto restritivo, pois mesmo que uma dessas palavras ocorra na posio i-2 ou i-3, a extraco no seria realizada, por exemplo: pelo valor de 24.000 euros. Neste caso valor ocorre em texto[i-2]. Conclui-se aqui que necessrio uma outra forma de interpretar os atributos, de tal modo que no exemplo anterior a extraco fosse possvel. A abordagem descrita na prxima seco, resolve este problema. Uma outra fonte de dificuldades prende-se com o facto das instncias negativas geradas, conterem um factor aleatrio no processo da sua concepo. Embora seja uma soluo possvel, quando estamos na ausncia deste tipo de instncias, sabido desde [Winston 1992] que h outras solues mais eficazes. Assim desejvel que sejam encontradas instncias negativas de uma forma mais adequada, para facilitar a induo dos conceitos em causa. Pelas dificuldades e limitaes enumeradas, evidencia-se a necessidade de uma nova abordagem, que ser apresentada na prxima seco.

4 - O Projecto de Extraco de Informao da Web

87

4.4 Extraco com Aprendizagem e Generalizao

Da experincia realizada e descrita no final da seco anterior percebemos que a abordagem anterior no satisfaz a resoluo do nosso problema inicial. Aquela abordagem contm um conjunto de limitaes e dificuldades que so fonte de gerao de problemas e baixo desempenho, estando as principais apresentadas no final da seco. Nesta abordagem apresentada a realizao do esforo de transposio daquelas dificuldades. O ncleo da maior parte do trabalho realizado, no mbito desta dissertao, encontra-se exposto na presente seco. Um dos passos importantes realizados na seco anterior consistiu na automao no processo de definio das regras. Deixou de ser um utilizador externo que define as regras e estas passaram a ser aprendidas. Em quase tudo no mundo, uma maior autonomia implica uma maior responsabilidade, um melhor saber fazer, e portanto o nosso sistema tem de ser dotado desta capacidade. Alm disso h outras tarefas que temos de realizar, como o caso da escolha dos atributos, um trabalho de pr-processamento muito importante para o processo de aprendizagem. Na abordagem anterior o sistema estava liberto desta tarefa e esta continuava a ser realizada e fornecida pelo utilizador. Um dos melhoramentos que esta abordagem pretende introduzir consiste em levar o sistema realizao da escolha dos atributos, libertando o utilizador desta tarefa. Assim, para alm do sistema ficar mais autnomo, fica tambm mais fcil de utilizar, pois neste caso a nica coisa que ser fornecida um conjunto de dados de treino. Tal como foi referido na seco anterior, estes dados de treino consistem em pequenos anncios relativos a um determinado assunto, os quais tm assinalados com marcas SGML, os elementos considerados relevantes. Como ilustrao apresentam-se, na figura 4.11, trs anncios reais anotados anncios de treino. Mais exemplos destes podero ser consultados no Anexo A. Estes anncios constituem a matria prima do nosso sistema, a partir deles so geradas instncias de treino com o objectivo de realizar a induo de regras de extraco dos elementos relevantes.

4 - O Projecto de Extraco de Informao da Web

88

Anncio n1
<text> De:My Self0432035901@netcabo.pt Assunto:<tipo>T5</tipo> Duplex em <local>Gaia</local> Data:2002-05-10 15:01:24 PST Excelente localizao no centro da cidade. 2 WC, despensa, terrao com marquise com 70 m2. <preco>119700</preco> euros 966969663 </text>

Anncio n2
<text> Apartamento pouco usada <tipo>T4</tipo>, 2 wcs, 3 andar com vista panoramica. Excelente localizao, a poucos metros da zona central de <local>Loul</local>. Perto metros do tribunal, biblioteca, piscinas, e diversos estabelecimentos comerciais. Preo: <preco>132.180</preco>Euros (negociavel) 936109097Envie uma continuao para esta mensagem </text>

Anncio n3
<text> De: Macedo & Rapaz, Lda.macedo-rapaz@clix.pt Assunto:apartamento em <local>alvalade</local> urgente Data:2002-06-21 11:06:26 PST vende-se apartamento de <tipo>3 assoalhadas</tipo> com placa em predio remodelado local calmo a precisar de algumas obras ref 100640 valor <preco>121.500</preco> euros tel 217951415 ou 963318686 cristina macedo </text>

Figura 4.11 - Exemplos de alguns textos (anncios) anotados

4 - O Projecto de Extraco de Informao da Web

89

Recapitulando, o nosso objectivo consiste em extrair determinados elementos de documentos de texto. Documentos esses sem qualquer estrutura previamente definida. Estes consistem simplesmente em partes de texto (uma ou mais sequncias de palavras) que sero identificadas pelo sistema, extradas do texto e inseridas numa estrutura bem definida, denominada de tabela. No nosso domnio so considerados trs elementos relevantes: o preo (preo), a tipologia da habitao (tipo) e a sua localizao (local). Para qualquer elemento relevante (elemento), a marcao desse elemento, no texto dos documentos de treino, efectuada utilizando as marcas <elemento> e </elemento>, identificando, respectivamente, o inicio e fim da ocorrncia desse elemento relevante. Em suma o nosso objectivo consiste na produo de informao estruturada a partir de informao no estruturada (ex: o texto de um anncio), como referido no inicio da seco 4.3.1. O mundo do nosso sistema/agente consiste numa vasta coleco de documentos disponveis e de um conjunto de tabelas que tm de ser preenchidas. O sistema tem a misso de identificar os elementos relevantes nos documentos extraindo-os e inserindo-os nas tabelas. Antes de prosseguir com a apresentao dos pormenores do funcionamento do sistema, ir ser apresentada uma descrio de topo ou de Alto Nvel, do trabalho desenvolvido. Ir ser apresentado o algoritmo geral de funcionamento do sistema desenvolvido. Esta descrio ser apresentada pressupondo que certas dificuldades, referidas em seces anteriores (ex: escolha dos atributos, exemplos negativos, etc) j esto resolvidas. Esta descrio algortmica no descreve o modo de funcionamento do sistema, do ponto de vista do utilizador, mas sim o procedimento interno que norteia a aco do sistema. O funcionamento do sistema, do ponto de vista do utilizador, apresentado na seco 4.5.2.

4.4.1

O Algoritmo de Extraco

Recapitulando brevemente o nosso contexto (Problema/Objectivo): temos um conjunto de anncios, relativos venda de habitaes, semelhantes aos mostrados na figura 4.11 e nos quais se pretende identificar certos elementos considerados relevantes, nesta famlia de anncios, como o preo e a tipologia, para depois os extrair e preencher os respectivos

4 - O Projecto de Extraco de Informao da Web

90

campos nas tabelas de uma base de dados ou outra entidade de informao estruturada. Pretende-se um sistema que implemente tcnicas de aprendizagem automtica e daqui se depreende imediatamente que este ser constitudo por duas grandes fases: a fase de treino e a fase de aplicao/teste. Na fase de treino queremos que o sistema induza um conjunto de regras que depois ir aplicar, na fase de teste, a fim de realizar a identificao/extraco das ocorrncias dos elementos relevantes considerados. Das abordagens descritas anteriormente, permanecem trs grandes problemas e cuja soluo implementada, ser descrita mais tarde, nesta seco. Estes trs problemas so: 1. A escolha dos atributos. 2. A necessidade de utilizar categorias ou generalizao de conceitos. 3. Os exemplos negativos.

Para j, vamos partir do princpio que estes problemas j foram ultrapassados e ento queremos saber como actua o sistema. Comeamos por admitir que os atributos foram escolhidos e fixados e que as instncias negativas so de igual modo bem escolhidas. Para j, supomos a no necessidade de trabalhar com generalizaes (ponto 2 da lista anterior). Vamos ento apresentar o algoritmo mais geral que traduz o trabalho implementado e que permite uma soluo do nosso problema. Este algoritmo apresentado numa sequncia TopDown (de cima para baixo), portanto do geral para o particular primeiro o esquema genrico e depois o detalhar de cada um dos pontos apresentados, at que se atinja um nvel em que j no existe necessidade de continuar a especificar os conceitos apresentados. Designe-se ento a nossa coleco de n anncios que iro ser utilizados para o treino do sistema, por seguir:
= {A1,A2,...,An}, o algoritmo geral de aco do sistema apresentado a

4 - O Projecto de Extraco de Informao da Web

91

1. 2.

Obter(A ) Para cada elemento relevante: elemento, Fazer

3. 4. } 5. 6.

V instncias elemento

<-- GeraInstncias(A , elemento, Atrbs esq , Atrbs dir )

V regras elemento

<-- Treino( V instncias elemento )

Obter(A )

V extraces elemento

<-- Extrair(A , V regras elemento )

Algoritmo 4.2 - Algoritmo de Extraco

No algoritmo anterior, as entidades referenciadas por V, como V instncias elemento , consistem

em vectores de cadeias de caracteres - strings. Os quatro primeiros pontos dizem respeito fase de treino e os ltimos dois fase de aplicao/teste. No ponto 1 e 5, a funo Obter caracteriza a obteno dos anncios, a partir da fonte (ex: News Groups), para o nosso sistema, portanto o processo de entrada de dados no sistema (Input). Repare-se que A t A , relativamente aos pontos 1 e 5, isto significa que em 1 temos uma coleco de anncios de treino e portanto devidamente anotados, enquanto que no ponto 5 temos uma coleco de novos exemplos, no anotados, e dos quais se ir extrair as ocorrncias dos elementos relevantes. No nosso algoritmo, GeraInstncias uma pseudo-funo que caracteriza o trabalho de gerao de instncias de treino, a partir dos anncios de treino (A t ) e para um determinado elemento. Essas instncias so geradas para o vector designado por

V instncias elemento que por sua vez ser utilizado no processo de treino e na induo do

conjunto de regras de extraco do elemento relevante em causa (elemento), trabalho esse que ser concretizado na pseudo-funo designada por Treino, no ponto 4. Por sua vez, esta funo gera um outro vector constitudo pelo conjunto de regras induzidas, designado por

V regras elemento . Isto completa o ciclo de treino do sistema que como se pode ler na linha 2

do algoritmo, realizado para cada elemento relevante, do conjunto dos elementos definidos previamente.

4 - O Projecto de Extraco de Informao da Web

92

A fase de aplicao/teste est expressa nos pontos 5 e 6 e caracterizada pela pseudo-funo de nome Extrair, que, como se pode ver, depende dum conjunto de anncios novos (A ) e do conjunto das regras geradas anteriormente, na fase de treino: V regras elemento . Esta

funo produz como resultado uma coleco de instncias extradas ( V extraces elemento ),

relativas a um determinado elemento. A seguir so detalhadas as funes apresentadas no nosso algoritmo, nas linhas 3, 4 e 5, porm antes de avanar para isso ser necessrio introduzir alguma notao para que melhor se possa referir determinados aspectos e caractersticas do nosso problema. Considere-se um qualquer anncio A de uma coleco de anncios anotados, portanto de treino. O texto contido no anncio A, pode ser interpretado como uma sequncia de palavras, semelhana dum vector, isto , podemos interpretar A como sendo um vector de palavras. Dum modo geral, designe-se esse vector por Texto. Supondo que A contm N palavras, ento a i-sima palavra que ocorre em A, pode ser identificada por Texto[i] (0 i N). Ainda nesta notao, a sequncia de palavras que vai desde a posio i posio j, em A, referida como Texto[i:j] (0 i j N). Quando i = j usamos a forma mais curta Texto[i].

Um determinado elemento relevante, designe-se elemento, pode ocorrer uma ou mais vezes em A. Defina-se ento a ocorrncia de elemento em A, por: Ocorrencia(elemento, A), consistindo isto em:

Ocorrencia(elemento, A):

<elemento>Texto[i:j]</elemento>

Por exemplo, no ultimo anncio da figura 4.11, temos uma ocorrncia do elemento preo, portanto - Ocorrencia(preco, A): <preco>24.000</preco>. Tendo em conta a possibilidade de mltiplas ocorrncias dum elemento relevante num nico anncio, designamos a k-sima ocorrncia de elemento em A por : Ocorrencia k elemento , A .

O nmero de ocorrncias dum elemento relevante (elemento) num anncio (A), ser expresso pela funo: NOcorrencias(elemento, A). Por exemplo em qualquer anncio da figura 4.11, temos NOcorrencias(preco, A) = 1.

4 - O Projecto de Extraco de Informao da Web

93

Continuando com o que foi definido, para uma qualquer ocorrncia dum elemento relevante num anncio (Ocorrencia(elemento, A)), podemos considerar uma certa vizinhana a esta ocorrncia que expressa um certo contexto no qual esta sucede. Esta vizinhana ou contexto ser formado por uma contexto esquerdo e direito. O primeiro constitudo por um certo nmero de palavras que precede Ocorrencia(elemento, A) e o segundo por um certo nmero da sequncia de palavras que sucede a mesma ocorrncia. Assim, tendo presente a notao definida, considere-se a seguinte sequncia de palavras dum anncio A:

Texto[i-n:i-1] Ocorrencia(elemento, A) Texto[j+1:j+m]

ento define-se contexto esquerdo de Ocorrencia(elemento, A), com n palavras por:


Contexto esq elemento , A , n = Texto[i-n:i-1] e de igual modo o contexto direito de

Ocorrencia(elemento,
Texto[j+1:j+m].

A),

com

palavras

por:

Contextodir elemento , A , m

Seguindo esta linha de definio, Contexto elemento , A , n , m

designa a juno ou

concatenao das duas sequncias relativas ao contexto esquerdo e direito, respectivamente


Texto[i-n, i-1] e Texto[j+1, j+m]. No segundo anncio da figura 4.11, temos:

Contextoesq preo , A , 1 = Preo


Contexto dir preo , A , 1 = Euros


Contexto preo , A , 1,1 = Preo


Euros

Exemplo 4.1 - Exemplos de Contextos Ainda devido possibilidade da existncia de mltiplas ocorrncias dum elemento num anncio, tem-se:

sempre

que

houver

necessidade

de

referir

contexto

de

Ocorrencia k elemento , A (k-sima ocorrncia, de elemento em A) utiliza-se o ndice k como

se

segue:

Contexto esq elemento , A , n ,


Contextodir elemento , A , m

Contexto k elemento , A , n , m , lendo-se, por exemplo para o contexto esquerdo: contexto

esquerdo a n palavras da k-sima ocorrncia de elemento no anncio A.

4 - O Projecto de Extraco de Informao da Web

94

A partir desta notao agora mais fcil descrever os algoritmos envolvidos nas pseudofunes do algoritmo 4.2, apresentado anteriormente, que o que ser feito a seguir.

Gerao de Instncias ( Funo GeraInstncias) Como foi referido, existe um quadro de pressupostos assumido aqui, um dos quais que os atributos j esto escolhidos. Assuma-se que existem trs conjuntos de atributos:
Atributos esq , , Atributos dir e A foco . No primeiro e segundo conjunto esto includas uma

coleco

de

palavras

que

podem

ocorrer

em

Contexto esq elemento , A , n

Contextodir elemento , A , m , respectivamente. Portanto, estes atributos so palavras que

ocorrem esquerda ou direita de Ocorrencia(elemento, A). Os domnios de cada um destes atributos encontra-se no conjunto binrio {no, sim}, significando a no ocorrncia ou ocorrncia, respectivamente, da palavra em causa no contexto da ocorrncia do elemento relevante, isto Contexto elemento , A , n , m . Para o nosso problema concreto e para o

elemento preo, um exemplo destes conjuntos poder ser o mostrado de seguida:

Atributos esq = {preo, valor, venda, por, assunto} Atributos dir = {euros}

Exemplo 4.2 - Atributos possveis, para os contextos


relativos ao elemento preo.

O terceiro conjunto de atributos, A foco , contm um nico atributo que diz respeito ao elemento relevante em si, isto , considerando Ocorrencia(elemento,A), consiste na string em
Texto[i:j]. O domnio deste atributo, compreende os valores possveis da palavra (ou

palavras), contidas em Ocorrencia(elemento,A). Por exemplo para o nosso caso do elemento preo, poderamos ter: Domnio( A foco ) = {132.180, 24000, 24.000, ..., etc}, repare-se nos exemplos da figura 4.11 anterior. Com estes pressupostos assumidos, estamos agora em condies de apresentar o algoritmo envolvido na gerao das instncias de treino a partir do conjunto dos anncios.

4 - O Projecto de Extraco de Informao da Web

95

GeraInstncias (A t , elemento, Atributos esq , Atributos esq ) devolve Vector de Strings {


vector <-- para cada A A t fazer para cada k <-- 1 at NOcorrencias(elemento, A) fazer { sinstancia <-- para Ew j Atributos esq fazer
k se Ew j Contexto esq elemento , A , n ento sinstancia <-- sinstancia + ,sim senao sinstancia <-- sinstancia + ,no

para Dw j Atributos dir fazer


k se Dw j Contextodir elemento , A , m ento sinstancia <-- sinstancia + ,sim senao sinstancia <-- sinstancia + ,no

sinstancia <-- sinstancia + A foco + ,sim sinst_nega <-- GeraInstNeg(sinstancia, elemento) vector <-- vector {sinstancia} vector <-- vector {sinst_nega} } devolver vector

} Algoritmo 4.3 - Gerao de Instncias No algoritmo anterior construdo incrementalmente um vector de instncias de treino. Em termos concretos, este pode ser interpretado como um vector de strings, sendo cada string uma instncia positiva ou negativa. Inicialmente o vector est vazio e, como se pode verificar, para cada Ocorrencia(elemento, A) gerada uma instncia positiva e uma negativa, que depende da instncia positiva gerada e obtida atravs da funo GeraInstNeg. A forma como uma instncia negativa gerada ser explicada mais adiante, nesta seco (subseco 4.4.4). Nos dois ciclos mais internos do algoritmo, pode-se verificar que uma instncia uma string constituda por sequncias de ,sim ou ,no, consoante as palavras atributo de
Atributos esq e Atributos dir estejam ou no nos respectivos contextos considerados. O

smbolo + ali utilizado significa a operao de concatenao de strings. Os dois ultimos elementos a serem acrescentados string de instncia (sinstancia) so o valor do atributo

4 - O Projecto de Extraco de Informao da Web

96

de foco ( A foco ) e a classe da instncia, que para uma instncia positiva , obviamente, sempre sim. Portanto em cada anncio A e, dentro deste, para cada ocorrncia do elemento relevante, so geradas duas instncias (positiva e negativa), e acrescentadas ao vector que ser devolvido como resultado final da funo. Tendo presente os trs exemplos mostrados na figura 4.11 e os atributos do exemplo 4.2, considerando ainda o elemento preo, apresenta-se de seguida as trs instncias positivas obtidas a partir das trs ocorrncias de preo naqueles trs anncios:

E preo
Instncia 1 Instncia 2 Instncia 3 no sim no

E valor
no no sim

E venda
no no no

E por
no no no

E assunto
no no no

D euros
sim sim sim

A foco
119700 132.180 121.500

Classe sim sim sim

Exemplo 4.3 - Exemplo de instncias positivas.

Gerao de Regras de Extraco (Funo Treino) A funo de treino apresentada no algoritmo 4.2 a responsvel por gerar um conjunto de regras de extraco ( V regras elemento ), para um elemento relevante, que sero depois utilizadas no processo de extraco, representado pela funo Extrair, no mesmo algoritmo. Neste trabalho foi utilizado um sistema gerador de rvores de deciso do tipo C4.5 [Quinlan 1993] na sua verso mais recente C5 [Quinlan 1997]1. A par deste gerador, foi tambm experimentado outro gerador de rvores de deciso, denominado de J48 e pertencente package de Data Mining com o nome WEKA [Witten & Frank 2000]. Conhecendo as especificaes de entrada (input) do C5 e observando as instncias do exemplo anterior (4.3), conclumos que estas se encontram no formato correcto e necessrio para serem submetidas e consideradas como instncias de treino pelo sistema C5. Portanto
1 Ver seco 3.5.3

4 - O Projecto de Extraco de Informao da Web

97

essas instncias ( V instncias elemento ), geradas pela funo descrita anteriormente, so produzidas a pensar no sistema de treino utilizado. Como sabido, o sistema C5 pode produzir como resultado uma lista de regras, relativas rvore de deciso induzida. Assim esta lista de regras aquela que devolvida pela funo Treino do algoritmo 4.2, atravs dum vector de strings ( V regras elemento ). Em suma o processo de treino consiste em gerar regras, que determinam as circunstncias nas quais se realiza uma extraco do elemento relevante em causa. Dois exemplos de regras contidas em V regras preo , obtidas como resultado do treino so:

V regras [ 0 ] = ESQpreo = sim V regras [ 1 ] = DIRcontos = sim

AND -->

DIReuros = sim sim

-->

sim

Exemplo 4.4 - Dois elementos do vector de regras gerado

Na seco 4.4.5 sero mostradas as regras induzidas pelo sistema C5, para os trs elementos relevantes considerados (preo, tipo, local) e ser tambm melhor explicada a forma como estas so utilizadas no processo de extraco.

Extraco de Informao (Funo Extrair) Esta ultima funo, presente no algoritmo 4.2, caracteriza a identificao e extraco das ocorrncias dum elemento relevante nos novos anncios (de teste: A ), com base nas regras induzidas anteriormente (vector V regras elemento ). O processo de extraco e consequente aplicao das regras induzidas ser aprofundado na seco 4.4.5, pois existe um conjunto de problemas especficos, que preciso abordar e que so importantes nesse processo. Recordamos que esta abordagem geral, partiu do princpio que estes e outros problemas j estavam resolvidos. Portanto, falta detalhar a resoluo dos mesmos que ser feito nas seces que se seguiro a esta.

4 - O Projecto de Extraco de Informao da Web

98

Assim a funo Extrair apresentada tambm sob a forma dum pequeno algoritmo, mostrado a seguir: Extrair (Anncios, V regras ) devolve Vector de Strings {
vector <-- para cada A Anncios fazer { Texto <-- string do texto de A para cada regra V regras fazer { se Satisfaz(regra, contextoesq Texto[i:j] contexto dir ) ento vector <-- vector {Texto[i:j]} } } devolver vector

} Algoritmo 4.4 - Extraco de Informao Neste algoritmo a funo Satisfaz testa se uma regra de extraco se verifica num segmento do texto (da palavra i palavra j, conforme notao introduzida no inicio desta subseco) dum anncio. Esta verificao tem em conta os contextos esquerdos e direitos, para alm da poro de texto considerado (Texto[i:j]). Supondo que tnhamos a seguinte poro de texto, contida no dado anncio: (...) pelo preo de 100 000 euros, negocivel e (...) e que o tamanho dos contextos esquerdo e direito considerados era de trs palavras, ento a regra
V regras [ 0 ] do exemplo 4.4 seria verificada positivamente, atravs da funo Satisfaz,

quando fosse considerado Texto[i:j]= 100 000 (neste caso j=i+1), contextoesq = pelo preo de e contexto dir = euros negocivel e. Todas as ocorrncias de elementos relevantes nos anncios, determinadas pelo vector de regras, vo sendo reunidas icrementalmente num vector. Este vector depois devolvido como resultado.

4 - O Projecto de Extraco de Informao da Web

99

4.4.2

Pr-processamento: Escolha dos Atributos

Como foi referido, sabe-se que os atributos considerados exercem uma fora preponderante em qualquer processo de induo. necessrio escolher bons atributos, dentre as possibilidades. Assim, em qualquer domnio existe um espao dentro do qual promissor considerar a escolha de atributos.

Escolha do Contexto Tendo presente a notao introduzida na subseco anterior, consideramos natural para espao de procura dos atributos o texto contido numa certa vizinhana de Ocorrencia(elemento,A), para um determinado elemento relevante (elemento), em que A um dos anncios de treino (A t ). Essa vizinhana foi definida anteriormente por Contexto(elemento,m,n), ou ainda de uma outra forma: Contextoesq elemento , A , m e
Contextodir elemento , A , n .

Tenhamos

tambm

presente

que

indicam,

respectivamente, o nmero de palavras consideradas para o contexto esquerdo e direito. Os valores de m e n podem ser fixados com um valor elevado, todavia por razes bvias de simplificao e por se saber que a partir duma certa distncia ocorrncia do elemento relevante, o texto deixa de estar relacionado com a ocorrncia daquele, mais natural considerarem-se valores mais pequenos. De outra forma, a probabilidade de texto afastado de Ocorrencia(elemento,A) ter alguma relao com este, tende para zero, medida que nos afastamos daquela ocorrncia. A partir de uma certa distncia de Ocorrencia(elemento,A) o texto ocorrido independente de Ocorrencia(elemento,A). Ilustrando no nosso domnio, significa que podemos ter Ocorrencia(preo,A) em Texto[i:j] e Texto[i-10:i-4] ter informao relativa, por exemplo, garagem da habitao. Mas isto no significa que esta co-ocorrncia de conceitos seja sempre verificada, ou na maioria dos casos. No significa que sempre que se tenha uma ocorrncia do elemento relevante preo, entre as posies i e j do texto, se esteja a falar de garagens entre as posies i-10 e i-4.

4 - O Projecto de Extraco de Informao da Web

100

Assim o mais natural ser considerar para m e n um determinado numero de palavras no muito grande, por exemplo 3 ou 4. Estes limites, que definem as dimenses dos contextos, podero ser deixados para ajustar por um utilizador do sistema.

Representao de Contexto Coloca-se ento a questo de saber como escolher os atributos em Contexto(elemento,m,n), antes de mais como considerar os atributos? Ser conveniente utilizar o mtodo seguido nas duas abordagens anteriores (preliminares 4.3.1 e 4.3.2), considerando as posies das palavras vizinhas1? A resposta negativa, tal como se verificou nos algoritmos apresentados anteriormente, pois achou-se mais conveniente considerar as palavras em si, como sendo os prprios atributos, em vez da posio de ocorrncia destas em relao a Ocorrencia(elemento,A). Verificmos tambm que esta alternativa produz melhores resultados. No terceiro anncio mostrado na figura 4.11, temos na dcima linha uma Ocorrencia(preo,A), considerando Contextoesq preo , A , m e m=4, tm-se para possveis candidatos a atributos as palavras: valor, 100640, ref, e obras. Neste mtodo o domnio dos atributos amplamente simplificado, ficando reduzido a um conjunto de dois valores {no, sim}, em que no significa a no ocorrncia do atributo (palavra) e sim a sua ocorrncia na vizinhana considerada. A partir dos anncios de A t , podemos definir o vector esquerdo (VSe) e o vector direito (VSd), como sendo os vectores contendo as strings dos contextos equerdo e direito, respectivamente, no conjunto de anncios anotados (A t ), de todas as ocorrncias dum elemento relevante. No exemplo 4.5 so mostrados partes destes vectores, para o nosso domnio especfico e relativamente ao elemento preo. Estes vectores foram construdos a partir de dados reais, repare-se que esta pequena lista contm as trs ocorrncias de preo, nos anncios da figura 4.11 so as trs primeiras linhas.

1 palavra anterior, palavra seguinte, as duas palavras anteriores ocorrncia, etc

4 - O Projecto de Extraco de Informao da Web

101

Algumas ocorrncias de preo:


com 70 m2 <preco>119700</preco> euros 966969663 estabelecimento comerciais preo <preco>132.180</preco> euros negociavel ref 100640 valor <preco>121.500</preco> euros tel 2179511415 no 2 andar <preco>109.735,54</preco> euros contacto pelo preo de <preco>32 mil</preco> contos TM 938464173 muita luz preo <preco>77.313</preco> euros tm 914574849 do sapo seixal <preco>45.000</preco> contos mais informaes

Vectores correspondentes:
VSe Vector esquerdo com 70 m2 estabelecimentos comerciais preo ref 100640 valor no 2 andar pelo preo de muita luz preo do sapo seixal VSx 119700 132.180 121.500 32 mil 77.313 45.000 VSd Vector direito euros 966969663 euros negociavel euros tel 2179511415 contos tm 938464173 euros tm 914574849 contos mais informaes

109.735,54 euros contacto

Exemplo 4.5 Vectores de ocorrncias e contextos O vector central VSx designa o vector das ocorrncias do elemento relevante (preo, neste caso). Os atributos sero seleccionados do conjunto de palavras contidas nos vectores esquerdo (VSe) e direito (VSd). Alm disso, precisamos de mais alguns atributos, escolhidos de entre as palavras referentes aos exemplos negativos gerados. Isto ser referido aqui, mais tarde. A partir de um conjunto de palavras candidatadas a atributos, surge a questo de saber como escolher, desse conjunto, aquelas que so teis no passo seguinte, isto , na classificao. Existem algumas medidas que fazem sentido utilizar aqui, algumas amplamente empregues nos sistemas com aprendizagem automtica, como o caso do ganho de informao. Este tpico abordado a seguir.

4 - O Projecto de Extraco de Informao da Web

102

Ganho de Informao na Escolha dos Atributos Tendo presente a Teoria da Informao de Shannon e as adaptaes subsequentes na rea da Aprendizagem Automtica [Mitchell 1997], sabemos que o ganho de informao de um atributo A, numa coleco de S instncias, dado por:
Gain S , A = Entropy S

v values A

S v S

Entropy S v

em que S o numero de instncias da coleco e S v o numero de instncias de S para as quais A tm o valor v (A = v). A funo Entropy calculada para uma coleco de instncias S, com c classes pela bem conhecida formula:
c

Entropy S = p i log 2 p i
i =1

em que para todo o i p i a probabilidade da classe i. Uma primeira dificuldade aqui est relacionada com o facto de no estarmos a utilizar a funo Gain S , A para avaliar um conjunto de atributos de instncias S, j definidas1, mas a utilizar a referida funo para escolher os atributos que iro constituir as futuras instncias. Tendo presente que os nossos exemplos de treino so blocos de texto, necessrio identificar instncias, nos mesmos exemplos, uma vez que a funo Gain S , A depende de nmeros de instncias: S , S v . Como olhar para a totalidade do texto dos anncios e identificar o que so as instncias das vrias classes? Em termos de classes, sabemos que s temos duas, como tem sido referido extrair e no extrair. Estas so designadas de sim e no, respectivamente, de modo a tornar a notao mais expedita. Portanto temos values(A) = {sim, no}. A estimativa de S relacionada com a estimativa de p(sim) e p(no), uma vez que: p sim =
S no S

e S v

est

S sim S

e p(no)

igual a 1.0 p(sim), por um lado, e p no =

por outro. O valor de S sim

1 Que feito, por exemplo, no processo de construo duma rvore de deciso, atravs do ID3.

4 - O Projecto de Extraco de Informao da Web

103

conhecido, pois consiste no nmero de instncias anotadas nos exemplos, para o elemento relevante considerado. Consequentemente tm-se S no = S S sim e assim o problema resume-se a estimar o valor de p(sim), o que ser realizado a seguir. No nosso caso, queremos determinar atributos (palavras) informativos, relativamente aos contextos esquerdo e direito, das ocorrncias dos elementos relevantes. Esta determinao ser realizada em separado para cada um dos contextos, dado que uma palavra informativa para o contexto esquerdo, pode no o ser para o direito e vice-versa. Ser explicado aqui como feito o clculo dos atributos mais informativos, para o contexto esquerdo, sendo semelhante o realizado para o contexto direito. Assim e relativamente ao contexto esquerdo, convencionou-se que uma instncia positiva (de extraco - sim), para um elemento, seria constituda por Contextoesq elemento , A , n mais o texto contido na ocorrncia do elemento relevante Ocorrencia(elemento,A). Designe-se este segmento de texto por Instanciaesq elemento . No exemplo 4.5 e para a primeira linha temos
Instanciaesq elemento = com 70 m2 119700.

Podemos pensar no nmero de palavras contidas em Instancia esq elemento , designe-se esse valor por #palavras{ Instancia esq elemento }. Numa coleco de anncios anotados, com r ocorrncias dum determinado elemento relevante (elemento), o nmero designado por #palavras{elemento} representa o nmero de palavras envolvidas em todas as instncias de
r

elemento. Assim #palavras{elemento} =

# palavras { Instanciaiesq elemento 6 .


i=1

Nas 7 ocorrncias mostradas no exemplo 4.5 temos #palavras{elemento} = 29. Desta forma, estima-se p sim
# palavras { elemento } , em que #palavras{Anncios} o nmero total # palavras { Anncios }

de palavras envolvidas nos anncios de treino. Uma vez que S sim = 7 , no exemplo 4.5, e admitindo que os anncios de treino que contm exclusivamente aquelas ocorrncias relativas

4 - O Projecto de Extraco de Informao da Web

104

a preo, tm #palavras{Anncios} = 290, ento: p(sim) = 0.1, p(no) = 0.9, S


S no 70 7 = 63 .

7 = 70 e 0.1

Assim no nosso caso concreto temos:


Entropy S = p sim log 2 p sim p no log 2 p no

e em continuao ao exemplo iniciado, tem-se Entropy S = 0.469 .

Neste contexto a funo de ganho de informao pode ser designada com os parmetros: S e w, em vez de S e A, isto : Gain(S,w), pois os nossos atributos so palavras. Assim para calcular Gain(S,w) temos de calcular S w e S w , significando w a no ocorrncia da palavra w. Temos tambm de calcular Entropy S w e Entropy S w . Estes dois ltimos valores so calculados a partir das probabilidades condicionais: p(sim|w), p(no|w), p(sim|w), p(no|w), onde por exemplo p(sim|w) significa a probabilidade de extrair um elemento relevante, tendo em conta que a palavra w ocorre na vizinhana considerada deste.
Entropy S w = p sim w log 2 p sim w p no w log 2 p no w

Entropy S w = p sim w log 2 p sim w p no w log 2 p no w

Tendo presente que p(no|w) = 1.0 - p(sim|w) e que p(no|w) = 1.0 - p(sim|w), o problema resume-se a estimar as probabilidades e p(sim|w) e p(sim|w). Para estimar p(sim|w) teremos de contar quantas instncias de extraco ( S sim ) contm a palavra w e dividir pelo nmero total de instncias que contm a mesma palavra. Assim podemos considerar TF w 1 e TF w S sim , isto , a frequncia de w no texto dos anncios e a mesma frequncia para as instncias de extraco consideradas (todas as Instancia esq elemento ), respectivamente. Com isto estima-se p sim w
min { TF w S sim , S sim 6 TF w

e de uma

1 TF Term Frequency.

4 - O Projecto de Extraco de Informao da Web

105

forma similar p sim w

max { S sim TF w S sim , 0 6 S TF w

. Seguindo o mesmo raciocnio

estima-se S w TF w e S w S S w . No exemplo que temos construdo, vamos supor que se queria calcular Gain(S, preo2), em relao ao exemplo 4.5. Supe-se tambm que TF(preo) = 4, ento tm-se o seguinte:
p sim preo = min { 3, 7 6 = 0.75 4

p sim preo =

max { 7 3, 0 6 4 = 0.06061 , 70 4 66

consequentemente tm-se p(no|preo) = 0.25 e p(no|preo) = 0.939. Finalmente obtmse: Entropy S preo = 0.8113 , Entropy S preo = 0.33 e
S preo S S preo S

Gain(S, preo) = 0.469

0.8113

0.33

Gain(S, preo) = 0.469

4 66 0.8113 0.33 = 0.111 70 70

Este processo permite medir quais as palavras mais significativas, isto , mais informativas que ocorrem na vizinhana dum elemento a extrair. O ganho de informao uma entre vrias medidas possveis a utilizar, para escolher alguns atributos do dado conjunto de possibilidades. Portanto pode fazer-se uma ordenao e escolher os primeiros atributos mais informativas. A tabela apresenta um exemplo de uma ordenao deste gnero:
Expresso
preo valor venda por assunto de o a

Ganho Inf.
0.200 0.170 0.124 0.070 0.065 0.005 0.003 0.002

Tabela 4.1 - Ganho de informao de palavras


2 Calcular o ganho de informao para a palavra preo

4 - O Projecto de Extraco de Informao da Web

106

Outras Medidas Possveis na Escolha dos Atributos Para alm do ganho de informao existem outras medidas, algumas mais utilizadas na classificao de texto (Information Retrieval) mas que podero ser adaptadas para a extraco de elementos relevantes, como o caso de Mutual Information Text e Odds Ratio [Mladenic & Grobel. 1999] e que de seguida se apresentam:
MutualInfoTxt W = P C i log
i

P W C i P W

OddsRatio W = log

P W sim 1 P W no 1 P W sim P W no

Foram exploradas estas trs medidas, para a seleco de atributos, no nosso problema concreto. Os resultados comparativos sero referidos no capitulo seguinte. Para terminar esta seco, refira-se que o atributo mais importante, a ter em conta, e que ainda no foi referido precisamente a ocorrncia do elemento relevante, isto a expresso textual que ocorre em Ocorrencia(elemento,A), mais precisamente texto[i:j]. Este um atributo que caracteriza a natureza do objecto a extrair e certamente se reveste de uma grande importncia. o nico atributo posicional que consideraremos e consequentemente o seu domnio no ser um conjunto equivalente a {0,1}, semelhana dos restantes atributos, mas tem em conta as expresses que constituem as ocorrncias do elemento relevante, isto , o vector VSx.

4.4.3

Generalizando a conceitos

Uma das dificuldades referidas no final da abordagem anterior prende-se com o domnio dos atributos. O problema consiste na possibilidade de haver uma grande variabilidade nos valores dos atributos posicionais1, o que torna difcil a definio de regras prontas a responder s novas instncias. Um exemplo disto o que acontece quando os valores desses atributos so nmeros reais (por exemplo como sucede no exemplo 4.5, anterior, mais concretamente com os valores no vector VSx, relativo ao elemento preo). O nosso

1 Exemplo: palavra anterior ocorrncia do elemento relevante.

4 - O Projecto de Extraco de Informao da Web

107

objectivo ser tentar generalizar os valores, do domnio do atributo, a conceitos mais gerais que cubram a totalidade ou pelo menos a maior parte desse valores. No exemplo referido, pela simples observao de VSx, constatamos imediatamente que existe de facto uma grande variabilidade (no existem duas expresses iguais). Todavia existe uma forma geral que modelo da maioria das expresses: quase todas so nmeros reais, excepo da quarta linha, VSx[4] = 32 mil (um nmero seguido da palavra mil), neste caso. Assim utilizando um conceito geral que represente um nmero real possvel ultrapassar este problema, neste caso concreto. Denominem-se estes conceitos gerais, simplesmente por conceitos, assim podemos pensar no conceito de nmero real e representar esse conceito com uma notao apropriada. Assim se definirmos o conceito nmero como uma string que contm exclusivamente caracteres do conjunto {0, ... , 8, 9, ,, ., +, , e, E}, podemos dizer que as seguintes strings so instncias do conceito nmero: 7, 6.78, -5.32, 7,5E+2 100000.00, etc. Se notarmos o conceito nmero por NUMERO, constatamos que os elementos de VSx, no exemplo 4.5, se resumem a concretizaes de dois modelos de strings:
[NUMERO] e [NUMERO mil]

Nestes modelos de strings os caracteres '[' e ']', marcam respectivamente o incio e fim das strings. Assim 7 mil e 13,5 mil so instncias do modelo [NUMERO mil], enquanto que a expresso muitos mil no uma instncia deste modelo, nem os 90 mil. Esta ltima expresso contm uma instncia do modelo anterior (90 mil), mas no uma instncia deste. semelhana do conceito NUMERO existem muitos outros conceitos que referenciam entidades do mundo real, sendo til consider-los no processamento de informao textual. Pretende-se que o sistema possa conhecer priori esses conceitos, ou teve de alguma forma acesso a essa informao (ex: Internet) ou algum (ex: utilizador) facultou a mesma. Eis alguns exemplos de conceitos: nmero, data, hora, moeda, pas, localidade, viatura, etc. Estes so s alguns dos conceitos universais, que fazem parte do nosso mundo, os quais o nosso senso comum est habituado a utilizar, quase de forma automtica. Este tipo de conhecimento generalizado susceptvel de ser formalizado. Mas como podero estar formalmente definidos estes

4 - O Projecto de Extraco de Informao da Web

108

conceitos? Repare-se que no pargrafo anterior NUMERO foi definido informalmente. Existem vrios formalismos capazes de concretizar estas definies e neste trabalho ir ser utilizado o formalismo das Gramticas Independentes de Contexto (Context-Free Grammars) [Jurafsky & Martin 2000]. Assim e para o exemplo de NUMERO poder-se- ter uma gramtica completa que define este conceito:
NUMERO -> [NUMERO NUMERO] NUMERO -> [NUMERO,NUMERO] NUMERO -> [NUMERO.NUMERO] NUMERO -> [NUMEROE+NUMERO] NUMERO -> [NUMEROE-NUMERO] NUMERO -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Exemplo 4.6 - Definio formal do conceito NUMERO

Reconhecimento de Local Um dos elementos relevantes considerados neste trabalho o elemento local, como j foi referido. Para este elemento o vector VSx que se obtm, contm nomes de localidades, ruas, cidades, etc. Tal como no exemplo dos valores numricos, tambm aqui importante que o sistema seja capaz de reconhecer que o nome de uma rua, ou uma cidade, so instncias de um conceito mais geral que podemos designar por LOCAL. De seguida mostram-se trs exemplos de instncias do elemento relevante local e que correspondem aos da figura 4.11:
assunto t5 duplex em <local>gaia</local> data zona central de <local>loul</local> perto Assunto apartamento em <local>alvalade</local> urgente

Repare-se que nas trs linhas esto contidas trs diferentes instncias do conceito LOCAL (gaia, loul, alvalade). No sistema desenvolvido foi utilizado um ficheiro contendo todas as localidades, incluindo nomes de ruas, praas, etc, de Portugal, como definio do conceito de localidade: LOCAL.

4 - O Projecto de Extraco de Informao da Web

109

Este ficheiro encontra-se disponvel na Web, no portal dos CTT - Correios de Portugal (http://codigopostal.ctt.pt/pdcp-files/todos_cp.zip) . Isto constitui um exemplo de como a Internet pode facultar conhecimento do mundo real, ao nosso sistema. Assim seguindo o formalismo das gramticas independentes de contexto, podemos definir o conceito LOCAL com uma lista de regras gramaticais, semelhana do que foi feito para o conceito NUMERO. Uma parte duma lista desse gnero mostrada em baixo:

LOCAL -> Rua do LOCAL LOCAL -> Avenida de LOCAL ... LOCAL -> Porto | Lisboa | Coimbra | ... LOCAL -> Rua do Campo Alegre ...

Sintetizando, o nosso sistema trabalha com um conjunto de conceitos pr estabelecidos, que em termos prticos lhe foram fornecidos, e assume isso como conhecimento priori. No significa que o sistema utilize todos os conceitos conhecidos, mas sim os que achar convenientes. Utilizando os diferentes conceitos conhecidos, o sistema tenta criar uma generalizao dos elementos contidos no vector VSx. Uma generalizao de VSx um outro vector, denomine-se de GVSx, que conter as possveis generalizaes dos elementos de VSx.
GVSx <-- Generalizar(VSx)

Assim considerando ainda o exemplo 4.5, temos para aquele vector VSx1 o vector de generalizao GVSx resultante e mostrado em baixo:
GVSx = <[NUMERO], [NUMERO mil]>

Exemplo 4.7 - Vector de generalizao. Pode suceder que no seja possvel generalizar os elementos de VSx, ento nesse caso ter-se- GVSx = VSx, isto , a generalizao ser o prprio vector VSx. Como descrito a seguir,
1 No exemplo 4.5 tem-se: VSx = <119700, 132180, ..., 45000>

4 - O Projecto de Extraco de Informao da Web

110

para cada conceito calculado um valor que indica se promissor considerar esse conceito e proceder generalizao.

O vector GVSx, obtido a partir de VSx ir constituir o domnio do atributo A foco , referido desde a subseco 4.4.1, e utilizado na gerao das instncias de treino (reparar no algoritmo 4.3). Para concluir a presente seco falta explicar o modo como so feitas as generalizaes de VSx, isto , o que feito na pseudo funo Generalizar, mostrada anteriormente?

Funo de Generalizao Apresenta-se o algoritmo utilizado no processo de generalizao dum vector VSx, descrito anteriormente, relativo s ocorrncias dum elemento relevante nos anncios de treino (ex: preo no exemplo 4.5) : Generalizar(v: vector de strings) devolve vector de strings {
Lista <-- para cada conceito Conceitos fazer { valor <-- CalcularValor(conceito, v, Anncios) Lista <-- Lista } para cada (conceito,valor) Lista fazer se valor > ento

{(conceito,valor)}

v <-- SubstConceito(v, conceito) devolver v

} Algoritmo 4.5 - Processo de generalizao.

Para cada conceito conhecido calculado o valor desse conceito no vector em causa, relativo a VSx, e atendendo tambm ao conjunto dos anncios utilizados no treino e que permitiram

4 - O Projecto de Extraco de Informao da Web

111

gerar esse vector, o que faz a funo CalcularValor. O valor calculado deve ser tal que perspective a importncia relativa do conceito em causa, no que diz respeito a uma eventual generalizao das instncias desse conceito que ocorrem no vector, isto se vale ou no a pena generalizar no vector com o conceito em causa. No exemplo 4.5 o valor do conceito
NUMERO deve ser tal que seja superior a por exemplo o conceito (local). Assim uma boa

candidata para a funo CalcularValor ser a funo de Ganho de Informao, conforme referido na subseco anterior (4.4.2), ou outra funo do gnero (Odds Ratio). Portanto o valor dum conceito, varivel valor do algoritmo anterior, traduz o valor informativo de ser considerado um determinado conceito no processo de generalizao dos elementos que compe o vector em causa. Como o algoritmo 4.5 mostra, criada uma lista de pares ordenados (conceito,valor), estabelecendo assim a associao entre cada conceito e o seu respectivo valor. Por fim a generalizao ou generalizaes so concretizadas no vector, para cada conceito cujo valor seja superior a um certo limiar mnimo (). As eventuais generalizaes aos conceitos sero concretizadas atravs da funo SubstConceito. No exemplo 4.5 a generalizao da linha 5 (32 mil) de VSx ao conceito NUMERO, resultaria na string numero mil e o vector GVSx resultante seria o mostrado anteriormente no exemplo 4.7.

4.4.4

Gerao de Instncias Negativas

Num processo de induo de um classificador, como o caso de uma rvore de deciso, so necessrias instncias de treino relativas a cada uma das classes existentes. Existem domnios em que muito difcil obter instncias de treino para uma determinada classe ou classes. O ideal que para cada classe o numero de instncias de treino seja, em numero, um valor semelhante s outras classes. O nosso domnio concreto, contm duas classes (sim e no), queremos saber se extraiamos ou no um determinada expresso textual. Como temos um problema de classificao com duas classes, convm que tenhamos instncias positivas (sim) e instncias negativas (no) de treino. No nosso caso, a dificuldade centra-se em encontrar instncias negativas.

4 - O Projecto de Extraco de Informao da Web

112

Na abordagem com aprendizagem mostrada inicialmente (subseco 4.3.2), essa dificuldade foi contornada gerando instncias negativas de forma aleatria. A procura era feita no texto no contido nas ocorrncias dos elementos relevantes. No final da seco anterior, este mtodo de gerao de instncias negativas foi criticado e referido como um problema e impedimento para que o sistema alcance uma bom desempenho. A principal razo prende-se com a possibilidade das instncias geradas desta forma serem pouco informativas, caracterizando assim mal as instncias desta classe (no extrair: no).

Mtodo Aleatrio A regio de texto utilizada para a gerao de instncias negativas continuar a ser o texto do anncio no qual no ocorre o elemento relevante para o qual se quer gerar essas instncias. Considerando a notao utilizada na subseco anterior, sendo A t = {A1, A2,..., Am} uma coleco de m anncios de treino (anotados), defina-se T = A1 + A2 + ... + Am1, como a totalidade do texto que compe os exemplos de treino. Ento as instncias negativas sero elaboradas tendo por base o texto contido em T subtrado do texto relativo a todas as ocorrncias do elemento relevante considerado, isto : T \ (VSe + VSx + VSd). Temos de retirar este texto para no haver a possibilidade de ser escolhida aleatoriamente uma instncia negativa que sabemos que positiva.

No Cacem, na freguesia do Cacem, concelho de Sintra, vendo apartamento t3, junto da estao da CP, com quartos 15,19 m2; 15,66 m2; 18,56 m2 e sala 31,10 m2, ainda est em estuque nunca foi pintada, espectacular; belssima vista desafogada, muito soalheira. Boa oportunidade! PREO 128.440,00 euros mais informaes tel. 219136000 tlm. 917621828

instncia negativa aleatria (ex.) instncia positiva

Figura 4.12 - Procura de instncia negativa

1 Aqui o smbolo + representa a concatenao do texto dos anncios.

4 - O Projecto de Extraco de Informao da Web

113

A ttulo ilustrativo, na figura anterior, o texto marcado e mais claro faz parte de VSe + VSx +
VSd, para o elemento preo. Todo o resto do texto constitui uma parte1 de T \ (VSe + VSx + VSd). Assim, para gerar uma instncia negativa de forma aleatria, tm-se em conta um

exemplo positivo gerado anteriormente, nomeadamente quantas palavras constituem


Texto[i:j] de Ocorrencia(elemento,A) e formam o valor do atributo de A foco , para essa

instncia positiva. No exemplo de Ocorrencia(preo,A), na figura 4.12, temos Texto[i:j] = 128.440,00, por isso a instncia negativa a gerar toma tambm uma s palavra para o valor de A foco , escolhendo aleatoriamente uma poro do texto em T \ (VSe + VSx +
VSd), tal como ilustrado na figura 4.12, pela marcao mais escura. Os contextos esquerdo

e direito so tomados de igual modo e tamanho, relativamente aos das instncias positivas. Para a instncia negativa aleatria, da figura 4.12, poderia ser escolhido A foco = estao e os contextos esquerdo e direito a 3 palavras seriam t3, junto da e da CP, com, respectivamente. Uma experincia realizada com as primeiras verses do trabalho implementado no mbito desta dissertao, mostraram que o desempenho do sistema era um pouco deficiente, concluindo-se que uma das razes que estavam na origem deste problema era o facto das instncias negativas serem exclusivamente geradas pela forma descrita (aleatoriamente). Por exemplo par o elemento preo, uma das regras induzidas foi a seguinte:

se

A foco = (numero) ento sim

Repare-se que esta regra demasiado geral, pois considerando o anncio da figura 4.12, para alm do preo seriam extrados tambm o nmero de telefone, o nmero de telemvel, bem como os valores das vrias reas, ali especificados, como 15,19; etc. Portanto temos um desempenho muito baixo devido essencialmente a um valor de precision muito degradado - s neste exemplo, de sete elementos extrados, s um que nos interessa. Estratgia near miss Uma outra forma de gerao de instncias negativas foi pensada, para este nosso problema, seguindo a estratgia de near miss definida por [Winston 1992]. Esse processo consiste em
1 s uma parte, pois s estamos a considerar este anncio.

4 - O Projecto de Extraco de Informao da Web

114

procurar instncias negativas to prximas quanto possvel das instncias positivas, entre o texto de T \ (VSe + VSx + VSd). Tendo em conta a importncia prtica do atributo A foco , a estratgia resumiu-se a: para cada instncia positiva, considerar o valor de A foco e procurar entre o texto uma ocorrncia deste valor que no seja uma instncia positiva, para esse elemento relevante. Se for encontrada essa ocorrncia, ento o texto constituinte da mesma ser o valor de A foco , para a instncia negativa. Neste caso sero considerados os tamanhos dos contextos esquerdo e direito, tal com na correspondente instncia positiva. Exemplificando com o anncio contido em 4.12, uma instncia negativa para o elemento preo, homologa da positiva e segundo este processo, poderia ser obtida da linha nmero 3, mostrada em baixo com um possvel valor para A foco , fixado em 31,10, tal como est assinalado no texto: instncia do conceito: NUMERO 15,66 m2; 18,56 m2 e sala 31,10 m2, ainda est em estuque. Supondo que o vector VSx foi generalizado1 e um dos conceitos considerados foi NUMERO, ento na linha anterior o valor assinalado (31,10), seria uma possibilidade a escolher para valor do atributo A foco , por esse valor ser uma instncia do conceito NUMERO, tal como est assinalado. Conjugando o anterior com a instncia positiva, no anncio de 4.12 e admitindo que estamos a trabalhar com contextos esquerdo e direito de tamanho 3 (considerando 3 palavras para cada) ento a instncia positiva e correspondente negativa, gerada da forma descrita, so mostradas na tabela a seguir:

E preo
Instncia + Instncia sim no

E valor
no no

E venda
no no

E por
no no

E assunto
no no

D euros
sim no

A foco
NUMERO NUMERO

Classe sim no

Tabela 4.2 - Instncia positiva e correspondente negativa, considerando generalizaes e a estratgia near
miss para a procura de instncia negativa

1 Tal como descrito na subseco anterior.

4 - O Projecto de Extraco de Informao da Web

115

Repare-se que nesta tabela os valores do atributo A foco so NUMERO, para ambas as instncias, como resultado da generalizao realizada, para este caso. O nmero de instncias negativas geradas desta maneira limitado, e por isso as instncias negativas aleatrias continuam a ser utilizadas. Todavia o ideal minimizar a utilizao de instncias negativas aleatrias, pelas razes apresentadas anteriormente. No computo final tenta-se gerar um nmero de instncias de treino negativas, igual ao das positivas e se for possvel com mais predominncia do tipo near miss.

4.4.5

Regras Induzidas e Sua Aplicao

Na subseco anterior conclumos a descrio do processo de gerao de instncias. Estas so submetidas ao sistema C5 que ir gerar a lista de regras a aplicar na extraco dos elementos relevantes. Agora chegado o momento de explicar como so aplicadas as regras induzidas, na extraco desses elementos.

Regras Induzidas Tendo presente os trs elementos relevantes considerados (preo, tipo, local), sero apresentadas, de imediato, as regras produzidas no treino, pelo sistema utilizado C5, para cada um dos elementos relevantes. Foi feita a traduo da sintaxe das regras do C5 para uma sintaxe mais amigvel e fcil de ler, do tipo se ( condio lgica ) ento classe Elemento preo se ( E preo = sim & A foco Dominio preo ) ento sim se ( D euros = sim & A foco Dominio preo ) ento sim se ( D contos = sim & A foco Dominio preo ) ento sim se ( D cts = sim & A foco Dominio preo ) ento sim se ( D c = sim & A foco Dominio preo ) ento sim

4 - O Projecto de Extraco de Informao da Web

116

Elemento tipo se ( A foco = (numero) assoalhadas ) ento sim se ( A foco = (numero) quartos ) ento sim se ( A foco = t2 ) ento sim se ( A foco = t1 ) ento sim se ( A foco = t3 ) ento sim se ( A foco = t5 ) ento sim se ( A foco = t0 ) ento sim se ( A foco = t2+1 ) ento sim se ( A foco = trs quartos ) ento sim se ( A foco = t 3 ) ento sim se ( A foco = (numero) ass ) ento sim se ( A foco = dois quartos ) ento sim se ( A foco = 2ass ) ento sim se ( A foco = (numero) assoalhada ) ento sim se ( A foco = 3ass ) ento sim se ( A foco = t1+2 ) ento sim se ( A foco = t1+1 ) ento sim Elemento local se ( D data = sim & A foco Dominio local ) ento sim se ( E assunto = sim & A foco Dominio local ) ento sim se ( E vendo = sim & A foco Dominio local ) ento sim se ( E de = sim & E e = no & D em = no & A foco = LOCAL ) ento sim se ( E em = sim & E com = no & E e = no & D e = no & A foco Dominio local ) ento sim se ( E em = no & E com = no & E e = no & D e = sim & A foco = LOCAL ) ento sim se ( E vendo = no & E e = no & D da = sim & A foco = LOCAL ) ento sim se ( A foco = sta LOCAL ) ento sim se ( A foco = quinta do LOCAL ) ento sim

4 - O Projecto de Extraco de Informao da Web

117

se ( A foco = LOCAL LOCAL ) ento sim se ( A foco = LOCAL do bosque ) ento sim se ( A foco = st eullia ) ento sim se ( A foco = quinta do s. joo ) ento sim se ( A foco = praceta quinta de s. joo ) ento sim se ( A foco = st ovideo ) ento sim Estas foram as regras obtidas no treino, para os trs elementos relevantes considerados. Verifica-se que alguns conjuntos de regras dependem mais de alguns atributos e outras de outros. Isto , se repararmos bem, notamos a grande distino entre o atributo A foco e os restantes. Por exemplo, as regras induzidas para o elemento preo, no dependem de A foco enquanto que as regras relativas ao elemento tipo dependem exclusivamente deste atributo. Pode-se tambm observar que para o elemento relevante local, existem regras que no dependem de A foco , outras que dependem s deste e ainda outras que dependem deste e dos restantes atributos. Os atributos diferentes de A foco , esto relacionados com os contextos considerados (esquerdo e direito). Conclumos assim que alguns elementos relevantes dependem mais do contexto envolvente que outros, no nosso caso o elemento preo tem uma forte dependncia do contexto enquanto que o elemento tipo praticamente independente deste. O elemento local um meio termo entre a forte dependncia de preo e a fraca dependncia de tipo. Estas dependncias so sentidas nos resultados obtidos, quando se faz variar o tamanho dos contextos. Esta anlise mostrada na seco 5.2.

Aplicao de Regras Induzidas As regras apresentadas so aplicadas nos novos anncios, com o propsito de realizar as extraces, de acordo com o algoritmo 4.4, apresentado no final da seco 4.4.1. Todavia, perante o descrito anteriormente, houve uma questo prtica que surgiu, relativamente aplicao das regras e consequente extraco. Essa dificuldade resume-se questo de saber como aplicar uma regra que no depende do atributo A foco , mas unicamente de atributos relativos aos contextos esquerdo e direito. Um exemplo disto, so as regras induzidas relativamente ao elemento preo e algumas relativas ao elemento local. Repare-se que nestas

4 - O Projecto de Extraco de Informao da Web

118

regras existe uma condio relativa a A foco (ex: A foco Dominio local ), mas que no foi produzida pelo C5. Esta condio foi acrescentada para melhor elucidar a aplicao de regras deste tipo, e acordo com a explicao que ser feita a seguir. Como vamos aplicar uma regra como a terceira da listagem anterior, relativa ao elemento local, extraco de texto? Esta s determina que o contexto esquerdo dever conter a palavra assunto, dando total liberdade ao atributo A foco . Mas como se pode aplicar isto? Extra-se o texto que sucede a palavra assunto, ou que se encontra duas palavras frente? E que poro de texto se extrai? Uma palavra, duas ou trs? Querer isto significar que uma regra para a qual no esteja definido o atributo A foco invlida para o processo de extraco? Este foi um problema prtico que nos obrigou a uma reflexo mais cuidada. A anlise atenta do problema e do significado atributos veio a revelar o verdadeiro sentido das coisas e a soluo para este aparente problema. O atributo A foco detm uma importncia crucial, mesmo no ocorrendo na regra, para a identificao dos elementos de texto a extrair. Ele detm uma importncia superior aos restantes, na medida em que aquele que mais caracteriza o elemento relevante. Pelo facto do atributo A foco no ocorrer na conjuno de condies duma regra, no significa que este atributo tenha a liberdade de assumir qualquer valor, pois a este est associado um domnio que foi gerado no processo de treino. Portanto s faz sentido deixar A foco assumir valores dentro desse domnio. Designe-se esse domnio por Domnio( A foco ) ou Domnio(elemento), se soubermos qual o elemento em causa (ex: Domnio(local)). Assim para as regras com o atributo A foco livre, dever fazer-se uma restrio dos valores deste atributo ao seu domnio Domnio( A foco ). Em baixo mostram-se os domnios gerados para cada um dos elementos relevantes considerados. Note-se que pelo apresentado na subseco 4.4.3, tem-se: Domnio( A foco ) = GVSx, o vector de generalizaes de VSx.

4 - O Projecto de Extraco de Informao da Web

119

Elemento preo
[euros NUMERO] [NUMERO mil ] [NUMERO]

Elemento local
[quinta do s.joo] [s.joo do LOCAL] [LOCAL LOCAL] [praia da LOCAL] [quinta do LOCAL] [sta LOCAL] [LOCAL] [LOCAL do bosque] [st eullia] [LOCAL do LOCAL] [LOCAL da LOCAL] [s.b. LOCAL] [praceta quinta de s. joo] [stovideo] [vn LOCAL] [s. LOCAL]

Elemento tipo
[trs quartos] [NUMERO assoalhadas] [NUMERO assoalhada] [NUMERO quartos] [t5] [t4] [t-3] [t3] [t2] [t1] [t0] [t2+1] [dois quartos] [2ass] [NUMERO ass] [3ass] [t1+2] [t1+1]

Assim para a aplicao duma regra que no depende de A foco , procura-se no texto a ocorrncia de algum elemento do domnio de A foco , se tal acontecer verifica-se se a regra em causa satisfaz os contextos dessa ocorrncia. No exemplo dado anteriormente (2 regra do elemento local), esta seria satisfeita na poro de texto, contida no esquema da seguinte figura: texto[i-3] texto[i]

(...) assunto: vendo no Porto, apartamento t3 como novo (...) Regra: se ( E assunto = sim & A foco Dominio local ) ento sim Figura 4.13 - Extraco com restrio de A foco a Dominio(local)

4 - O Projecto de Extraco de Informao da Web

120

pois a palavra Porto seria reconhecida como um LOCAL Dominio(local) e por outro lado o contexto esquerdo, 3 palavras esquerda da ocorrncia do elemento (palavra Porto), contm a palavra assunto, condio necessria para que a regra apontada seja satisfeita e permita extrair Porto.

4 - O Projecto de Extraco de Informao da Web

121

4.5 Funcionamento e Detalhes do Sistema


Nesta seco apresentado o modo o modus operandi dos vrios constituintes do trabalho realizado, do ponto de vista do utilizador. Pelo exposto nos captulos anteriores, constata-se que na ptica do utilizador existem duas esferas de aco importantes, diferentes e bem demarcadas: Classificao de Anncios e Extraco de Elementos. Tendo presente esta demarcao, ser apresentado cada um dos itens em separado. No trabalho realizado no houve a preocupao em criar uma interface bonita e amigvel, para o utilizador. Certamente que uma boa interface importante, todavia resolvemos concentrar o nosso esforo no trabalho concernente ao tema desta dissertao, no nos preocupando com estas questes acessrias. Assim os mdulos do nosso sistema so operados num ambiente de linha de comandos. O trabalho foi completamente desenvolvido na linguagem Java, e portanto sob um organizao OOP (Object Oriented Programming). No resto desta seco, o smbolo % ser utilizado como indicador da prompt do sistema operativo.

4.5.1

Classificao de Anncios

No que diz respeito classificao, foram experimentadas duas abordagens: O mtodo dos kvizinhos e Naive Bayes, e na segunda foram ainda experimentadas algumas variaes (sem e com escolha de atributos). Assim existem dois ficheiros principais que implementam duas aplicaes em Java, para cada uma das abordagens:

k-vizinhos Ficheiro principal: Exemplo de execuo:


IBkClassifAPT.java %java IbkClassifAPT ./site

Naive Bayes
NBayesClassifAPT.java %java NBayesClassifAPT ./site

A segunda linha do quadro anterior, exemplifica uma execuo do programa relativo abordagem em causa. O parmetro ./site, que passado na linha de comandos, indica a uma directoria que contm uma coleco de anncios, das duas classes consideradas. Cada anncio dessa directoria deve estar em HTML e deve ainda existir um ficheiro denominado

4 - O Projecto de Extraco de Informao da Web

122

index.html que contm precisamente o ndice dos ficheiros da directoria que o sistema ir utilizar nos processos de treino e teste. Este ficheiro de ndice contm a classificao de cada anncio e deve ser semelhante ao extracto mostrado a seguir:
INSTNCIA - CLASE apt501.htm - nvenda apt502.htm - venda apt503.htm - venda apt504.htm - venda apt505.htm - venda apt506.htm - nvenda apt507.htm - venda

Figura 4.14 - Anncios Classificados

Cada linha formada por um par (nome de ficheiro classe), em que o nome do ficheiro contem um ligao para um anncio, e a respectiva classificao. O termo nvenda designa no venda. Assim qualquer dos programas de classificao, ir procura do ficheiro de indicie, na directoria indicada, guardando as referncias para cada documento e a respectiva classe e criando uma lista de referncias que depois pode ser consultada nas linhas de comandos de cada uma das aplicaes, com o comando list. Passarei a descrever as principais funcionalidades, opes de linha de comandos, da aplicao NBayesClassifAPT.java, sendo a outra aplicao semelhante a esta em termos de operabilidade e at um pouco mais simples (com menos comandos), uma vez que esta implementa a possibilidade do utilizador realizar escolha de atributos, de acordo com o descrito na seco 4.2.3. Aps a entrada na aplicao o utilizador fica posicionado numa prompt, que neste caso representada por: NaiveBayes>. Pode ser obtida ajuda com o comando help ou simplesmente ?, donde ser produzida a seguinte listagem:

4 - O Projecto de Extraco de Informao da Web

123

classes - display the diferent classes stats - display statistics features <n> - sets n features (Feature Subset Selection) positive <yes|no> - sets all positive features (Inf. Gain) set measure - choose measure function, for feature selection. learn <file path> <class> classify <path> freq(<word>) - frequency of "word" in the vocabulary freq(<word>|<class>) - frequency of "word" in the "class" fi(<word>) - feature value of "word" crossv [n] - n-fold cross validation (default: n=10) list - list examples referenced help (?) - get help exit - exit this prompt

Tabela 4.3 Comandos de NbayesClassifAPT Na listagem anterior, cada comando contm uma sua descrio sucinta, o que suficiente na maioria dos comandos, para quem conhecer o contexto de trabalho desenvolvido. Alguns comandos dependem de parmetros recebidos, por exemplo o comando features obrigatrio <n> (ex: features comando crossv
<yes|no>, [n], 50). <n>

estabelece o nmero de atributos a considerar nmero esse que indicado no parmetro Os caracteres < e > indicam obrigatoriedade do parmetro, enquanto que [ e ] indicam que o parmetro opcional, como o caso do que realiza validao cruzada de n blocos, sendo n = 10, por omisso. O caracter | indica opcionalidade entre parmetros, como acontece no comando positive aqui o utilizador indica que quer ou no que todos os atributos cujo ganho de informao seja maior que zero, sejam considerados. Existem ainda comandos que tm uma sintaxe funcional, como o caso de freq(<word>|<class>), onde o caracter | tem um significado especial (condicionalidade). Este ltimo comando calcula a frequncia da palavra (word) na classe indicada (class), nos exemplos de treino considerados. H ainda a salientar o comando set
measure

que apresenta um pequeno menu ao utilizador, permitindo-lhe

seleccionar a medida para escolha de atributos, por exemplo: Ganho de Informao ou Odds Ratio, conforme apresentado na seco 4.2.3.

4.5.2

Extraco de Elementos

semelhana do que foi feito nas experincias de classificao realizadas, tambm aqui foi implementada uma pequena linha de comandos. Esta permite o controlo de todo o processo e possvel experimentar todas as descries apresentadas neste trabalho (extraco), como o carregamento dos dados e manipulao destes, escolha dos dados de treino e teste, alguma

4 - O Projecto de Extraco de Informao da Web

124

manipulao sobre o texto e algum clculo estatstico sobre o mesmo. Antes de descrever as principais funcionalidades dessa linha de comandos, apresentada uma imagem geral do sistema desenvolvido, com alguma descrio dos principais componentes. O trabalho de extraco tambm foi implementado em linguagem Java. Foram implementadas um conjunto de classes, das quais quase todas se encontra representadas no modelo UML da figura 4.15. Nesta seco o termo classe empregue com o significado da terminologia da OOP (Object Oriented Programming) e no de acordo com o significado habitual que tem sido dado neste trabalho e que relativo Data Mining. Assim, a figura 4.15 mostra no s um conjunto de classes, com alguns atributos e mtodos, mas tambm as relaes de herana (OOP) que existe entre algumas delas. A principal classe, de todo o trabalho de extraco implementado, a denominada de ExemplosAPT. O nome quer significar um conjunto de exemplos de anncios habitao (APT: abrevia AParTamento) que esta classe controla, atravs da disponibilizao um conjunto de mtodos que permitem satisfazer as exigncias objectivos iniciais deste trabalho. A prpria linha de comandos implementada nesta classe. Como se pode perceber da figura 4.15, esta classe est relacionada com todas as restantes, quer por relaes de herana, quer por utilizar um conjunto de objectos (ex: atributos desta classe VARX: Variaves) que so instncias das doutras classes. A classe ExemplosAPT derivada da classe StatWords, sendo esta derivada da classe HashStr que por sua vez extenso da classe Hashtable da linguagem Java que define e e permite manipular uma tabela de hash dum qualquer objecto. A classe HashStr uma adaptao da sua classe pai manipulao de Strings (classe String do Java), permitindo estabelecer uma relao entre cada chave da tabela de hash, que neste caso uma string, e um valor numrico inteiro. A classe StatWords, cujo nome significa Words Statistic uma adaptao manipulao de texto, permitindo sobretudo uma viso estatstica dos elementos do texto: frequncias e probabilidades de caracteres e palavras, no texto, etc.

4 - O Projecto de Extraco de Informao da Web

125

Figura 4.15 - Principais classes (UML) Classe Variveis: Esta classe serve para gerir um conjunto de variveis da linha de comandos implementada, sendo aqui uma uma varivel identificada por uma string (o seu nome) e o seu contedo correspondente a um vector de strings.

4 - O Projecto de Extraco de Informao da Web

126

Classe Categoria: Esta uma classe abstracta que define o que uma categoria, no sentido do que apresentado na seco 4.4.3. As n classes derivadas desta classe, representadas na figura anterior por WCatg-1, ... WCatg-n, definem uma coleco concreta de n categorias. Nestas n classes o mtodo abstracto satisfy, da classe abstracta Categoria, est implementado e aquele que para uma determinada categoria (ex: Local) verifica se a string recebida de facto um elemento dessa categoria (ex: Porto). A classe WCategorias depende directamente da classe Categoria, pois no mais que a definio duma estrutura que permite manipular uma coleco (vector) de categorias, repare-se esta classe tem, como nico atributo, um vector de objectos do tipo Categoria. Atravs desta classe possvel determinar, por exemplo, se uma dada string uma instncia de alguma categoria conhecida, segundo o que foi descrito na seco 4.4.3. Classe RealX: uma classe auxiliar que implementa uma relao entre uma string (atributo sx) e uma coleco de valores reais (atributo vx) que no mnimo ter um nico valor real. Esta coleco de valores reais pode ser interpretada como um vector, um conjunto ou uma sucesso, dependendo daquilo que necessrio fazer. Um exemplo da aplicao desta classe a criao de um ranking de palavras ou expresses, estando cada uma associada a um determinado valor real calculado, por exemplo o Ganho de Informao, neste caso teramos um vector de elementos do tipo RealX, isto RealX[]. Classes StrX e VectX: So classes estticas implementadas, contendo cada um delas uma vasta coleco de funes estticas para manipulao de strings ou arrays de strings, no caso de StrX, e arrays de nmeros (inteiros ou reais), no caso de VectX. Funcionam como bibliotecas de funes que foram implementadas pelas necessidades surgidas durante o trabalho desenvolvido, por exemplo determinadas operaes sobre texto, no existindo as mesmas implementadas na linguagem Java, apesar da rica coleco de classes e mtodos disponveis. Cada uma das classes apresentadas na figura 4.15 est implementada num ficheiro separado cujo nome constitudo pelo nome da classe seguido da extenso .java, por exemplo ExemplosAPT.java. Mais alguns detalhes destas classes so fornecidos em anexo, como o caso dos cabealhos de cada mtodo, devidamente comentados.

4 - O Projecto de Extraco de Informao da Web

127

De seguida ser feita uma descrio da linha de comandos implementada, semelhana do que foi feito na sub-seco anterior, apresentando assim o funcionamento do sistema do ponto de vista do utilizador. Como foi referido, a classe ExemplosAPT.java a classe mais importante do trabalho de extraco implementado e ela que implementa a linha de comandos que permite operar o sistema. Aps o incio da aplicao (com o comando %java ExemplosAPT) o utilizador fica posicionado na linha de comandos desta e cuja prompt : comando>. A tabela 4.5.2-1 que mostrada a seguir consiste numa listagem de todos os comandos disponveis, tendo sido conseguida atravs do comando ? ou help. Como se pode verificar, os comandos esto organizados por trs grupos: Variveis, Gerais e Atalhos Definidos. O primeiro grupo de comandos, intitulado Variveis, apresenta uma lista de possibilidades sobre variveis, sendo variveis aqui interpretadas como um vector (array) de strings. Os comandos do tipo var <-- Funo(.,...,.) so operaes cujo o resultado atribudo a uma varivel (var), por exemplo o comando X <-- load(file) carrega todas as strings contidas no ficheiro com o nome file para a varivel X. Embora todos os comandos contenha um pequeno comentrio, na tabela apresentada, sero descritos com maior detalhe alguns deles, por estarem directamente relacionados com o trabalho desenvolvido.

Comandos que Actualizam Variveis Os comandos var <-- gerNGramL(tag,N) e var <-- gerNGramR(tag,N) obtm um vector de strings, a partir dos exemplos (anncios) carregados, contendo as sequncias de N palavras que ocorrem esquerda e direita, respectivamente, de todas as ocorrncia da etiqueta tag (etiqueta XML, ex: <preco> ou </preo>). Ainda relacionados com estes

4 - O Projecto de Extraco de Informao da Web

128

COMANDOS: --------------------------------------------------------[VARIAVEIS (uma var. contm um array de strings)] ------------------------------------------------freqchr <var> - especifico para uma variavel generalizar <str> - analisa e tenta generalizar a string loadv <var> <file> - ler uma varivel dum ficheiro print <var> - imprime a varivel se existir savev <var> <file> - grava a varivel se existir setvvar(var,k,s) - altera o elemento k, na varivel "var", para "s" sort <var> - ordena vname var <-- [s1,...,sn] - redefine "var" com o vector de strings s1...sn var <-- generalizar(var) - tenta generalizar o array de strings var <-- extract(file,vrules,DomAfoco) - extraco de file var <-- gerNEL(tag,N) - gera vector de N-GRAMS esquerda var <-- gerNGramL(tag,N) - gera vector de N-GRAMS esquerda da tag var <-- gerNGramR(tag,N) - gera vector de N-GRAMS direita da tag var <-- gerVNegEx(tag,N,M) - gera vector de exemplos negativos, aleatoriamente var <-- loadVR(filename) carrega um vector de regras var <-- gerWSig(var) - palavras mais significativas var <-- load(file) - carrega um vector, a partir de um ficheiro var <-- seekNeg(tag,vgen,vesq,vdir) - procura exemplos negativos var <-- splitWD(var) - separa por palavras var <-- tagB(tag) - linhas entre tags var <-- tagL(tag) - linhas esquerdas a tag var <-- tagR(tag) - linhas direitas a tag -------[GERAIS] -------exit - voltar ao sistema operativo freqchr - vector de frequncias de caracteres freqw word - frequencia de uma palavra w GIC5 <elemento> <fich. outp.> - gera instncias para o C4.5/C5 GIWEKA <elemento> <fich. outp.> - gera instncias para o WEKA load filename - ler um ficheiro de exemplos mxnContexto - mostra o tamanho dos contextos considerados nTextESQ=<n> - define o tamanho do contexto esquerdo nTextDIR=<n> - define o tamanho do contexto direito nContext=<n> - define o tamanho do contexto esquerdo e direito listFoco tag - mostra as instncias de Afoco, de todos os exemplos probw word - P{word|treino} probCtg categoria - P{categoria|treino} ------------------[ATALHOS DEFINIDOS] ------------------GIL [filename] - Gera Instancias de Local (C4.5/C5) GIP [filename] - Gera Instancias de Preo (C4.5/C5) GIT [filename] - Gera Instancias de Tipo (C4.5/C5) gerar instancias c5 - gera as instncias C5 dos trs elementos relevantes considerados, para a directoria denominada C5 e com nomes de ficheiro: preco.*, tipo.*, local.*, sendo que "*" in {names, data}. testC5 <alvo> <tag> - realiza um teste de extraco, para um elemento relevante (tag), no ficheiro indicado por "alvo". As regras de extraco so lidas do ficheiro "./C5/<tag>.rules") gerado pelo C5. O output gerado para o ficheiro: "EX<tag>.t", exemplo: "EXpreco.t", na directoria "./C5". testarC5 - executa o atalho "testC5", para cada um dos elementos relevantes considerados: {preco, tipo, local}. Como resultado so produzidos os ficheiros EXpreco.t, EXtipo.t e EXlocal.t

Tabela 4.4 Comandos do mdulo de extraco

4 - O Projecto de Extraco de Informao da Web

129

dois comandos, o comando var <-- tagB(tag), gera o vector contendo todas as strings que ocorrem entre as etiquetas XML, indicadas por tag. O comando var <-- generalizar(var) realiza a generalizao, se possvel, das strings contidas no vector de strings da varivel recebida como parmetro, segundo o que foi apresentado na seco 4.4.3. Os comandos var <--gerVNegEx(tag,N,M) e var<--seekNeg(tag,vgen,vesq,vdir) ambos geram instncias negativas, o primeiro gera-as quase aleatoriamente enquanto que o segundo faz uma procura do tipo near-miss [Winston, 1992], tendo em conta o elemento relevante (tag), o vector de generalizaes (vgen), e os vectores de contexto esquerdo (vesq) e direito (vdir). O comando var <-- loadVR(filename) carrega um vector de regras de extraco, a partir dum ficheiro de regras gerado pelo sistema C5 (*.rules - ex: preco.rules). Este vector de regras utilizado na aco de extraco, realizada com o comando apresentado a seguir. O comando var <-- extract(file,vrules,DomAfoco) consuma a extraco de elementos relevantes, no ficheiro indicado (file), mediante um vector de regras (vrules) e em conjuno com o domnio do atributo conformidade com o descrito na seco 4.4.5. Ainda neste conjunto de comandos, o comando print <var>, permite visualizar o contedo de qualquer varivel. A verso simplificada deste comando, isto print, lista todas as variveis presentes e disponveis linha de comandos.
A foco

(DomAfoco), em

Comandos Gerais No segundo grupo de comandos esto um conjunto de comandos gerais, como o prprio nome cabealho indica. Destes destacam-se os seguintes:

4 - O Projecto de Extraco de Informao da Web

130

O comando load filename carrega uma coleco de anncios de treino (anotados), a partir dum nico ficheiro XML (ex: fx1.xml ou fx2.xml ). Este ficheiro resultante de pr processamento realizado sobre um conjunto de ficheiros de anncios. Os comandos mxnContexto, nTextESQ=<n>, nTextDIR=<n> e nContext=<n> fazem a gesto do tamanho dos contextos esquerdo e direito, ao elemento relevante, conforme o apresentado na seco 4.4.1. Os comandos GIC5 <elemento> <fich out.> e GIWEKA <elemento> <fich outp> geram instncias de treino para os sistemas C5 e Weka, respectivamente, a partir dos exemplos carregados e tendo em conta o elemento relevante indicado em <elemento> (ex: local). As instncias so produzidas para o ficheiro cujo nome indicado.

Atalhos Um atalho consiste num comando que realiza vrios comandos previamente definidos. Cada um dos atalhos est minimamente explicado, sendo fcil perceber quais os comandos anteriores utilizados por cada um.

5 - Avaliao e Resultados

131

5 Avaliao e Resultados

Neste capitulo feita uma avaliao e apresentados os resultados obtidos com o trabalho desenvolvido no mbito desta dissertao, descrito anteriormente, nomeadamente em todo o captulo 4. Como se pode constatar no referido captulo, foram apresentados dois mdulos principais de trabalho realizado: Classificao de Anncios (4.2) e Extraco de Elementos (4.3), com maior destaque para o segundo, uma vez que este o foco principal deste trabalho. Consequentemente os resultados sero apresentados em separado e para cada um destes mdulos. O trabalho desenvolvido avaliado segundo as medidas mais convencionais, utilizadas na rea do Information Retrieval e Information Extraction, isto : precision, recall e
F measure . Passar-se- descrio sucinta de cada uma destas medidas e a sua importncia para

a avaliar o desempenho de sistemas nestas reas. Em qualquer uma destas o objectivo final e concreto que o sistema seja capaz, por um lado, de obter a informao pretendida da coleco de informao disponvel e, por outro, obter s essa informao e no outra qualquer considerada no relevante. Um sistema ser tanto melhor quanto maior o volume de informao relevante que consegue obter, mas tambm quanto mais pura for a informao extrada, mais expurgada de informao no relevante. Atendendo a este contexto, temos ento as duas medidas apresentadas de seguida:
precision = informao relevante extraida informao extrada

recall =

informao relevante extrada informao relevante existente

A primeira medida precision, mede a pureza da informao obtida, o quanto ela limpa de informao no relevante, a segunda recall, mede o quanto da informao relevante, existente numa coleco alvo, foi de facto obtida. Como facilmente se percebe, so medidas do tipo probabilstico, situadas no intervalo real [0, 1]. A experincia realizada no final da subseco 4.3.2, consistiu em utilizar uma abordagem preliminar de extraco, para o nosso problema concreto. As regras induzidas para o elemento

5 - Avaliao e Resultados

132

preo, atravs dessa abordagem, realizaram 327 extraces, numa coleco de anncios que continha 86 ocorrncias do mesmo elemento. Por outro lado, das 327 extraces s 5 eram correctas. Assim a aplicao das medidas referidas resulta em precision =
recall = 5 0.0153 e 327

5 0.0581 . Temos assim uma ilustrao do clculo destas medidas e tambm a 86

confirmao quantitativa de que a abordagem de 4.3.2 era mesmo m. Quando se quer uma nica medida de avaliao dum sistema, utiliza-se a chamada F measure que resulta duma combinao das duas medidas anteriores:
1 S
2 2

F =

precision recall

precision S recall

em que

um parmetro que pesa a importncia entre precision e recall. Para

=1 a

medida F pondera com o mesmo peso os valores de precision e recall, portanto a qualidade ou no de ambos tm a mesma importncia para o resultado:
2 precision recall , F 1 precision , recall = F 1 recall , precision precision S recall

F1 =

Se

U 1 ento o valor de recall pesado com maior importncia, em relao ao valor de

precision, tanto mais quanto maior for o parmetro

, repare-se que

S

lim F = recall . Neste

caso ( U 1 ) o avaliador do sistema d mais importncia quantidade de informao relevante que o sistema consegue extrair. Se 0 V T 1 , ento o valor de precision que ponderado com maior importncia, tanto mais quanto mais prximo de 0 estiver , repare-se

que F 0 = precision . Aqui o avaliador d mais importncia pureza da informao obtida em relao ao nmero de elementos relevantes obtidos. Nos resultados mostrados nas seces que se seguem, considera-se
= 1 e portanto F measure = F 1 .

Um quadro habitualmente apresentado, em problemas de classificao, a denominada matriz confuso. Este quadro ou matriz relaciona a classificao realizada pelo sistema com

5 - Avaliao e Resultados

133

a classificao verdadeira, por exemplo se a classificao binria, portanto com duas classes, denominem-se C + (positivo) e C - (negativo), pode questionar-se quantos elementos de informao da classe C + foram classificados como tal e o mesmo para a classe C - ? Podemos tambm querer saber quantos elementos que pertenciam classe C + foram mal classificados, como sendo elementos da classe C - , pelo sistema, e vice-versa. Estes valores so expressos na matriz confuso, o quadro que se segue, quadro 5.1, um exemplo de uma matriz confuso para um problema de classificao binria tal como o descrito e semelhante ao trabalho desenvolvido e apresentado na seco 4.2.

C^ +

C^ -

C+ C-

c11 c21

c12 c22

Quadro 5.1 - Matriz confuso (duas classes)


^ C - designam a classe predita pelo sistema, positiva e negativa, No quadro anterior C ^ + e

respectivamente. Assim os valores c11 e c22 traduzem o nmero de elementos correctamente classificados e que num problema de duas classes tambm so designados de verdadeiros positivos (TP True Positive) e verdadeiros negativos (TN True negative). O valor c21 o nmero de elementos da classe C - que foram incorrectamente classificados como C ^ + , tambm denominados de falsos positivos (FP False Positive). Simtrica mente c12 expressa o nmero de elementos classificados como negativos ( C ^ - ) mas cuja verdadeira classe era C + , so os chamados falsos negativos (FN False Negative). Como se percebe, o ideal que se tenha c21 + c12 = 0. A partir de uma matriz confuso, facilmente se calculam os valores de precision e recall e consequentemente F measure , mencionados anteriormente, da seguinte forma:
c11 c11 S c21 c11 c11 S c12

precision =

e recall =

5 - Avaliao e Resultados

134

isto : precision =

TP TP e recall = . TP S FP TP S FN

5 - Avaliao e Resultados

135

5.1 Classificao de Anncios

Na primeira seco deste captulo so apresentados os resultados obtidos, referentes ao trabalho de classificao, descrito no captulo 4 (seco 4.2). Foram experimentadas duas grandes abordagens ao problema, que consistia em classificar uma coleco de anncios em duas classes: venda e no venda. A primeira abordagem enquadra-se no tema Aprendizagem baseada em Instncias, mais concretamente o mtodo dos k vizinhos mais prximos. A segunda abordagem utiliza Aprendizagem Bayesiana, em particular: Naive Bayes. Uma variante desta segunda abordagem, que tambm foi experimentada, consistiu em incorporar escolha de atributos no mtodo (feature subset selection) [Mladenic & Grobel. 1999], apresentado na subseco 4.2.3. Assim e sistematizando, temos trs abordagens experimentadas, no domnio da classificao: k vizinhos mais prximos Naive Bayes Naive Bayes com escolha de atributos

Os resultados obtidos em cada uma das abordagens, foram produzidas a partir duma coleco de 120 anncios, dos quais 68 so relativos venda de habitao (classe: venda) e 52 relativos a outros assuntos (classe: no venda). Foi feita validao cruzada em blocos de 10, conhecida por 10-fold cross validation, sobre estes dados, que consiste em dividir os exemplos em blocos de n elementos (neste caso n = 10), e depois treinar o sistema com todos os blocos, excepo do bloco i, testando o sistema no bloco i, que foi deixado fora durante o treino. Este processo repetido n vezes, variando i de 1 at n. Em cada teste (i) so contados e acumulados cada um dos valores de TP, FN, FP, TN e no final tem-se a matriz confuso, referida no incio deste captulo. Comeando assim pelo primeiro ponto (k vizinhos mais prximos), temos a matriz confuso, obtida por validao cruzada de 10 blocos, e as correspondentes medidas de desempenho: precision, recall e F measure , obtidas nesta abordagem e sobre os dados referidos:

5 - Avaliao e Resultados

136

----------------------------------------MATRIZ CONFUSO ----------------------------------------venda venda no venda 53 13 no venda 15 39

-----------------------------------------

precision:........

0.803

recall:........... 0.779

F measure :........

0.791

Quadro 5.2 k-vizinhos

Tambm para a segunda abordagem apresentada um quadro homlogo ao anterior, traduzindo o desempenho obtido, no mesmos conjunto de dados:
----------------------------------------MATRIZ CONFUSO ----------------------------------------venda venda no venda 64 22 no venda 4 30

-----------------------------------------

precision:.... recall:.......

0.744 0.941 0.831

F measure :.....

Quadro 5.3 Naive Bayes

Este quadro mostra que em termos gerais o desempenho aumentou nesta abordagem, em relao anterior, passando o valor de F measure , de 0.791 para 0.831, confirmando aqui tambm o que geralmente defendido em relao a estas duas abordagens, nos problemas de classificao de documentos. No entanto podemos observar que o nmero de falsos positivos cresceu significativamente, fazendo com que o valor de precision se degradasse.

5 - Avaliao e Resultados

137

Uma variante da abordagem pelo mtodo Naive Bayes, que foi experimentada, consiste na utilizao deste mtodo, mas com escolha de atributos, tal como foi apresentado na subseco 4.2.3. A seguir sero mostradas dois quadros semelhantes aos anteriores e que expressam o resultados obtidos, no primeiro com 50 atributos escolhidos e no segundo com 200:
----------------------------------------MATRIZ CONFUSO ----------------------------------------venda venda 58 no venda 10

no venda

11

41

-----------------------------------------

precision:.... recall:.......

0.841 0.853 0.847

F measure :.....

Quadro 5.4 Naive Bayes (50 atributos)

com 200 atributos (features) escolhidos obteve-se:


----------------------------------------MATRIZ CONFUSO ----------------------------------------venda venda 61 no venda 7

no venda

13

39

-----------------------------------------

precision:.... recall:.......

0.824 0.897 0.859

F measure :.....

Quadro 5.5 Naive Bayes (200 atributos) Dos dois quadros anteriores percebe-se que quando utilizada escolha de atributos, o desempenho em geral aumenta, confirmando assim as concluses de outros autores [Mladenic

5 - Avaliao e Resultados

138

& Grobel. 1999]. Repare-se que s com 50 atributos (Quadro 5.4) o valor de F measure aumentou para 0.847, relativamente ao seu homlogo no quadro 5.3. Existe ainda o ganho de eficincia computacional, obtido por esta variante e que resulta da grande reduo no nmero de atributos, uma vez que no mtodo Naive Bayes, sem escolha de atributos, a classificao de um novo documento envolve todas as palavras contidas nos exemplos de treino. Comparando os quadros 5.4 e 5.5 conclumos que houve uma melhoria geral do desempenho, quando foram considerados mais atributos, no caso de 200, obteve-se um valor de F measure igual a 0.859. Verificou-se tambm, para o nosso domnio, que para um nmero de atributos superior a 200, o desempenho no melhora, tendendo mesmo a degradar-se, como se v no grfico mostrado a seguir:

0,8650 0,8600

Fmeasure

0,8550 0,8500 0,8450 0,8400 0 50 100 150 200 250 300 350 400

#{atributos}

Tal como explicado na seco 4.2.3, a medida utilizada para o clculo do valor dum atributo foi o ganho de informao. Constatou-se, no caso concreto, que o valor #{atributos} = 200 compreende sensivelmente o conjunto de atributos para os quais o ganho de informao maior que zero, isto existe algum ganho de informao. Assim a concluso tirada que considerar atributos no informativos tende a degradar o desempenho. No final da seco 4.2.3 foram referidas mais duas medidas para a escolha de atributos: Mutual Information Text e Odds Ratio. Os resultados obtidos com estas medidas foram sensivelmente prximas do obtido com o ganho de informao, tendo esta ltima mostrado melhor resultado, no nosso domnio concreto.

5 - Avaliao e Resultados

139

5.2 Extraco de Elementos

chegado o momento de apresentar o desempenho do sistema, resultante do trabalho principal desenvolvido no mbito desta dissertao e em resposta aos objectivos iniciais propostos. Para a avaliao do sistema foi utilizada uma coleco de cerca de 200 anncios do domnio (venda de habitaes), dividia em dois grandes grupos de 100 anncios cada. Referencie-se estes dois grupos como: Grupo A e Grupo B. Como foi referido anteriormente, foram considerados trs elementos relevantes a extrair: preo, tipo, local. Assim o seguinte quadro mostra quantas instncias de cada um destes elementos relevantes existem nos dois grupos de anncios:

Grupo A preo tipo local 62 138 187

Grupo B 92 211 220

Os resultados foram obtidos realizando validao cruzada com estes dois grupos de anncios, primeiro treinando o sistema com o Grupo A e testando-o no Grupo B e depois treinando-o com os anncios do Grupo B e testando o sistema nos anncios do Grupo A. O quadro seguinte mostra os resultados obtidos, para cada elemento relevante considerado:

treino
<preo> <tipo> <local> <preo> <tipo> <local> Grupo B Grupo A

teste
Grupo B

extrados
104 185 272 77

TP
82 185 177 56 84 123

FP
22 0 95 21 0 34

Precision
0,788 1,000 0,651 0,727 1,000 0,783

Recall
0,891 0,877 0,805 0,903 0,609 0,658

Fmeasure
0,837 0,934 0,720 0,806 0,757 0,715

Grupo A

84 157

Na tabela anterior, a coluna extrados indica o nmero total de extraces realizadas nos dados de teste, incluindo os verdadeiros positivos (true positive) e falsos positivos (false positivie). As colunas TP e FP indicam o numero de verdadeiros positivos e falsos positivos, respectivamente, entre o total de elementos extrados, repare-se que TP S FP = extrados . A prxima tabela sintetiza a tabela anterior, mostrando os valores de precision, recall e F measure

5 - Avaliao e Resultados

140

calculados como a mdia dos dois valores obtidos na tabela anterior, para cada elemento relevante.
m=n=3 <preo> <tipo> <local>

precision
0,758 1,000 0,717

recall
0,897 0,743 0,731

Fmeasure
0,821 0,846 0,717

Das tabela anterior, percebe-se que o elemento relevante mais difcil1 de extrair, consiste no elemento local, como seria de esperar, enquanto que a tipologia, elemento tipo, aquele no qual o desempenho foi maior. Um nico valor que expresse o desempenho mdio do sistema, para os trs elementos relevantes o valor mdio de F measure e que igual a 0,795.

Anlise das Dimenses do Contexto Pelo exposto no captulo 4.4, as regras de extraco induzidas, so geradas tendo em conta o contexto esquerdo e direito, ocorrncia dum elemento relevante, por exemplo para o elemento preo, estes dois contextos so designados por: Contextoesq preo , A , m e
Contexto dir preo , A , n respectivamente. Os valores m e n, indicam o nmero de palavras

consideradas para cada contexto. Os resultados expressos nas duas tabelas anteriores foram obtidos considerando m = n = 3 , isto , para cada contexto foram consideradas trs palavras, a sequncia de trs palavras que precede a ocorrncia do elemento relevante e a sequncia de trs que sucede essa mesma ocorrncia. Pode ento colocar-se a seguinte questo: ser que considerando contextos mais latos, m , n U 3 , se obtm melhores desempenhos e em que medida? Os dois quadros que se seguem so hmologos dos dois anteriores e mostram o desempenho, considerando m = n = 7 :

treino
<preo> <tipo> <local> <preo> <tipo> <local> Grupo B Grupo A

teste
Grupo B

extraidos
139 185 291 108

TP
86 185 191 56 88 156

FP
54 0 100 52 0 72

Precision
0,612 1,000 0,656 0,519 1,000 0,684

Recall
0,924 0,877 0,868 0,903 0,638 0,834

Fmeasure
0,736 0,934 0,748 0,659 0,779 0,752

Grupo A

88 228

1 A dificuldade deve-se natureza do elemento a extrair. Existem muitas referncias a localidades que podem ser expressas e at abreviadas de maneira diferente. Por outro lado existem nomes de localidades que tm outros significados na lngua portuguesa (ex: Tbua, Caminha ).

5 - Avaliao e Resultados

141

o respectivo quadro dos valores mdios:

m=n=7 <preo> <tipo> <local>

precision
0,565 1,000 0,670

recall
0,914 0,757 0,851

Fmeasure
0,697 0,857 0,750

e o valor mdio de F measure obtido de 0,768. Repare-se que em termos gerais o desempenho piorou sensivelmente, pois no primeiro caso o desempenho mdio foi de 0,795 e agora de 0,768. Se compararmos as colunas de recall verificamos que esta medida melhorou para todos os elementos, como se esperaria, pois considerando contextos mais amplos existem mais hipteses de que as regras induzidas sejam satisfeitas e consequentemente mais elementos relevantes so encontrados. Todavia este ganho tem um preo que se traduz num decrscimo dos valores de precision, pelo facto de mais lixo, estar a ser extrado, repare-se que este valor desceu de 0,758 para 0,565, no elemento preo e de 0,717 para 0,670, no elemento local. O seguinte grfico mostram a evoluo do valor mdio de F measure para contextos simtricos (m=n) e com tamanhos variando entre 3 e 7:

0,810 0,800 0,790

F measure

0,780 0,770 0,760 0,750 0,740 0,730 2 3 4 5 6 7 8

Contexto(m=n)

Figura 5.1 - Variao do tamanho do contexto

5 - Avaliao e Resultados

142

Uma primeira informao que inferida da observao do grfico anterior o seu valor mximo que acontece para um contexto de tamanho 4. Portanto, para estes elementos e neste domnio parece que em termos de contexto o melhor trabalhar com este valor. O grfico tambm denota que o aumento do tamanho do contexto no implica necessariamente um aumento do desempenho, mas pelo contrrio este tende a degradar-se, embora tenhamos ali diferenas muito pequenas h realmente um decrscimo geral do desempenho a partir do tamanho 4. Esta degradao compreensvel, uma vez que palavras muito afastadas ocorrncia dum elemento relevante sejam completamente independentes dessa ocorrncia. A partir de certa distncia ao elemento as palavras do texto deixam de estar relacionadas com o elemento ocorrido, o texto comea a referir-se a outros assuntos que nada tm a ver com aquela ocorrncia. A medida que tende a degradar-se com o aumento do contexto a precision, uma vez que o que acontece que so extrados mais elementos no relevantes e portanto a pureza da informao extrada decresce. O valor de recall tende a melhorar com o aumento do contexto pois aumentam as probabilidades de encontrar mais elementos relevantes. Estes fenmenos so mostrados no grfico que se segue. As tabelas relativas aos contextos considerados {3 ... 7}, podem ser consultadas em anexo.

0.860 0.840

Fmeasure

0.820 0.800 0.780 0.760 0.740 2 3 4 5 6 7 8

Contexto (m=n)
recall precision

Figura 5.2 - Discriminao entre precision e recall No grfico anterior os valores de precision e recall so valores mdios para os trs elementos relevantes considerados. Nesta variao de contexto, se analisarmos o que acontece com cada um dos elementos relevantes, constata-se que existem algumas diferenas e que so inerentes

5 - Avaliao e Resultados

143

natureza dos elementos a extrair. O prximo grfico mostra o desempenho geral do sistema, expresso em F measure , para cada elemento relevante:

0,900

0,850

Fmeasure

0,800

0,750

0,700

0,650 2 3 4 5 6 7 8

Contexto (m=n)
preo tipo local

Figura 5.3 - Discriminando os trs elementos Daqui podemos perceber que existem elementos relevantes que possuem uma maior dependncia do contexto, em relao a outros. Por exemplo o desempenho sobre o elemento tipo mantm-se quase constante com a variao das dimenses de contexto. Isto est em conformidade com as regras induzidas para este elemento e referidas no capitulo 4, que mostram que a identificao deste elemento depende exclusivamente do atributo A foco . V-se tambm que existem diferenas entre o elemento preo e o local, pois no elemento preo o desempenho comea logo a degradar-se e muito a partir do valor 3, enquanto que para o local o desempenho s com dimenses de contexto superiores ( > 5 ) comea a degradar-se perdendo muito pouco. Portanto um contexto mais amplo para o elemento preo no benfico, mostrando que este elemento depende dum pequeno contexto, enquanto que para o elemento local vantajoso considerar-se uma contexto mais amplo.

5 - Avaliao e Resultados

144

6 - Concluses

145

6 Concluses

Em concluso deste trabalho, afirma-se que os objectivos delineados no incio (seco 1.2), foram atingidos, na medida em que foram adaptadas e implementadas um conjunto de tcnicas de aprendizagem indutiva, no problema da classificao de documentos e da extraco de informao a partir de texto e num domnio concreto da Lngua Portuguesa. Foram tambm experimentados e comparados alguns mtodos j conhecidos. A seguir apresentamos um resumo das concluses que tiramos deste trabalho.

Classificao de Documentos Relativamente classificao de documentos (4.2), os resultados apresentados corroboram a primazia do mtodo Naive Bayes, relativamente ao dos K-Vizinhos. Por outro lado a variante do mtodo Naive Bayes, com escolha de atributos (seco 4.2.3) melhora os resultados, como salientado na seco 5.1. Todavia, verificou-se que uma excessiva escolha de atributos no melhora o desempenho, devendo considerar-se um certo nmero destes. Observamos que este nmero prximo do nmero de atributos que apresentam algum (> 0) ganho de informao, relativamente classificao pretendida.

Extraco de Elementos Relevantes No que diz respeito extraco de elementos relevantes, tem-se como primeira concluso que possvel treinar um sistema para que este induza um conjunto de regras de extraco de elementos, apresentando bons resultados, tal como expresso nos dados da seco 5.2. Foi realizada e descrita uma experincia inicial na qual se obtiveram maus resultados, tal como a indicado (extraco de preo, com 86 ocorrncias existentes, foram feitas 327 extraces e s 5 eram verdadeiras). Esta experincia alerta-nos para a necessidade de ser realizada uma boa escolha de atributos (nessa experincia, era pr-determinada por um utilizador atributos posicionais fixos, ex: palavra anterior ocorrncia do elemento

6 - Concluses

146

relevante). As melhorias no trabalho subsequente, deveram-se utilizao de contextos que envolvem uso de conjuntos de palavras (bag of words para os contextos1) e da utilizao de generalizaes a conceitos, relativamente ao atributo A foco (ex: conceito NUMERO e LOCAL). Um outro melhoramento utilizado consistiu numa melhor forma de gerao de instncias negativas. A utilizao dum conjunto de palavras para os contextos levou a que fosse questionado qual o tamanho dos contextos a considerar. Foi estudada essa variao, para os trs elementos relevante considerados, cujos resultados so mostrados na seco 5.2. Do apresentado, podemos concluir que a dependncia entre a ocorrncia dum elemento no texto e o seu contexto varivel. Em algumas situaes a dependncia muito forte, quase exclusiva do contexto (ex: elemento local), enquanto que noutras essa depndencia quase nula (ex: elemento tipo), nestes casos a identificao dum novo elemento a extrair, centra-se mais no texto do elemento em si (atributo A foco ). As regras de extraco induzidas, traduzem o grau de depndencia, entre o elemento relevante e o seu contexto. Uma outra concluso relativa dimenso do contexto considerado, o facto de, para elementos muito dependentes do contexto, ser necessrio algum cuidado em no escolher uma dimenso de contexto demasiado elevado, para no no degradar o desempenho, tal como foi ilustrado no grfico da figura 5.1. Para contextos com tamanhos demasiado elevados, aumenta a possibilidade de serem escolhidos atributos (palavras) irrelevantes, com consequncias evidentes no desempenho. Assim, conseguiu-se a criao de um sistema capaz de extrair elementos relevantes, a partir de documentos de texto da lngua portuguesa. Este sistema enquadra-se na rea da Aprendizagem Automtica , na medida em que so utilizadas algumas tcnicas desta rea e explicitamente Aprendizagem Supervisionada, atravs dum sistema que gera regras (C5). Uma das vantagens do sistema o facto do utilizador no ter de fornecer as regras ao sistema, nem escolher os atributos, mas unicamente um conjunto de anncios anotados. Uma outra vantagem diz respeito facilidade de adaptar o sistema a alteraes do domnio e mesmo sua migrao para domnios completamente distintos (basta fornecer novos documentos de treino).
1 Ver final da subseco 4.3.2 e seco 4.4.2

6 - Concluses

147

Para alm dos aspectos qualitativos apresentados, destaca-se que foi alcanado um desempenho mdio de 79.5% ( F measure mdio)1, relativamente aos trs elementos relevantes considerados. Repare-se que este um valor que se aproxima do desempenho humano, muito prximo dos melhores valores referidos no incio da subseco 4.3.1, para o desempenho dos sistemas actuais (60% a 80% do desempenho humano), muitos deles muito mais complexos. Assim afirmamos que os nossos objectivos iniciais e expectativas foram atingidos, se no mesmo ultrapassados.

Trabalho Futuro Apesar dos resultados obtidos, este trabalho pode ser muito mais expandido e enriquecido. Uma primeira sugesto vai no sentido de ser utilizada generalizao a conceitos, nos contextos, semelhana do que feito relativamente ao atributo A foco . Por exemplo, poderia ser feita uma anlise que conclu-se que as palavras preo, custo, valor eram instncias de um conceito mais geral (ex: conceito PREO) e fosse considerado esse conceito como atributo do contexto, em vez das palavras em si. Alguns dos sistemas de extraco desenvolvidos (referidos alguns na seco 2.2), utilizam muitos conhecimentos da rea do Processamento de Linguagem Natural (PLN), quer a nvel de sintaxe, quer a nvel de semntica (ex: LOLITA seco 2.2.4). O trabalho aqui desenvolvido, no utiliza qualquer informao gramatical ou sintctica. Todavia essa informao pode ser importante para a identificao dos elementos relevantes, por exemplo: o elemento precedido por um verbo, ou sucedido por um adjectivo. Ento sugere-se a realizao de etiquetagem sintctica do texto (Part of Speech Tagging) e estender o conjunto de potncias atributos em conformidade. O trabalho de anotao dos anncios poder ser algo custoso e consumidor de tempo, para um utilizador. Assim sugere-se a explorao de uma tcnica, denominada de Active Learning [Thompson et al. 1999], de modo a que o utilizador s tenha de anotar uma parte dos anncios

1 Seco 5.2

6 - Concluses

148

e o sistema vai sendo treinado com estes e sugerindo novos anncios, os mais promissores, para anotao. Assim este mtodo facilitar o trabalho de anotao do utilizador. Uma ultima sugesto prende-se com a utilizao de lxico e ontologias j pr-definidas. Alguma informao deste tipo, foi utilizada aqui, nomeadamente na generalizao do domnio do atributo A foco . O ideal seria poder utilizar mais estruturas de carcter universal j existentes, como o caso da WordNet1.

Consideraes Finais Evidentemente que cada uma destas extenses possveis tem os seus custos em termos de desenvolvimento e adaptao ao problema de extraco de elementos relevantes, para a lngua portuguesa. Alm disso, melhoramentos em termos de taxa de acerto etc, no sempre garantido. Em resumo o problema que colocmos nesta tese importante, na medida em que existe uma necessidade crescente de se conseguir encontrar a informao pretendida, no vasto mundo da World Wide Web. O nosso trabalho assenta nas tcnicas de aprendizagem simblica, tornando esta meta atingvel sem grandes esforos. Esperamos que o nosso trabalho sirva de base para aqueles que decidam segui-lo.

1 http://www.cogsci.princeton.edu/~wn/

7 - Bibliografia

149

7 Bibliografia

[Appelt & Israel 1999]

Appelt D. E.; Israel D. J. Introduction to Information Extraction Technology IJCAI-99: Tutorial, 1999

[Berkhin 2002]

Berkhin P. Survey Of Clustering Data Mining Techniques Accrue Software, Inc, 2002

[Bratko 2001]

Bratko I. PROLOG Programming for Artificial Intelligence Addison-Wesley, 2001

[Breiman et al. 1984]

Breiman L., Friedman J., Olshen R., Stone C. Classification and Regression Trees Wadsworth, Inc., California, 1984

[Cestnik et al. 1987]

Cestnik B. , Kononenko I. , Bratko I. (1987) ASSISTANT 86: A Knowledge-Elicitation Tool for Sophisticated User In Progress in Machine Learning

[Califf & Mooney 1999]

Califf M. E.; Mooney R. J. Relational learning of pattern-match rules for information extraction In Proceedings of the Sixteenth National Conf. on Artificial Intelligence, pages 328334, 1999.

[Constantino 1997]

Constantino M. Financial Information Extraction using pre-defined and user-definable Templates in the LOLITA System University of Durham, 1997

[Constantino 2001]

Constantino M. The LOLITA user-definable template interface University of Durham, 2001

[Dreyfus 1979]

Dreyfus H. L. What Computers Can' t Do: The Limits of Artificial Intelligence Harper and Row, New York, 1979

7 - Bibliografia

150

[Freitag 1998]

Freitag D. Toward GeneralPurpose Learning for Information Extraction In Proceedings of the 36th Annual Meeting of the Association for Computational Linguistics, 1998

[Garigleano et al. 1998]

Garigliano R., Urbanowicz A., Nettleton D. J. Description of the LOLITA System, as used in MUC-7 University of Durham, 1998.

[Hobbs & Israel 1994]

Hobbs J., Israel D. Principles of Template Design SRI International, 1994.

[Huffman 1995]

Huffman S. Learning Information Extraction Patterns From Examples Workshop on new approaches to learning for natural language processing IJCAI-95: 127-142, 1995.

[Jurafsky & Martin 2000]

Jurafsky D. , Martin J. Speech and Language Processing Prentice Hall, 2000

[Krupka 1995]

Krupka G. R. Description of the SRA System as Used for MUC-6 In Proceedings of the Sixth Message Understanding Conference (MUC-6), 221-235. San Mateo: Morgan Kaufmann, 1995.

[Kushmerick 2000]

Kushmerick N. Wrapper induction: Efficiency and expressiveness Artificial Intelligance, 2000; 118:15-68

[McCarthy et al. 1956]

MacCarthy J. , Minsky M. L. , Rochester N. , Shannon C. E. A PROPOSAL FOR THE DARTMOUTH SUMMER RESEARCH PROJECT ON ARTIFICIAL INTELLIGENCE Dartmouth College, 1956

[McCallum & Nigam 1998] MacCallum A. , Nigam K.


A Comparison of Event Models for Naive Bayes Text Classification In AAAI-98 Workshop on Learning for Text Categorization, pages 41-48, Madison, WI, 1998.

[Mena 1999]

Mena J. Data Mining Your Website Digital Press, 1999

7 - Bibliografia

151

[Michie et al. 1994]

Michie D. , Spiegelhalter D.J. , Taylor C.C. Machine learning of rules and trees. Ellis Horwood, 1994

[Miller 1990]

Miller G. Wordnet: An online lexical database International Journal of Lexicography, 1990

[Mitchell 1997]

Mitchell T. Machine Learning McGraw-Hill, 1997

[Mladenic 1998]

Mladenic D. Machine Learning on non-homogeneous, distributed text data University of Ljubljana, 1998

[Mladenic & Grobel. 1999] Mladenic D. , Grobelnik M. (1999)


Feature selection for unbalanced class distribution and Naive Bayes Machine Learning: Proceedings of the Sixtheenth International Conference

[Muslea 1998]

Muslea I. Extraction patterns: from information extraction to wrapper generation. Technical report, ISI-USC, 1998.

[Peng 2000]

Peng, F. HMM for Information Extraction Computer Science Department, University of Waterloo, 2000

[Quinlan 1986]

Quinlan J. R. Induction of decision trees Machine Learning 1:81--106. Reprinted in Shavlik and Dietterich (eds.) Readings in Machine Learning.

[Quinlan 1993]

Quinlan J. R. C4.5: Programs for machine learning San Fransisco: Morgan Kaufmann, 1993

[Quinlan 1996]

Quinlan J. R. Bagging Boosting and C4.5 Proceedings, Fourteenth National Conference on Artificial Intelligence, 1996

7 - Bibliografia

152

[Quinlan 1997]

Quinlan J. R. C5.0 Data Mining Tool www.rulequest.com, 1997

[Riloff 1993]

Riloff E. Automatically Constructing a Dictionary for Information Extraction Tasks National Conference on Artificial Intelligence, 1993.

[Riloff & Lehnert 1994]

Riloff E., Lehnert W. Information Extraction as a Basis for High-Precision Text Classification University of Massachusetts, 1994.

[Russell & Norvig 1995]

Russell S. , Norvig P. Artificial Intelligence: A Modern Approach Prentice-Hall, Inc. 1995

[Salton & Buckley 1987]

Salton, G. , Buckley, C. Term weighting approaches in automated text retrieval. Cornell University, Department of Computer Science, 1987

[Schapire 2002]

Schapire E. R. The boosting approach to machine learning: An overview. MSRI Workshop on Nonlinear Estimation and Classification, 2002.

[Shannon & Weaver 1949]

Shannon C. E. , Weaver W. The mathematical theory of communication Urbana IL: University of Illinois Press, 1949.

[Soderland 1996]

Soderland S. G. Learning Domain-specific Text Analysis Rules University of Massachusetts at Amherst, 1996

[Soderland 1999]

Soderland S. G. Learning information extraction rules for semi-structured and free text Machine Learning, 34 (1-3), 1999.

[Thompson et al. 1999]

Thompson C. A. , Califf M. E. , Mooney R. J. Active Learning for Natural Language Parsing and Information Extraction In Proceedings of the Sixteenth International Machine Learning Conference, pp.406-414, Bled, Slovenia, 1999

7 - Bibliografia

153

[Winston 1992]

Winston P. H. Artificial Inteligence Addison-Wesley, 1992.

[Witten & Frank 2000]

Witten I., Frank E. Data Mining Morgan Kaufmann Publishers, 2000

7 - Bibliografia

154

8 - Anexo A Alguns anncios anotados

155

Anexo A Alguns anncios anotados

<anuncio> <source>c:\jpc\mestrado\tese\java\site\apt160.htm</source> <text> De: FS (nc204010@netcabo.pt) Assunto: 'URGENTE!!! VENDO ANDAR+GARAGEM Data: 2002-08-16 15:09:11 PST VENDO <tipo>5 ASSOALHADAS</tipo>+GARAGEM NO <local>PRAGAL-ALMADA</local> TRATA O PRPRIO. FAVOR CONTACTAR PARA: TELEMVEL - 962 821 090 </text> </anuncio>

<anuncio> <source>c:\jpc\mestrado\tese\java\site\apt161.htm</source> <text> De: Nuno Correia (nunosc@netcabo.pt) Assunto: Venda \ permuta moradia Data: 2002-08-16 05:40:34 PST Venda \ permuta Moradia <local>Cacm</local> Linha de <local>Sintra</local> 6 anos <tipo>6 ass</tipo>. <tipo>5 quartos</tipo> (uma suite) 3wc cozinha totalmente equipada sala com 40m2 com lareira e terrao 1 marquise, 1 adega, 1 arrecadao garajem, churrasqueira, forno, quintal com jardim e rvores de fruto. 93 510 10 10 </text> </anuncio>

<anuncio> <source>c:\jpc\mestrado\tese\java\site\apt162.htm</source> <text> De: T Vitor (antonio.ildefonso@netvisao.pt) Assunto: vende-se apartamento em <local>Beja</local> Data: 2002-08-16 04:16:55 PST Vendo apartamento <tipo>T3</tipo> em <local>Beja</local>, com excelente localizao, em ptimo estado de conservao.

8 - Anexo A Alguns anncios anotados

156

Tem <tipo>3 quartos</tipo> (um deles com ar condicionado), duas casas de banho, cozinha com mveis em bom estado, e sala ampla com lareira e recuperador de calor (e ar condicionado tambm). Quem estiver interessado, favor contactar para antonio.ildefonso@netvisao.pt. </text> </anuncio>

<anuncio> <source>c:\jpc\mestrado\tese\java\site\apt163.htm</source> <text> De: Falcon (falcon.lda@netvisao.pt) Assunto: <local>Brejos de Azeito</local> Data: 2002-08-16 03:27:08 PST Moradia isolada com <tipo>5 ass</tipo>. grandes, lote 480 m2, quintal excelente, garagem com 20 m2, barbecue, salo com lareira, quartos com roupeiro e cho flutuante, alarme, aquecimento e aspirao central, cozinha com lavandaria, caxilharia em alumnio, vidros duplos, escadas em granitos, despensa, hall, local previlegiado, vista para <local>arrbida</local>. Pea fotos que envimos por e-mail: falcon.joao@netvisao.pt Joo Loureno Comercial Falcon - Mediao Imobiliria, Lda Rua de Cacheu, 7 - A Amora Tel./Fax: 21 222 1423 E-mail: falcon.lda@netvisao.pt </text> </anuncio>

<anuncio> <source>c:\jpc\mestrado\tese\java\site\apt168.htm</source> <text> De: Rusan Rolis (ninguem@megamail.pt) Assunto: Zona <local>Santarm</local> - Casa Tradicional Ribatejana Data: 2002-08-14 23:41:52 PST Casa apalaada, totalmente restaurada. 8 divises, tertlia ribatejana,2 salas anexas, patio, garagem para 2 carros.Mantem a traa original de 1926. Apenas <preco>236.930</preco> euros Pormenores e fotos em: http://www.geocities.com/xequemate ou na revista: "CASAS DE PORTUGAL" </text> </anuncio>

9 - Anexo B Regras induzidas (C5)

157

Anexo B Regras induzidas (C5)


Elemento preo

See5 [Release 1.16] ------------------Options:

Tue Jun 24 13:43:57 2003

Rule-based classifiers

Class specified by attribute `extrair' Read 187 cases (22 attributes) from preco.data Rules: Rule 1: (25, lift 2.9) ESQpreo = yes -> class yes [0.963] Rule 2: (19, lift 2.9) DIReuros = yes -> class yes [0.952] Rule 3: (13, lift 2.8) DIRcontos = yes -> class yes [0.933] Rule 4: (18/1, lift 2.7) DIRcts = yes -> class yes [0.900] Rule 5: (3, lift 2.4) DIRc = yes -> class yes [0.800] Rule 6: (130/6, lift 1.4) ESQpreo = not DIReuros = not DIRcts = not DIRcontos = not DIRc = not -> class not [0.947] Default class: not Evaluation on training data (187 cases): Rules ---------------No Errors 6 (a) ---56 1 7( 3.7%) (b) ---6 124 <<

<-classified as (a): class yes (b): class not

Time: 0.2 secs7

9 - Anexo B Regras induzidas (C5)

158

Elemento tipo
See5 [Release 1.16] ------------------Fri May 02 11:06:25 2003

Options: Rule-based classifiers Class specified by attribute `extrair' Read 279 cases (22 attributes) from tipo.data Rules: Rule 1: (25, lift 1.9) Afoco = (NUMERO)-assoalhadas -> class yes [0.963] Rule 2: (19, lift 1.9) Afoco = (NUMERO)-quartos -> class yes [0.952] Rule 3: (32/1, lift 1.9) Afoco = t2 -> class yes [0.941] Rule 4: (11, lift 1.9) Afoco = t1 -> class yes [0.923] Rule 5: (23/1, lift 1.9) Afoco = t3 -> class yes [0.920] Rule 6: (5, lift 1.7) Afoco = t5 -> class yes [0.857] Rule 7: (4, lift 1.7) Afoco = t4 -> class yes [0.833] Rule 8: (4, lift 1.7) Afoco = t0 -> class yes [0.833] Rule 9: (3, lift 1.6) Afoco = t2+1 -> class yes [0.800] Rule 10: (2, lift 1.5) Afoco = trs-quartos -> class yes [0.750] Rule 11: (2, lift 1.5) Afoco = t-3 -> class yes [0.750] Rule 12: (5/1, lift 1.4) Afoco = (NUMERO)-ass -> class yes [0.714]

9 - Anexo B Regras induzidas (C5)

159

Rule 13: (1, lift 1.3) Afoco = dois-quartos -> class yes [0.667] Rule 14: (1, lift 1.3) Afoco = 2ass -> class yes [0.667] Rule 15: (1, lift 1.3) Afoco = (NUMERO)-assoalhada -> class yes [0.667] Rule 16: (1, lift 1.3) Afoco = 3ass -> class yes [0.667] Rule 17: (1, lift 1.3) Afoco = t1+2 -> class yes [0.667] Rule 18: (1, lift 1.3) Afoco = t1+1 -> class yes [0.667] Rule 19: (138, lift 2.0) Afoco = bizarre -> class not [0.993] Default class: not Evaluation on training data (279 cases): Rules ---------------No Errors 19 (a) ---138 3 3( 1.1%) (b) ---138 <<

<-classified as (a): class yes (b): class not

Time: 0.1 secs

9 - Anexo B Regras induzidas (C5)

160

Elemento local
See5 [Release 1.16] ------------------Fri May 02 11:06:52 2003

Options: Rule-based classifiers Class specified by attribute `extrair' ** This demonstration version cannot process ** ** more than 400 training or test cases. ** Read 400 cases (22 attributes) from local.data Rules: Rule 1: (76, lift 2.1) DIRdata = yes -> class yes [0.987] Rule 2: (59, lift 2.1) ESQassunto = yes -> class yes [0.984] Rule 3: (16, lift 2.0) ESQpst = yes -> class yes [0.944] Rule 4: (22/1, lift 2.0) ESQvendo = yes -> class yes [0.917] Rule 5: (36/4, lift 1.9) ESQde = yes ESQe = not DIRem = not Afoco = (LOCAL) -> class yes [0.868] Rule 6: (40/5, lift 1.8) ESQem = yes ESQcom = not ESQe = not DIRe = not -> class yes [0.857] Rule 7: (10/1, lift 1.8) ESQem = not ESQcom = not ESQe = not DIRe = yes Afoco = (LOCAL) -> class yes [0.833] Rule 8: (8/1, lift 1.7) ESQvendo = not ESQe = not DIRda = yes Afoco = (LOCAL) -> class yes [0.800]

9 - Anexo B Regras induzidas (C5)

161

Rule 9: (3, lift 1.7) Afoco = (LOCAL)-do-(LOCAL) -> class yes [0.800] Rule 10: (2, lift 1.6) Afoco = sta-(LOCAL) -> class yes [0.750] Rule 11: (1, lift 1.4) Afoco = quinta-do-(LOCAL) -> class yes [0.667] Rule 12: (1, lift 1.4) Afoco = (LOCAL)-(LOCAL) -> class yes [0.667] Rule 13: (1, lift 1.4) Afoco = (LOCAL)-do-bosque -> class yes [0.667] Rule 14: (1, lift 1.4) Afoco = st-eullia -> class yes [0.667] Rule 15: (1, lift 1.4) Afoco = quinta-do-s.joo -> class yes [0.667] Rule 16: (1, lift 1.4) Afoco = praceta-quinta-de-s.-joo -> class yes [0.667] Rule 17: (1, lift 1.4) Afoco = stovideo -> class yes [0.667] Rule 18: (324/111, lift 1.2) DIRdata = not -> class not [0.656] Default class: not Evaluation on training data (400 cases): Rules ---------------No Errors 18 (a) ---165 12 34( 8.5%) (b) ---22 201 <<

<-classified as (a): class yes (b): class not

Time: 0.0 secs

9 - Anexo B Regras induzidas (C5)

162

10 - Anexo C Principais classes e mtodos

163

Anexo C Principais classes e mtodos

Class ExemplosAPT

java.lang.Object | +--java.util.Dictionary | +--Hashtable | +--HashStr | +--StatWords | +--ExemplosAPT All Implemented Interfaces: java.lang.Cloneable, java.util.Map, java.io.Serializable

public class ExemplosAPT extends StatWords See Also:

Serialized Form

Inner classes inherited from class java.util.Map java.util.Map.Entry

Constructor Summary
ExemplosAPT()
Costrutor.

Method Summary
void add(String stxt) Adiciona uma String em forma de texto, recorrendo ao outro metodo add. void add(Texto txt) Adiciona o texto txt aos exemplos existentes. String[] extraccao(String file, String[] vregras, String[] DomAfoco) Metodo geral de extraco dos elementos relevantes. LinkedList extrai(String stxt, String sAfoco, String sregra) Particularizao do mtodo "extrair". LinkedList extrair(String stxt, String[] vregras, String[] DomAfoco) Realiza a extraco, num texto stxt, atendendo s regras recebidas em vregras e com o domnio do atributo Afoco passaso no parmetro DomAfoco.

10 - Anexo C Principais classes e mtodos

164

LinkedList extraix(String stxt, String sAfoco, String sregra) Equivalente a: extraix(String stxt, String sAfoco, String sregra, 0, stxt.length()). LinkedList extraix(String stxt, String sAfoco, String sregra, int a, int b) Tenta aplicar a regra sregra extraco, no texto stxt, tendo em conta o valor do atributo de foco, passado em sAfoco, entre stxt[a] e stxt[b].

HashStr freqCategorias(String[] vs)


Para determinar qual a frequncia de cada categoria, no vector de strings recebido em vs. long freqWord(String word) Calcula a frequncia da palavra em word, na coleco dos exemplos de treino carregados. String[] generalizar(String[] vs) Realiza o trabalho de generalizao, omitindo o valor mnimo, igual a 1.2. String[] generalizar(String[] vs, double minOR) Tenta Generalizar um vector de Strings, utilizando a medida de "Odds Ratio" [Mladenic, 2001]. String[] genVNegExemp(String tag, int nwords, int nlines) Gera um array de exemplos negativos, para uma tag. boolean geraInstanciasC5(String tag, String filename) A partir dos vectores de exemplos existentes, so geradas instncias para serem submetidas ao sistema C5. boolean geraInstanciasWEKA(String tag, String filename) A partir dos vectores de exemplos existentes, so geradas instncias para serem submetidas ao sistema WEKA. String[] geraWordsSigf_InfGain(String[] Vt, int N) Palavras mais significativas, com base no Ganho de Informao. String[] geraWordsSigf(String[] frases, int N) Devolve um array com as N palavras mais significativas ou informativas, a partir de um array de exemplos. String[] getNElemLeft(String tag, int N) Devolve um array de n elementos, esquerda de uma marca tag, procurando em todos os exemplos contidos. String[] getNGramLeft(String tag, int N) Devolve um array de n-grams, esquerda de uma marca procurando em todos os exemplos contidos. String[] getNGramRight(String tag, int N) Devolve um array de n-grams, direita de uma marca tag, procurando em todos os exemplos contidos. long getNumWords() Calcula o nmero de palavras contidas na coleco dos exemplos de treino, carregados. String[] getTags() Devolve um array com todas as tags existentes nos exemplos lidos.

Texto getText(int index)


Obtem o exemplo refernciado em index

10 - Anexo C Principais classes e mtodos

165

String[] getVBetween(String tag) Extrai todas as ocorrncias entre as tags: tag String[] getVLeft(String tag) Extrai todas as ocorrncias esquerda da tag: tag, at ao inicio da linha. String[] getVRight(String tag) Extrai todas as ocorrncias direita da tag: tag, at ao fim da linha. protected inits() void Realiza as inicializaes gerais, incluindo a superclasse. boolean load(String fileName) Preenche o objecto actual (this) com os exemplos contidos no ficheiro fileName. static void main(String[] args) MAIN String marcaCategorias(String frase) equivalente a marcaCategorias(String, false, null). void marcaCategorias(String[] vs, boolean flagNwords, String scateg) Semelhante a marcaCategorias(String, boolean, String), mas para um array de strings. void marcaCategorias(String[] vs, String scateg) equivalente a marcaCategorias(String[], false, String). String marcaCategorias(String frase, boolean flagNwords) equivalente a marcaCategorias(String, boolean, null). String marcaCategorias(String frase, boolean flagNwords, String scateg) Devolve a string frase com possveis ocorrncias das categorias substituidas. int nvizDir() Devolve o tamanho da vizinhana direita, definida. int nvizEsq() Devolve o tamanho da vizinhana esquerda, definida. boolean parseCommand(String command) Responder aos vrios comandos introduzidos. void printAfoco(String tag) Imprime as instncias de Afoco dos exemplos carregados, para um determinada etiqueta (tag). boolean setVizDir(int n) Define o comprimento da vizinhana direita, a n palavras. boolean setVizEsq(int n) Define o comprimento da vizinhana esquerda, a n palavras. boolean setVizinhanca(int m, int n) Define o comprimento das vizinhanas esquerda e direita, a m e n palavras, respectivamente. int size() Numero de exemplos de treino carregados. void test20030411_1409()

10 - Anexo C Principais classes e mtodos

166

void test20030411_1746() boolean verificaVizinhanca(String regra, String vizEsq, String vizDir) Verifica se uma regra de extraco coerente com o contexto esquerdo e direito, indicado nos parmetros vizEsq e vizDir. Methods inherited from class StatWords

eatString, Nwords, print, print, print, printBetween, procFile, setProbMin, setSizeMin


Methods inherited from class HashStr

add, add, caos, entropy, entropy, freq, getName, increment, increment, load, print, prob, rankNDouble, readFile, readFile, save, sum, toVStr, toVStr
Methods inherited from class Hashtable clear, clone, contains, containsKey, containsValue, elements, entrySet, equals, get, hashCode, isEmpty, keys, keySet, put, putAll, rehash, remove, toString, values Methods inherited from class java.lang.Object finalize, getClass, notify, notifyAll, wait, wait, wait

10 - Anexo C Principais classes e mtodos

167

Class NBayesClassifAPT
java.lang.Object | +--NBayesClassifAPT

public class NBayesClassifAPT extends java.lang.Object

Field Summary
int[] confMatrix static int INFGAIN static int ODDSRATIO String[] vFtrain

Constructor Summary
NBayesClassifAPT(String[] vclssname)
To creat this object, it is necessary to send an array with the class names.

Method Summary
void addExample(String stxt, String classname) Adds a new example for the indicated class: classname String[] classes() Return the class name vector. String classifyExample(String stxt) CLASSIFY_NAIVE_BAYES_TEXT(Doc) : If possible, uses feature subset selection (number of features previously defined). String classifyExampleSimple(String stxt) CLASSIFY_NAIVE_BAYES_TEXT(Doc) : Like in Tom Mitchell's, ML book void clearExamples() Objects are reallocated. void crossValidation(int N) Teste de validao cruzada: "N-fold cross validation". String[] execTest(int ia, int ib) Executa o teste no sistema, para os documentos refernciados cujos indices esto compreendidos entre ia e ib.

10 - Anexo C Principais classes e mtodos

168

void execTrain() Equivalente a execTrain(-1,-1), todos os exemplos. void execTrain(int ia, int ib) Executa o treino do sistema, para os documentos refernciados cujos indices no esto compreendidos entre ia e ib. double featureValue(String w) Returns the feature value for the word w. int freq(String word) int freq(String word, String classname) Frequency of a word in a class. int freqClss(String classname) Class frequency. String[] getFeatures() Returns the features vector (all features selected). String[] getFeatures(int n) Returns the features vector. String getMeasure() String[] getVexamples()

HashStr hsWords(String s)
Make word frequncies handler, from a text passed in s (TF - Term Frequency). double infGain(String w) --------------------------------------------------------Claculates the feature value, based on "Information Gain" --------------------------------------------------------IG(w) = Sigma{i} P(Ci) * [P(w|Ci)*L(w,Ci) + P(~w|Ci)*L(~w,Ci)] sendo: L(x,c) = log( P(x|c) / P(x) ) static void main(String[] args) int numFeatures() Number of features selected. long numVocab() Number of different words, in training set. long numWords() Total number of words, in training set. double oddsRatio(String w) --------------------------------------------------Claculates the feature value, based on "Odds Ratio" --------------------------------------------------void printPerformance() Output de medidas de performance.

10 - Anexo C Principais classes e mtodos

169

double prob(String word) Word probability double prob(String word, String classname) Word probability in some class. double probClss(String classname) Class probability double probF(String word) Feature probability double probF(String word, String classname) Word probability in some class. boolean setFeatures(int n) Feature subset selection, with "Odds Ratio", Like [Mladenic, Grobelnic 1998] void setMeasure(int measure) boolean setPath(java.io.File dir) Defines the training directory

11 - Anexo D Cdigo dos principais mtodos

170

Anexo D Cdigo dos principais mtodos

Classe ExemplosAPT
/** * Palavras mais significativas, com base no Ganho de * Informao. */ public String[] geraWordsSigf_InfGain(String[] Vt, int N) { if ( Vt == null ) return null; Texto twVt= new Texto(Vt); double Pext= (double) twVt.getNumWords() / this.getNumWords(); double Pnext=(double) 1.0 - Pext; double ES= F(Pext) + F(Pnext); //--------> Entropy(S) long cardS= (long) (Vt.length / Pext); //---> Card(S) Hashtable hasht= new Hashtable(); so.println("a) hasht.size(): "+hasht.size()); twVt.setPosWord(0); for (;;) { String w= twVt.nextWord(); if ( w == null ) break; if ( hasht.containsKey(w) )

continue;

// frequncias long Fw= this.freqWord(w); //------> frequencia total de: w long Fxw= twVt.freqWord(w); //------> frequencia nos casos de extraco // cardinalidades long cardSw= Math.min(Fxw, Vt.length) + Math.min (Fw-Fxw, cardS-Vt.length); long cardSnw= cardS - cardSw; // probabilidades double PExtW=(double) Math.min(Fxw, Vt.length) / cardS; double PnExtW= 1.0 - PExtW; double PExtnW=(double) Math.max(Vt.length-Fxw, 0) / cardS; double PnExtnW= 1.0 - PExtnW; // entropias double ESw= F(PExtW) + F(PnExtW); double ESnw= F(PExtnW) + F(PnExtnW); // ganho de informao double GainSw= ES - ((double) cardSw/cardS * ESw +(double) cardSnw/cardS * ESnw ); hasht.put(new String(w), new Double(GainSw)); /* Mostrar Ganhos so.println("Gain(S,W): "+GainSw+"\t\tw: "+w); so.println("|Sw|: "+cardSw+"\tP{ext|w}: "+PExtW+"\tP{ext|~w}: "+PExtnW); so.println("------------------------------------------------------------------"); */ } so.println("ES:................... "+ES); so.println("|S|:.................. "+cardS); so.println("Pext:................. "+Pext); so.println("Vt.length:........ "+Vt.length); if ( hasht.size() <= 0 ) return null;

String[] vs= HashStr.rankNDouble(hasht,N); return vs; }

11 - Anexo D Cdigo dos principais mtodos

171

/** * Metodo geral de extraco dos elementos relevantes. Para um ficheiro, indicado * em <b>file</b>, um vector de regras, em <b>vregras</b>, e um vector com o * domnio do atributo de "foco" em <b>DomAfoco</b>, concretizada a extraco * dos elementos relevantes.<br> */ public String[] extraccao(String file, String[] vregras, String[] DomAfoco) { if ( vregras == null || vregras.length < 1 ) return null; LinkedList lista= new LinkedList(); try { BufferedReader br= new BufferedReader(new FileReader(file)); int nanunc= 0, nextr= 0; boolean inText= false; String source=null, line; do { // Ler prximo anncio // ------------------String stxt= null; do { line= br.readLine(); if ( line == null ) break; if ( line.indexOf("<source>") != -1 ) { source= StrX.betweenTags(line,"<source>"); so.println("source: "+source+" "+nextr); int p= source.lastIndexOf('\\'); if ( p >= 0 ) source= source.substring(p+1); nanunc++; } if ( line.indexOf("<text>") != -1 ) { inText= true; stxt= ""; } if ( line.indexOf("</text>") != -1 ) { inText= false; break; } if ( inText ) { line= StrX.removeTags(line.toLowerCase()); stxt+= ' ' + line; } } while ( true ); if ( line == null ) break; if ( stxt == null || stxt.length() < 1 ) // ------------------stxt= StrX.removeTags(stxt.toLowerCase()); stxt= filtraTexto(stxt); //so.print("----------------\n"); stxt= "[BEGIN] " + stxt + " [END]"; //so.print(stxt+"\n"); //so.print("----------------\n"); LinkedList lx= extrair(stxt, vregras, DomAfoco); if ( lx != null ) { for (int i=0; i<lx.size(); i++) { String si= (String)lx.get(i); si= "F("+source+") -> " + si; if ( ! lista.contains(si) ) { lista.add(new String(si)); nextr++; } } } } while ( true ); so.println("\n\n\n---------------------------------"); so.println("N(anuncios):....... "+nanunc); so.println("N(extracts):....... "+nextr); br.close();

continue;

11 - Anexo D Cdigo dos principais mtodos

172

} catch (IOException ioe) { se.println("ERROR: reading file "+file); se.println(ioe); return null; } return StrX.toVStr(lista); }

/** * A partir dos vectores de exemplos existentes, so geradas * instncias para serem submetidas ao sistema C5.<br> */ public boolean geraInstanciasC5(String tag, String filename) { PrintStream outD= null, outN= null; boolean closeD= false, closeN= false; // abertura de ficheiros // --------------------if ( filename == null || filename.length() < 1 ) { outD= System.out; outN= System.out; } else { int p= filename.indexOf('.'); if ( p > 0 ) filename= filename.substring(0,p); String fnames= filename + ".names"; String fdata= filename + ".data"; try { FileOutputStream fosN= new FileOutputStream(fnames); FileOutputStream fosD= new FileOutputStream(fdata); outN= new PrintStream(fosN); outD= new PrintStream(fosD); closeN= true; closeD= true; {

} catch (IOException e) outN= System.out; outD= System.out; } } // ---------------------

String[] Btag= getVBetween(tag); //Between tag String[] Ltag= null; //Left tag String[] Rtag= null; //Right tag Ltag= getNGramLeft(tag , nvizEsq()); Rtag= getNGramRight(tag, nvizDir()); if ( Ltag == null || Btag == null || Rtag == null ) return false;

VARX.insert("B"+tag,Btag); VARX.insert("L"+tag,Ltag); VARX.insert("R"+tag,Rtag); String[] GBtag= this.generalizar(Btag); String[] WSLtag= this.geraWordsSigf_InfGain(Ltag,10); String[] WSRtag= this.geraWordsSigf_InfGain(Rtag,10); VARX.insert("GB"+tag,GBtag); VARX.insert("WSL"+tag,WSLtag); VARX.insert("WSR"+tag,WSRtag); outN.print("extrair\n\n"); for (int i=0; i<WSLtag.length; i++) outN.print("ESQ"+WSLtag[i]+": yes,not.\n"); for (int i=0; i<WSRtag.length; i++) outN.print("DIR"+WSRtag[i]+": yes,not.\n"); outN.print("between: "); //outN.print("Afoco: ");

11 - Anexo D Cdigo dos principais mtodos

173

for (int i=0; i<GBtag.length; i++) { String sattrb= GBtag[i].replace(' ','-').replace(',',';'); outN.print(sattrb+","); } outN.print("bizarre.\n"); outN.print("extrair: yes,not.\n"); if ( closeN ) outN.close();

//------------------------------// Ciclo de gerao de instncias //------------------------------String etag= StrX.endtag(tag); String sinstancia, sinstneg, sneg; LinkedList listneg= new LinkedList(); String[] vsleft, vsrigh, vsleftneg, vsrighneg; for (int i=0; i<Btag.length; i++) { sinstancia= ""; sinstneg= ""; sneg= this.genNegExemp(tag, StrX.countWords(Btag[i])); vsleft= StrX.trim( StrX.toVStr(Ltag[i]) , worddata.pontuacao ); vsrigh= StrX.trim( StrX.toVStr(Rtag[i]) , worddata.pontuacao ); vsleftneg= StrX.toVStr(StrX.leftTag(sneg,tag)); vsrighneg= StrX.toVStr(StrX.rightTag(sneg,etag)); if ( vsleftneg != null ) vsleftneg= StrX.subVect(vsleftneg, vsleftneg.length-nvizEsq(), vsleftneg.length); if ( vsrighneg != null ) vsrighneg= StrX.subVect(vsrighneg,0,nvizDir()); vsleftneg= StrX.trim(vsleftneg, worddata.pontuacao); vsrighneg= StrX.trim(vsrighneg, worddata.pontuacao); // ocorrncia do atributo na vizinhana esquerda for (int j=0; j<WSLtag.length; j++) { sinstancia+= StrX.indexOf(vsleft,WSLtag[j]) != -1 ? "yes," : "not,"; sinstneg+= StrX.indexOf(vsleftneg,WSLtag[j]) != -1 ? "yes," : "not,"; } // ocorrncia do atributo na vizinhana direita for (int j=0; j<WSRtag.length; j++) { sinstancia+= StrX.indexOf(vsrigh,WSRtag[j]) != -1 ? "yes," : "not,"; sinstneg+= StrX.indexOf(vsrighneg,WSRtag[j]) != -1 ? "yes," : "not,"; } String betw= null; for (int j=0; j<GBtag.length; j++) if ( satisfazGen(GBtag[j], Btag[i]) ) { betw= GBtag[j].replace(' ','-').replace(',',';'); break; } sinstancia+= betw != null ? betw+",yes" : "bizarre,yes"; sneg= StrX.betweenTags(sneg,tag); betw= null; for (int j=0; j<GBtag.length; j++) if ( satisfazGen(GBtag[j], sneg) ) { betw= GBtag[j].replace(' ','-').replace(',',';'); break; } sinstneg+= betw != null ? betw+",not" : "bizarre,not"; outD.print(sinstancia+"\n"); //---> instncia positiva. listneg.add(new String(sinstneg)); //---> instncia negativa (aleatoria). } //------------------------------//-----------------------------//gerao de exemplos negativos //-----------------------------String[] vexneg= this.seekNegExemp(tag, GBtag, WSLtag, WSRtag); String[] vinstneg= StrX.toVStr(listneg); //---> exemplos artificiais (aleatrios) int j= 0;

11 - Anexo D Cdigo dos principais mtodos

174

for (int i=0; i<vexneg.length; i++) { outD.print(vexneg[i].replace(' ','-')+"\n"); if ( j < vinstneg.length ) outD.print(vinstneg[j++]+"\n"); if ( i == Btag.length ) break; } for (int i=j; i<vinstneg.length; i++) { if ( i == Btag.length ) break; outD.print(vinstneg[i]+"\n"); } if ( closeD ) return true; } outD.close();

Vous aimerez peut-être aussi