Você está na página 1de 72

Instituto de Cincias Matemticas e de Computao e a ca

ISSN - 0103-2569

Extrao de Informao de Referncias Bibliogrcas ca ca e a usando POS-tagging

Alberto Cceres Alvarez a Alneu de Andrade Lopes

No 281

RELATORIOS TECNICOS DO ICMC

So Carlos a Setembro/2006

Extrao de Informao de Referncias ca ca e Bibliogrcas usando POS-tagging a


Alberto Cceres Alvarez a Alneu de Andrade Lopes
Universidade de So Paulo a Instituto de Cincias Matemticas e de Computao e a ca Departamento de Cincias de Computao e ca C.P. 668, 13560-970 - So Carlos, SP - Brasil a e-mail: {beto, alneu}@icmc.usp.br

Resumo: As tcnicas relacionadas ` rea de extrao de informaes atuam sobre um e aa ca co conjunto de dados no estruturados e visam localizar informaes relevantes a co em um documento ou coleo de documentos, extra ca -las e estrutur-las a m de a facilitar sua manipulao e anlise. O objetivo espec ca a co deste projeto indue zir, de forma automtica, um conjunto de regras para extrao de informaes a ca co das referncias bibliogrcas de artigos cient e a cos. A proposta para extrair automaticamente informaes das referncias, baseia-se no mapeamento do co e problema de part-of-speech (POS) tagging ao problema de Extrao de Inca formao (EI). O mapeamento para a extrao de informaes de um texto ca ca co consiste em, inicialmente, etiquetar todos os termos do texto, selecionando alguma etiqueta de um conjunto pr-denido de etiquetas e, posteriormente, e combinar e extrair as informaes de acordo com as etiquetas dos termos. co Neste trabalho so apresentados os resultados da utilizao desta abordagem a ca para o problema da extrao de informaes de referncias bibliogrcas. ca co e a Palavras Chaves: Aprendizado de Mquina, Extrao de Informao, a ca ca Processamento de L ngua Natural.

setembro 2006

ii

Sumrio a
1 Introduo ca 2 Extrao de Informao ca ca 2.1 Objetivo da Extrao de Informao . . . . . . . . . . ca ca 2.2 Arquitetura de um Sistema de Extrao de Informao ca ca 2.3 Mtricas de Avaliao . . . . . . . . . . . . . . . . . . e ca 2.4 Extrao de Informaes de Artigos Cient ca co cos . . . . . 2.5 Abordagem Proposta neste Trabalho . . . . . . . . . . 7 8 8 9 11 13 16 16 17 19 19 21 23 23 28 29 30 31 33 38 38 39 41 42 44 45 65 70

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

3 Etiquetagem Automtica de Corpus a 3.1 Etiquetagem Morfossinttica de Textos . . . . . . . . . . . . a 3.2 Etiquetador Baseado em Transformao Dirigida por Erro . ca 3.2.1 Aprendizado Baseado em Transformao Dirigida por ca 3.2.2 Etiquetador TBL . . . . . . . . . . . . . . . . . . . . 4 Extrao de Informao Utilizando POS-tagging ca ca 4.1 Denies de Projeto . . . . . . . . . . . . . . . . co 4.2 Pr-processamento . . . . . . . . . . . . . . . . . e 4.3 Processo de Etiquetagem do Corpus . . . . . . . . 4.3.1 Etiquetagem Automtica . . . . . . . . . . a 4.3.2 Etiquetagem Manual . . . . . . . . . . . . 4.4 Descrio dos Experimentos . . . . . . . . . . . . ca 4.5 Resultados Obtidos . . . . . . . . . . . . . . . . . 4.5.1 Primeiro Experimento . . . . . . . . . . . 4.5.2 Segundo Experimento . . . . . . . . . . . 4.6 Extrao das Informaes . . . . . . . . . . . . . ca co 5 Consideraes Finais co A FIP tagset B Cdigo Fonte dos Programas Desenvolvidos o C Manual do Etiquetador TBL Referncias e

. . . . . . Erro . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

iii

iv

Lista de Figuras
1 2 3 4 5 6 7 8 9 10 11 12 13 Estrutura de um sistema de Extrao de Informao baseado em Procesca ca samento de L ngua Natural . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemplo de extrao das informaes de um documento . . . . . . . . . . ca co Estruturao das informaes dos artigos . . . . . . . . . . . . . . . . . . . ca co Mapeamento do problema de part-of-speech (POS) tagging ao problema de extrao de informao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ca ca Exemplo de part-of-speech tagging . . . . . . . . . . . . . . . . . . . . . . . Processo geral de etiquetagem de texto . . . . . . . . . . . . . . . . . . . . Algoritmo de Aprendizado Baseado em Transformao Dirigida por Erro . ca Exemplo de Aprendizado Baseado em Transformao Dirigida por Erro . . ca Etiquetador Baseado em Transformao Dirigida por Erro: treinamento do ca etiquetador inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Etiquetador Baseado em Transformao Dirigida por Erro: etiquetador ca contextual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemplo da etiquetagem de um arquivo .BIB . . . . . . . . . . . . . . . . Grco comparativo de um processo interativo e iterativo de etiquetagem a manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Estrutura de diretrios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 10 12 14 16 17 18 20 21 21 23 31 33 35

Lista de Tabelas
1 2 3 4 5 6 7 8 9 10 Regras para palavras desconhecidas . . . . . . . . . . . . . . . . . . . . . . Regras que utilizam informaes sobre o contexto . . . . . . . . . . . . . . co Informaes sobre o corpus . . . . . . . . . . . . . . . . . . . . . . . . . . . co Nmero de palavras e de referncias em cada diviso do corpus . . . . . . . u e a Nmero de palavras e a taxa de acerto para cada diviso do corpus manuu a almente etiquetado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Desvio padro e preciso global do etiquetador . . . . . . . . . . . . . . . . a a Freqncia mdia e preciso por etiquetas do etiquetador . . . . . . . . . . ue e a Nmero de palavras e a taxa de acerto para o conjunto de treino e de teste u do corpus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tempo de treinamento e etiquetagem - TBL . . . . . . . . . . . . . . . . . Opes do comando tagger . . . . . . . . . . . . . . . . . . . . . . . . . . co 22 22 30 34 38 38 40 41 41 66

Lista de Algoritmos
1 Criao do Corpus Etiquetado . . . . . . . . . . . . . . . . . . . . . . . . . 32 ca

vi

Introduo ca

Extrao de Informao (EI) consiste na tarefa de encontrar informaes espec ca ca co cas a partir de grandes volumes de documentos. Tais documentos podem apresentar algum n vel de estruturao na apresentao das informaes, como tambm podem ser totalmente ca ca co e livres. O objetivo da pesquisa em EI construir sistemas que encontrem e combinem e informaes relevantes enquanto ignoram informaes insignicantes e irrelevantes (Cowie co co & Lehnert 1996; Ma, Uchimoto, Murata, & Isahara 1999). Tcnicas de Processamento de L e ngua Natural (PLN) tm sido amplamente utilizadas e no processo de extrao de informaes de documentos semi-estruturados e livres (Cowie & ca co Lehnert 1996; Soderland 1999). O objetivo do uso dessas tcnicas de PLN no contexto de e EI tentar compreender textos em alguma l e ngua natural, a m de encontrar informaes co relevantes a serem extra das. Sistemas de Extrao baseados em PLN tm sido denidos ca e para diferentes dom nios, contando com etapas de processamento comuns aos sistemas de PLN em geral, e mais alguns mdulos espec o cos para Extrao de Informao (Rajman ca ca & Besanon 1997). c A extrao de informaes a partir de artigos cient ca co cos depara-se com diversos desaos relacionados com a identicao, no texto, de informaes, tais como: t ca co tulo, ano, autores, palavras chaves, resumo e elementos de referncias bibliogrcas. As referncias, e a e normalmente, possuem os seguintes elementos: autores, t tulo, publicao (peridicos, ca o revistas, etc.) ou evento (simpsios, congressos, etc.), editora, pginas e ano. o a A abordagem para extrair automaticamente informaes de artigos cient co cos, proposta neste trabalho, consiste em valer-se de uma tcnica baseada em etiquetagem para e a tarefa de extrao. Por exemplo, um poss ca vel mapeamento do problema de part-ofspeech (POS) tagging ao problema de extrao de informaes de referncias bibliogrcas, ca co e a resume-se em etiquetar todos os termos das referncias, selecionando alguma etiqueta de e uma lista de poss veis etiquetas, esta lista poderia conter as seguintes etiquetas: AUTOR, T ITULO, REVISTA, EVENTO, LOCAL, PAGINAS e ANO. Ao nal, as informaes co de etiquetas correspondentes so combinadas e extra a das. Dentro desta abordagem, um objetivo espec co deste trabalho descrever em detalhes todos os procedimentos necesse a rios ` realizao dos experimentos a m de avaliar o comportamento do etiquetador TBL a ca de Eric Brill (Brill 1994; Brill 1995; Brill 1997), frente ` tarefa de etiquetar referncias a e bibliogrcas de artigos cient a cos. Ressalta-se, entretanto, que a tcnica proposta no e a depende unicamente do etiquetador TBL. Outros etiquetadores poderiam ser usados. O corpus utilizado nos experimentos composto por uma pequena parcela etiquetada mae nualmente e por outra automaticamente etiquetada utilizando informaes contidas em co arquivos BibTEX. Este trabalho faz parte de um projeto, uma ferramenta chamada FIP (Ferramenta Inteligente de Apoio ` Pesquisa), que tem como objetivo a recuperao automtica de a ca a artigos cient cos sobre reas pr-selecionadas na Web; anlise dos artigos por meio de a e a tcnicas de Aprendizado de Mquina e Minerao de Dados; a construo de um mapa e a ca ca 7

representativo do conhecimento das sub-reas, tpicos e temas de pesquisas; importncia a o a relativa dos artigos e autores, entre outros (Brasil & Lopes 2004; Melo & Lopes 2004a; Melo & Lopes 2004b; Melo & Lopes 2005). Dentro do contexto dessa ferramenta (FIP), de suma importncia a tarefa de extrao e a ca de informaes de artigos cient co cos recuperados, de tal forma que se possa estruturar e indexar a base de dados (repositrio de artigos cient o cos) da ferramenta. Este trabalho est organizado da seguinte forma: na Seo 2 so apresentados uma ina ca a troduo a rea de Extrao de Informao descrevendo os principais conceitos e mtricas ca a ca ca e de avaliao, trabalhos relacionados e a proposta de extrao baseada em POS-tagging; ca ca na Seo 3 apresentado o problema da etiquetagem automtica de textos, alm de desca e a e crever o funcionamento do etiquetador TBL; na Seo 4 so apresentados o processo de ca a etiquetagem do corpus, o pr-processamento realizado, algumas decises de projeto tomae o das e os resultados experimentais obtidos; na Seo 5 so apresentadas as consideraes ca a co nais.

2
2.1

Extrao de Informao ca ca
Objetivo da Extrao de Informao ca ca

A rea de Extrao de Informao visa localizar e extrair, de forma automtica, ina ca ca a formaes relevantes em um documento ou coleo de documentos expressos em l co ca ngua natural e estruturar tais informaes para os padres de sa co o da, por exemplo em Banco de 1 Dados ou textos em l ngua natural , a m de facilitar sua manipulao e anlise (Grishca a man 1997). Sistemas de EI no realizam o entendimento completo dos documentos, pelo a contrrio, tais sistemas analisam partes dos documentos que possuam informaes relea co vantes. O objetivo da pesquisa em EI construir sistemas que encontrem e combinem infore maes relevantes enquanto ignoram informaes insignicantes e irrelevantes (Cowie & co co importante ressaltar que a informao extra determinada por um Lehnert 1996). E ca da e conjunto de padres ou regras de extrao espec o ca cas ao seu dom nio. A denio de tais ca padres pode ser feita manualmente, por algum especialista, ou com diferentes graus de o automao. ca Extrao de Informao no deve ser confundida com a desenvolvida rea de Recuca ca a a perao de Informao (RI), a qual seleciona, de uma grande coleo, um subconjunto ca ca ca de documentos relevantes baseados em uma consulta do usurio. O contraste entre os a objetivos dos sistemas de EI e RI pode ser declarado da seguinte forma: RI recupera documentos relevantes de uma coleo, enquanto EI extrai informaes relevantes dos ca co documentos. Portanto, as duas tcnicas so complementares e quando combinadas poe a dem produzir ferramentas interessantes para processamento de texto (Gaizauskas & Wilks
essa forma de estruturao pode envolver, por exemplo, trabalhos relacionados com a sumarizao ca ca automtica de documentos (Lin & Hovy 2003) a
1

1998). Os textos ou documentos dos quais so extra a das as informaes de interesse podem co apresentar algum n de estruturao na apresentao dos dados, como tambm podem vel ca ca e ser totalmente livres. O tipo de texto de onde feita a extrao tem grande inuncia e ca e sobre a escolha da tcnica a ser utilizada na construo de sistemas de EI, pois tal tcnica e ca e pode se basear apenas na estrutura do texto, quando existente. A seguir dada uma e breve descrio dos poss ca veis tipos de textos. Estruturado: um texto considerado estruturado quando apresenta regularidade no e formato de apresentao das informaes. Essa regularidade, facilmente capturada ca co por sistemas para EI, permite que cada elemento de interesse seja identicado com base em regras uniformes, que consideram marcadores textuais tais como delimitadores, e/ou ordem de apresentao dos elementos. Como exemplo, pode-se citar um ca formulrio preenchido. a Semi-estruturado: os textos semi-estruturados so aqueles que apresentam alguma rea gularidade na disposio dos dados. Alguns dados do texto podem apresentar uma ca formatao, enquanto outras informaes aparecem de forma irregular. E o caso da ca co primeira pgina de um artigo que, em geral, no segue um formato r a a gido, permitindo variaes na ordem e na maneira com que as informaes so apresentadas. co co a Por exemplo, para mais de um autor, quando e-mails possuem o mesmo dom nio, geralmente so informados de uma vez, separados por v a rgula e entre chaves. No-estruturado: os textos no estruturados (livres) so aqueles que no exibem rea a a a gularidade na apresentao dos dados. Neste caso, os dados a serem extra ca dos no a so facilmente detectados, a menos que se tenha um conhecimento ling a ustico sobre eles. Como exemplo deste tipo de texto, pode-se citar uma pgina Web. a

2.2

Arquitetura de um Sistema de Extrao de Informao ca ca

O processo de extrao de informao possui duas etapas principais. Primeiro, o ca ca sistema extrai fatos (peas de informao) do texto de um documento atravs da anlise c ca e a local do texto. Segundo, o sistema integra e combina esses fatos produzindo fatos maiores ou novos fatos (por alguma inferncia). Ao nal, os fatos considerados relevantes ao e dom nio so estruturados para o padro de sa a a da. Para estruturar as informaes ao padro de sa as tcnicas de EI baseadas em PLN co a da, e utilizam templates que so estruturas com campos a serem preenchidos pelas informaes a co nos slots. Slots so itens de dados ou partes de informao (formados por pares atributoa ca valor), representando as informaes que devem ser extra co das de um texto. Com base na arquitetura denida por Grishman (Grishman 1997) foram identicados seis mdulos principais presentes em sistemas para EI baseados em PLN: processador o lxico, reconhecimento de nomes, analisador sinttico/semntico, padres de extrao, e a a o ca analisador do discurso e integrao/preenchimento de templates - Figura 1. ca 9

Documento

Processador lxico

Reconhecimento de nomes

Analisador sinttico/semntico

Padres de extrao

Analisador do discurso

Integrao e Preenchimento de templates

Templates preenchidos

Figura 1: Estrutura de um sistema de Extrao de Informao baseado em Processamento ca ca de L ngua Natural Inicialmente o texto dividido em sentenas e em termos. Essa separao (tokenizao) e c ca ca dos termos realizada, normalmente, pelo reconhecimento de espaos em branco e outros e c sinais de pontuao que delimitam os termos. Aps a separao feita uma anlise lxica ca o ca e a e e morfolgica dos termos para determinar a sua poss classe morfolgica (substantivo, o vel o verbo, artigo, etc.) e demais caracter sticas (feminino, plural, etc.). Nesse mdulo o e comum a utilizao de autmatos nitos para o reconhecimento das informaes (Hobbs ca o co et al. 1997). O prxima etapa de processamento identica vrios tipos de nomes prprios e outros o a o itens que possam ter uma estrutura interna, tais como data e hora. Nomes so identicados a por um conjunto de expresses regulares, expressos em funo das classes morfolgica o ca o (part-of-speech) e das caracter sticas sintticas e ortogrcas (letras maisculas) presentes a a u nos termos. Cowie e Lehnert citam como exemplos de reconhecimento de nomes prprios, o palavras que iniciam com uma letra maiscula e por, geralmente, virem prximas de u o termos como Senhor e ltda (Cowie & Lehnert 1996). O mdulo de anlise sinttica e semntica responsvel por receber uma seqncia de o a a a e a ue 10

itens lxicos e tentar construir uma estrutura sinttica, juntamente com alguma informae a ca o semntica, para cada sentena do texto. Nas sentenas so identicados vrios n a c c a a veis de constituintes (segmentos de texto) e para cada constituinte dos grupos nominais e verbais conhecidos, so associadas algumas caracter a sticas que podem ser combinadas nas fases seguintes com os padres de extrao. Por exemplo, nos grupos nominais, pode-se o ca incluir informaes sobre a raiz do ncleo, se ele corresponde ou no a um nome prprio, co u a o assim como o seu papel semntico no contexto da frase. O papel semntico de um grupo a a nominal inclui informaes (grupos nominais relacionados) que auxiliam a sua compresso co a no contexto da frase (Wiebe et al. 1996). A construo de regras ou padres de extrao consiste na criao de um conjunto de ca o ca ca regras de extrao espec ca co para o dom nio tratado. Em geral, esses padres baseiam-se o em restries sintticas e semnticas, aplicadas aos constituintes das sentenas (Muslea co a a c 1999). A etapa de anlise do discurso tem como objetivo relacionar diferentes elementos do a texto. Esta fase considera o relacionamento entre as sentenas, ao contrrio das anteriores. c a Caso for necessrio realizar algum processo de inferncia sobre a informao, tornando-a a e ca expl cita, pode ser realizado nesta etapa. Este mdulo inclui a tratamento das seguintes o tarefas: anlise de frases nominais, que se refere ` tarefa de reconhecer e interpretar apostos a a e outros grupos nominais complexos, resoluo de correferncia, que trata o problema de identicar quando uma nova ca e frase nominal, normalmente um pronome, se refere a outra j citada anteriormente, a e descoberta de relacionamento entre as partes do texto, que objetiva estruturar as palavras do texto em uma rede associativa, fornecendo suporte ` tarefa de extrao. a ca Finalmente, as informaes parciais so combinadas e os templates, denidos pela co a aplicao, so preenchidos com as informaes relevantes ao dom ca a co nio.

2.3

Mtricas de Avaliao e ca

A necessidade por medidas de avaliao para o problema de extrao de informao, ca ca ca surgiu com as Conferncias de Entendimento de Mensagens (MUC) em 1987. Inicialmente e estas medidas foram desenvolvidas baseadas nas medidas de preciso e de cobertura, da a a rea de RI. Contudo, as denies das medidas de EI sofreram alteraes em relao as co co ca usadas em RI, apesar dos nomes serem mantidos. Essas alteraes permitiram considerar co generalizaes em EI, nas quais diferentemente de RI, dados no presentes na entrada co a podem ser erroneamente produzidos (Gaizauskas & Wilks 1998). Na tarefa de extrao de informao, cobertura denida como a quantidade de inforca ca e maes corretamente extra co das sobre todas as informaes relevantes nos textos. Preciso co a 11

denida como a quantidade de informaes corretamente extra e co das sobre todas as informaes extra co das. Mais precisamente, preciso (P ) e cobertura (C) so denidos como: a a C= Nc Nt e P = Nc Np

onde, Nc o nmero de slots corretamente preenchidos pelo sistema, Nt o nmero total e u u de slots relevantes a serem preenchidos e Np o nmero total de slots preenchidos pelo e u sistema. Estas medidas, no entanto, tendem a ser inversamente relacionadas: quando ocorre um aumento na cobertura, a preciso tende a diminuir e vice-versa. a

Template fornecido
Autor1 Autor2 Email_Autor1 Email_Autor2

Slots

Documento
An Architecture for An Architecture for Knowledge Intensive CBR Systems Knowledge Intensive CBR Systems Beln Daz and Pedro Calero Beln Daz and Pedro Calero Dep. Sistemas Informticos y Dep. Sistemas Informticos y Programacin Programacin Universidad Complutense de Universidad Complutense de Madrid, Spain Madrid, Spain {belend, pedro}@sip.ucm.es {belend, pedro}@sip.ucm.es
. . .

Sistema de Extrao de Informao


Preenchimento do template
Autor1 Autor2 Email2 Beln Daz Pedro Calero

Email1 {belend, pedro}@sip.ucm.es

Figura 2: Exemplo de extrao das informaes de um documento ca co

Para exemplicar o clculo da preciso e cobertura, considere o exemplo de extrao a a ca das informaoes de um documento representado na Figura 2. O documento, do qual so c a extra dos os autores e seus e-mails, corresponde a primeira pgina de um artigo cient a co. No exemplo, o sistema preenche corretamente dois slots do total de quatro slots relevantes, dessa forma a cobertura do sistema igual a 2/4 (50%). Contudo, o sistema preenche e erroneamente o slot referente ao e-mail do primeiro autor ({belend, pedro}@sip.ucm.es) e a sua preciso igual a 2/3 (0.667%). a e Na tentativa de avaliar um sistema de EI levando em considerao a cobertura e a ca preciso, pode-se utilizar uma outra medida chamada F-measure, que combina as medidas a 12

anteriores, denida da seguinte forma: ( 2 + 1) C P F = 2 (C + P ) onde, o parmetro quantica a preferncia da cobertura sobre a preciso. Freqentea e a u mente usado = 1 como forma de avaliar sistemas de EI balanceando as duas medidas. e

2.4

Extrao de Informaes de Artigos Cient ca co cos

Por agir de acordo com padres impl o citos nos textos, um sistema de extrao de ca informaes geralmente criado para atuar sobre um tipo espec co e co de texto, por exemplo, documento Web ou publicaes cient co cas como o caso neste relatrio, visando desse e o modo tratar tanto aspectos gerais do texto como excees. Entretanto, ainda no co a e poss obter resultados perfeitos (Cowie & Lehnert 1996). Essa especicidade torna-se vel um problema, pois passa a ser imposs desenvolver um sistema genrico, que analise vel e vrios tipos de textos, automaticamente; outro problema enfrentado est relacionado com a a as vrias formas de se representar uma mesma informao, alm de poss a ca e veis erros. A extrao e estruturao dessas informaes a partir dos artigos cient ca ca co cos deparamse com diversos desaos relacionados com a identicao, no texto, de cada uma das ca informaes abaixo: co 1. t tulo; 2. dados dos autores (instituio, e-mail, etc); ca 3. resumo (abstract); 4. palavras chaves; 5. referncias bibliogrcas e a (t tulo, autor(es), ano de publicao, evento, local, editores, etc). ca O processo de extrao e estruturao das informaes dos artigos, normalmente, no ca ca co a trivial, um conjunto de regras deve ser criado de tal forma que se saiba, por exemplo, e onde termina o t tulo; onde comea e termina o nome do primeiro autor; tratamento de c caracteres especiais, por exemplo, ndice de nota de rodap no nome dos autores; etc. e Deve-se ainda levar em considerao o fato de muitas vezes ser necessrio, ao programa, ca a uma adaptao da regra utilizada. Por exemplo, a maneira como extrair e-mails (compare ca os artigos das Figuras 3 e 2), para mais de um autor, quando e-mails possuem mesmo dom nio, geralmente so informados deixando entre chaves os nomes dos usurios. Essas a a variaes tambm podem ocorrer com as outras informaes. co e co A extrao dos elementos das referncias bibliogrcas um problema mais complexo: ca e a e diferentes formatos, abreviaes e padres usados podem diferenciar referncias que na co o e verdade correspondem a um mesmo artigo. 13

Figura 3: Estruturao das informaes dos artigos ca co Diversos trabalhos relacionados com a extrao de informaes de artigos foram proca co postos na literatura. Em geral esses mtodos se enquadram em duas categorias: abordae gem baseada em regras e abordagem baseada em Aprendizado de Mquina. a Baseada em Regras Giurida et al. (Giurida et al. 2000), por exemplo, desenvolveram um sistema baseado em geras para extrair informaes do cabealho2 de artigos co c cient cos, em formato PostScript. Foram utilizadas regras baseadas na anlise da a natureza espacial dos artigos, tal como t tulos so freqentemente localizados na a u regio superior da primeira pgina e possuem o maior tamanho de fonte. Ding et a a al. (Ding et al. 1999) utilizaram uma tcnica chamada minerao de templates para e ca extrair importantes informaes de artigos e, tambm, de suas referncias. Ding et co e e al. usaram um template para a extrao de informaes do corpo do artigos e outros ca co trs templates para a extrao das referncias bibliogrcas, e obtiveram um resule ca e a tado satisfatrio. Contudo, as referncias analisadas pertenciam a um unico estilo. o e Day et al. (Day et al. 2005) propuseram um mtodo baseado em conhecimento e para extrair informaes de referncias; foi adotado uma ontologia denominada INco e FOMAP (estrutura de representao de conhecimento), capaz de extrair informaes ca co de pelo menos seis estilos de referncias bibliogrcas com uma alta preciso. Mao e a a et al. (Mao et al. 2004) descreveram um sistema que utiliza um conjunto de caracter sticas geomtricas e contextuais de artigos mdicos, para realizar a extrao de e e ca informaes presente no cabealho dos artigos. (Melo et al.) (Melo et al. 2003) traco c balharam na extrao e principalmente na identicao automtica das referncias ca ca a e bibliogrcas, o trabalho apresentou bons resultados na identicao, porm era inia ca e cialmente computacionalmente muito custoso. Algum tempo depois esse problema
O cabealho (Seymore et al. 1999) o conjunto todas as palavras do in do artigo at a primeira c e cio e seo (normalmente a introduo) ou at o nal da primeira pgina, qual ocorrer primeiro. ca ca e a
2

14

foi estudado e resolvido (Melo & Lopes 2004a; Melo & Lopes 2005).

Aprendizado de Mquina Connan e Omlin treinaram Hidden Markov Models (HMM) a para reconhecer quando uma referncia foi gerada por um dos seguintes estilos bie bliogrcos AAAI, NEWAPA, IEEE. A correta identicao do estilo possibilita que a ca as informaes (autores, t co tulo, editora, ano, etc.) sejam extra das com preciso de a at 97% (Connan & Omlin 2000). Yin et al. (Yin et al. 2004) aplicaram bigram e HMM ao problema de extrair informaes de referncias com vrios estilos, ou seja, co e a sem o conhecimento a priori de qual estilo bibliogrco foi utilizado. A estrutura e a os parmetros do modelo HMM so automaticamente aprendidos a partir de exema a 3 plos de treinamento , e o sistema capaz de alcanar uma preciso global acima e c a de 90%. Takasu props um modelo estat o stico chamado Dual and Variable-length output Hidden Markov Model (DVHMM) para a extrao de atributos de referncias ca e na l ngua japonesa, capturadas utilizando um software OCR (Takasu 2003). O modelo gerado tem a vantagem de representar a estrutura sinttica das referncias e os a e padres de erros causados pelo OCR. O AUTOBIB um outro trabalho de extrao o e ca e integrao de informaes bibliogrcas de artigos recuperados na Web (Geng & ca co a Yang 2004). O AUTOBIB utiliza-se de um pequeno banco de dados de referncias j e a estruturadas para prover um conjunto de treino para um parser baseado em HMM. O processo de extrao praticamente automtico e utiliza referncias contidas em ca e a e pginas HTML. Seymore et al. (Seymore et al. 1999) tambm utilizaram HMM a e para extrair informaes importantes do cabealho de artigos cient co c cos em computao, e alcanaram uma preciso global de 92,9%. Seymore et al. deniram 15 ca c a informaes (classes) que podem ocorrer em um cabealho de um documento. co c Han et al. (Han et al. 2003) lidaram com o problema da extrao de informaoes de ca c artigos cient cos como sendo um problema de classicao. A abordagem proposta ca utiliza Support Vector Machines (SVM) para classicar cada linha do cabealho em c uma ou mais de 15 classes. Eles utilizaram principalmente informaes ling co usticas para os atributos e, tambm, algum conhecimento a priori do dom e nio. O mtodo e foi inicialmente proposto para melhorar a qualidade da extrao dos repositrios ca o Citeseer (Lawrence et al. 1999) e eBizSearch (Petinot et al. 2003). Peng et al. (Peng & McCallum 2004) empregaram Conditional Random Fields (CRF) para extrair vrias informaes do cabealho e das referncias de artigos cient a co c e cos. O corpus de referncias utilizado foi criado pelo projeto Cora (McCallum et al. 2000), e o qual contm 500 referncias categorizadas em 13 elementos: author, title, editor, e e booktitle, date, journal, volume, tech, institution, pages, location, publisher e note.

O corpos de treino um conjunto aleatrio de 250 artigos, capturados da Web, em formato PDF. e o

15

2.5

Abordagem Proposta neste Trabalho

Este projeto objetiva extrair automaticamente informaes de referncias bibliogrco e a cas. As referncias, normalmente, possuem as seguintes informaes: autores, t e co tulo, publicao (peridicos, revistas, etc.) ou evento (simpsios, congressos, etc.), editora, ca o o pginas e ano. a A proposta para extrair automaticamente informaes de documentos textuais, baseiaco se no mapeamento do problema de part-of-speech (POS) tagging ao problema de extrao ca de informao. Ilustrado na Figura 4, o mapeamento para a extrao de informaes ca ca co de um documento consiste em, inicialmente, etiquetar todos os termos do documento selecionando alguma etiqueta de um conjunto pr-denido de etiquetas e, posteriormente, e combinar e extrair as informaes de etiquetas correspondentes. Neste mapeamento, um co termo com uma etiqueta ou combinao de termos consecutivos com a mesma etiqueta ca equivalem a uma unidade de informao a ser extra do documento. ca da
Documento Documento textual textual Etiquetador Documento Documento etiquetado etiquetado Processo de extrao Informaes Informaes extradas extradas

Figura 4: Mapeamento do problema de part-of-speech (POS) tagging ao problema de extrao de informao ca ca Este mapeamento para o problema de extrao de informaes de referncias biblioca co e grcas, consiste em etiquetar todos os termos das referncias selecionando alguma etia e queta de um conjunto de poss veis etiquetas, por exemplo AUTOR, T ITULO, REVISTA, EVENTO, LOCAL, PAGINAS e ANO, e, posteriormente, combinar e extrair as informaes (etiquetas correspondentes) das referncias. Esta ultima etapa, extrao propriaco e ca mente dita, descrita com exemplos na Seo 4.6 na pgina 41. e ca a

Etiquetagem Automtica de Corpus a

Borko (1967) dene Processamento de L ngua Natural (PLN) como sendo a manipulao, ou codicao, de uma l ca ca ngua para propsitos espec o cos tais como comunicao, ca traduo, armazenamento e recuperao de informaes. O objetivo do processamento auca ca co tomtico de l a ngua natural facilitar a manipulao e anlise destas utilizando mtodos e ca a e computacionais. A rea de ling a ustica de corpus abrange uma grande variedade de n veis de anlise, por a exemplo um tipo de anlise poderia identicar todas as ocorrncias de uma determinada a e cadeia de caracteres em um corpus, permitindo que estas sejam ao nal manipuladas. No entanto, alguns tipos de anlises necessitam de mais informaes a respeito das palavras a co presentes no corpus, como por exemplo, informaes de natureza gramatical. Dessa forma, co a partir de um corpus etiquetado poss a uma ferramenta analisar e recuperar infore vel maes importantes contidas no corpus. Tais etiquetas (rtulos) so, principalmente, as co o a 16

categorias gramaticais (morfossintticas) das palavras no corpus. Pode-se, por exemplo, a a partir de um corpus etiquetado, recuperar o conjunto de palavras que pertenam a uma c determinada categoria gramatical. A etiquetagem de corpus, geralmente, no uma tarefa simples. Existem diversas a e pesquisas em etiquetagem de corpus com informao ling ca ustica, incluindo categorias gramaticais e estruturas sintticas (Marcus et al. 1994; Leech et al. 2004). A etiquetagem a automtica uma tarefa bem conhecida e bastante explorada em Processamento de L a e ngua Natural e pode ser aplicada em vrias reas do processamento de informao, tais a a ca como pr-processamento para sumarizao automtica, ps-processamento para reconhee ca a o cimento tico de caracteres (OCR) e reconhecimento de fala, anlise sinttica (parsing), o a a traduo automtica e recuperao de informaes, e mesmo para a etiquetagem de corca a ca co pus, pois a etiquetagem manual de textos grandes uma tarefa custosa. e As ferramentas utilizadas na etiquetagem automtica de corpus so os etiquetadores a a (taggers). Na Seo 3.1 so apresentados os principais conceitos sobre etiquetagem morca a fossinttica de textos, as etapas que compem a tarefa de etiquetagem e as abordagens a o de etiquetagem existentes.

3.1

Etiquetagem Morfossinttica de Textos a

A etiquetagem morfossinttica4 de um texto em uma dada l a ngua signica atribuir um rtulo ou etiqueta (tag), pertencente a um conjunto denido de etiquetas (tagset), a o cada palavra, s mbolo de pontuao, palavra estrangeira, ou frmula matemtica presente ca o a no texto, conforme o contexto em que essas informaes aparecem. Para palavras da co l ngua, utiliza-se uma etiqueta referente a sua categoria gramatical (adjetivo, advrbio, e artigo, substantivo, etc.); para s mbolos de pontuao (v ca rgula, ponto, ponto-e-v rgula, parnteses, aspas, etc.) freqentemente utiliza-se o prprio s e u o mbolo; palavras estrangeiras, frmulas matemticas, ou algum outra denominao no texto, geralmente so rotuladas o a ca a com uma unica etiqueta (EAGLES - Expert Advisory Group on Language Engineering Standards 1996). Um exemplo simples da etiquetagem morfossinttica, de uma sentena, a c ilustrada tambm a possibilidade para a l ngua portuguesa apresentado na Figura 5. E e e de utilizar-se uma etiqueta diferente (PTO) para designar o ponto nal de uma sentena. c

A casa verde .
ART SUBST VERB ADJ PTO

ART SUBST VERB ADJ PTO

artigo substantivo verbo adjetivo ponto

Figura 5: Exemplo de part-of-speech tagging As etiquetas para cada classe gramatical das palavras podem, por sua vez, ser renadas
4

Denominada, no ingls, de part-of-speech (POS) tagging. e

17

com atributos referentes a cada classe. Para a l ngua portuguesa, por exemplo, o atributo substantivo pode ser renado com relao ao tipo (comum, prprio), grau (aumentativo, ca o diminutivo), gnero (masculino, feminino), e assim por diante. Pode-se inclusive criar uma e etiqueta para uma unica palavra espec ca no texto. O processo geral de etiquetagem de um texto apresentado na Figura 6. Dado um conjunto de etiquetas e uma seqncia de e ue termos do texto, o processo geral de etiquetagem consiste em associar a cada termo a sua respectiva etiqueta.

Seqncia de termos do texto

Etiquetador

Seqncia de termos com suas respectivas etiquetas

Figura 6: Processo geral de etiquetagem de texto A tarefa de etiquetagem automtica dividida em trs mdulos: escrutinador lxico, a e e o e classicador gramatical e desambigizador. O escrutinador lxico responsvel por tou e e a kenizar e identicar as oraes (sentenas) no texto. A tokenizao separa cada termo co c ca (palavras, sinais de pontuao, etc.) no texto, normalmente, atravs do reconhecimento de ca e espaos em branco. A maioria dos etiquetadores consideram que os textos de entrada esc to no formado ideal e, dessa forma, no possuem um escrutinador lxico. O classicador a a e gramatical designa classes gramaticais aos termos no texto com o aux lio, por exemplo, de um lxico e de um conjunto de informaes para reconhecer termos (normalmente pae co lavras) que no esto contidos no lxico. O desambiguizador utiliza informaes relativas a a e co ao contexto para associar uma, e somente uma, classe gramatical a cada termo do corpus. Este mtodo objetiva resolver o problema de ambigidade lexical, situao em que uma e u ca mesma palavra possua mais de uma categoria gramatical, e, nestes casos, o contexto deve ser considerado para a desambiguao. Tanto o lxico, quanto as informaes utilizadas ca e co para avaliar o contexto integram o modelo da l ngua utilizado por cada etiquetador. Os etiquetadores podem ser constru dos automaticamente, a partir de um corpus de treino etiquetado, ou (manualmente) elaborados por lingistas que, utilizando conheciu mentos ling usticos, desenvolvem um conjunto de regras de etiquetagem. Conforme o tipo de conhecimento utilizado para representar o modelo da l ngua, os etiquetadores podem ser classicados nas seguintes abordagens. Simblica: os etiquetadores da abordagem simblica (ou ling o o ustica) so baseados em a regras (Voutilainen 1995; Lopes & Jorge 2000), casos (Daelemans et al. 1996), restries (Chanod & Tapanainen 1995) e rvores de deciso no probabil co a a a sticas. Probabil stica: etiquetadores probabil sticos fundamentam-se em tcnicas como redes e 18

neurais (Ma et al. 1999), mxima entropia (Ratnaparkhi 1996), Modelo de Markov a (Wilkens & Kupiec 1996) e rvores de deciso probabil a a sticas (Schmid 1995). H brida: os etiquetadores da abordagem h brida empregam tanto conhecimento simbo lico quanto probabil stico no processo de etiquetagem. Como um exemplo desta abordagem pode-se citar o etiquetador TBL (baseado em transformao dirigida ca por erro) (Brill 1994; Brill 1995; Brill 1997). Atualmente, os etiquetadores mais utilizados so os probabil a sticos. Seu funcionamento basicamente consiste na construo de um modelo estat ca stico da l ngua que utilizado e para desambigisar um conjunto de palavras. Este modelo, em geral, aparece como um u conjunto de freqncias de diferentes tipos de fenmenos ling ue o usticos e constru atrae do vs da observao de n-gramas, sendo que o mais comum a modelagem na forma de e ca e unigramas, bigramas e trigramas. Os n-gramas so seqncias de n termos adjacentes. a ue De forma a maximizar as vantagens encontradas nas abordagens simblica e probao bil stica e minimizar as desvantagens, Eric Brill desenvolveu um etiquetador h brido que contm um componente estat e stico e outro simblico. o Neste trabalho optou-se pelo uso do etiquetador de Eric Brill por ser bastante conhecido, dispon e de uso relativamente fcil. vel a

3.2

Etiquetador Baseado em Transformao Dirigida por Erro ca

O etiquetador desenvolvido por Eric Brill, denominado TBL, baseia-se no algoritmo de Aprendizado Baseado em Transformao Dirigida por Erro (Brill 1994; Brill 1995; Brill ca 1997). Tal algoritmo, ilustrado na Figura 7, pode ser aplicado a vrios problemas, tais a como a etiquetagem morfossinttica e a anlise sinttica. a a a 3.2.1 Aprendizado Baseado em Transformao Dirigida por Erro ca

Conforme apresentado na Figura 7, o corpus no-etiquetado passa inicialmente por a uma etapa de etiquetagem. O sucesso do algoritmo depende em grande parte do sucesso desta etapa inicial, a qual pode ser baseada na freqncia de categorias gramaticais ue para cada palavra de um lxico. Aps ter sido etiquetado, o corpus comparado com o e o e mesmo corpus manualmente etiquetado, e uma lista de transformaes aprendida para co e ser aplicada ` sa do etiquetador inicial. Cada transformao composta por uma a da ca e regra de reescrita e pelo contexto que ir desencadear esta regra5 . A cada iteraao de a c aprendizado, de acordo com alguma funo objetivo, uma transformao que melhora o ca ca resultado da etiquetagem encontrada e adicionada ` lista ordenada de transformaes, e a co e o corpus etiquetado atualizado aplicando sobre ele a transformao aprendida. Esse e ca processo continua at que no seja mais encontrada uma transformao que melhore o e a ca corpus etiquetado.
Observar que algumas palavras tm apenas um papel morfossinttico (tag), enquanto outras podem e a ter mais de um e, neste caso, o contexto tem que ser considerado para a desambiguao ca
5

19

Figura 7: Algoritmo de Aprendizado Baseado em Transformao Dirigida por Erro ca

Um exemplo de aprendizado baseado em transformaes ilustrado na Figura 8. Neste co e exemplo assume-se que existam apenas quatro transformaes poss co veis (T1,T2,T3 e T4) e que a funo objetivo utilizada seja o nmero total de erros. O corpus no-etiquetado ca u a passa pela etiquetagem inicial, e o resultado um corpus etiquetado com 5100 erros. e Em seguida, cada uma das transformaes selecionadas so aplicadas em ordem. Neste co a exemplo, T2 foi a primeira transformao da lista, pois foi a transformao que possibilitou ca ca a maior reduao de erros. E ento aplicada a todo o corpus e o aprendizado continua. Em c a seguida a transformao que mais diminuiu o nmero de erros foi T3, logo T3 aprendida ca u e como a segunda transformao da lista. Partindo de T3 nota-se que no existem mais ca a redues no nmero de erros aplicando transformaes, ento o processo termina. co u co a 20

Corpus noetiquetado

Corpus etiquetado Erros = 5.100 T1 T1

Corpus etiquetado Erros = 3.310 T1 Corpus etiquetado Erros = 2.110

Corpus etiquetado Erros = 1.410

Etiquetador

Inicial

Corpus etiquetado Erros = 3.145

T2

T2

Corpus etiquetado Erros = 1.251

Corpus etiquetado Erros = 5.100

Corpus noetiquetado

T2

T1

Corpus etiquetado Erros = 3.910

Corpus etiquetado Erros = 5.100 T1

T3

Corpus etiquetado Erros = 3.310

etiquetado Erros = 1.410

Corpus T3

Corpus etiquetado T1 Erros = 1.231


Corpus

Corpus etiquetado Erros = 1.231

T3
Etiquetador

Inicial

T4

Corpus etiquetado Erros = 3.145

T2

T4 etiquetado
Erros = 2.110

T2

etiquetado Erros = 1.251

Corpus T4

Corpus

T2 etiquetado
Erros = 6.300
Corpus etiquetado FiguraErrosExemplo 8: = 5.100

T3

Corpus etiquetado Erros = 4.255

T3

Corpus etiquetado Erros = 1.231

Figura 22 - Exemplo de Aprendizado Baseado em Transformao Dirigida por Erro (Brill,1994a)

Corpus etiquetado deT3 Erros = 3.910 Aprendizado Baseado

Corpus Corpus etiquetado etiquetado emErros = 1.231 co Dirigida por Transformaa Erros = 1.231 T4 T4

Erro

3.2.2

Etiquetador TBL
T4

