CLASSIFICADOR MORFOLÓGICO PARA O PORTUGUÊS BRASILEIRO Pedro Volpi Nacif Projeto de Graduação apresentado ao Curso de Engenharia de Computação e Informação da Escola Politécnica, Universidade Federal do Rio de Janeiro, como parte dos requisitos necessários à obtenção do título de Engenheiro. Orientador: Fernando Gil Vianna Resende Junior Rio de Janeiro Setembro de 2017
64
Embed
CLASSIFICADOR MORFOLÓGICO PARA O PORTUGUÊS …monografias.poli.ufrj.br/monografias/monopoli10024091.pdf · 4.4.17 treino e teste variante q 54 4.4.18 treino e teste variante r 55
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
CLASSIFICADOR MORFOLÓGICO PARA O PORTUGUÊS BRASILEIRO
Pedro Volpi Nacif
Projeto de Graduação apresentado ao Curso
de Engenharia de Computação e Informação
da Escola Politécnica, Universidade Federal
do Rio de Janeiro, como parte dos requisitos
necessários à obtenção do título de
Engenheiro.
Orientador: Fernando Gil Vianna Resende
Junior
Rio de Janeiro
Setembro de 2017
CLASSIFICADOR MORFOLÓGICO PARA O PORTUGUÊS BRASILEIRO
Pedro Volpi Nacif
PROJETO DE GRADUAÇÃO SUBMETIDO AO CORPO DOCENTE DO CURSO DE
ENGENHARIA DE COMPUTAÇÃO E INFORMAÇÃO DA ESCOLA POLITÉCNICA DA
UNIVERSIDADE FEDERAL DO RIO DE JANEIRO COMO PARTE DOS REQUISITOS
NECESSÁRIOS PARA A OBTENÇÃO DO GRAU DE ENGENHEIRO DE
COMPUTAÇÃO E INFORMAÇÃO.
Examinado por:
____________________________________________
Prof. Fernando Gil Vianna Resende Junior, Ph.D.
____________________________________________
Prof. Flávio Luis de Mello, D.Sc.
____________________________________________
Profa. Marta Lima de Queirós Mattoso, D.Sc.
RIO DE JANEIRO, RJ - BRASIL
SETEMBRO de 2017
iii
Nacif, Pedro Volpi CLASSIFICADOR MORFOLÓGICO PARA O
PORTUGUÊS BRASILEIRO/ Pedro Volpi Nacif. – Rio de Janeiro: UFRJ/ Escola Politécnica, 2017.
IX, 64 p.: il.; 29,7 cm.
Orientador: Fernando Gil Vianna Resende Junior
Projeto de Graduação – UFRJ/ Escola Politécnica/ Curso de Engenharia de Computação e Informação, 2017.
Referências Bibliográficas: p. 60-61.
1. Introdução 2. Fundamentos Teóricos 3. Proposta de Implementação 4. Experimentos e Resultados 5. Conclusão e Trabalhos Futuros.
I. Gil Vianna Resende Junior, Fernando II. Universidade Federal do Rio de Janeiro, Escola Politécnica, Curso de Engenharia de Computação e Informação. III. Título.
iv
AGRADECIMENTOS
Agradeço, primeiramente, aos meus pais, que sempre primaram pela minha educação.
Menção honrosa ao colega e amigo, Luiz Felipe Vecchietti, por toda paciência e
solicitude em me ajudar neste trabalho. Desejo-lhe toda sorte neste novo desafio. Espero que
nossos caminhos tornem a se cruzar.
Obrigado ao povo brasileiro, por custear meus estudos.
Respeitosamente, não posso deixar de agradecer ao meu orientador, o ilustríssimo
professor Fernando Gil, por todo o incentivo e pela a oportunidade de ser seu orientando.
Imprescindível à conclusão deste trabalho foi a presença de meus primos e meus
amigos em minha vida, a quem eu sou eternamente grato pelo companheirismo.
Mormente, gostaria de agradecer à minha namorada, Dra. Aline Papazis, pelo carinho,
apoio e inspiração para alcançar meus objetivos. Não tenho nada senão admiração pela sua
inteligência, encanto por sua beleza e fascínio por sua determinação implacável.
v
RESUMO
O presente trabalho propõe-se a estudar o desempenho de um classificador de Part-of-
Speech (Partes do Discurso) para o português brasileiro baseado no modelo do Perceptron
Ponderado, encontrado no toolkit NLTK (Natural Language Toolkit). O objetivo é determinar
a relevância das features utilizadas como variáveis na implementação do NLTK e avaliar a
influência de novas features. Para tanto, realizamos uma série de testes, tanto removendo
gradativamente as features quanto incrementando o conjunto de features utilizado e, em um
caso, modificando a definição de uma delas. A análise realizada mostra que não foi possível
obter um conjunto de features cujo desempenho do classificador fosse objetivamente melhor
que a implementação do NLTK. O melhor resultado obtido é de (95.1 ± 0.1)% para o escore
F1 da implementação padrão do NLTK e das configurações dos testes variantes B, C, D, P e
Q. Além disso, para a base de dados utilizada, as features “(i+2)-ésima palavra”, “(i-2)-ésima
palavra”, “sufixo da (i-1)-ésima palavra” e “sufixo da (i+1)-ésima palavra” não influem de
forma significativa no classificador, tendo um desempenho final dentro de um desvio padrão
do desempenho da implementação padrão do NLTK. Por outro lado, as features “(i+1)-ésima
palavra”, a “(i-1)-ésima tag” e o “bias”, para a mesma base, têm grande influência no
desempenho total, provocando as respectivas variações absolutas de (1.4 ± 0.2)%, (2.8 ±
0.4)%, (1.4 ± 0.4)% no escore F1 do teste anterior para o teste em que foram removidas.
vi
ABSTRACT
This paper proposes to study the performance of a Part-of-Speech classifier for
Brazilian Portuguese based on the Averaged Perceptron model, found in the NLTK (Natural
Language Toolkit). The objective is to determine the relevance of the features used as
variables in the NLTK implementation and to evaluate the influence of new features. To do
so, we perform a series of tests, both by gradually removing the features and by increasing the
set of features used and in one case by modifying the definition of one of them. The analysis
showed that it was not possible to obtain a set of features whose performance of the classifier
was objectively better than the implementation of NLTK. The best result obtained is (95.1 ±
0.1)% for the F1 score of the standard NLTK implementation and the configurations of the
variant tests B, C, D, P and Q. In addition, for the database used, the features "(i+2)-th word",
"(i-2)-th word", "suffix of (i-1)-th word" and "suffix of (i+1)-th word" do not significantly
influence the performance of the classifier, having a final performance within a standard
deviation of the standard NLTK implementation. On the other hand, the features "(i+1)-th
word", "(i-1)-th tag" and "bias", for the same database, have a great influence on the total
performance, causing the respective absolute variations of (1.4 ± 0.2)%, (2.8 ± 0.4)%,
(1.4 ± 0.4)% on the F1 score from the previous test to the test in which they were removed.
vii
LISTA DE ABREVIATURAS E SIGLAS
CHPTB Corpus Histórico do Português Tycho Brahe
NLTK Natural Language Toolkit
POS Part-of-Speech
PTBR Português Brasileiro
RSLP Removedor de Sufixos da Língua Portuguesa
viii
SUMÁRIO
1 INTRODUÇÃO ix
1.1 MOTIVAÇÃO 10
1.2 OBJETIVOS 10
1.3 DESCRIÇÃO 11
2 FUNDAMENTOS TEÓRICOS 12
2.1 INTRODUÇÃO 12
2.2 MODELO 12
2.2.1 FLUXOGRAMA GERAL 12
2.2.2 CONTEXTO 13
2.2.3 DICIONÁRIO DE TAGS 14
2.2.4 PERCEPTRON 14
2.2.5 FEATURES 16
2.3 MÉTRICAS 17
2.3.1 ACURÁCIA 18
2.3.2 PRECISÃO 18
2.3.3 RECORDAÇÃO 18
2.3.4 ESCORE F1 18
2.3.5 MATRIZ DE CONFUSÃO 18
3 PROPOSTA DE IMPLEMENTAÇÃO 20
4 EXPERIMENTOS E RESULTADOS 23
4.1 A BASE DE DADOS 23
4.2 RESUMO DOS TESTES REALIZADOS 25
4.3 DESEMPENHOS PARA DIFERENTES FRACIONAMENTOS TREINO/TESTE 26
4.4 TREINOS E TESTES 27
4.4.1 TREINO E TESTE VARIANTE A 28
4.4.2 TREINO E TESTE VARIANTE B 30
4.4.3 TREINO E TESTE VARIANTE C 32
4.4.4 TREINO E TESTE VARIANTE D 33
4.4.5 TREINO E TESTE VARIANTE E 35
ix
4.4.6 TREINO E TESTE VARIANTE F 36
4.4.7 TREINO E TESTE VARIANTE G 38
4.4.8 TREINO E TESTE VARIANTE H 39
4.4.9 TREINO E TESTE VARIANTE I 41
4.4.10 TREINO E TESTE VARIANTE J 42
4.4.11 TREINO E TESTE VARIANTE K 44
4.4.12 TREINO E TESTE VARIANTE L 46
4.4.13 TREINO E TESTE VARIANTE M 48
4.4.14 TREINO E TESTE VARIANTE N 50
4.4.15 TREINO E TESTE VARIANTE O 51
4.4.16 TREINO E TESTE VARIANTE P 52
4.4.17 TREINO E TESTE VARIANTE Q 54
4.4.18 TREINO E TESTE VARIANTE R 55
5 CONCLUSÃO E TRABALHOS FUTUROS 57
REFERÊNCIAS 60
10
1 INTRODUÇÃO
1.1 MOTIVAÇÃO
Muito trabalho tem sido feito na área de classificação de Partes do Discurso (POS) em
vários idiomas. Entretanto, a maioria das pesquisas ainda se concentra na língua inglesa. Os
modelos mais utilizados costumam combinar regras geradas manualmente com etapas de
aprendizado de máquina, mas nem todos são de código aberto.
Os principais classificadores morfológicos que existem para o PTBR são:
● Palavras – um classificador morfossintático baseado em regras; tem 99% de acurácia
para classificação morfológica, entretanto o código é fechado (BICK, 2000);
● AeliusHunPos – um classificador baseado em Modelos de Markov Escondidos e
conjuntos de regras criadas manualmente (ALENCAR, 2010), de código aberto e é
implementado usando o Natural Language Toolkit (NLTK). Tem acurácia de 96.35%,
usando como base de treino o corpus CHPTB. Já a base de teste são os primeiros 8
capítulos do romance Luzia-Homem, de Domingos Olímpio, que possui cerca de 18
mil tokens (ALENCAR, 2011);
● MXPOST – um classificador baseado em máxima entropia, de código aberto.
Treinado para português com a base macmorpho (TEIXEIRA; LIMA; OLIVEIRA;
QUARESMA, 2008) ele tem 96.30% de acurácia.
Ao passo que a classificação de POS envolve a classificação sintática assim como a
morfológica, o presente trabalho se propõe estudar apenas a questão da classificação
morfológica.
Assim sendo, propõe-se treinar para a língua portuguesa um classificador morfológico
com desempenho, minimamente, tão acurado quanto a implementação padrão do NLTK na
base macmorpho, de código aberto e sem dependência de conjunto de regras criadas
manualmente.
1.2 OBJETIVOS
11
O principal objetivo deste trabalho é desenvolver um classificador morfológico de
código aberto, sem a utilização de conjunto de regras, baseado na implementação do
Perceptron Ponderado do NLTK. Com isso, os seguintes objetivos são traçados:
● Treinar para o PTBR, utilizando o corpus macmorpho, o classificador morfológico do
NLTK baseado no Perceptron Ponderado e obter suas métricas de desempenho;
● Comparar o desempenho do mesmo para diferentes configurações de treino/teste da
base macmorpho e, com base no resultado, decidir uma configuração a ser utilizada
para os demais testes;
● Comparar a influência de diferentes features no desempenho do classificador,
excluindo gradativamente as que já vem com o toolkit e adicionando novas features,
no intuito de obter um desempenho melhor que a da implementação padrão;
● Interpretar os resultados obtidos pelo classificador através de sua matriz de confusão e
as métricas de precisão, recordação e escore F1.
1.3 DESCRIÇÃO
O restante desta monografia se organiza da seguinte forma: o capítulo 2 apresenta os
fundamentos teóricos do presente trabalho. O capítulo 3 esclarece no que o classificador
resultante deste trabalho difere da implementação padrão obtida do NLTK. O capítulo 4
explica detalhadamente os experimentos realizados e os resultados obtidos. O quinto e último
capítulo apresenta as conclusões obtidas e possíveis trabalhos futuros.
Ao final, nos apêndices é possível encontrar a relação entre as tags utilizadas no
corpus macmorpho e sua classe morfológica.
12
2 FUNDAMENTOS TEÓRICOS
2.1 INTRODUÇÃO
Parts-of-Speech (i.e. Partes do Discurso) são categorias de palavras ou, de forma mais
genérica, itens léxicos, que têm propriedades gramaticais similares. Palavras que são da
mesma parte do discurso normalmente se comportam de forma similar em termos de
sintaxe—elas têm papéis similares dentro da estrutura gramatical dos períodos—e às vezes
morfologia, o que significa que elas se submetem à inflexão por regras similares. As classes
consideradas pelos classificadores são as tags (i.e. etiquetas) de Parts-of-Speech.
2.2 MODELO
O modelo implementado pelo NLTK funciona como se segue.
2.2.1 FLUXOGRAMA GERAL
O funcionamento do classificador baseado no Perceptron Ponderado do NLTK
obedece o seguinte fluxograma:
FIGURA 1 – FLUXOGRAMA DE CLASSIFICAÇÃO DE UMA PALAVRA1
1 Em todo este trabalho refere-se como “palavra” os tokens do corpus macmorpho, que incluem caracteres não alfanuméricos como pontuação e símbolos de moedas.
13
Fonte: Elaborado pelo autor.
2.2.2 CONTEXTO
O contexto de uma palavra consiste de duas listas: a frase em que está inserida e as
tags das palavras precedentes. Esta última é inicializada como uma lista vazia na classificação
de uma frase e vai sendo preenchida à medida que o classificador vai retornando as tags, seja
pelos perceptrons, seja pelo dicionário. Ao criar a lista de palavras o programa chama uma
função “normalize()” que transforma todas as letras em minúsculas.
Além disso, os códigos “__START1__”, “__START2__”, “__END1__” e
“__END2__” são utilizados como um preenchimento para, por exemplo, caso uma feature
necessite de tags antes ou depois da primeira e da última palavras, respectivamente.
Por exemplo, ao processar a frase “Um exemplo.”, o contexto inicialmente será: