View
7
Download
0
Category
Preview:
Citation preview
MINISTÉRIO DA DEFESAEXÉRCITO BRASILEIRO
DEPARTAMENTO DE CIÊNCIA E TECNOLOGIAINSTITUTO MILITAR DE ENGENHARIA
CURSO DE GRADUAÇÃO EM ENGENHARIA DE COMPUTAÇÃO
1 Ten PEDRO IGOR DE ARAÚJO OLIVEIRABRUNO VIEIRA COSTA
LUCAS RICARTE ROGÉRIO TEIXEIRA
FERRAMENTA DE CLASSIFICAÇÃO DE QUESTÕES PARA AUXÍLIOAO APRENDIZADO
Rio de Janeiro2018
INSTITUTO MILITAR DE ENGENHARIA
1 Ten PEDRO IGOR DE ARAÚJO OLIVEIRABRUNO VIEIRA COSTA
LUCAS RICARTE ROGÉRIO TEIXEIRA
FERRAMENTA DE CLASSIFICAÇÃO DE QUESTÕES PARAAUXÍLIO AO APRENDIZADO
Projeto de Fim de Curso apresentado ao Curso de Graduaçãoem Engenharia de Computação do Instituto Militar de Enge-nharia, como requisito parcial para a obtenção do título deEngenheiro de Computação.
Orientador: Prof. Alex de Vasconcellos Garcia - D.Sc.
Rio de Janeiro2018
c2018
INSTITUTO MILITAR DE ENGENHARIAPraça General Tibúrcio, 80 - Praia VermelhaRio de Janeiro - RJ CEP 22290-270
Este exemplar é de propriedade do Instituto Militar de Engenharia, que poderáincluí-lo em base de dados, armazenar em computador, microfilmar ou adotar qual-quer forma de arquivamento.
É permitida a menção, reprodução parcial ou integral e a transmissão entrebibliotecas deste trabalho, sem modificação de seu texto, em qualquer meio que es-teja ou venha a ser fixado, para pesquisa acadêmica, comentários e citações, desdeque sem finalidade comercial e que seja feita a referência bibliográfica completa.
Os conceitos expressos neste trabalho são de responsabilidade do(s) autor(es) edo(s) orientador(es).
005 Oliveira, Pedro Igor de AraujoO48f Ferramenta de classificação de questões para au-
xílio ao aprendizado / Pedro Igor de Araújo Oliveira,Bruno Vieira Costa, Lucas Ricarte Rogério Teixeira,orientado por Alex de Vasconcellos Garcia - Rio deJaneiro: Instituto Militar de Engenharia, 2018.
62p.: il.
Projeto de Fim de Curso (graduação) - InstitutoMilitar de Engenharia, Rio de Janeiro, 2018.
1. Curso de Graduação em Engenharia de Com-putação - projeto de fim de curso. 1. Classificaçãode texto. 2. Processamento de linguagem natural.3. Ferramenta de auxílio ao aprendizado. 4. Apren-dizado de máquina. I. Garcia, Alex de Vasconcellos. II. Título. III. Instituto Militar de Engenharia.
1
AGRADECIMENTOS
Agradecemos a todas as pessoas que nos incentivaram, apoiaram e possibilita-
ram esta oportunidade de ampliar nossos horizontes.
Em especial ao Professor Orientador Dr. Alex Garcia.
3
“Not everything that can be counted counts; and not everything
that counts can be counted.”
ANÔNIMO
4
SUMÁRIO
LISTA DE ILUSTRAÇÕES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
LISTA DE TABELAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
LISTA DE SIGLAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.1 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4 Organização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2 FUNDAMENTAÇÃO TEÓRICA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.1 Bag of Words . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.1.1 Classificador Naive Bayes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1.2 Classificador SVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2 Word Embeddings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3 Redes Neurais Artificiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.3.1 Redes Neurais Convolucionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3.2 Redes Neurais Recorrentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3 OBTENÇÃO DAS BASES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.1 Web Scrapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2 Pré-Processamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3 API de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4 ARQUITETURA DA SOLUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.1 Fluxo de atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.2 Modelagem da Implementação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.3 Aspectos Práticos da Implementação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5 SELEÇÃO DO CONJUNTO DE DADOS E DOS MODELOS . . . . . . . . . . 34
5.1 Seleção do Conjunto de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.2 Seleção dos Modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5
6 MODELOS BASEADOS EM BAG OF WORDS . . . . . . . . . . . . . . . . . . . . . 37
6.1 Naive Bayes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.2 Support Vector Machines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
7 MODELOS BASEADOS EM WORD EMBEDDING . . . . . . . . . . . . . . . . . 40
7.1 Vetorização Aglutinada por Média . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
7.1.1 Rede Neural Simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
7.2 Vetorização Sequencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
7.2.1 Redes Convolucionais Separáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
7.2.2 RNN simples com células LSTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
7.2.3 Stacked RNN com células LSTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
8 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
9 REFERÊNCIAS BIBLIOGRÁFICAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
10 APÊNDICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
10.1 APÊNDICE 1: Lista de categorias de questões . . . . . . . . . . . . . . . . . . . . . . . . 54
10.2 APÊNDICE 2: Dicionário JSON para agrupamento de categorias . . . . . . . 58
10.3 APÊNDICE 3: Lista de stopwords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
6
LISTA DE ILUSTRAÇÕES
FIG.1.1 Fluxograma de trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
FIG.2.1 Etapas do processamento de linguagem natural . . . . . . . . . . . . . . . . . . . 18
FIG.2.2 Exemplo de representação bag of words . . . . . . . . . . . . . . . . . . . . . . . . . 19
FIG.2.3 Fórmulas do Teorema de Bayes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
FIG.2.4 Representação do modelo de SVM (fonte: Weinberger (2016)).
A figura mais à esquerda ilustra a iteração da reta vermelha se
transformando na azul para maximizar a distância até os pontos
suporte. Essa distância é ilustrada no gráfico mais à esquerda . . . . . 21
FIG.2.5 Visualização de word embedding (fonte: Google-Tensorflow (2018))
21
FIG.2.6 Neurônio artificial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
FIG.3.1 Sequência de operações para a aquisição de dados . . . . . . . . . . . . . . . . 25
FIG.4.1 Diagrama de atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
FIG.4.2 Diagrama de classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
FIG.4.3 Uso das CPUs no servidor durante um dos treinamentos . . . . . . . . . . . 33
FIG.5.1 Distribuição das categorias selecionadas . . . . . . . . . . . . . . . . . . . . . . . . . 35
FIG.5.2 Fluxograma para classificação de texto (fonte: Google-Developers
(2018)) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
FIG.6.1 Matriz de confusão do conjunto de testes normalizada para o
classificador Naive Bayes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
FIG.6.2 Matriz de confusão do conjunto de testes normalizada para o
classificador SVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
FIG.7.1 Rede Neural Simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
FIG.7.2 Curva da função de custo ao término de cada epoch de treina-
mento para 50 dimensões de word embedding no modelo rede
neural simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
FIG.7.3 Matriz de confusão normalizada do conjunto de testes com o uso
de 1000 dimensões de word embedding no modelo rede neural
simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
7
FIG.7.4 Diagrama sequencial das etapas realizadas na implementação
SepCNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
FIG.7.5 Esquema ilustrativo de convolução separável. Os filtros (em
amarelo) representam da esquerda para a direita o depthwise
e os pointwise. Neste exemplo, o cada palavra possui 5 dimen-
sões e cada enunciado 10 palavras. O número de filtros é 3. . . . . . . . 44
FIG.7.6 Matriz de confusão normalizada do modelo SepCNN para 50
dimensões de embedding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
FIG.7.7 Matriz de confusão normalizada do modelo RNN simples com
células LSTM e 50 dimensões de embedding no conjunto de
testes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
FIG.7.8 Diagrama esquemático da um LSTM (fonte: Olah (2015)) . . . . . . . . . . 46
FIG.7.9 Diagrama de uma topologia do tipo stacked RNN (fonte: Cour-
sera) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
FIG.7.10 Matriz de confusão normalizada do modelo Stacked RNN e 100
dimensões de embedding no conjunto de testes . . . . . . . . . . . . . . . . . . . 48
8
LISTA DE TABELAS
TAB.6.1 Métricas do modelo naive bayes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
TAB.6.2 Métricas do modelo SVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
TAB.7.1 Métricas da rede neural simples no conjunto de testes para os
distintos números de dimensões de word embedding analisados . . . . 41
TAB.8.1 Comparação entre os classificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
9
LISTA DE SIGLAS
API Application programming interface
AWS Amazon Web Services
CNN Convolutional Neural Network
CPU Central processing unit
EAD Ensino à distância
GPU Graphics Processing Unit
HTML Hypertext Markup Language
HTTP Hypertext Transfer Protocol
IA Inteligência Artificial
JSON JavaScript Object Notation
LSTM Long Short Term Memory
NB Naive Bayes
NN Neural Network
RNN Recurrent Neural Network
SepCNN Separable Depthwise Convolutional Neural Network
SVM Support Vector Machine
TF-IDF Term Frequency-Inverse Document Frequency
VM Virtual Machine
10
RESUMO
Ferramentas de auxílio ao aprendizado são usadas nas mais diversas etapas
da educação formal ou informal. Estas ferramentas costumam empregar diversas
tecnologias. Dentre elas, pode-se incluir a classificação de documentos, pois es-
sas plataformas são, em geral, grandes agregadoras de conteúdo de ensino. Para
uma melhor acessibilidade de todo esse conteúdo, é necessário que ele seja ca-
tegorizado, o que nem sempre é viável de ser realizado manualmente devido ao
grande volume e a necessidade de conhecimento técnico sobre os assuntos aborda-
dos. Nesse contexto, pode ser aplicada a Classificação Automática de Documentos,
conforme o objetivo do presente trabalho: implementar modelos consagrados de
classificação de texto, aplicando-os para a classificação de enunciados de questões
em avaliações de ensino segundo seus assuntos. A partir da exploração dessas téc-
nicas, desenvolveu-se um modelo híbrido de classificador especializado em enunci-
ados de questões.
11
ABSTRACT
Learning aid tools are used in the most diverse stages of formal or informal
education. These tools usually employ various technologies. Among them, one can
include the classification of documents, since these platforms are, in general, great
aggregators of teaching content. For a better accessibility of all this content, it
needs to be categorized, which is not always feasible to be done manually due to the
large volume and the need for technical knowledge on the issues addressed. In this
context, it’s interesting to apply the Automatic Document Classification which is the
objective of the present work: to implement established text classification models,
applying them to the classification of question statements in teaching assessments
according to their subjects. From the exploration of these techniques, a hybrid
classifier model specialized in question statements was developed.
12
1 INTRODUÇÃO
A resolução de questões é parte do processo de aprendizado em qualquer área
do conhecimento, pois ajuda na fixação do que foi estudado e faz com que o aluno
interaja e consiga avaliar o conhecimento sobre determinado assunto. Apesar do
elevado número de questões presentes na web, uma parcela significativa se encon-
tra dispersa, sem nenhum tipo de classificação, reduzindo seu valor de busca e sua
possibilidade de utilização pelos estudantes.
A inexistência de um método efetivo de busca e seleção de questões não classi-
ficadas num universo de dados tão extenso quanto a web representa uma barreira
no estudo e aprendizado do estudante importante, o que gera um estímulo para o
solução do problema.
1.1 MOTIVAÇÃO
A classificação de questões por assunto e dificuldade é de suma importância nas
mais variadas aplicações educacionais. Uma aplicação interessante desta técnica
trata-se das ferramentas adaptativas, nas quais o estudante pode executar baterias
de exercícios em série cujo conteúdo varia de acordo com os seus resultados, otimi-
zando o seu aprendizado. Outra aplicação da classificação de questões é direcionar
o estudo para um assunto específico que seja problemático para o estudante.
Nos processos seletivos, as questões são as principais fontes de mensuração
do conhecimento, e consistem, de modo geral, em textos e imagens justapostos,
segregados em enunciado e alternativas. A recorrência nesta forma de avaliação
permite a maior eficiência de métodos específicos de classificação quando compa-
rados a abordagens em textos genéricos.
1.2 OBJETIVOS
Este trabalho tem como objetivos a implementação, teste e comparação das prin-
cipais técnicas de classificação de texto aplicando-as em questões de concursos
públicos.
Com os resultados encontrados, busca-se construir uma ferramenta que vise
13
facilitar o teste de modelos de classificação de questões, além de ser possível clas-
sificar textos genéricos.
1.3 METODOLOGIA
O trabalho será dividido em 4 etapas conforme a figura 1.1.
Crawler
Tratamento
Implementação
Análise
FIG. 1.1: Fluxograma de trabalho
A primeira etapa do trabalho corresponde ao crawler, à obtenção de dados,
para serem utilizados nos algoritmos de aprendizado de máquina. Isso é feito a
partir de Web scraping de questões de concursos públicos já rotuladas com os seus
respectivos assuntos.
Para fim de simplificação de escopo, serão consideradas apenas questões obje-
tivas, que contenham alternativas, e retiradas de uma única fonte, o site Rota dos
Concursos, conforme será detalhado mais adiante no capítulo 3.
Com esses dados, há a fase de tratamento e uma fase de processamento de
dados, que remove inconsistências e prepara uma interface adequada para os algo-
ritmos que serão aplicados posteriormente, filtrando os campos das questões que
serão utilizados para a classificação.
A terceira fase consiste na implementação dos modelos de aprendizado de má-
quina para a classificação de texto das questões. Serão utilizados diversos classifi-
cadores para cada modelo de representação de texto, que serão abordados posteri-
ormente nesse trabalho.
Nessa etapa, cada um dos métodos será otimizado para essa base de dados, va-
14
lidando suas arquiteturas e seus hiperparâmetros. Com esses resultados, é possível
comparar a performance desses métodos.
Com base nessa comparação, avalia-se a viabilidade de implementar um modelo
unificado dos modelos que utilizará os resultados anteriores e determinará qual é a
melhor previsão de assunto da questão (Ensemble learning).
O escopo será limitado à classificação por assuntos. Dentro destes, a granulari-
dade será limitada ao nível de área do conhecimento, como por exemplo a computa-
ção, sem considerar as disciplinas contidas nessa área, como inteligência artificial
e mineração de dados.
A seguir, será feita uma análise de desempenho para cada modelo que pode
resultar na variação de seus hiperparâmetros implementados e tratamento do con-
junto de dados. Os resultados obtidos serão comparados, obtendo-se o algoritmo
mais preciso para a classificação de questões.
1.4 ORGANIZAÇÃO
Sobre os capítulos subsequentes, apresenta-se a seguinte distribuição de conteúdo:
• Capítulo 2 - Fundamentação Teórica: descrição dos principais conceitos utili-
zados em cada um dos algoritmos de classificação que serão implementados;
• Capítulo 3 - Obtenção da base de dados: metodologia utilizada para obtenção
e processamento da base de dados utilizada como referência no projeto;
• Capítulo 4 - Arquitetura da Solução: exposição da arquitetura feita para esse
projeto, incluindo o diagrama de atividades e a modelagem de implementação;
• Capítulo 5 - Seleção do Conjunto de Dados e dos Modelos: tópicos de dis-
cussão a respeito do conjunto de dados e dos modelos selecionados para o
desenvolvimento da ferramenta de classificação;
• Capítulo 6 - Modelos baseados em Bag of Words: descrição, metodologia de
implementação e resultados de cada um dos algoritmos baseados em bag of
words;
• Capítulo 7 - Modelos baseados em Word Embedding: descrição, metodologia
de implementação e resultados de cada um dos algoritmos baseados em word
embedding;
15
• Capítulo 8 - Comparação e conclusão: comparação dos resultados entre dife-
rentes modelos e algoritmos implementados no capítulo anterior.
16
2 FUNDAMENTAÇÃO TEÓRICA
Aprendizado de máquina é um ramo da inteligência artificial na Ciência da Com-
putação em que se faz uso de dados para o desenvolvimento de um algoritmo por
meio de etapas de treinamento. Mais especificamente no aprendizado supervisio-
nado, estuda-se um conjunto de dados rotulados na fase de treinamento para que
o algoritmo treinado possa prever um rótulo de um dado inédito baseando-se nos
padrões já estudados. Para a classificação de textos em assuntos, o aprendizado
supervisionado é o mais utilizado, de maneira que os rótulos correspondem aos
próprios assuntos dos textos a serem utilizados no treinamento.
Contudo, uma dificuldade ao se trabalhar com um texto é o uso de uma re-
presentação computacional que seja facilmente interpretável pelos algoritmos de
aprendizado de máquina. Por isso, são utilizadas representações específicas para
esses algoritmos como Bag of Words e Word Embeddings que serão descritos nas
seções a seguir. Posteriormente, pode-se aplicar algoritmos como, por exemplo,
redes neurais que também serão descritas nas seções seguintes.
2.1 BAG OF WORDS
Bag of words não se trata de um modelo de classificação por completo, mas sim
de uma estratégia de representação do texto em que a sequência de palavras é
desconsiderada. Dessa maneira, o texto é simplificado para uma lista de palavras
distintas e a respectiva contagem de ocorrência de cada uma delas. A principal
vantagem dessa estratégia é a sua simplicidade de representação computacional,
sendo atrativa para a aplicação direta de algoritmos de aprendizado de máquina.
Contudo, para se obter uma melhor eficiência dessa estratégia, pode ser neces-
sário aplicar outras técnicas que mitiguem a perda de informação causada pelo bag
of words. Uma dessas técnicas é a remoção de palavras de parada (stop words),
pois essas palavras são utilizadas apenas para a conexão de ideias em uma frase
como preposições, artigos e conjunções e não contribuem como fonte de informa-
ção no texto. Além disso, as palavras vazias ocorrem com alta frequência e possuem
destaque ilusório na representação colapsada do bag of words. Outra técnica que
também pode ser empregada é a lematização (stemming) que corresponde a re-
17
moção dos sufixos das palavras, pois estes fazem com que palavras que deveriam
ser sinônimas na representação bag of words sejam contabilizadas separadamente.
Ao remover os sufixos como gênero, tempo e número, palavras que acrescentam
a mesma informação ao texto terão suas respectivas contagens somadas em uma
única palavra sem os sufixos. A figura 2.1 mostra um exemplo dessas etapas de
pré-processamento.
FIG. 2.1: Etapas do processamento de linguagem natural
Após todas essas técnicas, pode-se extrair ainda a representação TF-IDF, Chris-
topher D. Manning e Schütze (2009b), de cada amostra de um conjunto de textos,
que trata de uma medida estatística para normalizar o peso das palavras. Nesse in-
dicador, a relevância de uma palavra em determinado contexto é representada pelo
número de vezes que a palavra ocorreu nesse contexto dividido pelo número de ve-
zes que ela aparece em todos os documentos que fazem parte do corpus analisado.
A figura 2.2 mostra um exemplo da representação de dois documentos conforme a
modelagem bag of words.
Para o modelo de bag of words, foram escolhidos dois classificadores bastante
utilizados em modelos mais simples de implementação de algoritmos de classifica-
ção de texto, o classificador NB e o classificador SVM. Ambos servirão como base
de resultados para comparação com os modelos mais avançados.
18
FIG. 2.2: Exemplo de representação bag of words
2.1.1 CLASSIFICADOR NAIVE BAYES
O classificador NB é um classificador probabilístico baseado no teorema de Bayes
de probabilidade. Esse algoritmo é amplamente utilizado em técnicas de aprendi-
zado de máquina por ser de fácil implementação e ainda assim possuir desempenho
aceitável e ser de rápida execução, servindo como base para comparação com ou-
tros modelos. Ele desconsidera a relação entre os dados de uma mesma amostra a
ser classificada, ou seja, as palavras do texto são independentes entre si. Por isso,
o classificador de naive Bayes se encaixa perfeitamente com a utilização do modelo
bag of words, uma vez que esse modelo considera que a ordem das palavras no
texto não tem relevância no significado do texto, e utiliza como probabilidades os
19
valores obtidos da aplicação de tf-idf normalizado nesse modelo.
O teorema por trás desse algoritmo utiliza as fórmulas que podem ser vistas na
figura 2.3. A primeira fórmula é a fórmula principal desse teorema, e, no caso desse
trabalho, representa a probabilidade de um texto ser de determinada classificação,
dado que esse texto possui suas palavras. A segunda fórmula representa a caracte-
rística citada acima do algoritmo considerar a independência entre as palavras de
um mesmo texto. Com isso, é possível sabermos a probabilidade de um texto per-
tencer a tal classificação baseado na probabilidade de suas palavras serem dessa
classificação. Com essas duas fórmulas, é possível determinar a probabilidade de
um texto ser de determinada classificação, e, dentre todas as classificações, esco-
lher aquela cuja probabilidade é maior para classificar o texto.
Este classificador é popular para classificações discretas, como é o caso da
classificação de textos conforme já explorado por McCallum e Nigam (1998).
FIG. 2.3: Fórmulas do Teorema de Bayes
2.1.2 CLASSIFICADOR SVM
Conforme descrito por Joachims (1998), Support Vector Machines é um algoritmo
de aprendizado de máquina que se destaca na classificação de textos devido à sua
robustez ao lidar com dados de entrada de alta dimensionalidade e esparsos como
é o caso dos dados gerados a partir da representação bag of words. Neste modelo,
busca-se encontrar amostras que sejam representativas definição de hiperplanos
que separam os conjuntos de classes distintas, como pode ser visto na figura 2.4.
Estes dados são chamados de support vectors.
20
FIG. 2.4: Representação do modelo de SVM (fonte: Weinberger (2016)). A figuramais à esquerda ilustra a iteração da reta vermelha se transformando na azul paramaximizar a distância até os pontos suporte. Essa distância é ilustrada no gráficomais à esquerda
2.2 WORD EMBEDDINGS
Word embedding é a representação de palavras de um vocabulário em um espaço
n-dimensional de números reais conforme ilustra a figura 2.5. Isso permite que
palavras que são usadas de maneira similar tenham representações similares, de
maneira a capturar o significado de cada palavra de acordo com a sua posição no
espaço n-dimensional. Cada palavra é mapeada a um vetor e os valores desse vetor
são obtidos a partir de treinamentos que, em geral, envolvem redes neurais como
o skip-gram utilizado na implementação word2vec, Mikolov et al. (2013).
FIG. 2.5: Visualização de word embedding (fonte: Google-Tensorflow (2018))
21
2.3 REDES NEURAIS ARTIFICIAIS
Redes Neurais são uma classe de funções em que a sua formulação matemática
foi inspirada em estruturas biológicas do cérebro. Na analogia biológica dessa
formulação, essas funções podem ser representadas no formato de um grafo em
que as estruturas básicas são chamadas neurônios.
FIG. 2.6: Neurônio artificial
Conforme a figura 2.6, um neurônio artificial é uma função y : Rn → R com en-
trada ~x =< x1, x2, x3, . . . , xn > e saída y = f(n∑
i=1
xiwi), em que f é a chamada função
de ativação, correspondendo tradicionalmente a função sigmoid, mas atualmente a
função mais utilizada é a relu (f(x) = max(0, x)).
Os parâmetros que definem a arquitetura de uma rede neural tradicional dentro
do conjunto da classe de funções são chamados hiperparâmetros. Esses parâme-
tros definem a quantidade de neurônios e as conexões entre eles que são tradicio-
nalmente organizadas segundo camadas totalmente conectadas.
Uma característica que torna as redes neurais interessantes é o fato de elas
atenderem ao Teorema da aproximação universal segundo Hornik (1991). Contudo,
o que as tornam realmente especiais no contexto de aprendizado de máquinas é a
maneira com que são encontrados os parâmetros para a aproximação de funções.
Diferentemente da aproximação de funções diferenciáveis pelo teorema de Taylor
por exemplo, existem heurísticas que permitem encontrar os parâmetros de uma
rede neural para a aproximação da função a partir de amostras pontuais, i.e., dados,
sem que seja necessário o conhecimento da função original como formulado no
teorema de Taylor.
Dessa maneira, além dos hiperparâmetros, há as duas seguintes categorias
de parâmetros em uma rede neural: parâmetros treináveis que são escolhidos a
22
partir de procedimentos de treinamento envolvendo dados para a aproximação de
funções; parâmetros de entrada que correspondem aos da função que se deseja
aproximar. Uma vez encontrados parâmetros treináveis para uma aproximação sa-
tisfatória, estes são fixados e utilizam-se os parâmetros de entrada para realizar
previsões nas situações de interesse.
Uma vez que a definição de parâmetros treináveis já foi realizada, pode-se reto-
mar a análise das heurísticas que permitem determiná-los. Esse processo consiste
em um algoritmo iterativo que minimiza uma função de custo baseada na compara-
ção entre a saída da rede neural atual com dados de treinamento e os respectivos
valores reais. Esse processo é chamado método do gradiente e, conforme o próprio
nome diz, exige o cálculo do gradiente da função de custo em relação aos parâme-
tros treináveis e é viabilizado pelo algoritmo backpropagation por Rumelhart et al.
(1986). Atualmente, são utilizadas diversas técnicas para a otimização do método
do gradiente (Ruder (2016)), envolvendo desde variações na forma como as variá-
veis são atualizadas no processo iterativo quanto como inicializar os parâmetros
treináveis ou execuções em mini-batches.
2.3.1 REDES NEURAIS CONVOLUCIONAIS
Redes neurais convolucionais consistem em uma variação da arquitetura de redes
neurais tradicionais em que parâmetros treináveis podem ser reutilizados em di-
ferentes operações durante o cálculo de feedforward de uma rede neural. Isso
permite o reconhecimento de um mesmo padrão em distintos subconjuntos dos da-
dos de entrada, tornando esse tipo de arquitetura ideal para reconhecimento de
objetos em imagens conforme originalmente descrito por LeCun et al. (1999). Con-
tudo, uma variação unidimensional da rede neural convolucional também pode ser
útil no reconhecimento de padrões em textos com o auxílio de word embeddings.
2.3.2 REDES NEURAIS RECORRENTES
Conforme ilustrado por Olah (2015), redes neurais recursivas são uma extensão
das redes neurais tradicionais que visam permitir a representação de um estado
de memória no processo de feedforward da rede. Isso é especialmente útil quando
os dados de entrada dependem de uma sequência para possuírem coerência, como
ocorre no caso de um texto. A extração máxima de informação de um texto só ocorre
quando se leva em consideração a sequência das palavra, o que não é tratado no
23
método bag of words por exemplo.
A representação de estado de memória em uma rede neural é viabilizada por
meio de uma célula, i.e., um conjunto de neurônios com operações que são apli-
cadas uma vez para cada elemento da sequência de um dado de entrada. Dessa
maneira, além de haver um compartilhamento de parâmetros treináveis como nas
redes neurais convolucionais, também há um estado armazenado nos neurônios da
célula que são realimentados a essa mesma célula ao executar as operações envol-
vendo o elemento seguinte da sequência, o que dá origem ao nome recorrente.
24
3 OBTENÇÃO DAS BASES
A primeira etapa de implementação desenvolvida no trabalho foi a aquisição de
um conjunto de questões rotuladas de acordo com seus assuntos para se viabili-
zar a aplicação de algoritmos de classificação. Esse conjunto de dados foi obtido
por meio de web scrapping. Posteriormente, os arquivos baixados foram filtrados
e convertidos para um novo formato de maneira a se armazenar apenas os dados
de interesse. Finalmente, desenvolveu-se uma interface que faz uso de todo esse
conjunto de dados, tornando-o acessível para as demandas nos diferentes algorit-
mos de aprendizado de máquina. A figura 3.1 ilustra a sequência de operações
executadas na aquisição de dados e que serão descritas em detalhes a seguir.
FIG. 3.1: Sequência de operações para a aquisição de dados
3.1 WEB SCRAPPING
As questões utilizadas para treinamento dos modelos classificatórios foram retira-
das de um site preparatório para concursos públicos chamado “Rota dos concursos”
(rotadosconcursos.com.br). Para esta tarefa, foi implementado um script ruby que
simulava as requisições HTTP feitas por um navegador. Cada requisição realiza o
download de um arquivo HTML de uma página do site que contem exatamente uma
questão de concurso público.
Devido à grande quantidade de questões, foi utilizado um serviço de servidores
dedicados em nuvem para possibilitar as muitas horas de requisição. A quantidade
de questões também impossibilitou a manipulação dos arquivos em um único di-
retório. Desta forma foi utilizado um esquema de subpastas enumeradas de 000
25
a 999 tornando a manipulação no sistema de arquivos tratável, pois os arquivos
são uniformemente distribuídos nessas subpastas por meio de uma função de hash
simples. Além disso, como o gargalo são operações de entrada e saída (I/O bound )
nas requisições, foi utilizado multithreading para otimizar o uso de CPU.
3.2 PRÉ-PROCESSAMENTO
Após o download em formato HTML, o conteúdo de cada página teve de ser isolado
em arquivos em formato JSON. Cada arquivo continha apenas os dados referentes a
uma questão, de maneira a descartar as informações referentes ao layout da página
e manter os seguintes atributos:
• id: Identificador único de cada questão;
• text: Enunciado da questão;
• subject_path: Lista de strings iniciada pela área de conhecimento abrangido
pela questão e seguida pela hierarquia de domínios abrangidos em ordem de
especificidade;
• alternatives: Lista com o texto de cada uma das alternativas caso a questão
seja de múltipla escolha;
• image_count: Contagem de imagens utilizadas no enunciado da questão. Vale
ressaltar que essa imagem pode conter até mesmo informação textual não
capturada pelo atributo text;
• concurso: Nome do concurso público do qual a questão foi extraída;
• prova: Ano em que a prova foi aplicada;
• banca: Banca referente ao concurso público da questão;
• nivel: Nível de escolaridade utilizado como pré-requisito no concurso público
em que questão foi obtida;
• answer: Alternativa correspondente a resposta correta caso a questão seja de
múltipla escolha.
Ao término desse pré-processamento, obteve-se um total de mais de 500 mil
arquivos JSON com questões.
26
3.3 API DE DADOS
Como uma etapa final da sequência de operações antes de se iniciar a etapa analí-
tica, foi necessário desenvolver uma interface que fosse flexível para as diferentes
demandas de dados de treinamento/validação/teste no desenvolvimento dos algo-
ritmos de aprendizado de máquina. Para isso, foi implementada uma classe na
linguagem python (mesma utilizada para na etapa seguinte) que contivesse os da-
dos de todas as questões armazenadas inicialmente em distintos arquivos JSON em
uma única estrutura de dados em memória. Para isso, utilizou-se a estrutura de um
dataframe do pacote pandas devido a sua boa performance com o uso de operações
de broadcast em um grande conjunto de dados e a sua fácil manipulação.
Além disso, foram definidos alguns parâmetros para o construtor dessa classe,
de maneira a possibilitar o seu uso em diferente contextos de teste:
• random_state: Número inteiro utilizado como seed de aleatorização quando
for necessário distribuir arbitrariamente o conjunto de dados conforme é de-
talhado nos parâmetros frac e subset.
• frac: Determina a fração dos dados que vai ser carregada, possibilitando tanto
um uso reduzido para maior velocidade nos testes de desenvolvimento como
o uso completo para obtenção de resultados finais.
• dict_name: Nome de um arquivo JSON utilizado como dicionário para agru-
pamento de assuntos. Esse parâmetro possibilita o agrupamento de assuntos
similares, já que originalmente existem 133 áreas de conhecimento definidas
e com grande interseção entre elas, o que inviabiliza a classificação das ques-
tões até mesmo por seres humanos especialistas, pois a classificação possuiria
um caráter subjetivo. Para ilustrar a existência de domínios de conhecimento
similares, pode-se citar Engenharia de Redes e Engenharia de Telecomunica-
ções, bem como Contabilidade Privada Contabilidade Pública. Vale destacar
que o fato de ser um arquivo externo usado como dicionário flexibiliza o teste
de diferentes agrupamentos, permitindo a escolha de um agrupamento que
resulte em uma melhor performance de classificação.
• min_number_per_label: Número mínimo de amostras para cada área de co-
nhecimento após o agrupamento, as amostras referentes a assuntos com total
insuficiente são descartadas. Esse parâmetro é importante porque podem
27
existir áreas de conhecimento com um número insuficiente de amostras para
realizar o treinamento de um algoritmo de classificação.
• subset: Determina se o objeto a ser instanciado terá fração de dados corres-
pondente ao treinamento, validação, teste ou todo o conjunto de dados. A
divisão desses conjuntos é feita de maneira aleatória e a consistência dessa
aleatorização para diferentes instâncias é determinada pelo parâmetro ran-
dom_state.
Além disso, a API de dados também faz uso de cache do dataframe base no
formato de um arquivo csv para evitar a releitura das centenas de milhares de
arquivos JSON sempre que for necessário criar um nova instância da classe.
Finalmente, sobre os métodos oferecidos pela API de dados, pode-se destacar
a existência de métodos que retornam estruturas com dados utilizados no treina-
mento como o enunciado de todas as questões e seus respectivos assuntos no for-
mato de string ou de one-hot-encoding.
28
4 ARQUITETURA DA SOLUÇÃO
4.1 FLUXO DE ATIVIDADES
Antes de se discutir detalhes técnicos da implementação, é interessante definir um
fluxo de operações que serão realizadas pelo sistema. Isso permite uma melhor con-
textualização geral das funcionalidades a serem implementadas não só por quem
participará da sua implementação, mas também por quem será seu usuário.
Uma primeira observação sobre esse fluxo de atividades é que ele é posterior à
fase de obtenção de dados descrita no capítulo 3. A razão disso é porque a arquite-
tura descrita no presente capítulo independe da fonte de dados utilizada, buscando
uma fácil portabilidade para outros contextos de classificação de texto.
Todas as etapas a serem implementadas pelo sistema são descritas no diagrama
de atividades da figura 4.1. Esse diagrama pode ser resumido em três estágios prin-
cipais: uma fase inicial de preparação dos dados; uma segunda fase que define o
modelo do classificador e executa as etapas que precedem o treinamento; e uma
fase final em que é realizado o treinamento do modelo especificado no estágio an-
terior assim como são coletadas métricas sobre sua performance.
4.2 MODELAGEM DA IMPLEMENTAÇÃO
Nas implementações dos classificadores, existem várias etapas em comum con-
forme já ilustrado pela figura 4.1. Em virtude disso, buscou-se realizar uma imple-
mentação que satisfizesse requisitos de manutenibilidade e reusabilidade. Dessa
forma, foi elaborada uma solução focada em uma hierarquia de classes que maxi-
mizasse o reúso de implementações entre os modelos conforme ilustra o diagrama
de classes na figura 4.2.
Essa arquitetura modulariza as etapas do sistema. Um dos aspectos que se
buscou dar destaque nessa modularização foi o processamento da fonte de dados.
Isso é feito de maneira isolada em uma classe específica que pode ser facilmente
substituída por outra que implemente o carregamento de dados de outra fonte. No
diagrama de classes da figura 4.2, essa classe corresponderia a uma que substitui-
29
FIG. 4.1: Diagrama de atividades
ria a classe RotaDosConcursos, mantendo a mesma interface. Para tanto, essa nova
classe também deve herdar de DatasetDistributer. Depois disso, bastaria passar um
objeto dessa nova classe ao instanciar um objeto correspondente a um classificador
30
FIG. 4.2: Diagrama de classes
genérico que é implementado pela classe BaseModel. Isso ocorre porque a classe
BaseModel trata o objeto correspondente aos dados no seu construtor apenas no
nível da classe DatasetDistributer.
Quanto a implementação dos modelos, também trabalhou-se buscando uma mo-
dularidade para dar suporte a adição de novos classificadores. Antes no entanto,
31
discutiremos qual o significado dos níveis da hierarquia de classes que implementa
essa solução.
Primeiramente, parte-se da classe abstrata BaseModel que, conforme já menci-
onado, implementa operações comuns a todos os modelos como métodos relaciona-
dos à exibição de resultados e à admissão de dados. Essa classe é então especiali-
zada de acordo com as duas estruturas de dados para a representação de texto em
concordância com as definições do capítulo 2 e também ilustradas no primeiro fork
da figura 4.1. Assim, o segundo nível dessa hierarquia é composto pelas classes
BagOfWords e WordEmbeddingModelKeras.
Em seguida, no caso de modelos que partem da representação Bag of Words,
especializa-se de acordo com o algoritmo classificador a ser utilizado, sendo este o
último nível. Já para modelos baseados em Word Embedding, esse é o penúltimo
nível e corresponde ao segundo fork (de cima para baixo) na figura 4.1. Vale ressal-
tar que apesar de somente duas abordagens para o uso da representação por Word
Embedding serem exploradas, a adição de mais uma versão seria simples graças
ao isolamento dessa etapa em uma única classe que se integra ao restante da ar-
quitetura por meio de herança. A última especialização do ramo referente a Word
Embedding define a topologia da rede neural implementada. Para os dois ramos,
novos classificadores podem ser facilmente adicionados ao último nível devido a fle-
xibilização dessa arquitetura modular. Contudo, há algumas ressalvas, a primeira
delas é que esse projeto trabalha apenas com redes neurais para a representação
Word Embedding, assim o último nível é, conforme já foi dito, responsável apenas
pela definição topológica. Além disso, a implementação foi todo feita em Python e
essa topologia deve ser feita utilizando a API Keras do pacote Tensorflow e o classi-
ficador utilizado na representação Bag of Words deve seguir a interface do pacote
Scikit-learn.
Por fim há ainda um conjunto de classes que trabalha a definição das métri-
cas que são coletadas. As mesmas métricas são coletadas independentemente da
representação numérica utilizada para o texto. Contudo, algumas especializações
são feitas porque os recursos de visualização do Tensorboard, com compatibilidade
exclusiva para o pacote Tensorflow, foram explorados somente para os modelos que
partem da representação Word Embedding.
32
4.3 ASPECTOS PRÁTICOS DA IMPLEMENTAÇÃO
Um aspecto da implementação que foi de grande importância na viabilização da
execução dos treinamentos foi a facilidade de se utilizar vários núcleos de proces-
samento ao utilizar a biblioteca como scikit-learn. Isso permitiu a paralelização
utilizando vários núcleos de um servidor robusto do serviço AWS da Amazon con-
forme ilustra a figura 4.3. Além disso, o pacote Tensorflow abstrai o uso de GPUs
em um alto nível, o que também foi explorado ao utilizar os serviços da AWS.
FIG. 4.3: Uso das CPUs no servidor durante um dos treinamentos
Vale destacar que o uso dos serviços AWS foi completamente automatizado.
Isso significa que foi implementado um script que realiza as seguintes operações:
definição de toda a configuração da máquina virtual; criação de uma nova instancia
dessa máquina; realização do download do conjunto de dados preparado conforme
descrito no capítulo 3 que foi disponibilizado publicamente em um servidor de ar-
mazenamento também da Amazon; realização do download do modelo de Word Em-
bedding disponibilizado como parte do trabalho do artigo Hartmann et al. (2017);
download do código do modelo implementado como parte do presente trabalho;
execução do treinamento de um modelo selecionado; exportação das métricas para
o armazenamento em nuvem S3 da Amazon; terminação da instância da VM criada.
Por fim, visando a rastreabilidade das alterações do código durante o desenvol-
vimento e uma colaboração em equipe, todo o código foi versionado. O repositório
pode ser acessado em: github.com/brunovcosta/pfc .
33
5 SELEÇÃO DO CONJUNTO DE DADOS E DOS MODELOS
5.1 SELEÇÃO DO CONJUNTO DE DADOS
Neste trabalho, foram empregados dois modelos de representação de textos distin-
tos. Cada modelo foi utilizado para gerar um descritor por questão com base no
enunciado e alternativas. Esses descritores juntos aos rótulos de disciplina servi-
ram de fonte de dados para modelos classificadores os quais foram comparados por
meio de métricas como a acurácia.
Para estabelecer um padrão de comparação entre os distintos modelos, definiu-
se um conjunto de parâmetros da API de dados descrita na seção 3.3. Dentre esses
parâmetros, pode-se destacar o uso de um dicionário de agrupamento de assuntos
conforme listado no apêndice 10.2 e um número mínimo de 10000 amostras por
categoria de enunciado. A partir desses parâmetros, as 133 classes iniciais listadas
no apêndice 10.1 foram reduzidas a apenas 9 classes conforme ilustra a figura 5.1.
5.2 SELEÇÃO DOS MODELOS
Uma grande influência na escolha dos modelos em que foi dado um maior foco de
otimização foi o guia de classificação de texto produzido por Google-Developers
(2018) e ilustrado pelo fluxograma da figura 5.2. Esse guia se trata do resultado
de anos de pesquisa em que foram executados cerca de 450 mil experimentos para
avaliar a performance de diversos modelos com diferentes hiperparâmetros e con-
juntos de dados. Assim, ele tem como objetivo evitar esforços redundantes na sele-
ção e no treinamento de modelos em novos conjuntos de dados.
O fluxograma da figura 5.2 é baseado na correlação encontrada na razão entre o
número de amostras do conjunto de dados (S) e a mediana do comprimento do texto
de cada uma dessas questões (W) para a tomada de decisão em suas bifurcações
na busca por uma acurácia ótima. No presente trabalho, a partir dos parâmetros
da API de dados já definidos, tem-se um total de 299.314 amostras e uma mediana
de 65 palavras por amostra, resultando em uma razão (S/W) de aproximadamente
4604.83. Assim, o modelo mais recomendado é o sequencial com o uso de word em-
34
FIG. 5.1: Distribuição das categorias selecionadas
bedding conforme ilustra a figura reffig:TextClassificationFlowchart. Além disso,
recomenda-se também o treinamento de uma camada de embedding que parta de
um modelo pré-treinado, pois um treinamento a partir de valores aleatórios exigiria
uma maior razão S/W.
O presente trabalho não se restringe a modelos sequenciais. Implementou-se
também modelos baseados em n-gramas, pois estes são modelos mais simples e
tradicionais que atuam como bons pontos de referência na comparação dos resul-
tados finais. Contudo, após uma avaliação inicial dos resultados, as recomendações
do guia (por Google-Developers (2018)) se confirmaram e os modelos sequenciais
mostraram melhores resultados. Por essa razão, em iterações posteriores dos mo-
delos, apenas os sequenciais foram explorados na busca por hiperparâmetros que
correspondessem a melhores resultados.
35
FIG. 5.2: Fluxograma para classificação de texto (fonte: Google-Developers (2018))
36
6 MODELOS BASEADOS EM BAG OF WORDS
Para a representação bag of words, foram utilizados algoritmos classificadores
tradicionais conforme descrito em Christopher D. Manning e Schütze (2009a). Eles
atuam como uma referência de benchmarking para os modelos mais modernos que
serão discutidos na seção 7.
Como etapas de preparação da estrutura de dados a partir da representação
bag of words, foram utilizadas as seguintes técnicas de processamento de lingua-
gem natural do pacote NLTK (Natural Language Toolkit), que possui suporte para
a linguagem português brasileiro: a separação da frase em palavras, deixando-
as com letra minúscula; a remoção de stopwords (palavras de parada) desse con-
junto de palavras, apresentadas no apêndice 10.3; e a lematização das palavras
utilizando RSLPStemmer (Removedor de Sufixos da Língua Portuguesa) (Huyck e
Orengo (2001)). Após a aplicação dessas técnicas, é utilizado TF-IDF por meio da
implementação TfidfTransformer da biblioteca scikit-learn.
6.1 NAIVE BAYES
Conforme descrito na seção 2.1.1, o classificador NB foi um dos utilizados para a
representação textual bag of words. A versão utilizada nessa implementação foi a
variante multinomial que, como o próprio sugere, assume uma distribuição multi-
nomial na inferência de probabilidade. Utilizou-se a implementação da biblioteca
do scikit-sklearn, obtendo-se resultados sumarizados pela figura 6.1 e pela tabela
6.1.
TAB. 6.1: Métricas do modelo naive bayes
Métrica Conj. de Treinamento Conj. de TesteAcurácia 0.79287 0.78655F1-Score 0.77180 0.76427Precisão 0.80543 0.79806
AUC ROC 0.97163 0.96980
37
FIG. 6.1: Matriz de confusão do conjunto de testes normalizada para o classificadorNaive Bayes
6.2 SUPPORT VECTOR MACHINES
O segundo classificador para o modelo bag of words foi o classificador SVM, des-
crito na seção 2.1.2. A implementação escolhida para esse classificador foi também
a da biblioteca sklearn a partir do método SGDClassifier, resultando na matriz de
confusão da figura 6.2 em que as métricas são detalhadas pela tabela 6.2.
38
TAB. 6.2: Métricas do modelo SVM
Métrica Conj. de Treinamento Conj. de TesteAcurácia 0.77368 0.77295F1-Score 0.74712 0.74489Precisão 0.78709 0.78676
FIG. 6.2: Matriz de confusão do conjunto de testes normalizada para o classificadorSVM
39
7 MODELOS BASEADOS EM WORD EMBEDDING
Para a representação numérica de texto por word embedding foram usadas
apenas classificadores baseados em redes neurais, mas diversas topologias para
essas redes foram exploradas.
A nossa implementação faz uso de uma camada de embedding pré-treinada, o
seu treinamento é definido opcionalmente a partir de um parâmetro binário. Con-
tudo, contrariando a recomendação do fluxograma da figura 5.2, trabalha-se apenas
com os parâmetros dessa camada congelados, pois a adição da camada de embed-
ding ao conjunto de parâmetros treináveis aumenta consideravelmente o tempo de
treinamento dos modelos, o que é inviável para os nossos recursos disponíveis.
Foram utilizados vetores gerados por meio da técnica GloVe (PENNINGTON
et al., 2014) que foram treinados em língua portuguesa e disponibilizados pelo
NILC-USP (HARTMANN et al., 2017). Essa implementação foi realizada com ve-
tores de 50, 100, 300, 600 e 1000 dimensões.
7.1 VETORIZAÇÃO AGLUTINADA POR MÉDIA
Junto ao modelo de word embedding, utilizou-se uma aglutinação em que cada en-
trada V de N dimensões corresponde a média aritmética das palavras no enunciado
S da respectiva questão, ou seja:
vi =
∑w∈S glove(w)
LS
Onde vi é o i-ésimo valor de entrada para a rede em que i ∈ [1, N ] e S =
{w1, w2, · · · } é a sequência das LS palavras w no enunciado S.
7.1.1 REDE NEURAL SIMPLES
Como modelo classificador que trabalha com essas entradas aglutinadas de word
embedding, utilizou-se uma rede neural simples conforme a figura 7.1. A topologia
ilustrada por essa figura é então sucedida por camada softmax para a geração das
probabilidades de cada categoria.
A implementação utilizou a linguagem Python e a biblioteca de aprendizado de
máquinas Tensorflow, produzindo os resultados indicados na tabela 7.1.
40
FIG. 7.1: Rede Neural Simples
TAB. 7.1: Métricas da rede neural simples no conjunto de testes para os distintosnúmeros de dimensões de word embedding analisados
Dimensões Acurácia F1-Score Precisão AUC ROC50 0.7368 0.7213 0.7239 0.9497
100 0.7641 0.7552 0.7551 0.9583300 0.8014 0.7940 0.7949 0.9689600 0.8146 0.8082 0.8094 0.97241000 0.8216 0.8171 0.8183 0.9746
Apesar de não ser um modelo complexo, um ponto de destaque foi a sua capa-
cidade de generalização, pois não foi observada tendência de overfitting conforme
ilustra o gráfico da figura 7.2.
FIG. 7.2: Curva da função de custo ao término de cada epoch de treinamento para50 dimensões de word embedding no modelo rede neural simples
Além disso, como era de se esperar a partir dos resultados listados na tabela
41
7.1, houve uma boa separação das classes selecionadas nas previsões. Conforme
apresenta a figura 7.3, apenas categorias que são difíceis de serem distinguidas até
mesmo por seres humanos tiveram um índice de acerto menor do que 83%. Nesses
casos, as classes majoritárias, vide figura 5.1, foram favorecidas.
FIG. 7.3: Matriz de confusão normalizada do conjunto de testes com o uso de 1000dimensões de word embedding no modelo rede neural simples
Contudo, vale ressaltar que esse é um modelo simples de rede neural e não é re-
comendado para essa aplicação, o seu propósito aqui está diretamente relacionado
42
com a sua simplicidade: atuar como teste inicial de um modelo baseado em word
embedding, pois, caso existam erros, um primeiro teste com um modelo complexo
é mais difícil de ser depurado.
7.2 VETORIZAÇÃO SEQUENCIAL
Além da aglutinação por média da representação numérica de palavras por em-
bedding, também se utilizou sequencialmente a representação de cada uma das
palavras do texto. Diferentemente das versões exploradas até então, o uso sequen-
cial leva em conta a ordem com que as palavras estão dispostas ao longo do texto
para a sua classificação, sendo, portanto, capaz de capturar mais nuâncias do texto.
7.2.1 REDES CONVOLUCIONAIS SEPARÁVEIS
A implementação SepCNN foi feita utilizando 2 blocos de duas convoluções separá-
veis cada conforme a figura 7.4 e foram utilizados 64 filtros de tamanho 3 dropout
de 20%. O modelo SepCNN foi inspirados nos estudos de Chollet (2016).
FIG. 7.4: Diagrama sequencial das etapas realizadas na implementação SepCNN
Cada camada "SepConv x2"é a junção de duas etapas de depthwise/pointwise
conforme ilustra a figura 7.5.
Conforme esperado, o SepCNN apresentou bons resultados de acurácia como
pode ser notado na figura 7.6. Outra vantagem deste modelo foi sua execução mais
rápida em treinamento.
7.2.2 RNN SIMPLES COM CÉLULAS LSTM
Este modelo se trata da estrutura tradicional de uma rede neural recorrente e pos-
sui, como unidade de repetição, uma célula do tipo LSTM conforme ilustra a figura
7.8. Nesse modelo, "os neurônios"de memória da célula após o processamento de
todas as etapas recorrentes são usados como dados de entrada para uma rede neu-
ral simples idêntica ao modelo já descrito e ilustrado pela figura 7.1. A performance
43
FIG. 7.5: Esquema ilustrativo de convolução separável. Os filtros (em amarelo)representam da esquerda para a direita o depthwise e os pointwise. Neste exemplo,o cada palavra possui 5 dimensões e cada enunciado 10 palavras. O número defiltros é 3.
dessa rede neural recorrente foi intermediária quando comparada aos outros mo-
delos de redes neurais baseadas em word embeddings como pode ser visto em sua
matriz de confusão na figura 7.7.
7.2.3 STACKED RNN COM CÉLULAS LSTM
Uma sofisticação do modelo descrito na seção 7.2.2 é a adição de mais uma camada
com uma segunda célula LSTM conforme ilustra a figura 7.9. Assim, após o proces-
samento de cada entrada xt, a saída correspondente ht, conforme a figura 7.8, não
seria descartada, mas sim repassada para uma camada de dropout cujo resultado
é usado como entrada para a segunda célula LSTM. Esse modelo foi o que obteve
a melhor performance em acurácia conforme detalhado pela matriz de confusão na
figura 7.10
44
FIG. 7.6: Matriz de confusão normalizada do modelo SepCNN para 50 dimensõesde embedding
45
FIG. 7.7: Matriz de confusão normalizada do modelo RNN simples com célulasLSTM e 50 dimensões de embedding no conjunto de testes
FIG. 7.8: Diagrama esquemático da um LSTM (fonte: Olah (2015))
46
FIG. 7.9: Diagrama de uma topologia do tipo stacked RNN (fonte: Coursera)
47
FIG. 7.10: Matriz de confusão normalizada do modelo Stacked RNN e 100 dimen-sões de embedding no conjunto de testes
48
8 CONCLUSÃO
Como esperado, as recomendações do Google no artigo de referência se manti-
veram coerentes com os resultados atingidos. O melhor resultado com a métrica de
acurácia foi o Stacked RNN, que com o mesmo número de dimensões, obteve um re-
sultado de 87,37%, comparado aos 85,6% do RNN e aos 84,4% do SepCNN. Porém,
ao se observar o tempo de treinamento dos modelos, percebe-se que, utilizando o
mesmo número de epochs, o SepCNN tem o melhor custo/benefício, terminando seu
treinamento com apenas 12 minutos e 8 segundos, tempo consideravelmente menor
do que os modelos que utilizam RNN, que, executados nas mesmas condições, le-
varam pelo menos de 3 horas e 30 minutos para terminarem seus treinamentos. Os
valores de acurácia e tempo dos classificadores estão descrito na tabela 8.1, sendo
que os modelos de word embeddings listados utilizam palavras com 50 dimensões.
TAB. 8.1: Comparação entre os classificadores
Classificador Acurácia Tempo de treinamentoNB 0.79287 -//-
SVM 0.77368 -//-NN Simples 0.7377 04m02s
SepCNN 0.8444 12m08sRNN 0.8560 03h31m03s
StackedRNN 0.8737 06h23m15s
Outro produto relevante deste trabalho foi a ferramenta de aplicação de mode-
los de classificação que se mostra modular o suficiente para ser aplicada a diversos
contextos distintos, não se restringindo às questões utilizadas neste artigo.
Dentre os possíveis próximos trabalhos, encontram-se a continuação da ferra-
menta de testes de modelos utilizando integração contínua e automação de infra-
estrutura para tornar o processo de testes mais rápido, de modo que novos mo-
delos poderão ser testados sem preocupação de configuração de máquinas, e que
possuam um custo menor. Este tipo de implementação também possibilitaria a
expansão do número de dimensões dos modelos, podendo chegar ao uso de 1000
dimensões.
Para que a classificação tenha uso prático, é necessário que ela seja capaz de
distinguir além dos temas das questões, seus subtemas, de modo a categorizar
49
ainda mais o banco de questões. Além disso, a expansão dos modelos para outros
tipos de questões diferentes do conjunto de treinamento como, por exemplo, ques-
tões de vestibulares ou exames de periódicos de escolas e este caso fica como uma
sugestão de trabalho futuro.
50
9 REFERÊNCIAS BIBLIOGRÁFICAS
CHOLLET, F. Xception: Deep learning with depthwise separa-
ble convolutions. CoRR, v. abs/1610.02357, 2016. Disponível em:
<http://arxiv.org/abs/1610.02357>. Acesso em: 15 de setembro de 2018.
CHRISTOPHER D. MANNING, P. R.; SCHÜTZE, H. An Introduction to Informa-
tion Retrieval. Draft. ed. Cambridge, England: Cambridge University Press,
2009. 544 p.
CHRISTOPHER D. MANNING, P. R.; SCHÜTZE, H. Scoring, term weighting and the
vector space model. In: . An Introduction to Information Retrieval.
Cambridge, England: Cambridge University Press, 2009. p. 109–133.
GOOGLE-DEVELOPERS. Machine Learning Guides: Text classification.
Disponível em: <https://developers.google.com/machine-learning/guides/text-
classification/>. Acesso em: 28 de Julho de 2018.
GOOGLE-TENSORFLOW. Vector Representations of Words. Disponível em:
<https://www.tensorflow.org/tutorials/representation/word2vec>. Acesso em:
15 de Agosto de 2018.
HARTMANN, N.; FONSECA, E. R.; SHULBY, C.; TREVISO, M. V.; RODRIGUES, J. ;
ALUÍSIO, S. M. Portuguese word embeddings: Evaluating on word analogies
and natural language tasks. CoRR, v. abs/1708.06025, 2017. Disponível em:
<http://arxiv.org/abs/1708.06025>. Acesso em: 16 de agosto de 2018.
HORNIK, K. Approximation capabilities of multilayer feedforward networks.
Neural Networks, v. 4, n. 2, p. 251 – 257, 1991. Disponível
em: <http://www.sciencedirect.com/science/article/pii/089360809190009T>.
Acesso em: 12 de maio de 2018.
HUYCK, C.; ORENGO, V. A stemming algorithmm for the portuguese language.
In: STRING PROCESSING AND INFORMATION RETRIEVAL, INTERNATIONAL
SYMPOSIUM ON(SPIRE), 8ª., 2001. Anais... [S.l.: s.n.], 2001. Disponível em:
<doi.ieeecomputersociety.org/10.1109/SPIRE.2001.10024>. Acesso em: 14 de
julho de 2018.
51
JOACHIMS, T. Text categorization with support vector machines: Learning
with many relevant features. In: MACHINE LEARNING: ECML-98, 1ª., 1998.
Anais... Berlin, Heidelberg: Springer Berlin Heidelberg, 1998, p. 137–142.
Acesso em: 17 de julho de 2018.
LECUN, Y.; HAFFNER, P.; BOTTOU, L. ; BENGIO, Y. Object recognition with
gradient-based learning. In: . Shape, Contour and Grouping in Com-
puter Vision. Berlin, Heidelberg: Springer Berlin Heidelberg, 1999. p. 319–
345. ISBN 978-3-540-46805-9.
MCCALLUM, A.; NIGAM, K. A Comparison of Event Models for Naive Bayes
Text Classification. Pittsburgh: Carnegie Mellon University, 1998. 8 p. (Rela-
tório Técnico).
MIKOLOV, T.; SUTSKEVER, I.; CHEN, K.; CORRADO, G. ; DEAN, J. Distribu-
ted representations of words and phrases and their compositionality. CoRR, v.
abs/1310.4546, 2013. Disponível em: <http://arxiv.org/abs/1310.4546>. Acesso
em: 1º de maio de 2018.
CHRISTOPHER OLAH. Understanding LSTM Networks. Disponível em:
<http://colah.github.io/posts/2015-08-Understanding-LSTMs/>. Acesso em: 12
de maio de 2018.
JEFFREY PENNINGTON AND RICHARD SOCHER AND CHRISTOPHER D. MAN-
NING. GloVe: Global Vectors for Word Representation. Disponível em:
<http://www.aclweb.org/anthology/D14-1162>. Acesso em: 14 de julho de
2018.
RUDER, S. An overview of gradient descent optimization algorithms. CoRR,
v. abs/1609.04747, 2016. Disponível em: <http://arxiv.org/abs/1609.04747>.
Acesso em: 12 de maio de 2018.
RUMELHART, D. E.; HINTON, G. E. ; WILLIAMS, R. J. Learning representations
by back-propagating errors. Nature, v. 323, p. 533 EP –, 1986. Disponível em:
<http://dx.doi.org/10.1038/323533a0>. Acesso em: 12 de maio de 2018.
KILIAN WEINBERGER. Lecture 9: SVM. Disponível em:
<http://www.cs.cornell.edu/courses/cs4780/2017sp/lectures/lecturenote09.html>.
Acesso em: 16 de setembro de 2018.
52
10 APÊNDICES
53
APÊNDICE 1: LISTA DE CATEGORIAS DE QUESTÕES
• Administração
• Administração Financeira e Orça-
mentária - AFO
• Administração Pública
• Agricultura/Agropecuária
• Agronomia (Ver na matéria Enge-
nharia Agronômica)
• Antropologia
• Arqueologia
• Arquitetura
• Arquivologia
• Artes
• Atualidades e Conhecimentos Ge-
rais
• Atuária / Matemática Atuária
• Auditoria
• Biblioteconomia
• Biologia
• Ciência Política
• Ciência da Computação
• Comunicação Social
• Comércio Internacional
• Conhecimentos Bancários
• Contabilidade - Analise das De-
monstrações Contábeis / Análise de
Balanço
• Contabilidade Privada
• Contabilidade Pública
• Contabilidade de Custos
• Controle Externo - CEX
• Criminologia
• Dança
• Desenho Industrial
• Direito Administrativo
• Direito Ambiental
• Direito Civil
• Direito Comercial / Empresarial
• Direito Constitucional
• Direito Eleitoral
• Direito Financeiro
• Direito Internacional
• Direito Penal
54
• Direito Penal Militar / Direito Pro-
cesual Penal Militar
• Direito Previdenciário
• Direito Procesual Civil
• Direito Procesual Penal
• Direito Procesual Tributário
• Direito Procesual do Trabalho
• Direito Securitário
• Direito Trabalho
• Direito Tributário
• Direito do Consumidor
• Direitos Humanos
• Economia
• Educação Física
• Enfermagem
• Engenharia (Teoria Geral)
• Engenharia Aeronáutica
• Engenharia Agronômica
• Engenharia Ambiental
• Engenharia Cartográfica e de Agri-
mensura
• Engenharia Civil
• Engenharia Eletrônica
• Engenharia Elétrica
• Engenharia Espacial
• Engenharia Florestal
• Engenharia Física
• Engenharia Hospitalar/Clínica
• Engenharia Industrial
• Engenharia Mecatrônica
• Engenharia Mecânica
• Engenharia Naval
• Engenharia Nuclear
• Engenharia Portuária
• Engenharia Química
• Engenharia Sanitária
• Engenharia de Alimentos
• Engenharia de Avaliações
• Engenharia de Materiais
• Engenharia de Pesca
• Engenharia de Produção e Egenha-
ria Industrial
• Engenharia de Qualidade
• Engenharia de Recursos Hídri-
cos/Hidráulica
• Engenharia de Redes
• Engenharia de Telecomunicações
• Engenharia de Transporte
55
• Engenharia de Tráfego
• Estatística
• Farmácia
• Filosofia
• Filosofia do Direito
• Finanças
• Finanças Públicas
• Fisioterapia
• Física
• Geografia
• Geologia
• História
• Informática Básica / Microinformá-
tica
• Legislação Estadual, Distrital e
Municipal
• Legislação Federal
• Legislação dos Órgãos Federais,
Estaduais, Distritais e Municipais e
dos Órgãos Internacionais
• Legislação: decretos
• Lei de Responsabilidade Fiscal -
LRF
• Língua Espanhola
• Língua Francesa
• Língua Inglesa
• Língua Portuguesa
• Línguas Outras
• Matemática
• Matemática Financeira
• Medicina
• Meio Ambiente
• Música
• Nutrição
• Oceanografia
• Odontologia
• Pedagogia
• Política Internacional
• Psicologia
• Qualidade no Atendimento
• Química
• Raciocínio lógico
• Relações Humanas
• Relações Internacionais
• Relações Públicas
• Religiões
• Secretariado Executivo
• Segurança e Saúde no Trabalho
(Teoria e Normas)
• Seguros e Reseguros
56
• Serviço Social
• Sociologia
• Terapia Ocupacional
• Trânsito e Serviço de Transporte
• Turismo
• Veterinária
• Vigilância Sanitária / Política de
Saúde / Serviço Único de Saúde -
SUS / Gestão em Saúde
• Ética
57
APÊNDICE 2: DICIONÁRIO JSON PARA AGRUPAMENTO DE CATEGORIAS
1 {
2 "Contabilidade":[
3 "Contabilidade - Analise das Demonstracoes Contabeis / Analise
de Balanco",
4 "Contabilidade Privada",
5 "Contabilidade Publica",
6 "Contabilidade de Custos"
7 ],
8 "Direito":[
9 "Direito Administrativo",
10 "Direito Ambiental",
11 "Direito Civil",
12 "Direito Comercial / Empresarial",
13 "Direito Constitucional",
14 "Direito Eleitoral",
15 "Direito Financeiro",
16 "Direito Internacional",
17 "Direito Penal",
18 "Direito Penal Militar / Direito Processual Penal Militar",
19 "Direito Previdenciario",
20 "Direito Processual Civil",
21 "Direito Processual Penal",
22 "Direito Processual Tributario",
23 "Direito Processual do Trabalho",
24 "Direito Securitario",
25 "Direito Trabalho",
26 "Direito Tributario",
27 "Direito do Consumidor",
28 "Direitos Humanos"
29 ],
58
30 "Legislacao":[
31 "Legislacao Estadual, Distrital e Municipal",
32 "Legislacao Federal",
33 "Legislacao dos Orgaos Federais, Estaduais, Distritais e
Municipais e dos orgaos Internacionais",
34 "Legislacao: decretos"
35 ],
36 "Engenharia Agronomica":[
37 "Agronomia (Ver na materia Engenharia Agronomica)"
38 ],
39 "Financas":[
40 "Matematica Financeira",
41 "Financas",
42 "Financas Publicas"
43 ]
44 }
59
APÊNDICE 3: LISTA DE STOPWORDS
• de
• a
• o
• que
• e
• do
• da
• em
• um
• para
• com
• não
• uma
• os
• no
• se
• na
• por
• mais
• as
• dos
• como
• mas
• ao
• ele
• das
• à
• seu
• sua
• ou
• quando
• muito
• nos
• já
• eu
• também
• só
• pelo
• pela
• até
• isso
• ela
• entre
• depois
• sem
• mesmo
• aos
• seus
• quem
• nas
• me
• esse
• eles
• você
• essa
• num
• nem
• suas
• meu
• às
60
• minha
• numa
• pelos
• elas
• qual
• nós
• lhe
• deles
• essas
• esses
• pelas
• este
• dele
• tu
• te
• vocês
• vos
• lhes
• meus
• minhas
• teu
• tua
• teus
• tuas
• nosso
• nossa
• nossos
• nossas
• dela
• delas
• esta
• estes
• estas
• aquele
• aquela
• aqueles
• aquelas
• isto
• aquilo
• estou
• está
• estamos
• estão
• estive
• esteve
• estivemos
• estiveram
• estava
• estávamos
• estavam
• estivera
• estivéramos
• esteja
• estejamos
• estejam
• estivesse
• estivéssemos
• estivessem
• estiver
• estivermos
• estiverem
• hei
• há
• havemos
• hão
• houve
• houvemos
• houveram
• houvera
• houvéramos
• haja
• hajamos
• hajam
61
• houvesse
• houvéssemos
• houvessem
• houver
• houvermos
• houverem
• houverei
• houverá
• houveremos
• houverão
• houveria
• houveríamos
• houveriam
• sou
• somos
• são
• era
• éramos
• eram
• fui
• foi
• fomos
• foram
• fora
• fôramos
• seja
• sejamos
• sejam
• fosse
• fôssemos
• fossem
• for
• formos
• forem
• serei
• será
• seremos
• serão
• seria
• seríamos
• seriam
• tenho
• tem
• temos
• tém
• tinha
• tínhamos
• tinham
• tive
• teve
• tivemos
• tiveram
• tivera
• tivéramos
• tenha
• tenhamos
• tenham
• tivesse
• tivéssemos
• tivessem
• tiver
• tivermos
• tiverem
• terei
• terá
• teremos
• terão
• teria
• teríamos
• teriam
62
Recommended