Corpus Corpus Corpus 3.3.1.2etiquetador TBL possui dois mdulos de etiquetagem: um mdulo que gera regras, O O Etiquetador o o etiquetado etiquetado etiquetado Erros o conjunto de Erros = 4.255 mais provveis de palavras Erros = 1.231 no contextuais, para determinar = 6.300 a etiquetas a (conhecidas e desconhecidas) e outro mdulo que gera regras contextuais para melhorar o 2 VLVWH PD p F R P S R VW R S R U G RLV P y G XO RV G H HWLTXHWDJH P X P LQLFLDO H X P F R QWH[WXDO 2 LQLFLDO a preciso da etiquetagem. O etiquetador apenas altera a etiqueta de uma palavra de X a Figura 22 - Exemplo de Aprendizado Baseado em Transformao Dirigida por Erro (Brill,1994a) F R P SLOD R FRUSXV HWLTXHWDG R FULDQG R X P Op [LF R H P T X H SDUD FDGD SDODYUD Ki DSHQDV VXD HWLTX HWD para Y se:

PDLV F R P X P $VVL P QD HWLTX HWDJH P LQLFLDO HOH DWULE XLUi D HWLTX HWD PDLV SU R Yi YHO SDUD D SDODYUD a palavra no aparece no corpus de treinamento, ou a 3.3.1.2 O Etiquetador F R QI R U P H G HVFULW R Q R Op [LF R )LJXUD  

a palavra foi etiquetada com Y pelo menos uma vez no corpus de treinamento.
2 VLVWH PD p F R P S R VW R S R U G RLV P y G XO RV G H HWLTXHWDJH P X P LQLFLDO H X P F R QWH[WXDO 2 LQLFLDO Algoritmo de O etiquetado o a etiquetagem inicial, constri um lxico o e Corpus primeiro mdulo, responsvel pela etapa de do treinamento X H SDUD FDGD SDODYUD Ki DSHQDV VXD HWLTXLxico F R P SLOD R FRUSXV HWLTXHWDG R FULDQG R X P Op [LF R H P T HWD a partir do corpus manualmente etiquetado comincial etiquetador a nalidade de atribuir a etiqueta mais PDLV F R P X P $VVL P QD HWLTX HWDJH P LQLFLDO HOH DWULE XLUi D HWLTX HWD PDLV SU R Yi YHO SDUD D SDODYUD

provvel para cada palavra - Figura 9. O lxico formado pela palavra seguida de sua a e e

Figura QI R P H G HVFULW R Qbaseado em Transformao dirigida por erro: Treinamento do etiquetador inicial F R 23 Etiquetador R etiqueta Umais comum. Op [LF R )LJXUD  
Algoritmo de treinamento do etiquetador incial

Corpus etiquetado

Lxico

Figura 23 Etiquetador baseado em Transformao dirigida por erro: Treinamento do etiquetador inicial

Figura 9: Etiquetador Baseado em Transformao Dirigida por Erro: treinamento do ca etiquetador inicial
38

21

Para etiquetar palavras desconhecidas (no presentes no lxico), o etiquetador inicial a e utiliza outro procedimento. Inicialmente, dene que as palavras desconhecidas que iniciam por letra maiscula tendem a ser substantivos prprios e as que iniciam por letras u o minsculas tendem a ser substantivo comum. Em seguida o etiquetador gera regras lxicas u e para minimizar o erro desta etiquetagem inicial, utilizando apenas informaes intr co nsecas das palavras, ou seja, sem considerar o contexto. Alguns modelos de regras para palavras desconhecidas podem ser vistos na Tabela 1. Mude a etiqueta de uma palavra desconhecida de A para B se: 1. Removendo prexo (suxo) l, |l| <= 4, resulta em uma palavra no lxico (l e e qualquer string de tamanho 1 a 4) 2. O primeiro (ltimo) (1,2,3,4) caracteres da palavra c u e 3. Adicionando a string m como prexo (suxo) resulta em uma palavra (|m|<=4) 4. A palavra m nunca aparece imediatamente a esquerda (direita) da palavra 5. O caractere c aparece na palavra Tabela 1: Regras para palavras desconhecidas

Mude a etiqueta de uma palavra de A para B quando: 1. A palavra anterior (posterior) foi etiquetada como z 2. A palavra duas posies antes (depois) foi etiquetada como z co 3. Uma das duas palavras anteriores (posteriores) foi etiquetada como z 4. Uma das trs palavras anteriores (posteriores) foi etiquetada como z e 5. A palavra anterior foi etiquetada como z a posterior como x 6. A palavra anterior (posterior) foi etiquetada como z e a palavra duas posies antes foi etiquetada como x co 7. A palavra que vem antes (depois) w e 8. A segunda palavra que vem antes (depois) w e 9. Se uma das duas palavras que vem antes (depois) w e 10. Se a palavra atual w e a anterior (posterior) y e e 11. Se a palavra atual w e a palavra anterior (posterior) e e classicada como t 12. Se a palavra atual w e 13. Se a palavra anterior (posterior) w e a classicao e ca anterior (posterior) t e 14. Se a palavra atual w e a palavra anterior (posterior) y e e e a classicao anterior (posterior) t ca e Tabela 2: Regras que utilizam informaes sobre o contexto co O segundo mdulo, etiquetador contextual, infere automaticamente as regras relativas o ao contexto, a partir do corpus de treinamento etiquetado. Isto feito realizando a e etiquetagem do corpus de treinamento, utilizando o etiquetador inicial, e em seguida comparando automaticamente os resultados e gerando a lista ordenada de transformaes. co A partir da aplicao desta lista de transformaes no corpus, so geradas as regras ca co a de contexto. As aplicaes que gerarem o melhor resultado so utilizadas como regras co a de contexto - Figura 10. Dessa forma, obtm-se um conjunto de regras que analisa a e 22

2 (WLTXHWDG R U F R QW H[WXDO LQIHULUi DXW R PDWLFDPH QWH DV UHJUDV G R F R QW H[W R D SDUWLU G R


FRUSXV

GH WUHLQDP H QW R HWLTX HWDG R ,VW R p IHLW R ID]HQG RV H j HWLTX HWDJH P G R

F RUS XV

G H WUHLQDP HQW R

XVDQG R R HWLTX HWDG R U LQLFLDO H D VHJXLU F R P SDUDQG RV H DXW R PDWLFDPH QWH RV U HVXOWDG RV H JH UDQG R VH D OLVWDo das etiquetas HV $ pelo etiquetadorRinicial e as corrige conforme oQ contexto noUm R atribuia GH WUDQVI R U PDo } feita SDUWLU GD DSOLFDom GH VWD OLVWD GH WUDQVI R U PDo } HV R F RUS XV  VH c

qual as DV U HJUDV GH F R QWH[W JHUDGDV palavras aparecem. R $V DSOLFDo } HV T X H JHUDUH P R P HOK R U U HVXOWDG R VH Um R XWLOL]DGDV e F R PComoUDV GH F R QW H[W R )LJXUD   as regras contextuais podem fazer referncia a etiqueR U HJ apresentado na Tabela 2, tas anteriores/posteriores (regras no lexicalizadas) ou a palavras anteriores/posteriores a (regras $VVLP R EWp PVH Na Tabela R2 Gas UvariveisH z, x e t referem-seGDV todas as classes R lexicalizadas). X P F R QMXQW H HJUDV TX DQDOLVD D DWULEXLom R a HWLTXHWDV IHLWD SHO a HWLTX HWDG R U LQLFLDO H DV F R Ue as Fvariveis Rw Re y abrangem DV SDODYUDV palavras do corpus de U gramaticais (etiquetas) ULJH R QI Ra P H F QWH[WR Q R TXDO todas as DSDUHFH P treinamento.
Etiquetador Contextual

Etiquetas iniciais

Seqncia de etiquetas T

Figura 24 - Etiquetador baseado em transformao dirigida por erro: Etiquetador Contextual

Figura 10: Etiquetador Baseado em Transformao Dirigida por Erro: etiquetador conca textual Resumindo, a etiquetagem de um novo corpus, assumindo que o etiquetador esteja treinado, consiste em submeter H WU HLQDP H etiquetador  $ SDODYUD Qm R DSDU HF H Q R FRUSXVoG corpus ao QW R 7DE HOD  inicial para a etiquetagem de palavras conhecidas (lxico) e desconhecidas, e posteriormente aplicar (uma de cada vez) e  $ SDODYUD I RL HWLTX HWDGD F R P R < S HO R P H Q R V X PD YH] a lista de regras contextuais no corpus. As transformaes que esto mais prximas co a o do in $V daHJUDV S ao Has transformaes que HWLTX HWDV DQWHULRmelhorVWHUL R U HV noUHJUDV Qm R cio U lista s G P ID]HU UHIH Uro c QFLD D produzem um U HV  S R resultado corpus R etiquetado. E importante ressaltar que uma transformao feita no in ca cio, pode ocasionar OH[LFDOL]DGDV  D  R X D SDODYUDV DQWHUL R U HV  S RVWHUL R U HV UHJUDV OH[LFDOL]DGDV  D   outras transformaes posteriormente. co
$V U HJUDV G H F R QWH[W R WUDQVI R U PDo } HV  DOWHUDP XPD HWLTX HWD GH ; SDUD < VH

F R P R P R VWUDG R QD 7DE HOD 

Extrao de Informao Utilizando POS-tagging ca ca

Tabela 1 - Regras de Contexto do Etiquetador Baseado em Transformao dirigida por erro

Nas prximas sees so descritos todos os procedimentos necessrios ` realizao de o co a a a ca Mude de tag apara extraquando: para tag bco de informaes de referncias bibliogrcas baseando-se no experimentos a co e a 1) A palavra descrito na Seo 2.5. mapeamento anterior (posterior) foi etiquetada como z ca

2) A palavra duas posies antes (depois) foi etiquetada como z

4.1

Denies de Projeto co

Inicialmente, foi necessrio adotar algumas decises de projeto para a realizao dos a o ca experimentos. E importante ressaltar, que essas decises foram tomadas de acordo com o as necessidades da FIP, comentada brevemente na introduo (Brasil & Lopes 2004; Melo 39 ca & Lopes 2004a; Melo & Lopes 2004b; Melo & Lopes 2005). Para a denio do conjunto de etiquetas das referncias bibliogrcas foi necessrio ca e a a vericar quais so as informaes que constituem uma referncia. Um estudo sobre as a co e principais normas (padres) para a elaborao de referncias bibliogrcas foi realizado o ca e a e optou-se por utilizar, neste trabalho, as normas tcnicas denidas pela NBR6023 da e Associao Brasileira de Normas Tcnicas (2002), as normas do Chicago Manual of Style ca e Guide baseadas no Chicago Manual Style (1993) e as especicaes tcnicas da American co e Psychological Association Publication Manual (1994). O conjunto de etiquetas tambm foi e 23

baseado no BibTEX, que um formato para referncias bibliogrcas usado em combinao e e a ca A X6 . como o sistema de processamento de texto TEX/LTE Esses padres basicamente so compostos por tipos de referncias (livros, artigos, reviso a e tas, eventos, etc.) e as informaes que devem ser preenchidas em cada tipo, divididas em co obrigatrias e opcionais. Neste trabalho no houve distino entre tais informaes, visto o a ca co que a FIP deve ser capaz de lidar com todos os tipos de informaes e, conseqentemente, co u com todos os tipos de referncias. Os tipos de referncias bibliogrcas, juntamente com e e a a suas etiquetas, considerados neste projeto so descritos a seguir. a ARTIGO AUTHOR: autor(es) do artigo; TITLE: ttulo do artigo; JOURNAL: revista que publicou o artigo; YEAR: ano de publicao; ca VOLUME: volume da revista; NUMBER: nmero da revista; u INITPAGE: pgina inicial do artigo na revista; a FINALPAGE: pgina nal do artigo na revista; a MONTH: ms de publicao; e ca URL: link para o arquivo (pdf, ps); URLACCESSDATE: data em que a url foi acessada; NOTE: alguma informao adicional; ca ISSN: numerao internacional para publicaes peridicas ca co o LIVRO AUTHOR: autor(es) do livro; EDITOR: editor(es) do livro; TITLE: ttulo do livro; PUBLISHER: editora do livro; YEAR: ano de publicao; ca VOLUME: volume do livro; NUMBER: nmero do livro; u SERIES: srie que publicou o livro; e ADDRESS: endereo completo, ou apenas a cidade, da editora; c
6 A TEX/L TEX , de fato, um padro para publicaes em vrias reas de pesquisa. e a co a a

24

EDITION: edio do livro; ca MONTH: ms de publicao; e ca NOTE: alguma informao adicional; ca ISBN: numerao internacional para livros ca CAP ITULO DE LIVRO AUTHOR: autor(es) do livro; EDITOR: editor(es) do livro; TITLE: ttulo do captulo; BOOKTITLE: ttulo do livro; CHAPTER: nmero do cap u tulo; INITPAGE: pgina inicial; a FINALPAGE: pgina nal; a PUBLISHER: editora do livro; YEAR: ano de publicao; ca VOLUME: volume do livro; NUMBER: nmero do livro; u SERIES: srie que publicou o livro; e TYPE: algo sobre o tipo do documento, por ex.: a seo; ca ADDRESS: endereo completo, ou apenas a cidade, da editora; c EDITION: edio do livro; ca MONTH: ms de publicao; e ca NOTE: alguma informao adicional; ca ISBN: numerao internacional para livros ca CONGRESSOS, CONFERENCIAS, SIMPOSIOS, WORKSHOPS EDITOR: editor(es) do evento; TITLE: ttulo do evento; PUBLISHER: editora do evento; YEAR: ano de evento; SERIES: srie do evento; e ORGANIZATION: rgo patrocinador do evento; o a ADDRESS: endereo completo, ou apenas a cidade, da editora; c 25

MONTH: ms de publicao; e ca NOTE: alguma informao adicional ca TRABALHOS APRESENTADOS EM EVENTOS AUTHOR: autor(es) do trabalho; TITLE: ttulo do trabalho; BOOKTITLE: ttulo do evento; YEAR: ano de publicao; ca EDITOR: editor(es) do trabalho; SERIES: srie do evento; e INITPAGE: pgina inicial; a FINALPAGE: pgina nal; a PUBLISHER: editora; ORGANIZATION: rgo patrocinador do evento; o a ADDRESS: endereo completo, ou apenas a cidade, da editora; c MONTH: ms de publicao; e ca URL: link para o arquivo (pdf, ps); URLACCESSDATE: data em que a url foi acessada; NOTE: alguma informao adicional; ca ISSN: numerao internacional para publicaes peridicas; ca co o ISBN: numerao internacional para livros ca DISSERTACOES E TESES AUTHOR: autor da monograa; TITLE: ttulo da monograa; SCHOOL: universidade no qual a monograa foi escrita; YEAR: ano de publicao; ca TYPE: algo que indique se uma dissertao ou tese; e ca ADDRESS: departamento no qual a monograa foi escrita; MONTH: ms de publicao; e ca URL: link para o arquivo (pdf, ps); URLACCESSDATE: data em que a url foi acessada; NOTE: alguma informao adicional; ca 26

ISBN: numerao internacional para livros ca RELATORIO TECNICO AUTHOR: autor do relatrio; o TITLE: ttulo do relatrio; o INSTITUTION: instituio no qual o relatrio foi escrito; ca o YEAR: ano de publicao; ca TYPE: algo que indique se um relatrio tcnico; e o e NUMBER: nmero do relatrio; u o ADDRESS: departamento no qual o relatrio foi escrito; o MONTH: ms de publicao; e ca NOTE: alguma informao adicional ca M IDIA (CD-ROM) AUTHOR: autor da m dia; TITLE: ttulo da mdia; PUBLISHER: editora; ADDRESS: endereo completo, ou apenas a cidade, da editora; c NOTE: alguma informao adicional ca PAGINA DE INTERNET AUTHOR: autor da pgina; a TITLE: ttulo da pgina; a URL: link para a pgina; a URLACCESSDATE: data em que a url foi acessada; NOTE: alguma informao adicional ca Uma descrio do conjunto de etiquetas criado, denominado FIP tagset, dado na ca e Apndice A. E importante ressaltar que mesmo elaborando-o de forma cuidadosa, o FIP e tagset sofreu alteraes durante o processo de etiquetagem manual do corpus. Uma das co modicaes foi a incluso de uma etiqueta, nominada INDICATOR, que engloba todos co a os termos que indicam a presena de informaes, por exemplo: pp, In, No, pages, etc. c co Nos experimentos foi utilizado o etiquetador TBL, desenvolvido por Eric Brill, que se baseia no algoritmo de Aprendizado Baseado em Transformao Dirigida por Erro (Brill ca 1994; Brill 1995; Brill 1997). 27

4.2

Pr-processamento e

O corpus utilizado nos experimentos possui referncias bibliogrcas da rea de Come a a putao e abrange os estilos bibliogrcos Plain, Alpha, Abbrv, Apalike e Chicago. Na ca a Seo 4.3, uma descrio completa do processo de construo e etiquetagem do corpus ca ca ca e apresentada. Inicialmente, para que o corpus pudesse ser utilizado vrios ajustes, relacia onados ` tarefa de pr-processamento, foram realizados: a e correo de erros provenientes do software7 de converso de arquivos no formato ca a .PDF ou .PS para o formato .TXT; remoo de espaos duplos; ca c padronizao de um conjunto de caracteres, por ex.: todos os caracteres similares ca ao caractere h fen, foram substitu dos pelo mesmo; tokenizao do corpus; ca substituio da barra (/) pelo s ca mbolo $b, pois o etiquetador TBL utiliza a barra para separar a palavra de sua etiqueta; formatao do corpus resultando em uma referncia completa por linha ca e O software na maioria dos casos realiza perfeitamente a converso, entretanto em a algumas situaes podem ocorrer alguns erros, por ex.: substituio do conjunto de caco ca racteres por . A idia de padronizar um conjunto de caracteres, para a tarefa de e etiquetagem/extrao, surgiu das seguintes observaes: ca co um corpus que contenha uma grande variedade8 de sinais de pontuao poderia ca dicultar a tarefa do etiquetador, e a padronizao de caracteres no afetaria o resultado do sistema de extrao, ou ca a ca seja, as informaes que deveriam ser extra co das, com ou sem padronizao, seriam ca as mesmas Antes da etapa de pr-processamento, cada referncia corresponde a vrias linhas e e a consecutivas no corpus. Para identicar uma referncia completa, foram criados vrios e a modelos (padres), a partir da anlise do corpus, que informam quando uma linha o a e in cio/m de uma referncia. A grande maioria das referncias no corpus possuem indicae e dores de in de referncia, o que, conseqentemente, facilita a criao dos modelos de cio e u ca identicao. Esses indicadores normalmente assumem os seguintes formatos: ca
Para a converso dos arquivos foram utilizados os comandos pdftotext verso 3.0 (aplicativo linux) e a a pstotext verso 1.9 (aplicativo windows) a 8 O corpus possui caracteres similares aos caracteres: h fen, aspas simples e aspas duplas.
7

28

nmero. corpo da referncia, u e [nmero]. corpo da referncia, u e [conjunto de caracteres alfanumricos, ano] corpo da referncia e e e (conjunto de caracteres alfanumricos, ano) corpo da referncia. e e No entanto, para algumas referncias que no foi poss criar modelos, foram crie a vel adas heur sticas na tentativa de identic-las. Algumas das heur a sticas utilizadas so a apresentadas a seguir. 1. Uma linha do corpus no in de referncia quando possui tamanho menor que a e cio e 40 e no contm as palavras http e ftp; uma referncia, muito raramente, pode ser a e e composta apenas por um link de tamanho pequeno. 2. Uma linha que comea por uma preposio no in de referncia. c ca a e cio e 3. Caso uma linha termine por uma preposio, a linha seguinte no in de refeca a e cio rncia. e 4. Uma linha que comea por uma letra minscula no in de referncia. c u a e cio e 5. Uma linha inicio de referncia quando contm um ano entre parnteses. e e e e Observando as heur sticas acima poss notar que existe uma maior facilidade em e vel criar regras, para determinar quando uma linha do corpus no in a e cio de referncia. e Vale ressaltar tambm que a ordem na qual as heur e sticas so utilizadas inuenciam no a resultado nal, ou seja, dependendo da ordem de execuo destas, algumas referncias, ca e antes identicadas corretamente, podem ser erroneamente identicadas. O programa denominado xrefs, escrito em Perl, que realiza todas as tarefas de pr-processamento e descritas anteriormente, pode ser visto no Apndice B. e Ao nal desta etapa constatou-se que alguns erros ainda no haviam sido corrigidos, a isso se deve principalmente a grande quantidade de padres e formatos, e tambm por o e existirem algumas referncias que possuem estruturas raras, tal como uma tabela. Foi e realizada mais uma inspeo no corpus e vrios erros foram corrigidos manualmente. ca a Acredita-se que ainda possam existir alguns erros, porm em uma porcentagem bem e pequena.

4.3

Processo de Etiquetagem do Corpus

Antes de realmente iniciar os experimentos com o etiquetador TBL necessrio ter e a um corpus etiquetado, razoavelmente grande9 , que contenha uma grande variedade de modelos. O corpus utilizado nos experimentos composto por uma pequena parcela etie quetada manualmente e por outra automaticamente etiquetada utilizando informaes co contidas em arquivos BibTEX. Como comentado anteriormente, o corpus possui referne cias bibliogrcas da rea de Computao e abrange os estilos bibliogrcos Plain, Alpha, a a ca a
9

Na Figura 12 pode ser observada a relao do tamanho do corpus e a preciso do etiquetador ca a

29

Abbrv, Apalike e Chicago. Algumas informaes, consideradas relevantes, sobre o corpus co so apresentadas na Tabela 3. a
1 2 3 4 5 6 Estilo bibliogrco a Plain Alpha Abbrv Chicago Apalike Aleatrio o Quantidade de palavras 215726 267679 219061 220810 177326 34384 Quantidade de referncias e 5000 5000 4996 4993 3992 947 Etiquetagem Automtica a Automtica a Automtica a Automtica a Automtica a Manual

Tabela 3: Informaes sobre o corpus co Na Seo 4.3.1 descrito em detalhes o processo de construo e etiquetagem autoca e ca mtica de grande parte do corpus - linha 2 a 6 na Tabela 3. O processo de etiquetagem a manual de uma pequena parcela do corpus apresentado na Seo 4.3.2. e ca 4.3.1 Etiquetagem Automtica a

Um arquivo com extenso .BIB, chamado de base BibTEX, apresenta informaes a co de referncias bibliogrcas separadas por campos, denominados campos BibTEX. A e a partir de um arquivo .BIB etiquetado (as informaes de cada campo esto etiquetadas) co a poss criar um conjunto de referncias etiquetadas. Posteriormente, o procedimento e vel e utilizado para a etiquetagem de arquivos .BIB apresentado. e Para a utilizao do BibTEX necessrio especicar dois parmetros: o estilo biblioca e a a grco (arquivo .BST) e a base (arquivo .BIB). Atualmente, existe uma grande variedade a de arquivos de estilos bibliogrcos para o BibTEX dispon a veis na WWW. Optou-se por utilizar neste trabalho os estilos Plain, Alpha, Abbrv, Apalike e Chicago, disponibilizados pela CTAN10 , pois esto entre os estilos mais utilizados pela comunidade cient a ca. Os estilos Plain, Alpha, Abbrv e Unsrt so os chamados estilos bibliogrcos padro que a a a serviram de base para a criao de todos os outros estilos existentes. O estilo Unsrt ca no foi utilizado por ser como o Plain, exceto que as referncias no so alfabeticamente a e a a ordenadas. A base utilizada foi recuperada do repositrio The Collection of Computer Science o 11 Bibliographies . The Collection of Computer Science Bibliographies uma coleo de e ca literaturas cient cas dispon veis, abrangendo os principais tpicos em Cincia da Como e putao. A base utilizada composta por vrios arquivos .BIB de diferentes tamanhos. ca e a O procedimento para a construo de um conjunto de referncias automaticamente ca e etiquetadas descrito a seguir. O BibTEX em sua implementao aceita no mximo 5000 e ca a citaes, ou seja, um arquivo .BIB tem que possuir no mximo 5000 entradas. As entradas co a so os poss a veis tipos de referncias, por exemplo article, book, inbook, inproceedings, e etc. Dentre os vrios arquivos .BIB da base foram selecionados cinco12 , um para cada a
http://ctan.org/ http://liinwww.ira.uka.de/bibliography/index.html 12 Inicialmente um arquivo com mais de 5000 entradas selecionado e, posteriormente, atravs de uma e e inspeo manual, seu nmero reduzido prximo de 5000. ca u e o
11 10

30

estilo, cada um com no mximo 5000 entradas. Em seguida utilizado o programa a e 13 JabRef , verso 1.8.1, para vericar se existe erros sintticos e inconsistncias nos arquivos a a e .BIB selecionados. Aps a denio e ajustes dos arquivos .BIB, o prximo passo a o ca o e tarefa de etiquetagem propriamente dita. Para uma melhor compreenso ilustrado na a e Figura 11, um exemplo da etiquetagem da entrada INCOLLECTION contida em um arquivo chamado 00.bib da base.
@INCOLLECTION{Bell91-narrative-abr, author = {Allan Bell}, title = {News stories as narratives}, booktitle = {The Discourse Reader}, publisher = {Routledge}, year = {1999}, editor = {Adam Jaworski and Nikolas Coupland}, chapter = {13}, pages = {236 -- 251}, address = {London}, crossref = {Bell91-news}, } @INCOLLECTION{Bell91-narrative-abr, author = {Allan/{AUTHOR} Bell/{AUTHOR}}, title = {News/{TITLE} stories/{TITLE} as/{TITLE} narratives/{TITLE}}, booktitle = {The/{BOOKTITLE} Discourse/{BOOKTITLE} Reader/{BOOKTITLE}}, publisher = {Routledge/{PUBLISHER}}, year = {1999/{YEAR}}, editor = {Adam/{EDITOR} Jaworski/{EDITOR} and Nikolas/{EDITOR} Coupland/{EDITOR}}, chapter = {13/{CHAPTER}}, pages = {236/{PAGES} --/- 251/{PAGES}}, address = {London/{ADDRESS}}, crossref = {Bell91-news}, }

00.bib original

00.bib etiquetado

Figura 11: Exemplo da etiquetagem de um arquivo .BIB Conforme observado neste exemplo, a etiquetagem consiste em para cada campo (author, title, booktitle, publisher, etc.) etiquetar as suas informaes, delimitadas por co chaves, com o rtulo correspondente ao campo. Algumas informaes por terem um signio co cado especial para o BibTEX no so etiquetadas, por exemplo a palavra and localizada a a no campo author ou editor no deve ser etiquetada. O programa denominado bibtex, a escrito em Perl, que realiza a etiquetagem das informaes de cada campo para cada enco trada de um arquivo .bib, pode ser visto no Apndice B. Finalizando, para construir um e conjunto de referncias automaticamente etiquetadas basta apenas selecionar um arquivo e BibTEX etiquetado e um estilo bibliogrco, e utilizar o BibTEX em combinao com a ca A o LTEX para gerar um documento que contenha todas as suas referncias corretamente e etiquetadas. Utilizando o mtodo acima descrito, foi poss construir grande parte do e vel corpus etiquetado. 4.3.2 Etiquetagem Manual

Como dito anteriormente, uma pequena parcela do corpus foi etiquetada manualmente. Esta frao do corpus foi inicialmente recuperada pelo WebMiner (Brasil & Lopes 2004) e ca possui referncias bibliogrcas das reas de Recuperao de Informao e Processamento e a a ca ca de L ngua Natural. Em trabalhos sobre etiquetagem morfossinttica, no qual, inicialmente no exista um a a corpus etiquetado (gold standard ), normalmente realiza-se um extenso trabalho manual. Existe tambm a possibilidade de utilizar uma ferramenta semi-automtica de aux ` e a lio a etiquetagem. Infelizmente para este trabalho, no momento da etiquetagem desta poro ca
13

http://jabref.sourceforge.net/

31

do corpus, no existia um corpus inicialmente etiquetado e nem uma ferramenta de aux a lio a ` etiquetagem, no entanto tal problema foi resolvido atravs de um processo iterativo e e interativo de etiquetagem semi-automtico14 , sintetizado no Algoritmo 1. a Algoritmo 1: Criao do Corpus Etiquetado ca Input: Tr, Ts, /* Conjunto inicial de treino etiquetado (100 refer^ncias), Conjunto e de teste, e Erro mximo a */ Output: C (Corpus Etiquetado) // Conjunto de treino e teste etiquetado begin /* Inicia Corpus Etiquetado */ C Tr; // Inicia conjunto de regras de etiquetagem Regras ; // Induz primeiro conjunto de regras Regras Induzir Etiquetador(Tr); /* Com Regras, etiqueta o conjunto de teste e determina Erro na etiquetagem */ Etiquetar(Ts); while Erro na etiquetagem > do Usa Regras e etiqueta Novas Ref (100 novas referncias) ; e Corrige manualmente os erros destas novas e determina Erro na etiquetagem ; // adiciona Novas_Ref corrigido ao treino C C Novas Ref ; // novo conjunto de regras Regras Induzir Etiquetador(C) ; end end Aps a primeira iterao, o conjunto de treino para o TBL so 200 referncias, as quais o ca a e j esto revisadas e tal processo descrito acima repetido. Alcanando um conjunto de a a e c 500 ` 700 referncias, surgiram alguns problemas: a e o etiquetador no gerava regras contextuais e a mensagem Segmentation Fault, core a dumped era exibida, e testes com conguraes iguais, ou seja sem modicar os parmetros do etiquetador co a e utilizando o mesmo corpora de treino, apresentavam sa das diferentes
Este processo de construo de um corpus manualmente etiquetado foi sugerido por Eric Brill, na ca documentao do seu etiquetador. ca
14

32

Os problemas foram resolvidos modicando o formato de todos arquivos utilizados pelo etiquetador, para UNIX. At o presente momento foi etiquetado e corrigido manuale mente um conjunto de 947 referncias bibliogrcas, totalizando 34384 palavras. O grco e a a comparativo da preciso do etiquetador com linha de tendncia durante esse processo de a e etiquetagem manual apresentado na Figura 12. O etiquetador geralmente aumenta a e sua preciso quando um corpus maior de treino usado, porm para os conjuntos de a e e treino com 500 e 700 referncias, o etiquetador obteve um decrscimo em sua preciso. A e e a justicativa para este problema decorre da grande quantidade de novas palavras e, principalmente, de novos modelos de referncias, presentes no corpus de teste. No entanto, e Tamanho do corpus de treino 100 m 200 74%, este processo de construo de600 300 400 500 ca com uma preciso do etiquetador de no nimo a um Preciso do etiquetador 74,513% 86,119% 88,390% 89,089% 87,507% 95,884% corpus torna-se mais vivel do que etiquetar manualmente palavra a palavra no corpus. a

100% Preciso do etiquetador 95% 90% 85% 80% 75% 70% 100

200

300

400

500

600

700

800

900

Tamanho do corpus de treino (nmero de referncias)

Figura 12: Grco comparativo de um processo interativo e iterativo de etiquetagem a manual

4.4

Descrio dos Experimentos ca

Conclu a etapa de pr-processamento, o corpus para treinamento e teste semida e automaticamente etiquetados caram com 24928 sentenas (referncias) e 1134986 palac e vras. Para avaliar o comportamento do etiquetador TBL frente ` tarefa de etiquetagem, a foram realizados dois experimentos: primeiro utilizando a poro etiquetada manualca mente (947 sentenas) e segundo utilizando o corpus completo (24928 sentenas). Para c c o primeiro experimento, foi utilizado o mtodo de avaliao Cross-validation 15 com dez e ca parties, dessa forma foram criados dez corpus de treino e dez de teste, totalizando co vinte novos corpus, a partir do corpus original (manualmente etiquetado). O nmero de u palavras e de referncias para essa diviso do corpus so apresentadas na Tabela 4. e a a
Este mtodo tambm conhecido como k-fold Cross-validation sendo k o nmero de parties geradas e e e u co aleatoriamente a partir da amostra de exemplos para treinar e testar o sistema, sendo que a amostra de exemplos dividida em k parties mutuamente exclusivas. A cada iterao uma partio diferente e co ca ca e utilizada para testar o sistema e todas as outras k -1 parties so utilizadas para treinar o sistema. A co a taxa de erro a mdia das taxas de erro calculadas dadas as diversas parties. e e co
15

33

Corpus Treino (pal) Treino (refs) Teste (pal) Teste (refs)

1 31262 853 3122 94

2 31465 866 2919 81

3 30996 855 3388 92

4 31087 853 3297 94

5 30814 849 3570 98

6 30115 835 4269 112

7 31464 865 2920 82

8 31101 859 3283 88

9 30599 847 3785 100

10 30553 841 3831 106

Tabela 4: Nmero de palavras e de referncias em cada diviso do corpus u e a O cdigo fonte do programa escrito em Perl que realiza essa diviso do corpus, pode ser o a visto no Apndice B. Os dez arquivos de treino (cp treino1, cp treino2, ..., cp treino10) e e a o os dez de teste (cp teste1, cp teste2, ..., cp teste10) so criados em um diretrio chamado corpora. Para o segundo experimento foi utilizado o mtodo de avaliao avaliar-e-testar com e ca uma diviso do corpus completo em 70% para treinar o etiquetador e 30% para avaliar a a sua preciso. Nos experimentos foi utilizado um PC com a congurao Athlon XP a ca 2400MHz com 256Mb memria RAM e sistema operacional Linux 2.4.18. A seguir so o a descritas informaes, consideradas relevantes, relacionadas ao software etiquetador e aos co experimentos realizados.

Etiquetador Baseado em Transformao (TBL) ca


O etiquetador TBL possui dois mdulos: um mdulo que gera regras no contextuo o a ais, para determinar o conjunto de etiquetas mais provveis de palavras (conhecidas e a desconhecidas), e outro mdulo que gera regras contextuais para melhorar a preciso do o a etiquetador. Para palavras desconhecidas, como j comentado o etiquetador inicialmente a utiliza uma heur stica que consiste em etiquetar tais palavras como nome comum (N) ou nome prprio (NP), caso comecem com letra maiscula. Neste trabalho, foi feita uma o u alterao no cdigo fonte para o que etiquetador pudesse rotular todas as palavras desca o conhecidas como TITLE, visto que esta a etiqueta mais freqente do corpus formado e u pelas referncias bibliogrcas. e a A rvore de diretrios utilizada nos experimentos apresentada na Figura 13. O a o e e co diretrio Bin and Data contm os programas compilados e o arquivo de instrues para o executar um experimento, ou seja, instrues para treino e teste do etiquetador. Os co diretrios Learner Code e Utilities contm cdigos escritos em Perl que so necessrios o e o a a para a tarefa de etiquetagem. Antes de iniciarem os experimentos foram criados vrios diretrios, um para cada a o diviso do corpus. Em um diretrio chamado corpora esto todos os corpus de treino e de a o a teste utilizados. Foi criado um Shell Script, chamado criadir, para criar os diretrios com o seus correspondentes corpus de treino e teste, por ex.: os arquivos cp teste1 e cp treino1 so copiados para o diretrio corpus 1. Para executar os experimentos diretamente dos a o diretrios, foram criados links para o diretrio Bin and Data e os corpus de treino e de o o teste foram renomeados, respectivamente, para TRAINING-CORPUS e TEST-CORPUS. O cdigo correspondente ao Script criadir apresentado a seguir. o e 34

exp_bril Bin_and_Data contextual-rule-learn final-state-tagger fix-kbest-rule-learn kbest-contextual-rule-learn nbest-tagger start-state-tagger tagger experimento Learner_Code unknown-lexical-learn-continue.prl unknown-lexical-learn.prl Utilities corpus_1 TRAINING-CORPUS TEST-CORPUS corpus_2 corpus_3 corpus_4 corpus_5 corpus_6 corpus_7 corpus_8 corpus_9 corpus_10 corpora cp_teste1 cp_treino1 . . .

Figura 13: Estrutura de diretrios o


for dir in 1 2 3 4 5 6 7 8 9 10 do mkdir "corpus_"$dir cp ../corpora/"cp_treino"$dir "corpus_"$dir/TRAINING-CORPUS cp ../corpora/"cp_teste"$dir "corpus_"$dir/TEST-CORPUS cd "corpus_"$dir/ ln -s ../Bin_and_Data/* ./ cd .. done

Para treinar e testar o etiquetador foi criado um Shell Script, chamado experimento, que contm todas as instrues necessrias ` realizao dos experimentos. O Script, iluse co a a ca trado logo abaixo, foi elaborado conforme as descries da documentao que acompanha co ca o software - Apndice C. e
1 2 3 4 5 6 7 8 9 cat cat cat cat TRAINING-CORPUS | perl ../Utilities/tagged-to-untagged.prl > UNTAGGED-CORPUS TRAINING-CORPUS | perl ../Utilities/divide-in50-rand.prl TAGGED-CORPUS-2 TAGGED-CORPUS TAGGED-CORPUS-2 | perl ../Utilities/tagged-to-untagged.prl > UNTAGGED-CORPUS-2 TEST-CORPUS | perl ../Utilities/tagged-to-untagged.prl > UNTAGGED-TEST-CORPUS

echo "1. wordlist-make.prl" cat UNTAGGED-CORPUS | perl ../Utilities/wordlist-make.prl | sort +1 -rn | awk { print $1} > BIGWORDLIST echo "2. word-tag-count.prl"

35

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38

cat TAGGED-CORPUS | perl ../Utilities/word-tag-count.prl | sort +2 -rn > SMALLWORDTAGLIST echo "3. bigram-generate.prl" cat UNTAGGED-CORPUS | perl ../Utilities/bigram-generate.prl | awk { print $1,$2} > BIGBIGRAMLIST echo "4. unknown-lexical-learn.prl" perl ../Learner_Code/unknown-lexical-learn.prl BIGWORDLIST SMALLWORDTAGLIST BIGBIGRAMLIST 300 LEXRULEOUTFILE perl ../Learner_Code/unknown-lexical-learn-continue.prl BIGWORDLIST SMALLWORDTAGLIST BIGBIGRAMLIST 300 NEWLEXRULEOUTFILE LEXRULEOUTFILE cat < NEWLEXRULEOUTFILE >> LEXRULEOUTFILE echo "5. make-restricted-lexicon.prl (TRAINING.LEXICON)" cat TAGGED-CORPUS | perl ../Utilities/make-restricted-lexicon.prl > TRAINING.LEXICON echo "6. make-restricted-lexicon.prl (FINAL.LEXICON)" cat TRAINING-CORPUS | perl ../Utilities/make-restricted-lexicon.prl > FINAL.LEXICON PATH=.:$PATH echo "7. tagger" ./tagger TRAINING.LEXICON UNTAGGED-CORPUS-2 BIGBIGRAMLIST LEXRULEOUTFILE /dev/null -w BIGWORDLIST DUMMY-TAGGED-CORPUS > /dev/null echo "8. contextual-rule-learn" ./contextual-rule-learn TAGGED-CORPUS-2 DUMMY-TAGGED-CORPUS CONTEXT-RULEFILE TRAINING.LEXICON echo "9. Testing.." ./tagger FINAL.LEXICON UNTAGGED-TEST-CORPUS /dev/null LEXRULEOUTFILE CONTEXT-RULEFILE > TAGGED-TEST-CORPUS

-i

O processo de aprendizagem corresponde a praticamente todo o Script, da linha 1 at e a linha 35. O produto da fase de treino so trs arquivos: FINAL.LEXICON, LEXRULEa e OUTFILE e CONTEXT-RULEFILE. O arquivo FINAL.LEXICON exibe cada palavra do corpus de treino (TRAINING-CORPUS) seguida pela etiqueta mais provvel e por outras a etiquetas sem uma ordem espec ca. O arquivo TRAINING-CORPUS foi dividido aleatoriamente em duas partes (linha 2), onde uma parte utilizada na construo do arquivo e ca LEXRULEOUTFILE e a outra na construo do arquivo CONTEXT-RULEFILE. ca O arquivo LEXRULEOUTFILE gera regras para o aprendizado de palavras desconhecidas 16 . Este arquivo gerado pelas instrues das linhas 15 a 20, o valor 300 signica que e co apenas sero usados bigramas em que pelo menos uma das palavras for uma das 300 mais a freqentes. O arquivo contm regras contextuais que servem para melhorar a preciso u e a do etiquetador. A instruo da linha 38 utilizada para testar o etiquetador treinado, ca e ou seja, etiquetar o corpus de teste sem as etiquetas. Dessa maneira, como produto nal tem-se dois arquivos, um etiquetado manualmente e outro etiquetado pelo software. Para gerar esses dois arquivos nos diretrios do corpus, basta executar o seguinte Script. o
for dir in 1 2 3 4 5 6 7 8 9 10 do cd corpus_$dir ./experimento cd .. done
16

Palavras que apenas esto presentes no corpus de teste. a

36

Conclu as etapas descritas acima, obteve-se, em cada diretrio, o corpus de teste da o etiquetado manualmente - TEST-CORPUS -, o mesmo corpus etiquetado pelo software - TAGGED-TEST-CORPUS, os arquivos gerados na fase de treino e os links para os programas. O objetivo dessa segunda fase avaliar o desempenho do etiquetador. Para e determinar a preciso global e por etiqueta do software foi feita uma comparao entre os a ca arquivos TEST-CORPUS e TAGGED-TEST-CORPUS de cada diretrio, atravs do o e arquivo de instrues apresentado a seguir. co
for dir in 1 2 3 4 5 6 7 8 9 10 do 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 echo >>LIST-OF-ERRORS; echo "***Treino "$dir >>LIST-OF-ERRORS echo >>FREQ-OF-ERRORS; echo "***Treino "$dir >>FREQ-OF-ERRORS echo >>FREQ-OF-TAGS; echo "***Treino "$dir >>FREQ-OF-TAGS cd corpus"_"$dir ../evaluate TAGGED-TEST-CORPUS TEST-CORPUS ../TAGS-ERRORS-TMP ../TAGS-FREQ-TMP >../SUMMARY-TMP cd .. cat SUMMARY-TMP | grep erradas >>FREQ-OF-ERRORS cat SUMMARY-TMP | grep palavras >>FREQ-OF-TAGS cat TAGS-ERRORS-TMP | sort >TAGS-ERRORS-TMP2 cat TAGS-ERRORS-TMP2 >>LIST-OF-ERRORS ./count_errors <TAGS-ERRORS-TMP2 >>FREQ-OF-ERRORS ./global_errors.exe < FREQ-OF-ERRORS > FREQ-GLOBAL-ERRORS cat TAGS-FREQ-TMP | sort +1nr >>FREQ-OF-TAGS rm TAGS-ERRORS-TMP TAGS-ERRORS-TMP2 TAGS-FREQ-TMP SUMMARY-TMP done ./calc_val_rel <FREQ-OF-TAGS | sort +0 -1 +1 -2n >FREQ-VAL-REL-TMP ./table 10 <FREQ-VAL-REL-TMP >TABLE-FREQ-TAGS ./calc_val_rel <FREQ-OF-ERRORS | sort +0 -1 +1 -2n >ERROS-VAL-REL-TMP ./table 10 <ERROS-VAL-REL-TMP >TABLE-FREQ-ERRORS ./calc_val_rel <FREQ-GLOBAL-ERRORS | sort +0 -1 +1 -2n >GLOBAL-ERROS-VAL-REL-TMP ./table 10 <GLOBAL-ERROS-VAL-REL-TMP >TABLE-FREQ-GLOBAL-ERRORS ./calc_val_mod <FREQ-GLOBAL-ERRORS | sort +0 -1 +1 -2n >ERROS-VAL-RES-TMP cat FREQ-VAL-REL-TMP >> ERROS-VAL-RES-TMP cat ERROS-VAL-RES-TMP | sort +0 -1 +1 -2n >ERROS-VAL-RES-SORT ./table 10 <ERROS-VAL-RES-SORT >TABLE-TAG-PRECISION rm FREQ-VAL-REL-TMP ERROS-VAL-REL-TMP GLOBAL-ERROS-VAL-REL-TMP rm ERROS-VAL-RES-TMP ERROS-VAL-RES-SORT

As informaes obtidas para cada corpus so concatenadas em um arquivo e separaco a das pela string ***Treino nmero-corpus. Os principais arquivos resultantes desta fase u so: FREQ-OF-TAGS, LIST-OF-ERRORS, FREQ-OF-ERRORS e FREQ-GLOBALa ERRORS. O arquivo FREQ-OF-TAGS contm a freqncia de cada etiqueta em cada e ue corpus de teste. LIST-OF-ERRORS contm a lista de erros cometidos pelo software etie quetador em cada corpus de teste. A lista de erros cometidos apresenta a etiqueta correta, 37

a etiqueta colocada pelo software e a palavra que foi etiquetada. O arquivo FREQ-OFERRORS armazena a freqncia de cada erro cometido, ou seja, o nmero de vezes que ue u uma etiqueta correta X foi substitu por uma etiqueta errada Y. O arquivo FREQda GLOBAL-ERRORS armazena a freqncia global de cada erro, ou seja, o nmero de ue u vezes que uma etiqueta correta foi substitu por alguma etiqueta errada. As instrues da co da linha 22 a 37 so para gerar arquivos em forma de tabela utilizando as informaes a co obtidas anteriormente. O cdigo fonte dos programas utilizados (evaluate, count errors, o global errors, etc.) escritos em linguagem C, so apresentados no Apndice B. a e

4.5
4.5.1

Resultados Obtidos
Primeiro Experimento

Os resultados obtidos com o primeiro experimento so descritos a seguir. O nmero a u de palavras, nmero de etiquetas erradas e porcentagem de etiquetas corretas e erradas, u para cada corpus de treino e teste so apresentados na Tabela 5: a
Experimento Corpus de treino (pal) Corpus de teste (pal) Etiquetas erradas (pal) Etiquetas erradas (%) Etiquetas corretas (%) 1 31262 3122 190 6,09% 93,91% Corpus 2 31465 2919 173 5,93% 94,07% com 947 3 30996 3388 206 6,08% 93,92% referncias (34384 palavras) e 4 5 6 7 31087 30814 30115 31464 3297 3570 4269 2920 221 253 282 201 6,70% 7,09% 6,61% 6,88% 93,30% 92,91% 93,39% 93,12% 8 31101 3283 254 7,74% 92,26% 9 30599 3785 208 5,50% 94,51% 10 30553 3831 205 5,35% 94,65%

Tabela 5: Nmero de palavras e a taxa de acerto para cada diviso do corpus manualmente u a etiquetado O nmero mdio de palavras nos corpus de treino e teste, a preciso global (mdia das u e a e taxas de acerto) do etiquetador e o desvio padro, calculado a partir da Frmula 1, so a o a apresentados na Tabela 6. 1 N 1
N

(xi x)2
i=1

(1)

Nmero mdio de palavras no corpus de treino u e Nmero mdio de palavras no corpus de teste u e Preciso global do etiquetador a Desvio padro da amostra a

30946 3438 93,604% 0,7431%

Tabela 6: Desvio padro e preciso global do etiquetador a a A lista com o nmero de vezes que cada etiqueta foi substitu por outra foi unida u da com a lista de freqncia de etiquetas. Assim, foi poss determinar a taxa de erro para ue vel cada etiqueta em cada experimento, dividindo-se o nmero de erros pelo nmero total de u u vezes que a etiqueta aparece. Dessa forma foi poss determinar quais so as etiquetas vel a problemticas, ou seja, quais etiquetas mais levam o etiquetador a cometer erros. A a frmula para medir o impacto do erro causado por uma etiqueta (t) na taxa global de erro o 38

do etiquetador dada pela Equao 2, onde PM e FM so, respectivamente, a preciso e ca a a mdia e freqncia mdia de uma etiqueta em porcentagem. Tal frmula corresponde ao e ue e o percentual de erros na etiquetagem do corpus, relacionado com a etiqueta t. Considerase, neste trabalho, como problemticas as etiquetas para as quais o fator de impacto a e superior a 0,4%. P Mt )F Mt (2) 100 A preciso mdia por etiquetas, juntamente com as suas freqncias mdias, e o fator a e ue e de impacto podem ser vistos na Tabela 7. Em geral, quanto mais rara a etiqueta, maior a taxa de erro. Os etiquetadores normalmente no cometem erros quando a tarefa etiquetar sinais de pontuao, pois em a e ca geral apresentam sempre a mesma representao. Entretanto, analisando a tabela nota-se ca que o etiquetador cometeu alguns erros com sinais de pontuao. Este fato ocorreu por ca dois motivos: impacto no errot = (1 o sinal de pontuao apareceu uma unica vez no corpus; ca alguns sinais de pontuao no foram corretamente padronizados ca a E importante observar que as etiquetas que possuem uma pequena taxa de acerto, etiquetas com preciso inferior a 80%, apresentam uma soma de freqncias de apenas a ue 7,7%, ou seja, a possibilidade de alguma dessas etiquetas aparecerem em alguma referncia e pequena. Isso obviamente contribui para um grande e ndice geral de acerto. Aps uma o anlise dos erros cometidos pelo etiquetador vericou-se que o mesmo cometeu mais erros a substituindo a etiqueta BOOKTITLE por TITLE e vice versa, sendo que as duas possuem um alto fator de impacto e uma preciso alta. Acredita-se algumas etiquetas, tais como a CROSSREF e INSTITUTION, apresentem uma pequena preciso, principalmente, por a possuirem uma baixa freqncia, mas tambm por serem usadas em situaes espec ue e co cas. 4.5.2 Segundo Experimento

Para o segundo experimento, o nmero de palavras, etiquetas erradas e a porcentagem u de etiquetas corretas e erradas, para o conjunto de treino e teste so apresentados na a Tabela 8. Com comentado anteriormente, a diviso utilizada neste experimento foi de 70% a para treinamento e 30% para teste. O corpus de teste, gerado aleatoriamente, apresenta referncias bibliogrcas de vrios estilos contidos no corpus completo. e a a Com a disponibilidade de um corpus maior, o etiquetador neste experimento alcanou c uma preciso global de 96,9%. Se comparado com o experimento anterior, isso corresponde a a um acrscimo de 3,3% em sua preciso. e a Na Tabela 9 so apresentados os tempos de processamento do etiquetador TBL para a o treinamento e a etiquetagem do corpus de teste. Embora o tempo de treinamento de regras contextuais tenha levando 38 horas, este treinamento apenas ser realizado quando a for necessrio ` FIP conhecer novos padres de referncias. a a o e 39

Etiqueta BOOKTITLE TITLE AUTHOR JOURNAL INITPAGE FINALPAGE ADDRESS NOTE NUMBER PUBLISHER VOLUME EDITOR SERIES INSTITUTION CROSSREF SCHOOL URL TYPE INDICATOR MONTH CHAPTER PAGES URLACCESSDATE DAYS EDITION ! = & ( ) , . : ; ? [ \ ] < > BARRA YEAR

Preciso Mdia a e 88,659% 95,006% 95,650% 85,090% 79,668% 79,748% 84,911% 64,902% 70,987% 86,598% 74,884% 75,961% 60,389% 41,859% 46,738% 70,316% 89,859% 86,630% 97,403% 96,925% 60,000% 50,000% 86,667% 70,000% 90,000% 80,000% 90,000% 90,000% 90,000% 100,000% 100,000% 100,000% 100,000% 100,000% 100,000% 100,000% 100,000% 100,000% 100,000% 100,000% 100,000% 100,000% 100,000% 100,000% 100,000% 100,000% 100,000% 100,000%

Freqncia Mdia ue e 11,024% 20,803% 13,917% 3,138% 1,559% 1,559% 2,069% 0,876% 0,762% 1,611% 0,821% 0,754% 0,443% 0,289% 0,208% 0,370% 1,023% 0,470% 2,333% 0,580% 0,030% 0,018% 0,063% 0,018% 0,036% 0,006% 0,003% 0,003% 0,003% 0,185% 4,101% 0,358% 0,062% 1,132% 1,135% 8,903% 14,137% 1,364% 0,195% 0,033% 0,085% 0,003% 0,085% 0,013% 0,021% 0,021% 0,740% 2,639%

Impacto no Erro 1,2503% 1,0389% 0,6054% 0,4679% 0,3169% 0,3157% 0,3121% 0,3075% 0,2211% 0,2159% 0,2063% 0,1814% 0,1755% 0,1680% 0,1107% 0,1099% 0,1037% 0,0629% 0,0606% 0,0178% 0,0119% 0,0089% 0,0083% 0,0054% 0,0036% 0,0011% 0,0003% 0,0003% 0,0003% 0,0000% 0,0000% 0,0000% 0,0000% 0,0000% 0,0000% 0,0000% 0,0000% 0,0000% 0,0000% 0,0000% 0,0000% 0,0000% 0,0000% 0,0000% 0,0000% 0,0000% 0,0000% 0,0000%

Tabela 7: Freqncia mdia e preciso por etiquetas do etiquetador ue e a

40

Corpus com 24928 referncias (1134986 palavras) e Nmero de palavras no corpus de treino 797652 u Nmero de palavras no corpus de teste 337334 u Nmero de etiquetas erradas u 10362 Porcentagem de etiquetas erradas 3,1% Porcentagem de etiquetas corretas 96,9% Tabela 8: Nmero de palavras e a taxa de acerto para o conjunto de treino e de teste do u corpus Tempo de processamento 5 horas, 39 minutos e 25 segundos 38 horas, 36 minutos e 10 segundos 5 segundos

Regras para palavras desconhecidas Regras contextuais Tempo de etiquetagem

Tabela 9: Tempo de treinamento e etiquetagem - TBL

4.6

Extrao das Informaes ca co

Conclu a etapa de etiquetagem das referncias, pode-se iniciar a extrao de suas da e ca informaes. A extrao de elementos de referncias bibliogrcas, basicamente, consiste co ca e a em concatenar informaes de etiquetas correspondentes. Considera-se neste trabalho co como etiquetas correspondentes, as etiquetas cujos os nomes so iguais ou sinais de pona tuao que possuam algum signicado para a informao a ser extra ca ca da, por exemplo o ponto que abrevia o nome de um autor ou o h que separa a pgina inicial da nal de fen a uma referncia. e O produto nal do processo de extrao um documento XML que contm as inforca e e maes extra co das para cada referncia. O cdigo fonte do programa extraction, escrito e o em Perl, que realiza a extrao das informaes descrito no Apndice B. Para uma ca co e e melhor compreenso apresentado a seguir, um exemplo da extrao de informaoes de a e ca c uma referncia etiquetada pelo TBL. Caso o programa receba como entrada a referncia e e abaixo
Achermann/AUTHOR ,/, F/AUTHOR ./. and/AUTHOR Nierstrasz/AUTHOR ,/, O/AUTHOR ./. (/( 2000c/YEAR )/) ./. Explicit/TITLE Namespaces/TITLE ./. In/INDICATOR Gutknecht/EDITOR ,/, J/EDITOR ./. and/EDITOR Weck/EDITOR ,/, W/EDITOR ./. ,/, editors/INDICATOR ,/, Modular/BOOKTITLE Programming/BOOKTITLE Languages/BOOKTITLE ,/, volume/INDICATOR 1897/ VOLUME of/SERIES LNCS/SERIES ,/, pages/INDICATOR 77/PAGES -/- 89/PAGES ,/, Zurich/ADDRESS ,/, Switzerland/ADDRESS ./. Springer/PUBLISHER -/- Verlag/PUBLISHER ./. URL/INDICATOR http/URL :/: $b/BARRA $b/BARRA www/URL ./. iam/URL ./. unibe/URL ./. ch/URL $b/BARRA / scg/URL $b/BARRA Archive/URL $b/BARRA Papers/URL $b/BARRA Ache00bExplicitNamespaces/URL ./. pdf/URL

ir combinar e extrair as suas informaes, conforme descrito no seguinte cdigo XML a co o


<ref> <author>F. Achermann</author>

41

<author>O. Nierstrasz</author> <year>2000</year> <title>Explicit Namespaces</title> <editor>J. Gutknecht</editor> <editor>W. Weck</editor> <booktitle>Modular Programming Languages</booktitle> <volume>1897</volume> <series>of LNCS</series> <pages>77-89</pages> <address>Zurich, Switzerland</address> <publisher>Springer-Verlag</publisher> <url>http://www.iam.unibe.ch/scg/Archive/Papers/Ache00bExplicitNamespaces.pdf</url> </ref>

A partir do exemplo acima, poss observar algumas caracter e vel sticas do processo de extrao: quando a referncia possuir dois ou mais autores (ou editores), estes so extra ca e a dos em separado; os sinais de pontuao que estiverem entre o nal de uma informao ca ca e in de outra so removidos; os termos da etiqueta INDICATOR so removidos, pois cio a a tais termos apenas indicam a presena de informaes. c co A adoo da XML (eXtensible Markup Language) neste trabalho, se deve pelos seca guintes motivos: 1. a linguagem um padro aberto, ex e facilmente expand e a vel vel; 2. possibilita a transferncia e manipulao de dados atravs da internet de modo fcil, e ca e a rpido e consistente, de tal forma que qualquer tipo de aplicao, independentemente a ca da plataforma, sistema operacional, ou linguagem em que foi constru consiga da manuse-los; a 3. representa os dados de maneira hierrquica e organizada; a 4. separa o contedo da apresentao, o que possibilita integrar e manipular dados de u ca diversas fontes; 5. permite realizar buscas ecientes, pois os dados em um documento XML podem ser unicamente etiquetados; 6. disponibilidade de vrias ferramentas na Web que realizam a edio e anlise (fora ca a matao/gramtica) de documentos XML. ca a

Consideraes Finais co

A proposta para extrair automaticamente informaes de referncias bibliogrcas de co e a artigos cient cos, baseia-se no mapeamento do problema de part-of-speech (POS) tagging 42

ao problema de extrao de informao. Este mapeamento, consiste em etiquetar todos os ca ca termos das referncias selecionando alguma etiqueta de um conjunto de poss e veis etiquetas, por exemplo AUTOR, T ITULO, REVISTA, EVENTO, PAGINAS e ANO, e, nalmente, combinar e extrair as informaes (etiquetas correspondentes) das referncias. co e Nos experimentos foi utilizado o etiquetador TBL, desenvolvido por Eric Brill, que possui uma alta preciso de etiquetagem morfossinttica. O etiquetador apresenta dois a a mdulos de etiquetagem: um primeiro mdulo que gera regras, no contextuais, para deo o a terminar o conjunto de etiquetas mais provveis de palavras (conhecidas e desconhecidas) a e outro mdulo que gera regras contextuais para melhorar a preciso da etiquetagem. o a Para avaliar o etiquetador TBL frente ` tarefa de etiquetagem de referncias biblioa e grcas foi utilizado um corpus com mais de 1 milho de palavras. O corpus possui rea a ferncias da rea de Computao e abrange os estilos bibliogrcos Plain, Alpha, Abbrv, e a ca a Apalike e Chicago. O corpus composto por uma pequena parcela etiquetada manuale mente e por outra semi-automaticamente etiquetada utilizando informaes contidas em co arquivos BibTEX. Os resultados obtidos so bastante promissores, pois o etiquetador a treinado rotula com alta preciso referncias bibliogrcas de vrios estilos, e, conseqena e a a u temente, eleva a conana no processo de extrao das informaes. c ca co

43

FIP tagset

A seguir so apresentadas as etiquetas do FIP tagset e o que cada uma abrange a de informao, no contexto das referncias bibliogrcas. Na tabela abaixo, documento ca e a representa todos os tipos de referncias vistos no Apndice ??. e e
N 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 Etiqueta ADDRESS AUTHOR BOOKTITLE CHAPTER EDITION EDITOR INSTITUTION ISBN ISSN JOURNAL MONTH NOTE NUMBER ORGANIZATION INDICATOR INITPAGE FINALPAGE PUBLISHER SCHOOL SERIES TYPE TITLE URL URLACCESSDATE VOLUME YEAR PAGES DAYS CROSSREF . : ; , [ ] ( ) { } ! ? & / \ Informao abrangida ca endereo completo, ou apenas a cidade, de uma editora c autor(es) de um documento t tulo de um livro ou evento nmero do cap u tulo de um livro edio de um livro ca editor(es) de um livro ou evento instituio no qual um relatrio foi escrito ca o numerao internacional para livros ca numerao internacional para publicaes peridicas ca co o revista que publicou um artigo ms de publicao e ca alguma informao adicional ca nmero de uma revista, livro ou relatrio u o o a rgo patrocinador de um evento pp, pages, In, Inc, Eds, Volume, Vol, No, editor(s), etc. pgina inicial do documento a pgina nal do documento a editora universidade em que a monograa foi escrita srie de um livro ou evento e alguma informao que informe o tipo do documento ca t tulo de um documento ou cap tulo de um livro link para um documento (pdf, ps) data em que a url foi acessada volume de uma revista ou livro ano de publicao do documento ca nmero de pginas do documento u a dias em que aconteceu o evento referncia cruzada e . : ; , [ ] ( ) { } ! ? & / \

44

Cdigo Fonte dos Programas Desenvolvidos o

######################################################################################################## # Information Extraction: Pr-processamento das Refer^ncias Bibliogrficas e e a # Autor: Alberto Cceres lvarez a A # ---------fixrefs.prl--------ICMC - USP - S~o Carlos a ---------fixrefs.prl--------# 2o. Semestre de 2005 # # Este programa assume que o conjunto de refer^ncias bibliogrficas localiza-se dentro de um subdiretrio e a o # chamado "refs", e que as refer^ncias estejam divididas em vrios arquivos texto. e a ######################################################################################################## main(); ######################################################################################################## # Identifica se a linha, que nao foi coberta pelos padr~es anteriores, pode ser incio de uma refer^ncia o e ######################################################################################################## sub is_InitRef($) { $_ = shift; my $char = substr($_, 0, 1); #se a string comear com um char minusculo c if ( ($char =~ /\D/) && ($char =~ /\w/) && (lc $char eq $char) ) { return 0; } if (/[\w\,]\s\d\d\d\d\.?$/) { return 0; } if ( (/\.?\s\(?19\d\d\D?\)?\.?\s?/) || #existe um ano com formato 19XX (/\.?\s\(?20\d\d\D?\)?\.?\s?/) || #existe um ano com formato 20XX (/\.?\s\d\d\d\d\D?\\d\d\d\d\D?\.?\s?/) || #existe um ano com formato XXXXYYYY. (/\w+\,\s(\w+\s)?\w\./ && /\D+\,\s(\w+\s)?\D\./) #algo, C. ) { return 1; } else { return 0; } } ######################################################################################################## # Faz a limpeza da string, removendo erros (espao em branco, ponto) no incio e no final c ######################################################################################################## sub alltrim($) { $_ = shift; s/^\s*//; s/\s*$//; s/^\.+//; s/^\]+//; s/^\,+//; s/\cM//ig; return $_; } ######################################################################################################## # Procedimento que identifica o modelo (padr~o) da refer^ncia, limpa alguns erros (alltrim) e ao final a e # retorna a refer^ncia completa e ######################################################################################################## sub get_Ref {

45

my($InputLine, $string); $InputLine = $_[0]; $string = ""; # Se a linha inicia com [num]. "alnum ou (" - 1o modelo if ($InputLine =~ /^\[\d\d?\d?\]\.?\s?[\w\(]/) { $InputLine = alltrim($InputLine); do{ if($string =~ /(\D)[-||||-]$/){ if($1 eq -|| $1 eq || $1 eq -){ $string = $string . " " . $InputLine; } else{ $string =~ s/(.)(-||||-)$/$1/; $string = $string . $InputLine; } } else{ $string = $string . " " . $InputLine;} do{ $InputLine = <INPUTFILE>; if(not $InputLine){$EndOfFile = 1;} $InputLine = alltrim($InputLine); if(length($InputLine) <= 4 && $InputLine =~ /\d\d?\d?\d?/ && (not $InputLine =~ /\./)) { $string =~ s/\s$//; } }while(length($InputLine) <= 4 && $InputLine =~ /\d\d?\d?\d?/ && (not $InputLine =~ /\./)); if( $string =~ / of$/ || $string =~ / to$/ || $string =~ / in$/ || $string =~ / at$/ || $string =~ / by$/ || $string =~ / for$/ || $string =~ / from$/ || $string =~ / on$/ || $string =~ / a$/ || $string =~ / an$/ || $string =~ / the$/ || $string =~ / and$/|| $string =~ /,$/ || $string =~ /:$/ || $string =~ /;$/ || $string =~ / pages$/ || $string =~ / vol\.$/ || $string =~ / pp\.$/ || $string =~ / Eds\.$/ || $string =~ / In\.?$/) { } elsif ($InputLine =~ /^\[\d\d?\d?\]\.?\s?[\w\(]/) { return ($InputLine, $string); } } while (not $EndOfFile) ; } # Se a linha inicia com [XXXX, 1992] ...) - 2o modelo elsif($InputLine =~ /^\[.+\w\w\d?\d?\D?\]\s/) { $InputLine = alltrim($InputLine); do { if($string =~ /(\D)[-||||-]$/){ if($1 eq -|| $1 eq || $1 eq -){ $string = $string . " " . $InputLine; } else{ $string =~ s/(.)(-||||-)$/$1/; $string = $string . $InputLine; } } else{ $string = $string . " " . $InputLine;} do{

46

$InputLine = <INPUTFILE>; if(not $InputLine){$EndOfFile = 1;} $InputLine = alltrim($InputLine); if(length($InputLine) <= 4 && $InputLine =~ /\d\d?\d?\d?/ && (not $InputLine =~ /\./)) { $string =~ s/\s$//; } }while(length($InputLine) <= 4 && $InputLine =~ /\d\d?\d?\d?/ && (not $InputLine =~ /\./)); if( $string =~ / of$/ || $string =~ / to$/ || $string =~ / in$/ || $string =~ / at$/ || $string =~ / by$/ || $string =~ / for$/ || $string =~ / from$/ || $string =~ / on$/ || $string =~ / a$/ || $string =~ / an$/ || $string =~ / the$/ || $string =~ / and$/|| $string =~ /,$/ || $string =~ /:$/ || $string =~ /;$/ || $string =~ / pages$/ || $string =~ / vol\.$/ || $string =~ / pp\.$/ || $string =~ / Eds\.$/ || $string =~ / In\.?$/) { } elsif ($InputLine =~ /^\[.+\w\w\d?\d?\D?\]\s/) { return ($InputLine, $string); } } while (not $EndOfFile) ; } # Se a linha inicia com (YYYYY, 1992) ... - 3o modelo elsif($InputLine =~ /^\(\w+\,?\s?\d*\D?\)\s?/) { $InputLine = alltrim($InputLine); do { if($string =~ /(\D)[-||||-]$/){ if($1 eq -|| $1 eq || $1 eq -){ $string = $string . " " . $InputLine; } else{ $string =~ s/(.)(-||||-)$/$1/; $string = $string . $InputLine; } } else{ $string = $string . " " . $InputLine;} do{ $InputLine = <INPUTFILE>; if(not $InputLine){$EndOfFile = 1;} $InputLine = alltrim($InputLine); if(length($InputLine) <= 4 && $InputLine =~ /\d\d?\d?\d?/ && (not $InputLine =~ /\./)) { $string =~ s/\s$//; } }while(length($InputLine) <= 4 && $InputLine =~ /\d\d?\d?\d?/ && (not $InputLine =~ /\./)); if( $string =~ / of$/ || $string =~ / to$/ || $string =~ / in$/ || $string =~ / at$/ || $string =~ / by$/ || $string =~ / for$/ || $string =~ / from$/ || $string =~ / on$/ || $string =~ / a$/ || $string =~ / an$/ || $string =~ / the$/ || $string =~ / and$/|| $string =~ /,$/ || $string =~ /:$/ || $string =~ /;$/ || $string =~ / pages$/ || $string =~ / vol\.$/ || $string =~ / pp\.$/ || $string =~ / Eds\.$/ || $string =~ / In\.?$/) { } elsif ($InputLine =~ /^\(\w+\,?\s?\d*\D?\)\s?/) { return ($InputLine, $string); }

47

} while (not $EndOfFile) ; } # Se a linha inicia com num. (Init) - 4o modelo elsif($InputLine =~ /^\d+\s?\.?\s/) { $InputLine = alltrim($InputLine); do { if($string =~ /(\D)[-||||-]$/){ if($1 eq -|| $1 eq || $1 eq -){ $string = $string . " " . $InputLine; } else{ $string =~ s/(.)(-||||-)$/$1/; $string = $string . $InputLine; } } else{ $string = $string . " " . $InputLine;} do{ $InputLine = <INPUTFILE>; if(not $InputLine){$EndOfFile = 1;} $InputLine = alltrim($InputLine); if(length($InputLine) <= 4 && $InputLine =~ /\d\d?\d?\d?/ && (not $InputLine =~ /\./)) { $string =~ s/\s$//; } }while(length($InputLine) <= 4 && $InputLine =~ /\d\d?\d?\d?/ && (not $InputLine =~ /\./)); if( $string =~ / of$/ || $string =~ / to$/ || $string =~ / in$/ || $string =~ / at$/ || $string =~ / by$/ || $string =~ / for$/ || $string =~ / from$/ || $string =~ / on$/ || $string =~ / a$/ || $string =~ / an$/ || $string =~ / the$/ || $string =~ / and$/|| $string =~ /,$/ || $string =~ /:$/ || $string =~ /;$/ || $string =~ / pages$/ || $string =~ / vol\.$/ || $string =~ / pp\.$/ || $string =~ / Eds\.$/ || $string =~ / In\.?$/) { } elsif ($InputLine =~ /^\d+\s?\.?\s/) { return ($InputLine, $string); } } while (not $EndOfFile) ; } else #a principio nao possivel identificar o padr~o da refer^ncia - heursticas e a e { $InputLine = alltrim($InputLine); my $endchar; do { if (not $string){ $string = $string . $InputLine; } elsif(length($string) <= 41 && not($string =~ /http:/) && not($string =~ /ftp:/))#tamanho da string { $string = $string . " " . $InputLine; } elsif ($string =~ / of$/ || $string =~ / to$/ || $string =~ / in$/ || #lista de preposi~es em ingles co $string =~ / at$/ || $string =~ / by$/ || $string =~ / for$/ || $string =~ / from$/ || $string =~ / on$/ || $string =~ / a$/ || $string =~ / an$/ || $string =~ / the$/ || $string =~ / and$/|| $string =~ /,$/ || $string =~ /:$/ || $string =~ /;$/) {

48

$string = $string . " " . $InputLine; } elsif ($string =~ / Conference$/ || $string =~ / San$/ || $string =~ / pages$/ || #heuristicas $string =~ / &$/ || $string =~ / Technical$/ || $string =~ /\s\d\d?th$/ || $string =~ / vol\.$/ || $string =~ / pp\.$/ || $string =~ / Eds\.$/ || $string =~ / In\.?$/) { $string = $string . " " . $InputLine; } elsif ($string =~ /(\D)[-||||-]$/){ if($1 eq -|| $1 eq || $1 eq -){ $string = $string . $InputLine; } else{ $string =~ s/(.)(-||||-)$/$1/; $string = $string . $InputLine; } } elsif ($InputLine =~ /^of / || $InputLine =~ /^to / || $InputLine =~ /^in / || $InputLine =~ /^at / || $InputLine =~ /^by / || $InputLine =~ /^for / || $InputLine =~ /^from / || $InputLine =~ /^on / || $InputLine =~ /^a / || $InputLine =~ /^an / || $InputLine =~ /^the / || $InputLine =~ /^and /|| $InputLine =~ /^, / || $InputLine =~ /^: / || $InputLine =~ /^;/) { $string = $string . " " . $InputLine; } elsif ($InputLine =~ /^Conference / || $InputLine =~ /^San / || $InputLine =~ /^pages / || #heuristicas $InputLine =~ /^& / || $InputLine =~ /^Technical / || $InputLine =~ /^\d\d?th / || $InputLine =~ /^vol\. / || $InputLine =~ /^pp\. / || $InputLine =~ /^Eds\. / || $InputLine =~ /^In\.? / || $InputLine =~ /^System\.? / || $InputLine =~ /^Computer / || $InputLine =~ /^Knowledge /) { $string = $string . " " . $InputLine; } elsif(not($string =~ /\.\s.\.$/) && $string =~ /\s.\.$/) #capturando o estilo terminando: C. { $endchar = substr($string, -2, 1); if ( ($endchar =~ /\D/) && ($endchar =~ /\w/) && (uc $endchar eq $endchar) ) { $string = $string . " " . $InputLine; } } elsif($string =~ /and\s\w+$/)#terminando em: and Kotomami { $string = $string . " " . $InputLine; } elsif(not($string =~ /\d/) && not($string =~ /http:/) && #se a string pequena nao tiver digito not($string =~ /ftp:/) && length($string) <= 60) { $string = $string . " " . $InputLine; } elsif ($string =~ / Berlin\.$/ || $string =~ / CO\.$/ || $string =~ / guide\.$/ || $string =~ /[\w\,]\s\d\d\d\d\.?$/) #heursticas { return ($InputLine, $string); } elsif ($string =~ /\,\s\d\d\d\d\D?\.$/ || $string =~ /\d\d?\d?\d?\-\-\d\d?\d?\d?\.$/ || is_InitRef($InputLine)) { return ($InputLine, $string); } #heursticas

49

elsif ($string =~ /ese\)\.$/ || $string =~ /Guide\.$/ || $string =~ /Springer\.$/ || $string =~ /Denmark\.$/ || $string =~ /Summarization\.$/ || $string =~ /Humanities\.$/) { return ($InputLine, $string); } else{ $string = $string . " " . $InputLine; } if($InputLine && (length($InputLine) <= 8)) { do{ $InputLine = <INPUTFILE>; $InputLine = alltrim($InputLine); if(length($InputLine) <= 4 && $InputLine =~ /\d\d?\d?\d?/ && (not $InputLine =~ /\./)) { $string =~ s/\s$//; } }while(length($InputLine) <= 4 && $InputLine =~ /\d\d?\d?\d?/ && (not $InputLine =~ /\./)); return ($InputLine, $string); } do{ $InputLine = <INPUTFILE>; if(not $InputLine){$EndOfFile = 1;} $InputLine = alltrim($InputLine); if(length($InputLine) <= 4 && $InputLine =~ /\d\d?\d?\d?/ && (not $InputLine =~ /\./)) { $string =~ s/\s$//; } }while(length($InputLine) <= 4 && $InputLine =~ /\d\d?\d?\d?/ && (not $InputLine =~ /\./)); }while(not $EndOfFile); } return ($InputLine, $string); } ######################################################################################################## # Main ######################################################################################################## sub main { my($InputLine, $string, $ID, $erros, @files, $file); $erros=0; # Le o subdiretorio refs e armazena todos os arquivos .TXT na lista @files opendir(DIR, "./refs/"); while ($name = readdir(DIR)) { next if $name !~ /^(.*)\.txt/; push (@files, $name); } close(DIR); if ($#files < 0) { print "Nenhum arquivo .TXT encontrado na pasta ./refs"; } else { open(ERROR, ">erro.txt");

50

# # # # # # # # #

Para cada um dos arquivos contidos na lista, o algoritmo faz o seguinte: 1 - Abre o prximo arquivo de refer^ncias o e 2 - L^ uma linha e 2.1 - Identifica seu modelo 2.2 - L^ o restante da refer^ncia e e 2.3 - Corrige alguns problemas na refer^ncia e 4 - Grava a refer^ncia completa no arquivo ALL e 5 - Caso o tamanho da refer^ncia for maior que 450 (provavelmente com problema) e 5.1 - Grava a refer^ncia no arquivo ERROR e

open(ALL, ">./refs/all.out"); foreach $file (@files) { open(INPUTFILE, "./refs/".$file); $EndOfFile = 0; $InputLine = <INPUTFILE>; # Enquanto o arquivo possuir dados para serem lidos... while (defined($InputLine)) { # Desconsidera linhas que apenas possuam Literature, Bibliography, ... if(((lc $InputLine) =~ /iterature/ || (lc $InputLine) =~ /eference/ || (lc $InputLine) =~ /ibliography/) && length($InputLine) <= 20) { $InputLine = ""; $string = ""; } else #Adquire uma refer^ncia completa e { ($InputLine, $string) = &get_Ref($InputLine); } if($string ne "") { $string = alltrim ($string); #limpeza #corre~o de erros ca $string =~ s/ / /ig; #remo~o de espao duplo ca c $string =~ s/\s([.,;:?!\\\/])/$1/ig; $string =~ s//"/ig; $string =~ s//"/ig; $string =~ s///ig; $string =~ s/[\-\]/\-/ig; $string =~ s/\/ffi/ig; $string =~ s/(\d)\{/$1--/ig; $string =~ s/\{/-/ig; $string =~ s/\sth\s/th /ig; $string =~ s/\\ss/\s/ig; #ajustes finais $string =~ s/^\d+\.?\s//; $string =~ s/^\[\w+[-]?\w*\s?\w*\s?\w*[-]?\w*\.?\,?\s?\d*\D?\]\s?//; $string =~ s/^\(\w+\,?\s?\d*\D?\)\s?//; $string =~ s/\.\s\d+$/\./; #retira o numero no final das ref $string = alltrim ($string); #prepara~o das refer^ncias para utlizar o brills tagger ca e

51

$string =~ s/(\S)([\.|\;|\:|\?|\\|\/|\,|\"|\|\|\|\!|\@|\#|\%|\|\&|\*|\-|\=|\{|\}|\[|\]|\~|\<|\>| \(|\)|\|\|\+|\-|\o |\ |\|\|\ R |\|\ |\ ])/$1 $2/ig; $string =~ s/(\S)([\.|\;|\:|\?|\\|\/|\,|\"|\|\|\|\!|\@|\#|\%|\|\&|\*|\-|\=|\{|\}|\[|\]|\~|\<|\>| \(|\)|\|\|\+|\-|\o |\ |\|\|\ R |\|\ |\ ])/$1 $2/ig; $string =~ s/([\.|\;|\:|\?|\\|\/|\,|\"|\|\|\|\!|\@|\#|\%|\|\&|\*|\-|\=|\{|\}|\[|\]|\~|\<|\>| \(|\)|\|\|\+|\-|\o |\ |\|\|\ R |\|\ |\ ])(\S)/$1 $2/ig; $string =~ s/([\.|\;|\:|\?|\\|\/|\,|\"|\|\|\|\!|\@|\#|\%|\|\&|\*|\-|\=|\{|\}|\[|\]|\~|\<|\>| \(|\)|\|\|\+|\-|\o |\ |\|\|\ R |\|\ |\ ])(\S)/$1 $2/ig; $string =~ s/\//\$b/ig; $string =~ s/\cM//; if(length($string) >= 450) { print ERROR $file." ".$string, "\n"; } print ALL $string, "\n"; } #L^ a prxima linha, pulando as linhas em branco e o while (length($InputLine) < 2 && defined($InputLine)) { $InputLine = <INPUTFILE>; } } # Fim do while close(INPUTFILE); } #Fim FOREACH close(ERROR); close(ALL); } #Fim ELSE } ######################################################################################################## ######################################################################################################## # Divis~o do Corpus Original em 10 Corpus de Treino e Teste a # Autor: Alberto Cceres lvarez a A # ---------crossv.prl--------ICMC - USP - S~o Carlos a ---------crossv.prl--------# 2o. Semestre de 2005 # # Este programa realiza a divis~o do corpus original considerando que o mtodo de avalia~o a ser a e ca # utilizado 10-fold Cross-Validation. e # # usage: cat TAGGED-CORPUS-ENTIRE | perl crossv.prl ######################################################################################################## for($fold = 1;$fold <= 10;$fold++) { open("TR"."$fold", ">cp_treino$fold"); open("TS"."$fold", ">cp_teste$fold"); } srand; while(<STDIN>) { $x = rand; if ($x <= 0.1) { print TS1 $_;

52

print print print print print print print print print

TR2 $_; TR3 $_; TR4 $_; TR5 $_; TR6 $_; TR7 $_; TR8 $_; TR9 $_; TR10 $_;

} elsif ($x > 0.1 && $x <= 0.2) { print TS2 $_; print print print print print print print print print TR1 $_; TR3 $_; TR4 $_; TR5 $_; TR6 $_; TR7 $_; TR8 $_; TR9 $_; TR10 $_;

} elsif ($x > 0.2 && $x <= 0.3) { print TS3 $_; print print print print print print print print print TR1 $_; TR2 $_; TR4 $_; TR5 $_; TR6 $_; TR7 $_; TR8 $_; TR9 $_; TR10 $_;

} elsif ($x > 0.3 && $x <= 0.4) { print TS4 $_; print print print print print print print print print TR1 $_; TR2 $_; TR3 $_; TR5 $_; TR6 $_; TR7 $_; TR8 $_; TR9 $_; TR10 $_;

} elsif ($x > 0.4 && $x <= 0.5) { print TS5 $_; print print print print print TR1 TR2 TR3 TR4 TR6 $_; $_; $_; $_; $_;

53

print print print print

TR7 $_; TR8 $_; TR9 $_; TR10 $_;

} elsif ($x > 0.5 && $x <= 0.6) { print TS6 $_; print print print print print print print print print TR1 $_; TR2 $_; TR3 $_; TR4 $_; TR5 $_; TR7 $_; TR8 $_; TR9 $_; TR10 $_;

} elsif ($x > 0.6 && $x <= 0.7) { print TS7 $_; print print print print print print print print print TR1 $_; TR2 $_; TR3 $_; TR4 $_; TR5 $_; TR6 $_; TR8 $_; TR9 $_; TR10 $_;

} elsif ($x > 0.7 && $x <= 0.8) { print TS8 $_; print print print print print print print print print TR1 $_; TR2 $_; TR3 $_; TR4 $_; TR5 $_; TR6 $_; TR7 $_; TR9 $_; TR10 $_;

} elsif ($x > 0.8 && $x <= 0.9) { print TS9 $_; print print print print print print print print print } else TR1 $_; TR2 $_; TR3 $_; TR4 $_; TR5 $_; TR6 $_; TR7 $_; TR8 $_; TR10 $_;

54

{ print TS10 $_; print print print print print print print print print } } for($fold = 1;$fold <= 10;$fold++) { open("TR"."$fold"); open("TS"."$fold"); } ######################################################################################################## /*###################################################################################################### # Compara~o entre TEST-CORPUS e TAGGED-TEST-CORPUS ca # Autor: Alberto Cceres lvarez a A # ---------evaluate.c--------ICMC - USP - S~o Carlos a ---------evaluate.c--------# 2o. Semestre de 2005 ######################################################################################################*/ #include <stdio.h> #include <string.h> int main(int argc, char* argv[]) { if (argc == 5) { FILE *in_res, *in_base, *out_err, *out_freq; char buffer1[100],//Variaveis para armazenamento temporario durante a leitura buffer2[100], tag1[30],//Variaveis para armazenamento temporario das etiquetas tag2[30], *ptr,//Ponteiro utilizado para manipular strings nome_tag[100][30]; //Array para armazenar o nome das etiquetas int n_words, //Numero total de palavras n_tags_err,//Numero de etiquetas diferentes das do corpus etiquetado manualmente cont_tag[100],//Numero de ocorrencias de cada etiqueta i; TR1 TR2 TR3 TR4 TR5 TR6 TR7 TR8 TR9 $_; $_; $_; $_; $_; $_; $_; $_; $_;

if (!(in_res=fopen(argv[1],"rt"))) { fprintf(stderr, "Erro ao abrir corpus gerado pelo etiquetador.\n"); return 1;} if (!(in_base=fopen(argv[2],"rt"))) { fprintf(stderr, "Erro ao abrir corpus etiquetado manualmente.\n"); return 1;} if (!(out_err=fopen(argv[3],"wt"))) { fprintf(stderr, "Erro ao abrir arquivo para exibir etiquetas erradas.\n"); return 1;} if (!(out_freq=fopen(argv[4],"wt"))) { fprintf(stderr, "Erro ao abrir arquivo para exibir frequencia das etiquetas.\n"); return 1;} //inicializa variaveis de contagem de tags erradas e numero de palavras n_words = 0; n_tags_err = 0;

55

//inicializa variaveis para contagem do numero de cada tag nome_tag[0][0] = \0; for(i = 0; i < 100; i++) cont_tag[i] = 0; while (!feof(in_res) && !feof(in_base)){ fscanf(in_res, "%s ", buffer1); ptr = strchr(buffer1, /); strcpy (tag1, ptr+1); *ptr = \0; fscanf(in_base, "%s ", buffer2); ptr = strchr(buffer2, /); strcpy (tag2, ptr+1); *ptr = \0; if (strcmp(buffer1, buffer2) == 0){ n_words++; //Verifica a posicao no array da tag. for (i = 0; (nome_tag[i][0] != \0) && (strcmp(tag2, nome_tag[i]) != 0) && (i < 99); i++); //Caso esta estiqueta seja nova na lista, o nome gravado e e //a marca \0, indicando fim da lista, gravado na posi~o seguinte. e ca if(nome_tag[i][0] == \0) { strcpy(nome_tag[i], tag2); nome_tag[i+1][0] = \0; }; cont_tag[i]++; //Verifica se as etiquetas dos dois arquivos sao coincidentes. if (strcmp(tag1, tag2) != 0){ n_tags_err++; fprintf(out_err, "%s_%s\t%s\n", tag2, tag1, buffer1); } } else { fprintf(stderr, "Palavras n~o coincidentes: %s : %s\n", a buffer1, buffer2); } } printf("***Numero_de_palavras: %d\n", n_words); printf("***Numero_de_etiquetas_erradas: %d\n", n_tags_err); for (i = 0; (nome_tag[i][0] != \0) && (i < 100); i++) { fprintf(out_freq, "%s\t%d\n", nome_tag[i], cont_tag[i]); }; fclose(in_res); fclose(in_base); fclose(out_err); fclose(out_freq); } else { printf("\navalia CORPUS-TESTE CORPUS-MANUAL ETIQUETAS-ERRADAS ETIQUETAS-FREQUENCIA\n\n"); printf("\n CORPUS-TESTE Corpus de teste gerado pelo etiquetador.\n"); printf("\n CORPUS-MANUAL Corpus etiquetado manualmente.\n"); printf("\n ETIQUETAS-ERRADAS Arquivo de sada para exibir a etiqueta correta,\n"); printf(" a etiqueta errada, e a palavra etiquetada\n"); printf(" erradamente.\n");

56

printf("\n printf(" } return 0;

ETIQUETAS-FREQUENCIA

Arquivo de sada para exibir a frequ^ncia de\n"); e cada etiqueta.\n");

} //###################################################################################################### /*###################################################################################################### # Nmero de erros entre TEST-CORPUS e TAGGED-TEST-CORPUS u # Autor: Alberto Cceres lvarez a A # --------count_errors.c-------ICMC - USP - S~o Carlos a --------count_errors.c-------# 2o. Semestre de 2005 ######################################################################################################*/ #include <stdio.h> #include <string.h> int main() { char tags_1[60], tags_2[60], palavra[100]; int cont = 1; fscanf(stdin, "%s ", tags_1); fscanf(stdin, "%s ", palavra); while (!feof(stdin)){ fscanf(stdin, "%s ", tags_2); fscanf(stdin, "%s ", palavra); if (strcmp(tags_1, tags_2) == 0) { cont++; } else { fprintf(stdout, "%s\t%d\n", tags_1, cont); cont = 1; strcpy(tags_1, tags_2); } } fprintf(stdout, "%s\t%d\n", tags_1, cont); return 0; } //###################################################################################################### /*###################################################################################################### # Nmero de erros globais entre TEST-CORPUS e TAGGED-TEST-CORPUS u # Autor: Alberto Cceres lvarez a A # --------global_errors.c-------ICMC - USP - S~o Carlos a --------global_errors.c-------# 2o. Semestre de 2005 ######################################################################################################*/ #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char tags[60], aux[10], tag_atual[60], *ptr; int n_err, n_err_tag; tag_atual[0] = \0; n_err_tag = 0; while (!feof(stdin)){ fscanf(stdin, "%s ", tags); fscanf(stdin, "%s ", aux); if (strchr(tags, *)) {

57

if (tag_atual[0] != \0) { fprintf(stdout, "%s\t%d\n", tag_atual, n_err_tag); } tag_atual[0] = \0; n_err_tag = 0; fprintf(stdout, "%s %s\n", tags, aux); } else { ptr = strchr(tags, _); *ptr = \0; n_err = atoi(aux); if (strcmp(tags, tag_atual) == 0) { n_err_tag += n_err; } else { if (tag_atual[0] != \0) { fprintf(stdout, "%s\t%d\n", tag_atual, n_err_tag); } strcpy(tag_atual, tags); n_err_tag = n_err; } } } fprintf(stdout, "%s\t%d\n", tag_atual, n_err_tag); return 0; } //###################################################################################################### /*###################################################################################################### # Clculo do valor relativo que ir preencher alguma tabela a a # Autor: Alberto Cceres lvarez a A # --------calc\_val\_rel.c-------ICMC - USP - S~o Carlos a --------calc\_val\_rel.c-------# 2o. Semestre de 2005 ######################################################################################################*/ #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char tags[60], aux[10]; int n_err_tot, n_err, cont_treino = 0, i; while (!feof(stdin)){ fscanf(stdin, "%s ", tags); fscanf(stdin, "%s ", aux); if (strchr(tags, *)) { //Le o numero total para sequencia seguinte. fscanf(stdin, "%s ", tags); fscanf(stdin, "%s ", aux); n_err_tot = atoi(aux); cont_treino++; } else { n_err = atoi(aux); fprintf(stdout, "%s\t%d\t%.10f\n", tags, cont_treino, ((double)n_err)/n_err_tot); } } return 0; } //######################################################################################################

