Anderson Bonfim Guimarães Identificação de Frases Nominais em Textos da Língua Portuguesa do Brasil Salvador 2014 Anderson Bonfim Guimarães Identificação de Frases Nominais em Textos da Língua Portuguesa do Brasil Monografia apresentada ao Curso de graduação em Ciência da Computação, Departamento de Ciência da Computação, Instituto de Matemática, Universidade Federal da Bahia, como requisito parcial para obtenção do grau de Bacharel em Ciência da Computação. Universidade Federal da Bahia Instituto de Matemática Bacharelado em Ciência da Computação Orientador: Daniela Barreiro Claro Salvador 2014 Resumo O etiquetamento morfossintático é uma tarefa intermediária, as vezes presente, da Extração de Informação(EI). Uma das etapas deste etiquetamento é a de detecção de sintagmas ou chunking, cujo objetivo é agrupar palavras em uma unidade de análise sintática composta por um núcleo e outros termos associados, formando um conjunto de palavras que equivalem a um só vocábulo. Como por exemplo, na sentença A casa de Maria é azul, A casa de Maria forma uma frase nominal1 cujo núcleo é Maria. Para alguns autores os elementos pertencentes ao grupo cujo núcleo é um nome ou substantivo, também conhecido como frases nominais, possuem uma função referencial, isto é, referem-se a um objeto do mundo exterior, como por exemplo, uma entidade. Diversos trabalhos propõem uma etiquetagem morfossintática para o português do Brasil. Em testes realizados em ferramentas para tal tarefa, a que obteve os melhores resultados foi o CoGrOO(COLEN, 2014). Diante desta situação esta foi a ferramenta escolhida para extração de frases nominais. Porém a extração das frases nominais ainda não ocorre de forma a facilitar a etapa de identificação de entidades de relações semânticas, devido a sintagmas extraídos de forma incompleta. Como exemplo de modificação feita em cima do CoGrOO, uma frase nominal (NP) seria juntada com uma frase preposicional (PP2 ) junto à outra NP para formar uma frase nominal única, isso é, NP+PP+NP=FNC3 . O presente trabalho tem como principal objetivo identificar estas frases nominais complexass. Sugere-se que tal modificação facilite a etiquetação automática de relações semânticas em um corpus anotado. Com o intuito de avaliar esta proposta foram realizados dois experimentos a fim de comparar os resultados obtidos pelo algoritmo proposto com o da ferramenta CoGrOO e avaliar a extração de entidades semânticas. Palavras-chaves: PLN, extração da informação, relações semântica, etiquetagem morfossintática, chunking. 1 2 3 Neste trabalho o termo frase nominal foi utilizado como sinônimo de sintagma nominal apesar de PP significar frase preposicional, na ferramenta CoGrOO esta representa apenas uma preposição Frase Nominal Completa Abstract The POS tagging is a intermediate task, sometimes present, in Information Extraction(IE). One of the steps of this tagging process is text chunking whose main goal is segments a sentence into sequences of adjacent words grouped that are equivalents to one term. This term is composed by a head and near modifiers and determinants. In the sentence A bolsa da mulher é azul, A bolsa da mulher is a noun phrase whose head is bolsa. Some authors agree that the elements that belong to the group whose head is a noun, also known as noun phrase refer to a object from the outside world, for example a entity. Many researchs propose a POS tagging for brazilian portuguese. In tests in tools for such task, the better results was seen in CoGrOO(COLEN, 2014) tool. Thus this was the tool chosen to extract noun phrases to further step of identification of entities of semantic relations. However the extraction of noun phrases or chunks, don’t occurs properly to the step due to non noun phrases extracted or extracted incorrectly. As example of modification made upon CoGrOO, a noun phrase(NP) would be joined to a prepositional phrase(PP4 ) join to another NP to form only one noun phrase, in other words, NP+PP+NP=FNC5 . The present research has its main goal identify these phrases properly, or complex noun phrases. Suggest that such modification improves semantic relations tagging in a corpus. In this work wiil be shown the evaluation of the phrases extraction using the CoGrOO tool adding modifications as suggested in the proposal. As intention of evaluate this proposal were performed two experiments to compare the results of the proposed algorithm with CoGrOO and evaluate semantic entities extraction. Key-words: NLP, Information Extraction, POS Tags, Text Chunking 4 5 Despite PP means prepositional phrase, in CoGrOO tool this tag stands for preposition Complete Noun Phrase Lista de ilustrações Figura Figura Figura Figura Figura Figura Figura Figura 1 2 3 4 5 6 7 8 – – – – – – – – Template de um sistema de EI . Sistema de EI . . . . . . . . . . PLN. . . . . . . . . . . . . . . . Maven . . . . . . . . . . . . . . Biblioteca CoGrOO. . . . . . . Configuração CoGrOO. . . . . Análise do Documento . . . . . Objeto DocumentoImpl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 12 16 39 40 40 40 41 Lista de tabelas Tabela Tabela Tabela Tabela Tabela Tabela 1 2 3 4 5 6 – – – – – – Entidades da estrutura sintática . Entidades e eventos . . . . . . . Ferramentas de Etiquetamento . Análise morfológica . . . . . . . . Resultados do experimento 1 . . Resultados do experimento 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 14 22 25 31 33 Lista de abreviaturas e siglas EI Extração da Informação ER Extração de Relações FNC Frase Nominal Completa IA Inteligência Artificial NP Noun phrase PP Prepositional phrase PLN Processamento de Linguagem Natural SN Sintagma nominal – Sumário 1 1.1 1.2 1.3 INTRODUÇÃO . . . Motivação . . . . . . . Proposta . . . . . . . . Estrutura do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 8 9 9 2 2.1 2.1.1 2.2 2.2.1 2.2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 10 14 16 17 18 2.4.1.1 FUNDAMENTAÇÃO TEÓRICA . Extração da Informação . . . . . . Processamento de Linguagem Natural Etiquetador . . . . . . . . . . . . . Modelos . . . . . . . . . . . . . . . . Tipos . . . . . . . . . . . . . . . . . Etiquetador morfológico . . . . . . . . . Etiquetador morfossintático . . . . . . . . Extração das Frases Nominais . . Sintagmas . . . . . . . . . . . . . . . Sintagmas Nominais . . . . . . . . . . . Text Chunking . . . . . . . . . . . . Ferramentas . . . . . . . . . . . . . CoGrOO . . . . . . . . . . . . . . . Módulos CoGrOO . . . . . . . . . . . . 3 3.1 PROPOSTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Algoritmo Proposto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4 4.1 4.1.1 4.2 4.2.1 EXPERIMENTOS E RESULTADOS . . . . . . . . . . . . . . CoGrOO x algoritmo proposto . . . . . . . . . . . . . . . . . . Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Algoritmo proposto x Entidades extraídas manualmente . . . Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 CONCLUSÕES E TRABALHOS FUTUROS . . . . . . . . . . . . . 35 2.2.2.1 2.2.2.2 2.3 2.3.1 2.3.1.1 2.3.2 2.4 2.4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 18 19 19 20 21 21 22 22 30 30 31 33 33 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 APÊNDICE A – CONFIGURAÇÃO DO AMBIENTE . . . . . . . . 39 8 1 Introdução Devido ao grande volume de dados produzidos em forma de texto, surge a necessidade de extrair conhecimento sobre esta grande massa. Uma das técnicas para compreensão destes dados é a Extração da Informação (EI), que tem a função de transformar dados não estruturados em informação estruturada. Para (FELDMAN; SANGER, 2007), EI representa documentos como conjuntos de entidades e estruturas, que é outra forma de descrever formalmente os relacionamentos entre entidades . Para extrair esses relacionamentos citados anteriormente, utiliza-se a técnica de Extração de Relações (ER) que segundo (FELDMAN; SANGER, 2007) pode ser definida como a descoberta de relações de significado, geralmente binárias, explícitas ou implícitas, entre entidades mencionadas contidas em documentos não estruturados. Para extrair as entidades destas relações faz-se uso de um etiquetador, que segundo(DOMINGUES, 2011) é uma ferramenta que utiliza um conjunto de técnicas e métodos, em diferentes abordagens para automatizar a tarefa de etiquetagem. Etiquetagem esta que consiste em definir um conjunto de etiquetas que possuam um significado linguístico associado. Para a identificação destas entidades, utiliza-se a técnica de text chunking, que consiste em dividir um texto em grupos sintaticamente correlacionados de palavras como, por exemplo, grupo de substantivos, onde estão as frases nominais que são utilizadas para identificar as já referidas entidades. 1.1 Motivação A tarefa de identificação de frases nominais é sub tarefa de muitas outras, tais como tradução automática, análise sintática e também, reconhecimento de entidades de relações semânticas. A ferramenta CoGrOO(COLEN, 2014) que é uma ferramenta de análise morfossintática têm um módulo específico para extração de chunks ou sintagmas, e no caso particular, sintagmas ou frases nominais. Em sua versão 4.0.0, o CoGrOO utiliza uma heurística para extrair as frases do corpus Bosque, e estas frases são utilizadas para o treinamento do modelo OpenNLP. Esta versão da ferramenta apresentou bons resultados para a extração de frases nominais simples. Entretanto foi observado que algumas frases nominais complexas não são extraídas, como por exemplo na sentença A casa de Maria, a frase nominal completa é A casa de Maria, porém a ferramenta CoGrOO identificaria A casa como uma frase nominal de como uma frase preposicional e Maria como outra frase nominal. Capítulo 1. Introdução 9 1.2 Proposta Propõe-se neste trabalho o uso da ferramenta CoGrOO como base para extração das frases nominais através do módulo Chunker da mesma, e depois o uso de regras gramaticais da língua portuguesa do Brasil para a extração de frases nominais mais completas, ou complexas. Dessa maneira, para o exemplo da seção 1.1, a frase nominal extraída deve ser A casa de Maria. Sugere-se que tal modificação facilite o etiquetamento automático de relações semânticas em um corpus anotado, pois as entidades destas relações, que em um texto são representadas por frases nominais, seriam extraídas de forma mais completa também. 1.3 Estrutura do Trabalho Este trabalho está estruturado em 5 capítulos. No capítulo 2 são apresentados os conceitos necessários para o melhor entendimento deste trabalho, apresentando também a ferramenta CoGrOO. No capítulo 3 será apresentada a proposta e o algoritmo proposto. No capítulo 4 são apresentados os experimentos feitos para avaliar a proposta e os resultados obtidos destes. E por fim no capítulo 5 tem-se a conclusão, sugerindo trabalhos futuros e evidenciando a contribuição deste trabalho. 10 2 Fundamentação Teórica Este capítulo apresenta os principais conceitos necessários para o entendimento deste trabalho. É aprsentado também um pequeno comparativo de ferramentas de etiquetamento, e a ferramenta utilizada neste trabalho, o CoGrOO. 2.1 Extração da Informação Com o grande volume existente de dados produzidos em forma de textos eletrônicos, atualmente, surge-se a necessidade de técnicas para compreender estes textos. Uma dessas técnicas é a Extração de Informação(EI), e para extrair essas informações faz-se uso de um sistema de EI. Segundo (COWIE; LEHNERT, 1996), sistemas de Recpuperação de Informação podem ser vistos como colheitadeiras que devolvem material útil de um vasto campo de materiais brutos. Com grandes quantidades de informações potencialmente úteis em mãos, um sistema de EI pode, então, transformar o material bruto refinando e reduzindo à idéia do texto original. Para (RILOFF; JONES, 1999) propósito de sistemas de extração de informações é extrair informações de um domínio específico a partir de textos em linguagem natural. EI pode ser visto como uma forma limitada de "compreensão completa de texto". Nenhum esforço é feito para entender um documento totalmente a mão. Ao invés disso, são definidas a priori tipos de informações semânticas a serem extraídas de um documento. EI representa documentos como conjuntos de entidades e estruturas que é outra forma de formalmente descrever os relacionamentos entre entidades(FELDMAN; SANGER, 2007). Segundo (ZAMBENEDETTI, 2002) na maioria dos sistemas de EI, o usuário define templates de extração, ou seja, modelos estruturados, como campos de uma base de dados, a serem preenchidos a partir do texto original pelo processo de extração. A figura 1 ilustra o processo de extração de informação de um texto em língua natural retirado de um jornal, transformado em campos estruturados. Tal estrutura permite que, mais adiante, o processamento da informação possa ser feito por outras aplicações. O processo de extração de informações tem duas partes principais. Primeiro, o sistema extrai fatos individuais do texto de um documento através de uma análise local do texto. Segundo, ele integra esses fatos, produzindo fatos maiores ou novos fatos, por inferência. Como passo final, depois de os fatos estarem integrados, os fatos pertinentes são traduzidos para o formato de saída requerido.(ZAMBENEDETTI, 2002) Os próximos itens mostram as etapas de um sistema de extração de informações, de acordo com(ZAMBENEDETTI, 2002), como visto na figura 2. Para ajudar na Capítulo 2. Fundamentação Teórica Figura 1 – Template/Estrutura de um ções(ZAMBENEDETTI, 2002) 11 sistema de extração de informa- explicação das etapas será utilizado como base o texto a seguir também retirado de (ZAMBENEDETTI, 2002): Carlos Rodrigues aposentou-se como vice-presidente executivo de uma famosa fábrica de cachorro-quente, a Dogs & Dogs SA. Ele irá ser sucedido por Antonio Farias. • Análise Léxica: o texto é, primeiramente, dividido em orações e em tokens. Cada token é procurado no dicionário para determinar suas possíveis características. No exemplo apresentado anteriormente, Carlos e Antônio seriam rotulados como primeiros nomes, e SA seria rotulado como um termo que é acrescentado ao nome de uma empresa. • Reconhecimento de Nomes(Termos): esta fase do processo identifica os vários tipos de nomes próprios e outras formas especiais, tais como datas e quantias em moeda. Como os nomes aparecem frequentemente em muitos tipos de textos, identificá-los e classificá-los simplifica os processos futuros. Os nomes são identificados por um conjunto de padrões (expressões regulares) que são declarados como partes da fala, características sintáticas e de ortografia. Nomes pessoais, por exemplo, podem ser identificados pela precedência de um título(Sr.), como: Sr. Henrique Dias. Capítulo 2. Fundamentação Teórica 12 Figura 2 – Estrutura de um sistema de extração de informações.(ZAMBENEDETTI, 2002) Nomes de empresas podem, normalmente, ser identificados pelo seu token final(SA), como: Dogs & Dogs SA. No parágrafo de exemplo, três nomes seriam identificados: [tipo de nome: pessoa Carlos Rodrigues] aposentou-se como vice-presidente executivo de uma famosa fábrica de cachorro-quente, a [tipo de nome: empresa Dogs & Dogs SA]. Ele irá ser sucedido por [tipo de nome: pessoa Antônio Farias]. • Estrutura Sintática: a identificação de alguns aspectos da estrutura sintática irá prover uma simplificação nas fases seguintes. Em geral, esta fase consiste-se da construção de grupos de verbos e substantivos. O primeiro conjunto de rótulos possui os grupos e frases de substantivos (np). Isto inclui, no exemplo abaixo, os três nomes, o pronome e dois grupos de substantivos maiores. Após segue um conjunto de rótulos para grupos de verbos (vg). Depois da aplicação destes padrões, o texto é rotulado da seguinte maneira: Capítulo 2. Fundamentação Teórica 13 [entidade np: e1 Carlos Rodrigues] [vg aposentou-se] como [entidade np: e2 vice-presidente executivo] de [entidade np: e3 uma famosa fábrica de cachorro-quente], a [entidade np: e4 Dogs & Dogs SA]. [entidade np: e5 Ele] [vg irá ser sucedido] por [entidade np: e6 Antônio Farias]. Os grupos de padrões fortalecem a estrutura das frases usando modificadores. Estas expressões não obedecem aos padrões normais. Há expressões que modificam os substantivos e outras não, pois têm o seu próprio significado. Tabela 1 – Entidades da estrutura sintática Entidade Entidade Entidade Entidade Entidade e1 e2 e3 e5 e6 Tipo:nome de pessoa: Carlos Rodrigues Tipo:valor da posição: Vice-Presidente Executivo empresa: e3 Tipo:nome do fabricante: Dogs & Dogs SA Tipo:pessoa Tipo:nome de pessoa: Antônio Farias Fonte: (ZAMBENEDETTI, 2002) A tabela 1 mostra as entidades obtidas através da análise sintática. • Cenário de Combinação de Padrões: a função destes padrões é extrair os eventos ou relacionamentos relevantes ao cenário. Para o exemplo da sucessão executiva haverá dois padrões: pessoa que se aposenta em uma posição e pessoa é sucedida por outra pessoa, onde pessoa e posição são elementos padrão que combinam NPs com o tipo associado. Se aposenta e é sucedida são elementos padrão que combinam grupos de verbos ativo e passivo, respectivamente. O resultado é um texto rotulado com duas cláusulas, cada uma apontando para estruturas de evento. Estas estruturas de evento apontam para as entidades previamente criadas: [cláusula de evento: e7 Carlos Rodrigues aposentou-se como vice-presidente executivo de uma famosa fábrica de cachorro-quente, a Dogs & Dogs SA].[cláusula de evento: e8 Ele irá ser sucedido por Antônio Farias] • Análise de Co-referência: a análise de co-referência tem a tarefa de resolver referências à anáforas, que é a repetição de uma palavra no princípio de diferentes frases ou de membros da mesma frase, provenientes de pronomes e substantivos. No texto da sucessão, o único exemplo é o pronome ele (entidade e5). A análise de co-referência irá procurar pela primeira entidade do tipo pessoa que aparecer antes de e5, e irá encontrar a entidade e1. Então, conseqüentemente, ao invés de referenciar a entidade e5 será referenciada a entidade e1. Capítulo 2. Fundamentação Teórica 14 • Inferência e União de Eventos: em muitas situações, a informação parcial sobre um evento pode ser estendida para várias sentenças. Esta informação precisa ser combinada antes que um template/estrutura possa ser gerado. Em outros casos, uma informação pode estar implícita, e é necessário torná-la explícita através do processo de inferência. No domínio da sucessão executiva, é necessário determinar o quê o predicado sucessão implica, caso o desejo seja produzir templates que especifiquem quais indivíduos perderam ou adquiriram posições particulares. Por exemplo, se há o seguinte: Carlos era o presidente. Ele foi sucedido por Antônio. É deduzido que Antônio se tornará o presidente. Reciprocamente, se Carlos será o presidente. Ele sucedeu Antônio. É deduzido que Antônio era o presidente. Tais deduções podem ser implementadas por um sistema de regras. Tabela 2 – Entidades e eventos Entidade Entidade Entidade Entidade e1 e2 e3 e6 Evento e7 Evento e8 Evento e9 Tipo:nome de pessoa: Carlos Rodrigues Tipo:valor da posição: Vice-Presidente Executivo empresa: e3 Tipo:nome do fabricante: Dogs & Dogs SA Tipo:nome de pessoa: Antônio Farias Tipo: pessoa deixando o trabalho: posição e1: e2 Tipo: sucede pessoa 1: e6 pessoa 2: e1 Tipo: pessoa começando-trabalho: posição e6: e2 Fonte: (ZAMBENEDETTI, 2002) A tabela 2 mostra as entidades e eventos finais extraídos do texto inicial. 2.1.1 Processamento de Linguagem Natural Processamento de Linguagem Natural (PLN) é uma área de Ciência da Computação que estuda o desenvolvimento de programas de computador que analisam, reconhecem e/ou geram textos em linguagens humanas, ou linguagens naturais. Desde o surgimento das técnicas de PLN, muitos avanços foram obtidos, mas a compreensão plena de linguagem natural por métodos computacionais está ainda longe de ser resolvida(VIEIRA; LOPES, 2010). O PLN é uma subárea da Inteligência Artificial (IA) e visa a projeção e a Capítulo 2. Fundamentação Teórica 15 implementação de sistemas computacionais para simulação do conhecimento linguístico humano nesses sistemas (Menuzzi and Othero, 2005). As pesquisas nessa área ao mesmo tempo em que se beneficiam com os estudos provenientes da Linguística têm propiciado não só desenvolvimento de tecnologias ou recursos aplicáveis a várias atividades, mas também o próprio desenvolvimento da Linguística e da Ciência da Computação, duas das muitas disciplinas envolvidas no PLN (Di Felippo and Dias-da-Silva, 2009). Ainda de acordo com (VIEIRA; LOPES, 2010), o PLN não é uma tarefa trivial devido à rica ambiguidade da linguagem natural. Essa ambiguidade torna o PLN diferente do processamento das linguagens de programação de computador, as quais são desenvolvidas para que a ambiguidade seja evitada. Segundo(VIEIRA; LOPES, 2010) e(GONZALEZ; LIMA, 2003) de um ponto de vista linguístico, o foco das pesquisas em PLN pode estar em um de cinco níveis de análise: (a)fonético ou fonológico: do relacionamento das palavras com os sons que produzem; (b)morfológico: da construção das palavras a partir unidades de significado primitivas e de como classificá-las em categorias morfológicas; (c)sintático: do relacionamento das palavras entre si, cada uma assumindo seu papel estrutural nas frases, e de como as frases podem ser partes de outras, constituindo sentenças; (d)semântico: do relacionamento das palavras com seus significados e de como eles são combinados para formar os significados das sentenças (e)pragmático: do uso de frases e sentenças em diferentes contextos, afetando o significado. Todos esses níveis possuem suas características próprias e dificuldades associadas, mas cada aplicação de PLN pode ter uma preocupação mais voltada para um subgrupo desses níveis. Pode-se destacar a relevância das atividades de reconhecimento de entidades nomeadas, identifcação de termos, extração de informação, entre outras. Todas as atividades complexas podem combinar análise morfossintática e semântica. De um ponto de visto prático, muitas aplicações de PLN escolhem se dedicar a apenas alguns níveis para reduzir a complexidade de tratamento.(VIEIRA; LOPES, 2010) Como pode ser acompanhando na figura 3, a estrutura sintática de uma sentença é obtida através do processamento morfosintático, sendo que a representação desta estrutura é regidas por leis gramaticais definidas em uma gramática. Outras informações necessárias a esta etapa, como as categorias morfológicas das palavras, são encontradas em uma análise léxica. De acordo com (GONZALEZ; LIMA, 2003) o mapeamento da estrutura sintática Capítulo 2. Fundamentação Teórica 16 Figura 3 – Transformações da sentença na estrutura sintática e na forma lógica(GONZALEZ; LIMA, 2003) da sentença em sua forma lógica é realizado pelo processamento semântico e, nele, o léxico também exerce papel fundamental, com informações sobre o significado dos itens lexicais que fornecem informações de contexto linguistico. 2.2 Etiquetador De acordo com (SILVA; MARTINS, 2008) para realizar a etiquetagem de um texto é necessária a definição de um conjunto finito de etiquetas, também chamadas tags, e essas etiquetas devem ter um significado linguístico associado (por exemplo, uma etiqueta de verbo ou substantivo). Geralmente o significado dessa etiqueta refere-se à categoria morfológica e/ou sintática de uma determinada palavra dentro de uma língua e um determinado contexto. O processo de etiquetagem consiste em realizar a associação das palavras que ocorrem em um dado texto à uma determinada etiqueta de um conjunto finito de etiquetas. Essa associação é feita de acordo com o algoritmo do etiquetador utilizado. Segundo(DOMINGUES, 2011), um etiquetador automático (ou tagger) é uma ferramenta que utiliza um conjunto de técnicas e métodos, em diferentes abordagens para automatizar a tarefa de etiquetagem. Basicamente, pode-se dizer que um etiquetador é uma ferramenta de etiquetamento automático, seja ele morfológico ou morfossintático. Um problema de etiquetamento a ser resolvido é que muitas palavras possuem mais de um significado e sentido. Para estas palavras, dadas fora de contexto, existe ambiguidade em relação a como elas devem ser interpretadas. A tarefa de desambiguar é determinar qual dos sentidos de uma palavra ambígua é invocado em um uso particular Capítulo 2. Fundamentação Teórica 17 dela. Isto é feito observando-se o contexto desta palavra(KEPLER, 2005). Um dos grandes desafios na construção de um etiquetador automático é lidar com o problema da ambiguidade no etiquetamento de uma palavra ou sentença como, por exemplo, na palavra para. Ex.1: João vai para São Paulo. Ex.2: João para no Rio de Janeiro para almoçar. No Ex.1 a etiqueta da palavra para deve ser de preposição. Já no exemplo 2, na primeira ocorrência da palavra para, deve ser de verbo de acordo com o último Acordo Ortográfico da Língua Portuguesa. Segundo(SIMõES; ALMEIDA, 2002), o etiquetamento tenta determinar em qual das categorias sintáticas é mais provável o uso de uma palavra particular em uma determinada sentença, como no exemplo acima em que há ambiguidade. Em geral essas ferramentas de etiquetamento utilizam um dicionário base e um conjunto de regras para a formação de novas palavras. A construção de um etiquetador envolve a escolha de um modelo teórico de etiquetagem e a escolha do método usado pelos algoritmos para alimentar o modelo (KEPLER, 2005). 2.2.1 Modelos Os modelos usados em etiquetadores podem geralmente ser classificados em quarto grupos: Estatísticos - Os modelos estatísticos utilizam teoria probabilística com o objetivo de identificar padrões de uso de linguagem, por exemplo, se a palavra para é etiquetada muitas vezes como verbo quando esta é antecedida por um sujeito, então há uma grande probabilidade dela ser etiquetada novamente como verbo se precedida por um sujeito. Regras - As regras gramaticais são definidas manualmente, como por exemplo, a regra a(s)/o(S) são artigos definidos. Então o algoritmo de etiquetamento ao encontrar a(s) /o(s) deverá etiquetá-lo como um artigo. Uma abordagem utilizada pode ser regras de transformação, em que o etiquetador analisa os erros de etiquetagem e induz regras que os transformem em acertos. Neurais - Os etiquetadores baseados em redes neurais utilizam técnicas de redes neurais para classificar as palavras de acordo com sua classe gramatical. Híbridos - Apresentam uma mistura dos modelos acima. Por exemplo, um modelo que utilize regras, como a do artigo visto acima e probabilidade para derivar uma nova regra a partir desta. Capítulo 2. Fundamentação Teórica 18 2.2.2 Tipos A seguir serão apresentados os tipos de etiquetadores existentes. 2.2.2.1 Etiquetador morfológico Um analisador morfológico é capaz de identificar palavras ou expressões isoladas em uma sentença com o auxílio de delimitadores que variam conforme a ferramenta (por exemplo, sinais de tabulação e espaços em branco) e classifica-las em categorias gramaticais(DOMINGUES, 2011). O etiquetador morfológico realiza uma análise morfológica, dado um texto ou sentença como entrada, isso é, identifica as características morfológicas (gênero, número, classe gramatical). Exemplo: João jogou a bola. As etiquetas morfológicas seriam: João=Substantivo Próprio, masculino, singular jogou=Verbo, terceira pessoa do singular a=Artigo, feminino, singular bola=Substantivo, feminino, singular. 2.2.2.2 Etiquetador morfossintático A etiquetagem morfossintática é uma tarefa de importância crescente para muitas aplicações de PLN, tais como análise gramatical, anotação de corpus, extração e recuperação de informação, simplificação de textos, geração automática de resumos e outras aplicações que precisem extrair a categoria gramatical das palavras(SILVA; MARTINS, 2008). Segundo(KEPLER, 2005), a análise morfossintática consiste em classificar gramaticalmente cada palavra de uma frase dentro do seu contexto. A análise morfossintática mescla características morfológicas e sintáticas das palavras e sentenças, identificando as características morfológicas assim como em uma análise puramente morfológica, mas também tenta encontrar as funções de cada palavra em determinado contexto linguístico. A sintaxe é a parte da gramática que estuda como esses elementos se combinam para formarem as sentenças. O estudo da estrutura (forma) da sentença recebe o nome tradicional de análise sintática. Exemplo: João jogou a bola. As etiquetas morfossintáticas seriam: Capítulo 2. Fundamentação Teórica 19 João=Substantivo Próprio, masculino, singular, sujeito jogou=Verbo, terceira pessoa do singular, predicado verbal a=Artigo, feminino, singular bola =Substantivo a bola=objeto direto nominal. O etiquetamento é de fundamental importância na extração dos sintagmas nominais, pois as etiquetas morfológicas são utilizadas no processo. E também, para a própria extração de sintagmas é necessário realizar um processo de etiquetamento(sintagmas nominais, verbais, etc). 2.3 Extração das Frases Nominais 2.3.1 Sintagmas As sequências gramaticais de uma língua são chamadas de sentenças. A combinação de palavras para formarem as sentenças não é aleatória; é necessário obedecer a determinados princípios da língua.(SANTOS, 2005). Princípios que podem ser vistos como regras gramaticais que dizem como a língua é estruturada. Segundo PERINI (2003), as sentenças são formadas por constituintes, muitas vezes uns dentro dos outros. Constituintes que podem ser vistos como certos grupos de unidades que fazem parte de seqüências maiores, mas que mostram certo grau de coesão entre eles. Ou seja, as sentenças são formadas por segmentos(ou constituintes) que indicam uma relação de dependência mantendo entre si relações de dependência, organizando-se em torno de um núcleo. Segmentos que são chamados também de sintagmas. Cada sintagma possui um núcleo, que indica de que tipo de sintagma se trata: se o núcleo for um verbo, o sintagma será verbal, se o núcleo for um nome(substantivo) o sintagma será nominal. Os alunos entregaram os livros. Os alunos - sintagma nominal, cujo núcléo é um substantivo(alunos). entregaram - sintagma verbal, cujo núcleo é o próprio sintagma. os livros - sintagma nominal, cujo núcleo é também um substantivo(livros). Sintagma Nominal: é formado por um nome (núcleo) e seus determinantes que podem ser adjuntos adnominais ou orações adjetivas. Na Oração pode assumir a função de sujeito ou de complemento verbal. Sintagma Verbal: é formado pelo verbo (núcleo do sintagma) seguido ou não do sintagma preposicional (objeto indireto), do sintagma nominal (objeto direto), do sintagma Capítulo 2. Fundamentação Teórica 20 adverbial (adjunto adverbial ou do sintagma adjetivo (predicativo). Sintagma Adjetival: na frase pode assumir a função de adjunto adnominal, predicativo ou complemento nominal, e tem como núcleo um adjetivo. Sintagma Adverbial: na frase assume a função de adjunto adverbial, e tem como núcleo um advérbio. Sintagma Preposicional: ocorre mais comumente nas funções de complemento nominal(quando complementa o sentido de um substantivo, de um adjetivo ou de um advérbio) ou de objeto indireto, adjunto adnominal(quando modifica um substantivo, assumindo papel de um adjetivo), mas pode ocorrer em qualquer outra função desde que seja iniciada por uma locução prepositiva. Tem como núcleo uma preposição. 2.3.1.1 Sintagmas Nominais O Sintagma Nominal(SN) apresenta um núcleo, que pode ser um nome próprio ou comum; pode ser ainda um pronome substantivo, pronome pessoal, pronome demonstrativo, pronome indefinido, pronome interrogativo, pronome possessivo, pronome relativo, etc. Além do núcleo, o SN pode apresentar determinante(s) e/ou modificador(es), sendo os determinantes os que antecedem o núcleo e os modificadores os antepostos ou pospostos(MIORELLI, 2001). Os determinantes antecedem o núcleo do sintagma nominal, e determinam/especificam o núcleo. Esses determinantes podem ser artigo, pronome, numeral, etc. Exemplo abaixo: As formigas são rápidas. Na sentença acima o determinante As está especificando/determinando o substantivo formiga, que é o núcleo do sintagma nominal as formigas, dizendo que não se trata de qualquer formiga. Os modificadores mudam o sentindo original da palavra a qual estão fazendo referência. Em geral, são advérbios ou adjetivos. Maria tem uma bolsa amarela. Na sentença acima, amarela é um adjetivo que se refere ao núcleo bolsa do sintagma nominal bolsa amarela. Este adjetivo modifica o substantivo bolsa. Segundo(PERINI, 1994) o SN possui uma estrutura bastante complexa, incluindo vários termos de comportamento sintático diverso, o que significa que é possível distinguir dentro do SN diversas funções sintáticas.(PERINI, 1994) acredita que os constituintes, para compor um SN, possuam posições rígidas. Ele estabelece o conceito de SN máximo, formado pela seqüência mais longa possível de termos, tais que todos tenham comportamento sintático claramente diferente. Este autor divide o SN máximo em duas estruturas: uma estrutura que está à esquerda e outra à direita, incluindo o núcleo do sintagma nominal. Capítulo 2. Fundamentação Teórica 21 Existem diferentes abordagens na literatura sobre o sintagma nominal. Para (LIBERATO, 1997) os SNs possuem uma função referencial, isto é, se referem a um objeto do mundo exterior como, por exemplo, uma entidade, identificada através de uma palavra ou expressão. Autores como (PERINI, 1995) definem SN como uma classe gramatical com comportamento sintático de sujeito, de objeto direto e, se precedido de preposição, de adjunto adnominal ou de objeto indireto. Os sintagmas nominais representam o foco desse trabalho, pois é a partir deles, que será feita a extração de entidades semânticas. 2.3.2 Text Chunking De acordo com (ATTARDI; DELL’ORLETTA, 2008), a técnica de text chunking pode ser vista como uma tarefa básica de Partial Parsing, que é uma técnica para recuperar informações sintáticas de forma eficiente de um texto, contornando as dificuldades de um parsing completo. Esta técnica recebe como entrada a saída do analisador morfológico, isso é, as etiquetas morfológicas decorrentes da etapa anterior de um etiquetador morfossintático. A técnica de partial parsing é utilizada para evitar os problemas de um parsing completo(full parsing), como complexidade de tempo alta e possuir uma baixa acurácia. A ambiguidade da língua natural dificulta/impossibilita de parsing completo, e além disso esta técnica pode prover muita mais informação do que a necessária para muitas tarefas, como as de PLN por exemplo. O text chunking divide um texto em grupos de palavras sintaticamente correlacionadas, também chamadoschunks, como frases nominais ou frases verbais. Um chunk é uma unidade textual de tokens de palavras adjacentes; chunks descontínuos não são permitidos(FEDERICI; MONTEMAGNI, 1996). Em outras palavras, o chunk é uma sequência de palavras em uma sentença que tenham relações entre si, como por exemplo, na sentença O menino jogou a bola, a frase O menino forma um chunk ou frase, nesse caso uma frase nominal. É possível ver que a definição de chunk vai de encontro com a definição de sintagmas vista anteriormente. O chunking no presente trabalho é utilizado através da ferramenta escolhida, o CoGrOO para extrair os sintagmas existentes. Na ferramenta o módulo responsável por essa tarefa é o Chunker. 2.4 Ferramentas Foram analisadas ferramentas de etiquetamento morfológico e morfossintático para o português do Brasil e com o objetivo de investigar as funcionalidades destas ferramentas para a seleção de uma destas para a extração de frases nominais. Capítulo 2. Fundamentação Teórica 22 Foram levadas em consideração as ferramentas da tabela 3. Todas são open source e são voltadas para a análise morfológica e sintática do português do Brasil. O Free Ling também faz análise para português de portugal, inclusive, a ferramenta para o português do Brasil é instável. Tabela 3 – Ferramentas de Etiquetamento Ferramenta CoGrOO Curupira Free Ling Tipo de analisador morfossintático sintático morfossintático Linguagem JAVA C++ Perl modelo Híbrido(estatística e regras) Regras Híbrido(estatística e regras) Em testes realizados com sentenças em português do Brasil nestas ferramentas foi constatdo que a ferramenta CoGrOO é a mais completa em relação a análise morfológica e morfossintática. E ainda, é possível utilizar os módulos dessa ferramenta separadamente, como por exemplo, o módulo extrator de sintagmas, conhecido como Chunker. Por isso foi a ferramenta escolhida para este trabalho. 2.4.1 CoGrOO O CoGrOO é um corretor gramatical de código de aberto em uso por milhares de usuários de uma popular suíte de escritório de código aberto. Ele é capaz de indentifcar erros como: colocação pronominal, concordância nominal, concordância sujeito-verbo, uso da crase, concordância nominal e verbal e outros erros comuns de escrita em Português do Brasil. Para tal, o CoGrOO realiza uma análise híbrida: inicialmente o texto é anotado usando técnicas estatísticas de Processamento de Linguagens Naturais e, em seguida, um sistema baseado em regras é responsável por identificar os possíveis erros gramaticais.(COLEN, 2013) 2.4.1.1 Módulos CoGrOO Os módulos a seguir são utilizados internamente pela ferramenta CoGrOO para identificar frases nominais. • Detector de limites de Sentença O Detector de limites de Sentença é responsável por identificar o limite de sentenças baseado em sinais de pontuação. Por exemplo, este detector é responsável por checar se um ponto indica o fim de uma sentença ou é parte de uma abreviação. Uma operação semelhante deve ser realizada para outros sinais de pontuação que dividem sentenças em português, tais como exclamação, interrogação, aspas, ponto e vírgula, etc. Ponto, ponto de exclamação, interrogação, ponto e vírgula são considerados separadores absolutos de sentenças. Os passos para se identificar uma sentença são: 1. Identificar sinais de pontuação no texto; Capítulo 2. Fundamentação Teórica 23 2. Buscar construções que utilizem sinais de pontuação, mas não definem sentenças, como um endereço de e-mail. 3. Extrair características, como limites de sinais de pontuação, ou seja, se a próxima palavra começa com a primeira letra em caixa alta. 4. Adicionar a característica de abreviação conhecida, se o sinal de pontuação é um ponto. 5. Considerar colchetes, hífens e aspas como separadores de sentenças somente se houver pelo menos um verbo finito. Entrada: O Sr. Mendonça chegou. Entrego-lhe os documentos. Saída: [O Sr. Mendonça chegou.] [Entrego-lhe os documentos.] • Tokenização Sentenças são compostas por partes de texto, chamados tokens. Os tokens, em geral, representam palavras, sinais de pontuação e outros símbolos. Geralmente, sequências de tokens são delimitadas por espaços. Entretanto há casos não triviais; por exemplo, se não há espaço entre os tokens, principalmente quando um sinal de pontuação segue uma palavra. O tokenizer do CoGrOO foi construído em cima do módulo Tokenizer do OpenNLP. Os passos são os seguintes: 1. Divide a sequencia em espaços em branco: Entrego-lhe os documentos? =>[Entregolhe] [os] [documentos?] 2. Para cada string, checa sua característica e compara com os dados de treinamento. Algumas características são: – O fim de uma string é um potencial token separador (não alfanumérico)? – O fim de uma string é um sinal de ponto ou é parte de uma abreviação conhecida? Entrada: O Sr. Mendonça chegou. | Entrego-lhe os documentos? Saída: [O] [sr.] [Mendonça] [chegou] [.] | [Entrego] [-lhe] [os] [documentos] [?] • Name Finder Substantivos próprios são tidos como um único token. Por exemplo, o nome Jane Doe é representado como o token Jane Doe. O CoGrOO utiliza o módulo Name Finder do OpenNLP. O processo de treinamento é feito enviando os substantivos próprios marcados com etiquetas para o módulo de sentenças: Eu penso que <START>Jane Doe<END> está vindo. Capítulo 2. Fundamentação Teórica 24 O módulo irá procurar pelas características da ocorrência, e então avaliar a importância de cada característica para determinar se deve ser considerada quando os novos textos são avaliados. Essas características são: – Tokens são classificados como substantivos próprios no dicionário – Palavras desconhecidas (que não estão no dicionário) – Ocorrência de preposição entre os substantivos Entrada: [As] [crianças] [se] [divertiram] [na] [Casa] [da][Boa] [Esperança] [.] Saída: [As] [crianças] [se] [divertiram] <START>[na] [Casa] [da][Boa] [Esperança]<END> [.] • Post Tokenizer O post tokenizer é responsável por rearranjar tokens. a) Irá pegar os nomes próprios do módulo Name Finder e mesclará seus tokens em somente um token. b) Irá expandir tokens em formas contraídas. Contrações são strings que, sintaticamente, correspondem a uma sequencia de palavras, porém são escritas como um único token. Na ortografia do português, a maioria dessas strings correspondem a uma contração de uma preposição, geralmente, de ou em com o artigo ou pronome que segue: da ( de + a), nele (em + ele), consigo (com + si),etc. Passos: 1. Substitui os tokens que são parte de um nome próprio pelo primeiro token dessa sequencia. 2. Substitui as formas contraídas pela forma equivalente expandida. Entrada: [A] [Maria] [Bonita] [chegou] [na] [casa] [da] [Boa] [da] [Esperança] [.] Saída: [A] [Maria] [chegou] [em] [a] [Casa] [.] • Part of speech tagger O módulo POS Tagger atribui etiquetas morfológicas e flexões. O CoGrOO usa o módulo POS Tagger do OpenNLP com algumas adições para as características já existentes: – Melhor suporte para nomes próprios agrupados. – Características associando letras em caixa alta com nomes próprios. – Características relacionadas ao dicionário, por exemplo, se uma palavra existe ou não. Capítulo 2. Fundamentação Teórica 25 Tabela 4 – Análise morfológica Token A Maria chegou em a casa . Lemma o Maria chegar em o casa . POS Tag Artigo, feminino, singular Nome próprio, feminino, singular Verbo finito, 3a pessoa do singular, pretérito perfeito , indicativo preposição Artigo, feminino, singular Nome próprio, feminino, singular Sinal de pontuação, abs Fonte: (COLEN, 2013) – Características para melhorar a performance de palavras hifenizadas. • Multi-word Expressions (Expressões com mais de uma palavra) O corpora utilizado para treinar o POS Tagger contem expressões com mais de uma palavra, o que consiste de um lexema composto de dois ou mais lexemas que juntos expressam funções e significados que não podem ser previstos de suas partes individuais. Exemplo: Do que - preposição Com base em - preposição Esses tokens foram extraídos do corpora utilizado para o treinamento. A atual implementação do CoGrOO não lida com esses tipos de expressões. • Chunker Text chunking consiste em dividir um texto em grupos sintaticamente correlacionados de palavras como grupos de substantivos e grupos de verbos, mas não especifica sua estrutura interna ou seu papel na sentença principal. O CoGrOO utiliza uma heurística para extrair as frases do corpus Bosque, e estas frases são utilizadas para o treinamento do modelo OpenNLP. Esta versão da ferramenta apresentou bons resultados para a extração de frases nominais simples. Os tipos de frases que o CoGrOO utiliza são: frase nominal(np), frase verbal(vp), frase preposicional(pp) e frase adverbial(advp). Este módulo recebe como entrada os tokens anotados com tags morfológicas. Exemplo de Saída: [NP A Maria] [VP chegou] em [NP a Casa] 26 3 Proposta Para obter informações de um texto é necessário saber não só a idéia que aquele texto descreve, mas é necessário saber a quem ou ao que se refere a informação. Esse que ou quem, em EI é representado por uma entidade. Assim, para realizar a extração da informação faz-se necessário extrair as entidades, que podem ser representadas por nomes próprios e outras formas especiais, tais como datas e quantias em moeda, à qual a informação se refere. Entidades referenciadas em um texto são frases nominais. Por exemplo na sentença: Sarney desiste de disputar a prévia do PMDB contra Requião. As entidades são: Entidade 1: Sarney Entidade 2: a prévia do PMDB contra Requião A ferramenta CoGrOO na versão 4.0.0 apresentou resultados relevantes na tarefa de identificação de frases nominais, principalmente para frases nominais simples, para o português do Brasil. Por isso esta ferramenta foi escolhida para a identificação de frases nominais para a referida língua. Com as frases nominais etiquetadas pela ferramenta constatou-se que a saída do CoGrOO não identifica algumas frases nominais complexas. Como exemplo, tem-se a saída da ferramenta CoGrOO para a mesma sentença anterior: [NP: Prop: Sarney ] [VP: desiste ] [PP: de ] [VP: disputar ] [NP: a prévia ] [PP: de ] [NP: o Prop: PMDB ] [PP: contra ] [NP: Prop: Requião ]. No CoGrOO, a etiqueta NP representa uma frase nominal, PP representa uma frase preposicional e VP uma frase verbal. A relação para esta sentença é desiste de disputar e as entidades são Sarney e a prévia do PMDB contra Requião. A ferramenta CoGrOO divide as frases em [NP: a prévia ] [PP: de ] [NP: o Prop: PMDB ] [PP: contra ] [NP: Prop: Requião ]. Caso fosse considerado apenas a primeira frase nominal com a etiqueta Prop, que indica nome próprio, a segunda entidade seria apenas PMDB. E o relacionamento seria Sarney desiste de disputar PMDB, o que deixaria este relacionamento incompleto, e até mesmo sem sentido. Foi observado em testes na ferramenta que a saída atual do CoGrOO não considera preposições como partes de sintagmas nominais, como por exemplo na sentença: A bolsa de Maria é amarela. Saída do CoGrOO: Capítulo 3. Proposta 27 [NP: A bolsa] [PP:de ] [NP:Maria] [VP: é] [NP:amarela]. O CoGrOO não considera A bolsa de Maria como um único sintagma nominal, visto que a identificação completa da frase nominal facilita a extração de relações. Dessa forma, o ideal seria que além de extrair o sintagma nominal A bolsa, a frase preposicional de Maria também fosse extraída, pois esta se refere à frase nominal A bolsa. Segundo (OTHERO, 2009), uma frase preposicional se antecedida de um substantivo ou frase nominal tem um papel de adjunto adnominal ou de complemento nominal. Enquanto o adjunto adnominal modifica o substantivo ou frase nominal, o complemento nominal completa o sentido da frase nominal, portanto o adjunto e o complemento também podem fazer parte do sintagma nominal. Na sentença Maria tem orgulho do filho, a frase preposicional do filho está completando o sentido do substantivo orgulho. E na sentença Ela se dizia carioca da gema, a frase preposicional da gema está modificando o substantivo carioca, acrescentando uma nova informação . Dessa forma, o presente trabalho propôs desenvolver um algoritmo para a extração de frases nominais complexas não cobertas pelo CoGrOO, em textos do português do Brasil, considerando uma abordagem sintática. Para isto foi desenvolvido um algoritmo que utiliza a ferramenta CoGrOO para extrair as frases nominais já identificadas por esta, e em seguida aplica regras gramaticais de formação de frases nominais para identificá-las. De posse dessas frases nominais máximas sugere-se que as entidades extraídas em cima das frases nominais tenham um sentido mais completo, como no exemplo anterior em que a entidade extraída deveria ser a prévia do PMDB contra Requião e não apenas PMDB. Regras de formação da frase nominal completa (FNC) baseado na saída do CoGrOO: (1)FNC -> NP PP NP (2)FNC -> FNC PP NP Foi constatado que a frase preposicional(PP) do CoGrOO representa na verdade uma preposição. Sendo assim, a frase preposicional, como definida na seção 2.3.1 é representada por PP+NP. Estas regras representam o padrão que deve ser buscado entre as frases extraídas pelo CoGrOO, NP+PP+NP, isso é, uma frase nominal que contém uma frase preposcional. É possível também que haja mais de uma frase preposicional dentro de uma frase nominal. No caso mais básico(1), a frase nominal completa é formada por uma frase nominal seguida de uma frase preposicional(preposição no CoGrOO) e outra frase nominal. E por(2) é possível perceber que o padrão descrito pode se repetir duas ou mais vezes. Capítulo 3. Proposta 28 3.1 Algoritmo Proposto O propósito do algoritmo apresentado a seguir é etiquetar as frases nominais que contenham frases preposicionais. O algoritmo, aqui sugerido, trabalha com a saída do CoGrOO, sem fazer nenhuma alteração em seu funcionamento interno, isso é, seus módulos permanecem inalterados. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Data: Lista de sentenças do documento com os chunks do CoGrOO Result: Lista de sentenças com os chunks modificados for cada sentença do while etiqueta chunk = NP do adicionaToken; if próximo chunk tem etiqueta = PP and chunk seguinte tem etiqueta = NP then adicionaToken; end else cria chunk modificado com a mesma etiqueta do CoGrOO; end end if ocorreu padrao then cria chunk modificado com a mesma etiqueta FNC; end else cria chunk modificado com a mesma etiqueta do CoGrOO; end end Algorithm 1: Algoritmo proposto(busca do padrão NP+PP+PP) Para cada sentença recebida, seus chunks(lista de chunks ) são verificados, caso o chunk possua etiqueta NP, então o padrão PP+NP(frase preposicional) é procurado na linha 4. Caso o padrão seja encontrado os tokens do chunk do CoGrOO são adicionados a um novo obejto chunk(linha 5). O laço da linha 2 continua até que seja encontrado um chunk que não tenha a etiqueta NP (ou ainda, na prática, até que a lista de chunks acabe). A linha 8 verifica se o padrão(PP+NP) ocorreu. Caso positivo, o chunk recebe a etiqueta FNC(frase nominal completa), caso contrário o chunk recebe a mesma etiqueta do CoGrOO. Voltando ao exemplo visto em 3 Sarney desiste de disputar a prévia do PMDB contra Requião. Com a aplicação do algoritmo o resultado fica: Capítulo 3. Proposta 29 [NP: Sarney] [VP: desiste] [PP: de] [VP: disputar] [FNC: a prévia de o PMDB contra Requião]. É possível perceber que o padrão NP+PP+NP(CoGrOO) se repete duas vezes na frase [FNC: a prévia de o PMDB contra Requião]. A primeira frase preposicional é de o PMDB e a segunda contra Requião. 30 4 Experimentos e Resultados Este capítulo tem o objetivo de apresentar os experimentos realizados para avaliar o algoritmo proposto e os resultados obtidos destes experimentos. Para avaliar a proposta em cima do algoritmo implementado foram realizados dois experimentos. Para classificar as frases nominais extraídas como erros ou acertos faz-se necesário fazer algumas considerações sobre a ferramenta CoGrOO, e consequentemente a saída do algoritmo. O módulo Post Tokenizer da ferramenta CoGrOO, como visto na seção 2.4.1.1, obtém os nomes próprios do módulo Name Finder e mescla seus tokens em somente um token. E ainda, expande tokens em formas contraídas. Por exemplo, os tokens São e Paulo viram São Paulo, e a preposição da é expandida em de + a. Dessa forma, então, ao encontrar por exemplo o chunk [FNC:A diária de o aluguel de um Prop: Uno Mille] e a entidade ou frase nominal A diária do aluguel de um Uno Mille é computado um acerto, sendo esta considerada como uma frase nominal aproximada. Precisão Precisão é a proporção dos documentos recuperados que são relevantes para uma dada consulta em relação ao total de documentos recuperados. Essa medida reflete a eficiência dos resultados do sistema, revelando a proporção das respostas corretas dentre todas as respostas resultantes do sistema. 4.1 CoGrOO x algoritmo proposto O primeiro experimento teve o objetivo de comparar a ferramenta CoGrOO com o algoritmo proposto. Para isso foram executados testes com 50 sentenças do corpus Bosque(BICK, 2009), que utillza o corpus do CETENFolha com vários tipos de etiquetas, inclusive etiquetas que identificam frases nominais. Para comparação com os resultados obtidos pelo CoGrOO e pelo algoritmo implementado foram utilizadas as etiquetas deste corpus que indicam frases nominais como auxílio para identificar as frases nominais e depois, se necessário, faz-se um ajuste manual. Estas frases nominais extraídas do corpus Bosque e ajustadas manualmente serão chamadas aqui de frase nominal de referência. Para cada sentença, primeiramente é analisado a quantidade de frases nominais existentes, e depois analisa-se a saída em relação ao CoGrOO. E depois em relação ao algoritmo implementado. Casos encontrados: Capítulo 4. Experimentos e Resultados 31 • Frase nominal extraída com etiqueta NP é igual ou aproximada à frase nominal de referência: Tanto para o CoGrOO quanto para o algoritmo proposto, um acerto é computado. • Frase nominal extraída com etiqueta NP não é igual nem aproximada à frase nominal de referência: Tanto para o CoGrOO quanto para o algoritmo proposto, um erro é computado. • Frase nominal extraída com etiqueta FNC é igual ou aproximada à frase nominal de referência: Um acerto é computado para o algoritmo proposto(que é o que possui a etiqueta FNC). E, é também computado uma melhora do algoritmo em relação ao CoGrOO, pois o acerto só foi possibilitado devido à regra proposta. • Frase nominal extraída com etiqueta FNC não é igual nem aproximada à frase nominal de referência: Um erro é computado para o algoritmo implementado. É verificado também se o CoGrOO identifica de forma correta. Se confirmado, uma piora é computada para o algoritmo, pois um erro que não existia foi introduzido. 4.1.1 Resultados Tabela 5 – Resultados do experimento 1 acertos erros melhora(em relação ao CoGrOO) piora(em relação ao CoGrOO) CoGrOO 83 77 0 0 Algoritmo Implementado 122 38 50 16 A tabela 5 mostra os resultados obtidos pelo algoritmo proposto e a ferramenta CoGrOO. Na primeira linha são mostradas as quantidades de acertos, na seguinte a quantidades de erros. Na terceira linha é mostrado a quantidade de acertos que foram obtidos devido ao algoritmo proposto, e na quarta linha é mostrado a quantidade de erros que foram introduzidos devido ao algoritmo. Foram avaliadas um total de 160 frases nominais, que foram identificadas com o auxilio do corpus Bosque(BICK, 2009). A precisão aqui é a razão de frases classificadas como correta e o total de frases avaliadas. A precisão é do CoGrOO é de 51,9%. A precisão do algoritmo implementado em cima do CoGrOO é de 76,3%. Na sentença A direção do novo semanal será assinada por Ewaldo Ruy, os chunks identificados pelo algoritmo proposto são [FNC:A direção de o novo semanal ] e [NP: Capítulo 4. Experimentos e Resultados 32 Prop: Ewaldo Ruy ]. Para o primeiro chunk, o algoritmo implementado identifica corretamente a frase nominal aproximada, enquanto o CoGrOO divide a sentença em [NP:A direção] [PP: de] [NP: o novo semanal ]. Dessa forma, para o algoritmo implementado foi computado um acerto e uma melhoria em relação ao CoGrOO, enquanto para o CoGrOO foi computado um erro. Saída do algoritmo implementado para a sentença Free shops dos aeroportos internacionais também vendem o equipamento: [FNC:Free shops de os aeroportos internacionais ][ADVP:também ][VP:vendem ][NP:o equipamento] Nesta sentença o algoritmo implementado identifica a frase nominal aproximada de maneira correta, enquanto o CoGrOO erra. Para a sentença Havelange aceitaria engolir o italiano Antonio Matarrese como o seu vice-executivo e, além disso, esqueceria os seus modos autoritários, coordenando a entidade de maneira colegiada, uma das frases nominais indentificada pelo algoritmo é : [FNC: Prop: Antonio Matarrese como o seu vice-executivo além disso isso ] A frase identificada acima com a etiqueta FNC não representa um sintagma nominal, pois não é possível identificar um núcleo e os tokens desta frase não estão sintaticamente correlacionados. Já para o CoGrOO, as seguintes frases ou chunks seriam identificados: [NP: Prop: Antonio Matarrese ] [NP: o seu vice executivo ] Como neste caso, pelo corpus Bosque e ajuste manual são identificadas duas frases nominais,Antonio Matarrese e o seu vice executivo. Então seriam computados dois erros para o algoritmo implementado e dois acertos para o CoGrOO. E ainda, uma piora seria computada para o algoritmo, pois etiquetou incorretamente o que o CoGrOO o fez corretamente. Na sentença Ciano Hopkins era genro de Mussolini, os chunks extraídos pelo algoritmo proposto são: [NP: Prop: Ciano ][NP: Prop: Hopkins ][VP:era ][FNC:genro de Prop: Mussolini ] Neste outro exemplo, a frase nominal, que se refere também a um nome próprio, reconhecida deveria ser Ciano Hopkins, entretanto o CoGrOO divide em duas frases nominais. Como o algoritmo proposto não cobre esse tipo erro, então um erro é computado tanto para o CoGrOO quanto para o algoritmo implementado. Essa melhora significativa se deve ao fato das frases preposicionais serem bastante presente em frases nominais em português do Brasil, mas novos erros também foram introduzidos devido a esta regra, pois muitas vezes a frase preposicional não se referencia Capítulo 4. Experimentos e Resultados 33 somente à frase nominal que o antecede, e sim a uma estrutura maior, como no caso Antonio Matarrese como o seu vice-executivo além isso isso, que causa uma frase nominal sem sentido. 4.2 Algoritmo proposto x Entidades extraídas manualmente O segundo experimento consistiu em comparar as frases nominais, que contém entidades, extraídas pelo algoritmo proposto com as entidades extraídas do corpus do CENTENFolha. Foram utilizadas 100 sentenças extraídas deste corpus. Suas entidades foram extraídas com o auxilio da ferramenta CoGrOO para identificação de nomes próprios, e foram ajustadas manualmente em (SOUZA, 2014). Cada sentença foi avaliada pelo algoritmo e sua saída foi comparada com as entidades identificadas por (SOUZA, 2014). Seguindo o mesmo critério do autor citado, foram consideradas para comparação as frases nominais que possuam algum token identificado como nome próprio através da tag PROP no CoGrOO, que indica nomes próprios. Em cada sentença são consideradas duas entidades. Se a frase nominal extraída é igual ou aproximada à entidade ajustada manualmente um acerto é computado para esta sentença, e é verificado se o uso do algoritmo ajudou a melhorar o resultado em relação ao CoGrOO (entidade extraída tem etiqueta FNC). . 4.2.1 Resultados Tabela 6 – Resultados do experimento 2 Total de setenças 100 Total de entidades avaliadas 200 acertos 119 erros 81 melhora(em relação ao CoGrOO) 50 Como dito anteriormente, foram avaliadas um total de 100 sentenças, cada uma contendo duas entidades etiquetadas. O resultado pode ser visto na tabela 6. Do total de 200 entidades avaliadas, 119 foram encontradas de forma completa, isso é, igual ou aproximada, pelo algoritmo proposto. Sendo que dentre esses 119 acertos, 50 acertos ocorreram devido ao algoritmo implementado em cima do CoGrOO(frase nominal com a etiqueta FNC). A precisão aqui é a razão entre a quantidade de frases nominais identificadas como entidades de forma correta e quantidade total de entidades avaliadas. Capítulo 4. Experimentos e Resultados 34 A precisão do algoritmo implementado na identificação de entidades é de 59,5%. [FNC:Dados sobre abuso sexual em bulimicas em o Prop: Brasil Áustria ][NP: Prop: Estados Unidos ]. Neste exemplo a primeira entidade deveria ser Dados sobre abuso sexual em bulímicas no Brasil, Áustria e Estados Unidos, mas na extração das frases nomimais esta foi dividida em duas. Desse modo, esta entidade foi classificada como fora da frase nominal. [FNC:a Prop: Receita Federal segundo o coordenador-geral de fiscalização de o órgão ] Já neste outro exemplo a entidade Receita Federal encontra-se dentro da frase nominal, mas esta frase nominal não representa uma entidade. Este é um exemplo também de erro introduzido pelo algoritmo, se fosse considerado apenas o CoGrOO o chunk seria [NP: a Prop: Receita Federal]. A entidade identificada manualmente é Harrison Pope da Escola de Medicina de Harvard, a frase nominal extraída com etiqueta Prop foi [FNC: Prop: Harrison Pope de a Prop: Escola de Medicina de Prop: Harvard ]. Esta frase nominal representa uma entidade, sendo da Escola de Medicina e de Harvard frases preposicionais dão um sentido mais completo à entidade. É um exemplo de melhoria feita pelo algoritmo implementado. Somente com o CoGrOO o resultado seria: [NP: Prop: Harrison Pope] [PP: de ] [NP: a Prop: Escola de Medicina ] [PP: de ] [NP: Prop: Harvard] Sugere-se para a extração automática de entidades que haja uma análise maior do papel do nome próprio na frase nominal(para o caso que a entidade está dentro da frase) e uma análise da vizinhança(para a caso em que a entidade está em mais de uma frase nominal), pois uma abordagem puramente sintática pode introduzir novos erros ao passo que soluciona outros. 35 5 Conclusões e Trabalhos Futuros A proposta deste trabalho foi melhorar a identificação de frases nominais para o português do Brasil como forma de melhorar a extração de entidades de relacionamentos semânticos. Tomando como base a ferramenta CoGrOO na versão 4.0.0 que apresentou bons resultados para a identificação de frases nominais simples. Entretanto, não identifica frases nominais complexas, como por exemplo a frase A casa de Maria que contém uma frase preposicional. Foi implementado um algoritmo para reconhecer as frases nominais de forma mais completa. Para a melhoria da identificação dessas frases foi sugerido juntar as frases etiquetadas ao encontrar o padrão NP+PP+NP(CoGrOO), isso é, frases nominais que tenham frases preposicionais como parte delas. Para avaliar o algoritmo proposto foram realizados dois experimentos, o primeiro consistiu de uma comparação do algoritmo com o CoGrOO. E o segundo, teve o objetivo de comparar as frases nominais extraídas pelo algoritmo implementado com as entidades de relações semânticas extraídas. Para ambos os experimentos foi utilizado o corpus do CENTENFolha. No primeiro experimento foi obtida uma melhora significativa na identificação das frases nominais do algoritmo implementado em relação ao CoGrOO, como foi visto na seção 4.1.1. Já no segundo experimento a identificação das entidades representas por frases nominais não obteve resultados muito expressivos. Como pode ser observado nos resultados, houve uma melhora na identificação de frases nominais utilizando a regra sugerida para implementar o algoritmo proposto. Mas erros também foram introduzidos devido à esta regra, o que sugere uma maior atenção na execução desta. (PERINI, 2000) diz que uma frase nominal muito longa seria considerada excessivamente longa e entulhada de informação, sendo que neste algoritmo não é feito qualquer controle sobre o tamanho da frase nem no aspecto sintático, nem no semântico. Como sugestão para trabalhos futuros, poderia ser feita uma investigação para descobrir se o fato da frase preposicional do padrão sugerido para identificação das frases nominais atuar como adjunto adnominal ou complemento nominal pode ajudar à descobrir se esta frase faz parte ou não da frase nominal anterior, evitando ou diminuindo a quantidade de erros introduzidos pelo algoritmo proposto. Uma outra questão que poderia ser investigada/melhorada em relação ao CoGrOO é o fato dele dividir em duas ou mais frases nominais, quando deveria haver apenas uma, como no exemplo anterior, em que são identificadas as frases Ciano e Hopkins quando a frase nominal identificada deveria ser Ciano Hopkins. Capítulo 5. Conclusões e Trabalhos Futuros 36 Para identificação de relações semânticas, uma abordagem puramente sintática pode não ser tão eficiente para a extração de entidades, uma possibilidade poderia ser uma combinação entre abordagem semântica e sintática para extrair estas entidades. Este trabalho contribui com a avaliação da ferramenta CoGrOO na extração de entidades de relações semânticas junto à adição de uma regra para se extrair estes sintagmas. E traz uma melhoria em relação à identificação de frases nominais para o português do Brasil com esta ferramenta, abrindo possibilidades para outros trabalhos como citados acima. 37 Referências APACHE. Apache Maven Project. 2013. Apacheȯrg. Disponível em: <http://maven.apache.org/>. Acessado em: 15 mar. 2014. Citado na página 39. ATTARDI, G.; DELL’ORLETTA, F. Chunking and Dependency Parsing. 2008. LREC Workshop on Partial Parsing:Between Chunking and Deep Parsing. Marrakech,Morocco. Citado na página 21. BICK, E. Corpus Bosque. 2009. Linguateca.pt. Disponível em: <http://www.linguateca.pt/floresta/corpus.html/>. Acessado em: 25 jul. 2014. Citado 2 vezes nas páginas 30 e 31. COLEN, W. API CoGrOO 4x. 2012. Ccslimeu̇spḃr. Disponível em: <http://ccsl.ime.usp.br/redmine/projects/24/wiki/>. Acessado em: 16 mar. 2014. Citado na página 39. COLEN, W. Aprimorando o Corretor gramatical CoGrOO. Dissertação de Mestrado. 2013. USP, São Paulo. Citado 2 vezes nas páginas 22 e 25. COLEN, W. CoGrOO Corretor Gramatical para o LibreOffice. 2014. Ccslimeu̇sp.br. Disponível em: <http://ccsl.ime.usp.br/cogroo/>. Acessado em: 16 mar. 2014. Citado 3 vezes nas páginas 2, 3 e 8. COWIE, J.; LEHNERT, W. Information extraction. Commun. ACM, ACM, New York, NY, USA, v. 39, n. 1, p. 80–91, jan. 1996. ISSN 0001-0782. Disponível em: <http://doi.acm.org/10.1145/234173.234209>. Citado na página 10. DOMINGUES, M. Abordagem para o desenvolvimento de um etiquetador de alta acurácia para o português do Brasil. Tese de Doutorado. 2011. Universidade Federal do Pará, Belém. Citado 3 vezes nas páginas 8, 16 e 18. FEDERICI, S.; MONTEMAGNI, S. A shallow parsing and text chunking: a view on underspecification in syntax. 1996. ILC-CNR Pisa, Italy. Citado na página 21. FELDMAN, R.; SANGER, J. The Text Mining Handbook. Cambridge University Press, New York: Cambridge University Press, 2007. Citado 2 vezes nas páginas 8 e 10. GONZALEZ, M.; LIMA, V. L. S. de. Recuperação de Informação e Processamento da Linguagem Natural. 2003. In: XXIII CONGRESSO DA SOCIEDADE BRASILEIRA DE COMPUTAÇÃO, 2003, Campinas, 2003. Anais do III Jornada de Mini-Cursos de Inteligência Artificial, v. 3, p.347-395. Citado 2 vezes nas páginas 15 e 16. KEPLER, F. Etiquetador morfossintático baseado em cadeias de Markov de tamanho variável. 2005. USP, São Paulo. Citado 2 vezes nas páginas 17 e 18. LIBERATO, Y. A estrutura do SN em português. Tese de Doutorado. 1997. UFMG, Minas Gerais. Citado na página 21. Referências 38 MIORELLI, S. T. Extração do Sintagma Nominal em Sentenças em Português. Dissertação de Mestrado. 2001. PUCRS, Porto Alegre. Citado na página 20. OTHERO, G. de Ávila. A Gramática da Frase Em Português. Porto Alegre, Rio Grande do Sul: ediPUCRS, 2009. Citado na página 27. PERINI, M. A. Sintaxe portuguesa - Metodologia e funções. São Paulo: Editora Ática, 1994. Citado na página 20. PERINI, M. A. Gramática descritiva do português. São Paulo: Editora Ática, 1995. Citado na página 21. PERINI, M. A. Para uma Nova Gramática do Português. 10. ed. São Paulo: Editora Ática, 2000. Citado na página 35. RILOFF, E.; JONES, R. Learning Dictionaries for Information Extraction by Multi-Level Bootstrapping. 1999. In: NATIONAL CONFERENCE ON ARTIFICIAL INTELIGENCE, AAAI, 16., 1999, Orlando. Citado na página 10. SANTOS, C. N. Aprendizado de Máquina na Identificação de Sintagmas Nominais: O caso do Português Brasileiro. 2005. Instituto Militar de Engenharia, Rio de Janeiro. Citado na página 19. SILVA, W.; MARTINS, L. E. PARADIGMA: Uma Ferramenta de Apoio à Elicitação e Modelagens de Requisitos Baseada em Processamento de Linguagem Natural. 2008. Unasp, São Paulo. Citado 2 vezes nas páginas 16 e 18. SIMõES, A.; ALMEIDA, J. JSPELL. PM - um módulo de análise morfológica para uso em processamento de linguagem natural. 2002. Universidade do Minho, Portugal. Citado na página 17. SOUZA, E. N. P. de. Classificação de Relações Semânticas Abertas Baseada em Similaridade de Estruturas Gramaticais na Língua Portuguesa. Dissertação de Mestrado. 2014. In: Departamento de Ciência da Computação, Instituto de Matemática, Universidade Federal da Bahiao. Citado na página 33. VIEIRA, R.; LOPES, L. Processamento de linguagem natural e o tratamento computacional de linguagens científicas. In: LINGUAGENS ESPECIALIZADAS EM CORPORA MODOS DE DIZER E INTERFACES DE PESQUISA. [S.l.]: EDIPUCRS, 2010. p. 183–201. Citado 2 vezes nas páginas 14 e 15. ZAMBENEDETTI, C. Extração de Informação sobre Bases de Dados Textuais. Dissertação de Mestrado. 2002. Universidade Federal do Rio Grande do Sul. Programa de Pós-Graduação em Computação, Porto Alegre. Citado 5 vezes nas páginas 10, 11, 12, 13 e 14. 39 APÊNDICE A – Configuração do ambiente A ferramenta para atender a proposta foi desenvolvida em Java no sistema operacional Windows 7 com o uso da IDE NetBeans. Para fazer uso do CoGrOO foi utilizado o Maven(APACHE, 2013), que é uma ferramenta de gerenciamento, construção e implantação de projetos. O primeiro passo foi criar um projeto maven no NetBeans e adicionar as dependências do CoGrOO no arquivo pom.xml do projeto criado, como segue na figura 4. Figura 4 – Dependência Maven para rodar a ferramenta CoGrOO Ao rodar a ferramenta as dependências necessárias para rodar o CoGrOO serão baixadas. Na imagem 5 são mostradas as bibliotecas que foram baixadas. Para realizar os passos seguintes pode ser utilizado o template Example.java que se encontra disponível em (COLEN, 2012). Para executar o CoGrOO é necessário criar uma variável do tipo Analyzer, que será responsável por fazer as funcionalidades delegadas aos módulos, tal como, detecção de sentenças, etiquetagem morfológica, etc. Antes de fazer a análise é necessário fazer as configurações necessárias, indica-se a língua e o local, e então diz pro Analyzer que tipo de análise deseja ser feita. Segue na figura 6 como foi utilizado na ferramenta em discussão. A variável cogroo utilizada tem a seguinte declaração: private Analyzer cogroo; APÊNDICE A. Configuração do ambiente 40 Figura 5 – Biblioteca para rodar a ferramenta CoGrOO Figura 6 – Configuração para rodar a ferramenta CoGrOO Na primeira linha da imagem 6 instancia-se o ComponentFactory passando a língua, pt(português) e o local, BR(Brasil). A partir desse componente, na segunda linha, cria-se a configuração necessária para a análise através do método createPipe(), que prepara para fazer a análise em todos os módulos citados anteriormente do CoGrOO, exceto o Detecção de erros gramaticais. Seria possível também fazer a análise em apenas um módulo, como por exemplo, no Detector de limites de sentenças. Para isso bastaria substituir cogroo = factory.createSentenceDetector(); pela terceira linha. Na figura 7, na primeira linha o Documento é inicializado, na segunda o mesmo recebe o texto de entrada, que pode ser um corpus. E por fim o documento é analisado com base nas configurações feitas anteriormente. Figura 7 – Análise do documento APÊNDICE A. Configuração do ambiente 41 O resultado desta análise estará no próprio documento. Como pode ser visto na figura 8 o objeto documento contém o próprio texto e a lista de sentenças obtidas deste texto. Cada sentença contém a lista de tokens e a lista de chunks(sintagmas) desta. E cada chunk contém uma lista de tokens que fazem parte dele e uma tag, indicando o tipo de chunk(nominal, verbal, etc). Sabendo disso, para exibir os chunks, basta obter os chunks de cada sentença, e exibir seus tokens baseados na etiqueta do chunks. Figura 8 – Objeto DocumentImpl