58

/*###################################################################################################### # Clculo do valor relativo que ir preencher alguma tabela (modificado) a a # Autor: Alberto Cceres lvarez a A # --------calc\_val\_mod.c-------ICMC - USP - S~o Carlos a --------calc\_val\_mod.c-------# 2o. Semestre de 2005 ######################################################################################################*/ #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char tags[60], aux[10]; int n_err_tot, n_err, cont_treino = 0, i; while (!feof(stdin)){ fscanf(stdin, "%s ", tags); fscanf(stdin, "%s ", aux); if (strchr(tags, *)) { //Le o numero total para sequencia seguinte. fscanf(stdin, "%s ", tags); fscanf(stdin, "%s ", aux); n_err_tot = atoi(aux); cont_treino++; } else { n_err = atoi(aux); fprintf(stdout, "%s\t%d\t%.10f\n", tags, cont_treino, (double)n_err); } } return 0; } //###################################################################################################### /*###################################################################################################### # Preenche um arquivo com valores relativos em forma de tabela # Autor: Alberto Cceres lvarez a A # --------table.c-------ICMC - USP - S~o Carlos a --------table.c-------# 2o. Semestre de 2005 ######################################################################################################*/ #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, char* argv[]) { char tags_1[60], tags_2[30], aux[15], aux2[4]; int pos_tabela, n_treino, n_tot_treinos = 1; //Armazena na variavel o numero de colunas, se especificado. if (argc == 2){ n_tot_treinos = atoi(argv[1]); } fscanf(stdin, "%s ", tags_1); fscanf(stdin, "%s ", aux2); fscanf(stdin, "%s ", aux); n_treino = atoi(aux2); fprintf(stdout, "%s", tags_1); pos_tabela = 1; for(; pos_tabela < n_treino; pos_tabela++){ fprintf(stdout, "\t%f", 0);}

59

fprintf(stdout, "\t%s", aux); pos_tabela++; while (!feof(stdin)){ fscanf(stdin, "%s ", tags_2); fscanf(stdin, "%s ", aux2); fscanf(stdin, "%s ", aux); n_treino = atoi(aux2); if(strcmp(tags_1, tags_2) == 0){ for(; pos_tabela < n_treino; pos_tabela++){ fprintf(stdout, "\t%f", 0);} fprintf(stdout, "\t%s", aux); pos_tabela++; } else { strcpy(tags_1, tags_2); for(; pos_tabela <= n_tot_treinos; pos_tabela++){ fprintf(stdout, "\t%f", 0);} fprintf(stdout, "\n%s", tags_1); pos_tabela = 1; for(; pos_tabela < n_treino; pos_tabela++){ fprintf(stdout, "\t%f", 0); } fprintf(stdout, "\t%s", aux); pos_tabela++; } } for(; pos_tabela <= n_tot_treinos; pos_tabela++){ fprintf(stdout, "\t%f", 0);} return 0; } //######################################################################################################

######################################################################################################## # Information Extraction: Pr-processamento das Refer^ncias Bibliogrficas e e a # Autor: Alberto Cceres lvarez a A # ---------bibtex.pl--------ICMC - USP - S~o Carlos a ---------bibtex.pl--------# 2o. Semestre de 2005 # # Este programa realiza a etiquetagem das informa~es de cada campo para cada entrada de um arquivo .bib. co ######################################################################################################## open(READ, "C:/Mestrado/JabRef_bibtex/00.bib"); open(WRITE, ">C:/Mestrado/Bibliographic-styles/00.bib"); $nextline = <READ>; while(defined($nextline)) { $linha = $nextline; do{ $nextline = <READ>; }while($nextline eq "\t\n"); #concatenas varias linhas referentes a um mesmo campo if(not $linha =~ /^[@}\n]/)

60

{ if(not $nextline =~ /^[@}\n]/) { $nextline =~ s/\s*\=\s*/=/;#ajustes until($nextline =~ /^.*=/ || $nextline =~ /^}/) { $linha =~ s/\n//; $nextline =~ s/^\s*//; $linha = $linha." ".$nextline; do{ $nextline = <READ>; }while($nextline eq "\t\n"); $nextline =~ s/\s*\=\s*/=/;#ajustes } } #resolve o problema das aspas dupla ...... $linha =~ s/\\\"/\\aspas/ig; $linha =~ s//\"/ig; $linha =~ s//\"/ig; for($i=0;$i<3;$i++){ $linha =~ s/\"//; $linha =~ s/\"//; } $linha =~ s/\\aspas/\\\"/g; $linha =~ s/(\\ldots|\\-) //g; $linha =~ s/\\({|})/$1/ig; #retirando \{footnotesize $linha =~ s/\s+\n/\n/; $linha =~ s/ \\ / /ig; $linha =~ s/\\ / /ig; $linha =~ s/~\\/ \\/ig; $linha =~ s/^\s*//;#remove espaos no incio c $linha =~ s/\s*\=\s*/=/;#ajustes $linha =~ s/\//1barra1/ig;#brills tagger --->>>> 1barra1 representa a / #capturando a etiqueta e rotulando if($linha =~ /^(\w*)=/)#get tag { $tag = uc $1; if($linha =~ /(.+=)({.+})(.+)/)#get tag=|{contedo}|resto u { $init = $1; $info = $2; $final = $3; $info =~ s/[[:blank:]]+/ /ig; #tokenizando... if ($tag eq "AUTHOR" || $tag eq "EDITOR" ) { $info =~ s/(\.|,)(\S)/$1 $2/ig; $info =~ s/ and and / and /g; } else { $info =~ s/([!-[]|[]-])([!-\/]|[:-@]|[\[\]^_\|~]|1barra1)/$1 $2/ig; y $info =~ s/([!-[]|[]-])([!-\/]|[:-@]|[\[\]^_\|~]|1barra1)/$1 $2/ig; y $info =~ s/([!-\/]|[:-@]|[\[\]^_\|~]|1barra1)(\S)/$1 $2/ig; $info =~ s/([!-\/]|[:-@]|[\[\]^_\|~]|1barra1)(\S)/$1 $2/ig; $info =~ s/ ,$/,/ig; } #etiquetando ... if($tag eq "MONTH" && $linha =~ /#/)#arrumando o campo MONTH {

61

$info =~ s/(\d\d?)(\D)/$1\/{DAYS}$2/ig; $info =~ s/(\d\d\d\d)\/{\w+}/$1\/{YEAR}/ig; $info =~ s/(\-|1barra1)/$1\/$1/ig; } elsif($tag eq "ADDRESS" && $linha =~ /{.*#.*{/) { $linha =~ s/}/\/{$tag}}/ig; $linha =~ s/\s$//ig; $info = $linha; $init = $final = ""; } else#se nao for campo MONTH com o caractere # { #ajustes no inicio da string $info =~ s/{ /{/g; #ajustes na parte final da string $info =~ s/ }/}/g; #rotula as palavras $info =~ s/ /\/{$tag} /ig; #rotula a ultima palavra da linha $info =~ s/}$/\/{$tag}}/; #$info =~ s/}\n/\/{$tag}}\n/; } #retirando e consertando etiquetas ... $info =~ s/ and\/{AUTHOR}/ and/ig;#desmarca and $info =~ s/ and\/{EDITOR}/ and/ig;#desmarca and $info =~ s/(\S)(\.|,)\/{(AUTHOR|EDITOR)}/$1\/{$3}$2/ig; $info =~ s/ (\.|,)\/{(AUTHOR|EDITOR)}/$1/ig; #retirando o ponto do and $info =~ s/ and\. / and /g; $info =~ s/(\\em|\\bf|\\it|\\rm|\\sl|\\sf|\\sc|\\tt|\\footnotesize|\\v)\/{\w+} /$1 /ig; #$info =~ s/({|})\/{\w+} /$1/ig; $info =~ s/\/{CROSSREF}//; $info =~ s/\/{URL}/\/URL/g; $info =~ s/-\/{PAGES} -\/{PAGES}/--\/-/g; #ajustando ... \"/{TITLE} $info =~ s/\\(.)\/{\w+} /\\$1/ig; for($i=0;$i<7;$i++){ $info =~ s/(\\crossref{[!-||~-]+)\/{\w+} /$1/g; y } $linha = $init.$info.$final."\n"; } } } print WRITE $linha; } close(READ); close(WRITE); ######################################################################################################## ######################################################################################################## # Extra~o de elementos de refer^ncias bibliogrficas ca e a # Autor: Alberto Cceres lvarez a A # ---------extraction.pl--------ICMC - USP - S~o Carlos a ---------extraction.pl--------# 1o. Semestre de 2006 # # Este programa recebe como entrada um conjunto de refer^ncias etiquetadas (TAGGED-CORPUS) e produz como e # sada um arquivo XML que contm as informa~es extradas para cada refer^ncia e co e ######################################################################################################## #unidades de informa~es (tags) a serem extradas das refer^ncias co e @tags = ("ADDRESS","AUTHOR","BOOKTITLE","CHAPTER","EDITION","EDITOR","HOWPUBLISHED",

62

"INSTITUTION","ISBN","ISSN","JOURNAL","MONTH","NOTE","NUMBER","ORGANIZATION", "INITPAGE","FINALPAGE","PUBLISHER","SCHOOL", "SERIES","TYPE","TITLE","URL", "URLACCESSDATE","VOLUME","YEAR","PAGES","DAYS","CROSSREF","KEY"); open(READ, "TAGGED-CORPUS"); open(WRITE, ">extr.xml"); print WRITE "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"\?>\n<references>\n"; $ref = <READ>; while(defined($ref)) { #as informa~es da etiqueta INDICATOR n~o devem ser extradas, simplesmente, por apenas serem indicadores co a $ref =~ s/([^\s]+)\/INDICATOR[[:space:]]+//g; $ref =~ s/[{}\[\]<>\(\)]\/[^\s]+[[:space:]]+//ig; #quando houver varios m^s e dia consecutivos, altera a etiqueta dos dias para MONTH e $ref =~ s/([[:alpha:]]+\/MONTH \d\d?)\/DAYS ((-\/- ){1,2}[[:alpha:]]+\/MONTH \d\d?)\/DAYS / $1\/MONTH $2\/MONTH /g; $ref =~ s/(\d\d?)\/DAYS ([[:alpha:]]+\/MONTH (-\/- ){1,2}\d\d?)\/DAYS ([[:alpha:]]+\/MONTH )/ $1\/MONTH $2\/MONTH $4/g; #caso uma refer^ncia possuir dois anos, remove-se o ano mais prximo do final da refer^ncia e o e if($ref =~ /\/YEAR.+\/YEAR/) { $ref =~ s/(.+)\d{4}[a-z]?\/YEAR[[:space:]]+/$1/; } $ref =~ s/(\d{4})[a-z]\/YEAR/$1\/YEAR/g; #marca com uma tag XML o incio e fim de cada informa~o a ser extrada, ou seja, delimita dentro da ca #refer^ncia onde comea e termina uma informa~o e c ca for($i = 0;$i < @tags;$i++) { $ltag = lc $tags[$i]; $ref =~ s/([^\s]+\/$tags[$i]) /<$ltag>$1 /; $ref =~ s/(.*)\/$tags[$i] /$1<1$ltag> /; } $ref =~ s/([^\s]+)\/[^\s]+[[:space:]]+/$1 /ig;#removendo etiquetas #remove espaos e sinais de pontua~o que estiverem entre o fim (</info1>) c ca #de uma informa~o e incio (<info2>) de outra ca $ref =~ s/(<1[a-z]+>)([[:punct:][:space:]]+)(<[a-z]+>)/$1\n$3/g; $ref =~ s/<1([a-z]+)>/<\/$1>/g; #$b significa / para n~o confundir com a / que separa a palavra de sua etiqueta a $ref =~ s/\$b/\//ig; $ref =~ s/ ([-\/])/$1/ig; $ref =~ s/([-\/]) /$1/ig; $ref =~ s/ ([.,:])/$1/ig; #remove os sinais de pontua~o localizados aps a ltima tag XML (final da ref) ca o u $ref =~ s/(.+<\/[a-z]+>).+/$1/; #captura a string que contm os autores da refer^ncia e e e #extrai separadamente cada autor (1o , 2o , 3o , ...) da refer^ncia e if($ref =~ /((.|\n)*)(<author>.+<\/author>)((.|\n)+)/) { $init = $1; $autores = $3; $end = $4; $autores =~ s/;/,/ig; $autores =~ s/,? and/, and/; $autores =~ s/([[:alpha:]-.]+), (([[:alpha:]-.]+\.\s?){1,2}),/$2 $1,/ig; $autores =~ s/(and |<author>)([[:alpha:]-.]+), (([[:alpha:]-.]+\.?\s?){1,2})<\/author>/$1$3. $2<\/author>/; $autores =~ s/, and /, /; $autores =~ s/ ([[:alpha:]])<\/author>/ $1.<\/author>/; $autores =~ s/, /<\/author>\n<author>/g;

63

$ref = $init.$autores.$end; } #captura a string que contm os editores da refer^ncia e extrai separadamente cada editor e e if($ref =~ /((.|\n)*)(<editor>.+<\/editor>)((.|\n)+)/) { $init = $1; $editores = $3; $end = $4; $editores =~ s/,? and/, and/; $editores =~ s/([[:alpha:]-.]+), (([[:alpha:]-.]+\.\s?){1,2}),/$2 $1,/ig; $editores =~ s/(and |<editor>)([[:alpha:]-.]+), (([[:alpha:]-.]+\.?\s?){1,2})<\/editor>/$1$3. $2<\/editor>/; $editores =~ s/, and /, /; $editores =~ s/ ([[:alpha:]])<\/editor>/ $1.<\/editor>/; $editores =~ s/, /<\/editor>\n<editor>/g; $ref = $init.$editores.$end; } #remove espaos na url da refer^ncia c e if($ref =~ /((.|\n)*)(<url>.+<\/url>)((.|\n)*)/) { $init = $1; $url = $3; $end = $4; $url =~ s/[[:blank:]]+//ig; $ref = $init.$url.$end; } $ref =~ s/[[:blank:]]+/ /ig; print WRITE "<ref>\n".$ref."\n</ref>\n\n"; #delimitadores de refer^ncias e $ref = <READ>; } print WRITE "</references>"; close(READ); close(WRITE); ########################################################################################################

64

Manual do Etiquetador TBL

Neste apndice so apresentadas as ferramentas utilizadas e os arquivos utilizados/gerados e a no treinamento e etiquetagem do etiquetador TBL. O treinamento com o TBL consiste de duas etapas: aprender regras para etiquetagem de palavras desconhecidas e aprender regras contextuais. No treinamento para aprendizado de regras para palavras desconhecidas utiliza-se o comando: unknown-lexical-learn.prl BIGWORDLIST SMALLWORDTAGLIST BIGBIGRAMLIST N LEXRULEOUTFILE Em que: BIGWORDLIST um arquivo com todas as palavras/s e mbolos que esto presentes no corpus a em ordem decrescente de freqncia. ue and : pages IEEE ; Signal for SMALLWORDTAGLIST um arquivo no formato - palavra etiqueta freqncia - que lista o e ue nmero de vezes que uma palavra aparece com uma dada etiqueta no corpus. u . . 89530 , , 52419 and AUTHOR 7689 In INDICATOR 5385 Conference BOOKTITLE 1420 BIGBIGRAMLIST um arquivo com os bigramas que aparecem no corpus de treinamento. e : 33 pages . image processing Ecient computation machine learning N um nmero que indica que devero ser utilizados apenas os bigramas onde pelo menos e u a uma das palavras uma das n mais freqentes no corpus. e u LEXRULEOUTFILE o arquivo onde sero armazenadas as regras aprendidas. e a 65

No treinamento para aprendizado de regras contextuais utiliza-se o comando: contextual-rule-learn TAGGED-CORPUS DUMMY-TAGGED-CORPUS CONTEXT-RULEFILE TRAINING.LEXICON Em que: TAGGED-CORPUS o arquivo que contm o texto etiquetado manualmente, tokenizado e no e e formato de uma sentena por linha. c DUMMY-TAGGED-CORPUS o arquivo formado pelo mesmo texto do arquivo TAGGEDe CORPUS s que etiquetado pelo etiquetador inicial. o CONTEXT-RULEFILE o arquivo onde sero armazenadas as regras contextuais. e a TRAINING.LEXICON o arquivo do lxico, que formado pelas palavras e suas poss e e e veis etiquetas que tenham aparecido no corpus de treinamento. collection TITLE PUBLISHER NOTE Tasaki AUTHOR Based BOOKTITLE TITLE JOURNAL Electronics JOURNAL BOOKTITLE INSTITUTION ORGANIZATION PUBLISHER 2000a YEAR O etiquetador TBL tem ferramentas auxiliares para gerar este arquivos que so utilizaa dos no treinamento e esto descritas no arquivo README que acompanha o etiquetador. a Na etiquetagem utilizado o comando: e tagger LEXICON CORPUS BIGBIGRAMLISTS LEXRULEOUTFILE CONTEXTUALRULEFILE [op~es] co Em que: CORPUS o nome do arquivo que ser etiquetado. e a Depois do nome de todos os arquivos, podem ser colocadas opes - Tabela 10. co Opes co Descrio ca -h Help -w wordlist Prov um conjunto extra de palavras alm das que esto no lxico e e a e -i lename Grava o resultado intermedirio do etiquetador inicial em um arquivo a -s number Processa o corpus para ser etiquetado number linhas a cada iterao ca -S Utiliza apenas o etiquetador inicial -F Utiliza apenas o etiquetador nal, ou seja o corpus deve estar etiquetado Tabela 10: Opes do comando tagger co Existe ainda a possibilidade de aumentar a lista de bigramas e o lxico. H tambm e a e a possibilidade de se alterar manualmente as regras.

66

Referncias e
American Psychological Association (1994). Publication Manual of the American Psychological Association (4th ed.). Washington, DC: American Psychological Association. ASSOCIACAO BRASILEIRA DE NORMAS TECNICAS (2002). NBR 6023: Infor mao e Documentao - Referncias - Elaborao. Rio de Janeiro: ABNT. ca ca e ca Borko, H. (1967). Automated Language Processing. New York: John Wiley and Sons. Brasil, C. & A. A. Lopes (2004, November). Minerao de artigos cient ca cos usando aprendizado de mquina. In Jornadas Chilenas de la Computacin - V Workshop a o de Inteligncia Articial, Arica-Chile, pp. 17. e Brill, E. (1994). Some advances in transformation-based part of speech tagging. In AAAI 94: Proceedings of the twelfth national conference on Articial intelligence (vol. 1), Seattle, Washington, United States, pp. 722727. American Association for Articial Intelligence. Brill, E. (1995). Transformation-based error-driven learning and natural language processing: A case study in part of speech tagging. Computational Linguistics 21 (4), 543565. Brill, E. (1997). Unsupervised learning of disambiguation rules for part of speech tagging. In Natural Language Processing Using Very Large Corpora. Kluwer Academic Press. Chanod, J. P. & P. Tapanainen (1995). Creating a tagset, lexicon and guesser for a french tagger. Chicago Editorial Sta (1993). Chicago Manual of Style (14th ed.). Chicago: University of Chicago Press. Connan, J. & C. W. Omlin (2000, March 24). Bibliography extraction with hidden markov models. Technical report. Cowie, J. & W. Lehnert (1996). Information extraction. Communications of the ACM 39 (1), 8091. Daelemans, W., J. Zavrel, & S. Berck (1996). MBT: A memory based part of speech tagger-generator. In E. Ejerhed & I. Dagan (Eds.), Proceedings of the Fourth Workshop on Very Large Corpora, pp. 1427. Day, M.-Y., T.-H. Tsai, C.-L. Sung, C.-W. Lee, S.-H. Wu, C.-S. Ong, & W.-L. Hsu (2005). A knowledge-based approach to citation extraction. In D. Zhang, T. M. Khoshgoftaar, & M.-L. Shyu (Eds.), Proceedings of the 2005 IEEE International Conference on Information Reuse and Integration, IRI - 2005, August 15-17, 2005, Las Vegas Hilton, Las Vegas, NV, USA, pp. 5055. IEEE Systems, Man, and Cybernetics Society. 67

Ding, Y., G. Chowdhury, & S. Foo (1999). Template mining for the extraction of citation from digital documents. Proceedings of the Second Asian Digital Library Conference, Taiwan, 4762. EAGLES - Expert Advisory Group on Language Engineering Standards (1996). Recommendations for the morphosyntactic annotation of corpora. Gaizauskas, R. & Y. Wilks (1998). Information extraction: Beyond document retrieval. Journal of Documentation 54 (1), 70105. Geng, J. & J. Yang (2004). Autobib: Automatic extraction of bibliographic information on the web. In 8th International Database Engineering and Applications Symposium (IDEAS 2004), 7-9 July 2004, Coimbra, Portugal, pp. 193204. IEEE Computer Society. Giurida, G., E. C. Shek, & J. Yang (2000). Knowledge-based metadata extraction from postscript les. In DL 00: Proceedings of the fth ACM conference on Digital libraries, New York, NY, USA, pp. 7784. ACM Press. Grishman, R. (1997). Information extraction: Techniques and challenges. In SCIE 97: International Summer School on Information Extraction, pp. 1027. SpringerVerlag. Han, H., C. L. Giles, E. Manavoglu, H. Zha, Z. Zhang, & E. A. Fox (2003). Automatic document metadata extraction using support vector machines. In JCDL 03: Proceedings of the 3rd ACM/IEEE-CS joint conference on Digital libraries, Washington, DC, USA, pp. 3748. IEEE Computer Society. Hobbs, J., D. Appelt, J. Bear, D. Israel, M. Kameyama, M. Stickel, & M. F. Tyson (1997). Fastus: A cascaded nite-state transducer for extracting information from natural-language text. In E. Roche & Y. Schabes (Eds.), Finite-State Devices for Natural Language Processing, pp. 383406. Cambridge, MA: MIT Press. Lawrence, S., C. L. Giles, & K. Bollacker (1999). Digital libraries and Autonomous Citation Indexing. IEEE Computer 32 (6), 6771. Leech, G., R. Garside, & M. Bryant (2004). Claws4: The tagging of the british national corpus. In Proceedings of the 15th International Conference on Computational Linguistics, pp. 622628. Lin, C.-Y. & E. Hovy (2003). The potential and limitations of automatic sentence extraction for summarization. In Proceedings of the HLT-NAACL 03 on Text summarization workshop, Morristown, NJ, USA, pp. 7380. Association for Computational Linguistics. Lopes, A. A. & A. Jorge (2000). Combining rule-based and case-based learning for iterative part-of-speech tagging. In EWCBR 00: Proceedings of the 5th European Workshop on Advances in Case-Based Reasoning, London, UK, pp. 2636. SpringerVerlag. 68

Ma, Q., K. Uchimoto, M. Murata, & H. Isahara (1999, July). Elastic neural networks for part of speech tagging. In International Joint Conference on Neural Networks(IJCNN99), Washington, DC. Mao, S., J. W. Kim, & G. R. Thoma (2004). A dynamic feature generation system for automated metadata extraction in preservation of digital materials. In 1st International Workshop on Document Image Analysis for Libraries (DIAL 2004), 23-24 January 2004, Palo Alto, CA, USA, pp. 225232. IEEE Computer Society. Marcus, M. P., B. Santorini, & M. A. Marcinkiewicz (1994). Building a large annotated corpus of english: The Penn Treebank. Computational Linguistics 19 (2), 313330. McCallum, A., K. Nigam, J. Rennie, & K. Seymore (2000). Automating the Construction of Internet Portals with Machine Learning. Information Retrieval 3 (2), 127163. Melo, V. & A. A. Lopes (2004a). Identicao eciente de referncias bibliogrcas ca e a duplicadas em um corpora de artigos cient cos. In II Workshop de Teses e Dissertaes em Inteligncia Articial, So Luis - Maranho, pp. 7180. co e a a Melo, V. & A. A. Lopes (2004b). Usando as referncias bibliogrcas no clustering e a de artigos cient cos. In Jornadas Chilenas de la Computacin - V Workshop de o Inteligncia Articial, Arica-Chile, pp. 17. e Melo, V. & A. A. Lopes (2005). Ecient identication of duplicate bibliographical references. In Proceedings of the 5th Congress of Logic Applied to Technology - Laptec 2005, Himeji - Japan, pp. 18. Melo, V., M. Secato, & A. A. Lopes (2003). Extrao e identicao automticas de ca ca a informaes bibliogrcas de artigos cient co a cos. In Jornadas Chilenas de la Computacin - IV Workshop de Inteligncia Articial, Chilln, pp. 17. o e a Muslea, I. (1999, July). Extraction patterns for information extraction tasks: A survey. In Proceedings of AAAI Workshop on Machine Learning for Information Extraction, Orlando, Florida. Peng, F. & A. McCallum (2004). Accurate information extraction from research papers using conditional random elds. In Proceedings of Human Language Technology Conference and North American Chapter of the Association for Computational Linguistics (HLT-NAACL), pp. 329336. Petinot, Y., P. B. Teregowda, H. Han, C. L. Giles, S. Lawrence, A. Rangaswamy, & N. Pal (2003). eBizSearch: an OAI-compliant digital library for eBusiness. In JCDL 03: Proceedings of the 3rd ACM/IEEE-CS joint conference on Digital libraries, Washington, DC, USA, pp. 199209. IEEE Computer Society. Rajman, M. & R. Besanon (1997). Text Mining: Natural Language techniques and c Text Mining applications. Chapman and Hall. 69

Ratnaparkhi, A. A. (1996). A maximum entropy part-of-speech tagger. In Proceedings of the Empirical Methods in Natural Language Processing Conference, Philadelphia, Pa. Schmid, H. (1995). Probabilistic partofspeech tagging using decision trees. In Proceedings of the Conference on New Methods in Language Processing, Manchester, UK. Seymore, K., A. McCallum, & R. Rosenfeld (1999, July). Learning hidden markov model structure for information extraction. In AAAI99 Workshop on Machine Learning for Information Extraction, Orlando, Florida, USA. Soderland, S. (1999). Learning Information Extraction Rules for Semi-structured and Free Text. Kluwer Academic Publishers. Takasu, A. (2003). Bibliographic attribute extraction from erroneous references based on a statistical model. In JCDL 03: Proceedings of the 3rd ACM/IEEE-CS joint conference on Digital libraries, Houston, Texas, pp. 4960. IEEE Computer Society. Voutilainen, A. (1995). A syntax-based part-of-speech analyser. In Proceedings of the seventh conference on European chapter of the Association for Computational Linguistics, San Francisco, CA, USA, pp. 157164. Morgan Kaufmann Publishers Inc. Wiebe, J., G. Hirst, & D. Horton (1996). Language use in context. Communications of the ACM 39 (1), 102111. Wilkens, M. & J. Kupiec (1996). Training hidden markov models for part of speech tagging. Revision 4. Yin, P., M. Zhang, Z.-H. Deng, & D. Yang (2004). Metadata extraction from bibliographies using bigram HMM. In Z. Chen, H. Chen, Q. Miao, Y. Fu, E. A. Fox, & E.-P. Lim (Eds.), Digital Libraries: International Collaboration and CrossFertilization, 7th International Conference on Asian Digital Libraries, ICADL 2004, Shanghai, China, December 13-17, 2004, Proceedings, Volume 3334 of Lecture Notes in Computer Science, pp. 310319. Springer.

70

Você também pode gostar