tcc-latex/tcc.tex

970 lines
97 KiB
TeX
Raw Normal View History

2017-11-05 03:52:51 +00:00
\input{tcc_begin}
2017-11-05 03:31:10 +00:00
2017-11-05 03:52:51 +00:00
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2017-11-05 03:31:10 +00:00
2017-11-05 03:52:51 +00:00
\chapter{Introdução}
\label{cha:intro}
2017-11-05 03:31:10 +00:00
2018-02-19 16:36:46 +00:00
Neste capítulo, será apresentado uma breve contextualização do tema e a motivação deste trabalho (seção \ref{sec:intro:motiv}), seguido da justificativa, a qual explicita a lacuna que este trabalho busca solucionar (seção \ref{jus}), e depois pelos objetivos gerais e específicos deste trabalho (seção \ref{sec:obj}), que buscam preencher a lacuna explicitada, e, por fim, uma breve descrição da organização dos capítulos seguintes (seção \ref{txtorg}).
2017-11-05 03:52:51 +00:00
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2017-11-05 03:31:10 +00:00
2017-11-05 03:52:51 +00:00
\section{Motivação}
2018-02-08 01:17:01 +00:00
\label{sec:intro:motiv}
2017-11-05 03:31:10 +00:00
2018-01-24 12:20:52 +00:00
O domínio do idioma que fala é competência necessária para qualquer indivíduo que queira exercer sua cidadania plena, onde termos específicos variam de acordo com a atividade profissional desempenhada.
2017-11-05 03:52:51 +00:00
%
Por exemplo, pessoas que exerçam atividades no ramo jurídico utilizam termos específicos do direito no seu dia a dia profissional, tais quais \textit{habeas corpus}, abroquelar, cártula chéquica, areópago, fulcro e estipêndo funcional; no ramo médico, os termos poderiam ser incisão, febrífugo, benigno, ejunorrafia ou abdução.
%
2018-02-07 17:48:22 +00:00
Assim como \aspas{CSRF}, para um contador, é sigla para Contribuições Sociais Retidas na Fonte; para um desenvolvedor, é sigla para \textit{Cross-Site Request Forgery}, um tipo de fraude que algumas aplicações web são vulneráveis.
%
2017-11-05 03:52:51 +00:00
De modo semelhante, o ensino de uma língua estrangeira depende do aprendizado de novas palavras com novos significados.
%
A aquisição de um repertório do idioma ou do dialeto a ser utilizado é necessário para o correto uso deste no dia-a-dia, entendendo e fazendo ser entendido por seus interlocutores.
2017-11-05 03:31:10 +00:00
2017-11-05 03:52:51 +00:00
Para auxiliar a aprendizagem de uma língua estrangeira \cite{anthony2013critical, oliveira2009linguistica}\apud{granger1998tag}{sardinha2000linguistica} ou do idioma para fins específicos \cite{oliveira2009linguistica} como no cotidiano profissional, a análise de corpus de textos é uma técnica que pode ser utilizada.
%
Segundo \citeauthoronline{sardinha2000linguistica}, um desses trabalhos do século XX foi o de Thorndike, publicado em 1921, que identificou as palavras mais frequentes de língua inglesa e \aspas{[...] impulsionou mudanças no ensino de língua materna e estrangeira, tanto nos Estados Unidos quanto na Europa [...]} (p. 236), onde \aspas{durante boa parte do século XX [...] muitos pesquisadores [...] se dedicaram à descrição da linguagem por meio de corpora, [...] [que] eram coletados, mantidos e analisados manualmente [...]} (p. 235).
%
Entretanto, no século XX, a velocidade e os custos de propagação da informação ainda eram elevados.
2017-11-05 03:31:10 +00:00
2018-02-07 17:48:22 +00:00
Com o desenvolvimento tecnológico das telecomunicações, os custos de acesso à informação reduziram, o tempo até obtenção da informação reduziu a frações de segundo e possibilitou que o tráfego da informação também aumentasse em volume.
%
Uma dessas tecnologias de telecomunicações é a internet, que possibilita que repositórios de conhecimento, plataformas de entretenimento e aplicações de interação social coexistam e apresentem funcionalidades em tempo-real, caso programadas para tal.
2017-11-05 03:52:51 +00:00
%
2018-02-07 17:48:22 +00:00
De acordo com uma pesquisa do \citet{cetic2016pesquisa}, 51\% do total de domicílios possuem acesso à internet, 86\% dos alunos acessaram a internet ao menos uma vez no último trimestre à pesquisa e 95\% dos professores possuíam acesso à internet em casa.
2017-11-05 03:52:51 +00:00
%
Isso vem gerando uma crescente pervasividade da internet na vida das pessoas.
%
Por conta disso, a web é uma plataforma que possui o potencial de atingir um grande número de pessoas em território nacional.
2017-11-05 03:31:10 +00:00
2017-12-04 07:57:55 +00:00
2017-11-05 03:52:51 +00:00
%Com base nesse contexto, este trabalho propõe a criação de um sistema na nuvem, ou seja, na internet, para pesquisa e análise de coleções de textos com exemplos significativos de uso da língua portuguesa.
%
%Esta ferramenta será útil para auxiliar o estudo da língua como realmente é usada.
2017-11-05 03:31:10 +00:00
2017-11-05 03:52:51 +00:00
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2017-11-05 03:31:10 +00:00
2017-11-05 03:52:51 +00:00
\section{Justificativa}
\label{jus}
2017-11-05 03:31:10 +00:00
2018-02-19 16:36:46 +00:00
Atualmente, existem ferramentas capazes de processar corpora\footnote{Copora é o plural de corpus, que é um conjunto de textos relevante para estudar um determinado grupo de pessoas ou um ramo do conhecimento \cite{tagnin2010glossario}}, dentre elas pode-se destacar o Word Smith, o Unitex/GramLab e o Sketch Engine, que são voltadas ao pesquisador linguista enquanto usuário final.
2018-01-24 12:20:52 +00:00
%
2018-02-07 17:48:22 +00:00
Destes, apenas o segundo é distribuído gratuitamente com funcionalidade plena e apenas o terceiro possui uma interface \textit{web}; sendo nenhuma delas gratuita com funcionalidade plena e \textit{web} simultaneamente, como pode ser observado na tabela \ref{tab:compplnres}.
2018-01-24 12:20:52 +00:00
%
2018-02-19 16:36:46 +00:00
Dentre as ferramentas que processam a língua portuguesa, não há nenhuma plataforma que seja ao mesmo tempo gratuita em sua versão completa e cuja sua interface seja web, o que justifica a criação de outra com as características desejáveis (linha destacada da tabela \ref{tab:compplnres}).
2017-11-05 03:31:10 +00:00
2017-12-04 07:57:55 +00:00
\begin{table}[h]
2018-02-19 16:36:46 +00:00
\hspace*{0mm}\centerline{\includegraphics[width=\textwidth ,height=\textheight ,keepaspectratio]{tabela-comparacao-cs/model.pdf}}
2017-12-04 07:57:55 +00:00
\caption{Tabela comparativa resumida de softwares de Processamento de Linguagem Natural}
\fonte{O autor}
\label{tab:compplnres}
\end{table}
2017-11-05 03:31:10 +00:00
2017-11-05 03:52:51 +00:00
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2017-11-05 03:31:10 +00:00
2017-11-05 03:52:51 +00:00
\section{Objetivos}
2017-11-21 03:48:01 +00:00
\label{sec:obj}
2017-11-05 03:31:10 +00:00
2017-11-05 03:52:51 +00:00
\subsection{Geral}
\label{obj:ger}
2018-02-08 01:17:01 +00:00
Desenvolver uma aplicação \textit{web} de código aberto para marcação e busca de partes do discurso em corpora, visando ampliar as funcionalidades em relação a \textit{softwares} similares existentes enquanto se mantém amigável ao usuário.
2017-11-05 03:52:51 +00:00
\subsection{Específicos}
\label{obj:esp}
\begin{itemize}
\item Analisar comparativamente os recursos das ferramentas WordSmith, CorpusEye, COCA Online Corpus, Unitex/GramLab e Sketch Engine;
2018-02-07 17:48:22 +00:00
\item Desenvolver ou adaptar um módulo extrator de sentenças;
\item Desenvolver ou adaptar um módulo extrator de lista de palavras;
\item Desenvolver ou adaptar um módulo etiquetador de partes do discurso que atue sobre sentenças;
\item Desenvolver ou adaptar um módulo concordanciador\footnote{concordanciador é o \aspas{programa que extrai todas as ocorrências de uma palavra de busca num corpus juntamente com seu cotexto \omissis{}} \cite[p. 358]{tagnin2010glossario}.} que suporte busca por etiquetas;
2018-02-08 01:17:01 +00:00
\item Integrar os módulos desenvolvidos ou adptados numa aplicação \textit{web}.
2017-11-05 03:52:51 +00:00
\end{itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Organização do texto}
2018-02-19 16:36:46 +00:00
\label{txtorg}
No capítulo 2 será apresentado um histórico, os principais conceitos e alguns trabalhos relevantes da área de processamento da linguagem natural. No capítulo 3 será apresentado os materiais e os métodos utilizados para desenvolver este trabalho, bem como as decisões relevantes ao desenvolvimento do projeto. No capítulo 4 será apresentado e discutido os resultados obtidos. No capítulo 5 será apresentado a conclusão, as contribuições deste trabalho e temas para trabalhos futuros.
2017-11-05 03:52:51 +00:00
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Referencial Teórico}
\label{cha:ref}
Neste capítulo, são apresentados os conceitos relativos a processamento de linguagem natural, numa revisão histórica da área e seu progresso, e o atual estado da arte com seus requisitos para o progresso.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Revisão histórica}
% Revisão da literatura::Revisão histórica da área
% Revisão da literatura::Progresso na área
%
A linguística de corpus, segundo \citet{sardinha2000linguistica}, já existe desde a Antiguidade, citando o Corpus Helenístico de Alexandre, O Grande e os corpora de citações da bíblia produzidos durante a Antiguidade e a Idade Média, sendo seus processos de obtenção e análise tarefas que não dependem dum computador para serem executadas. Um corpus é uma \aspas{coletânea de textos [...] compilados segundo critérios específicos para o estudo a que se propõem} \cite[p. 358]{tagnin2010glossario}, e estes buscam representar a linguagem \cite{cambria2014jumping}, ou uma variante desta \cite{sardinha2000linguistica}, podendo ser usada como forma de obtenção de informações nas mensagens nela codificados. \citet{sardinha2000linguistica} evidencia que \aspas{durante boa parte do século XX [...] os corpora [...] eram coletados, mantidos e analisados manualmente [...]} (p. 235), o que mudou com a invenção do computador, que se popularizou na década de 1960.
2018-02-19 16:36:46 +00:00
Ainda enquanto trabalho manual, é possível citar o trabalho de contagem de 4,5 milhões de palavras realizada manualmente por Thorndike \cite{sardinha2000linguistica}, cujo produto foi uma lista de frequência de palavras. Uma das possíveis aplicações da linguística é extrair palavras-chave, esta que \citet{tagnin2010glossario} define como sendo \aspas{resultados da comparação entre o corpus de estudo e um corpus de referência} (p. 359), sendo um processo baseado em contagem, o qual \aspas{elimina palavras com frequência relativa similar nos dois corpora de modo que restem as palavras cuja frequência é estatisticamente significativa} (p. 359), podendo as frequências ter sido calculadas computacionalmente ou manualmente. \citet{cambria2014jumping} ressaltam que processos de obtenção automática de palavras-chave buscam apenas na \aspas{superfície} do texto, exemplificando que um texto sobre cães pode apenas mencionar as diversas raças, não sendo recuperado caso indexado por suas palavras-chave.
2017-11-05 03:52:51 +00:00
Em fevereiro de 1957 foi publicada a obra \textit{Syntactic Structures} de Noam Chomsky, que, de acordo com \citet{sardinha2000linguistica}, mudou o paradigma de abordagem na linguística, saindo o empirismo e entrando o racionalismo; ou seja, a análise de volumosos corpora de textos, que é sujeito à inúmeras falhas, deu lugar a \aspas{[...] teorias racionalistas da linguagem [...], notadamente a lingüística gerativa. [...]}\cite[pp. 236-237]{sardinha2000linguistica}. Esta abordagem se popularizou principalmente no início da década de 1960, quando o computador se popularizou.
Com a popularização do computador, representar computacionalmente a linguagem foi necessária, e uma abordagem de representação computacional da linguagem é modela-la como uma gramática gerativa de Chomsky \cite{chaves2014sistema, cambria2014jumping}. Um dos desafios encontrados foi resolver ambiguidades, que foi solucionado através Autômatos finitos com transições ponderadas visam resolver tal problema ao representar cada palavra em sua possível função atribuindo pesos nas transições, formando assim um modelo probabilístico para etiquetagem do texto \cite{vieira2001linguistica, thiele2015desambiguaccao}; entretanto, nem toda palavra representa uma entidade por si só. Entidades Nomeadas são referências de mais de uma palavra que referenciam uma única entidade \apud[]{nadeau2007survey}{bruckschen2010reconhecimento}. Segundo \citet{aranha2006tecnologia}, o reconhecimento destas no texto se dá através de perguntas como \aspas{Quem, Quando, Como, Onde} (p. 6). \citet{bruckschen2010reconhecimento} menciona referências a datas, números e unidades monetárias como itens do texto comumente inclusas como entidades nomeadas, sendo que \citet{aranha2006tecnologia} também inclui siglas. A união da identificação prévia de entidades nomeadas à representação das sentenças como autômatos foi uma abordagem de solução deste problema.
2017-11-05 03:31:10 +00:00
2017-11-05 03:52:51 +00:00
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2017-11-05 03:31:10 +00:00
2017-11-05 03:52:51 +00:00
\section{Estado da arte}
% Revisão da literatura::Estado da arte
% Revisão da literatura::Revisão de resultados relevantes
% Revisão da literatura::Requisitos para o progresso na área [talvez seja melhor ignorar este]
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2018-02-08 01:17:01 +00:00
Nesta seção serão abordados o estado da arte do processamento automático de corpora, indicando como os problemas do passado são resolvidos atualmente. Primeiramente será abordado os que os gerenciadores de corpus modernos armazenam sobre seus documentos na seção \ref{ea:gc}, em seguida será abordado uma classe de etiquetadores, os etiquetadores morfossintáticos, que podem ser relevantes se aplicados sobre os corpora para uma compreensão inicial da estrutura do idioma em estudo, na seção \ref{ea:em}.
\subsection{Gerenciadores de corpora}
\label{ea:gc}
De acordo com \apudonline[p. 49]{biber1995dimensions}{oliveira2009linguistica}, \aspas{um corpus linguístico de base computacional corresponde a coleções de textos que ocorrem naturalmente na língua, organizadas sistematicamente para representar áreas de uso da língua, e das quais podemos extrair novas informações}. Tal organização pode seguir critérios diversos, mas é esperado que estes estejam anotados no texto. \citet{aluisio2006constroi} menciona a ferramenta \textit{Lácio-Ref}, a qual visa fornecer metadados para os textos, para estes serem futuramente processados. Tais metadados são: título, subtítulo, língua, fonte, editor, local de publicação, comentários, nome do(s) autor(es), sexo do(s) autor(es), gênero e tipo textual \cite{aluisio2006constroi}. Outra ferramenta é o \textit{AntCorGen}, de \citet{anthony2017antcorgen}, a qual visa manter organizados corpus de texto através de categorias, subcategorias e seus metadados, tais quais: título, autor, seção \aspas{resumo}, seção \aspas{introdução}, seção \aspas{materiais e métodos}, seção \aspas{resultados e discussão}, seção \aspas{conclusões}, seção \aspas{referências}, afiliações do autor e legendas de figuras e tabelas. Os metadados mencionados ajudam a descrever o contexto ao qual texto está inserido.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2017-11-05 03:52:51 +00:00
\subsection{Etiquetadores morfossintáticos}
\label{ea:em}
O atual estado da arte para etiquetadores morfossintáticos da língua portuguesa, por \citet{silva2014indexacao}, é o PALAVRAS, de \citeauthoronline{bick2000parsing}. É uma gramática de restrições que, carregada no software CG-3, realiza o etiquetamento automático de textos. Possui uma taxa de acerto de 94\% em relação aos seus próprios resultados, e 86,5\% se comparado a uma extração manual \cite[p. 169]{silva2014indexacao}. O etiquetador CG-3 é mantido como software livre e distribuído pelo projeto de pesquisa e desenvolvimento \textit{Visual Interactive Syntax Learning} (VISL) do Instituto de Línguas e Comunicação (ISK) da Universidade do Sul da Dinamarca (SDU), já a gramática é paga.
2018-02-08 01:17:01 +00:00
Dentre os etiquetadores morfossintáticos gratuitos, o estado da arte, de acordo com \citet{silva2014indexacao}, é o LX-Parser. Possui uma taxa de acerto de 75\% em relação aos seus próprios resultados, e 97,5\% se comparado a uma extração manual \cite[p. 170]{silva2014indexacao}. Apesar de gratuito, sua licença é de redação própria \cite{lxparserlicense} e em sua cláusula 6 proíbe a distribuição e comercialização de produtos ou serviços derivados, já em sua cláusula 7, veta a disponibilização da ferramenta por outros meios e a cláusula 9 veta o acesso de outros \textit{sites} à ferramenta; portanto, a licença da ferramenta permite apenas a descarga e execução local da mesma.
2017-11-05 03:52:51 +00:00
Outro projeto é o Unitex/GramLab, onde sua versão em português brasileiro foi primeiramente apresentada por \citeauthoronline{muniz2005unitex} em \citeyear{muniz2005unitex}. Consiste de uma interface gráfica em Java que faz chamadas a bibliotecas e utilitários de linha de comando compilados de códigos em C++. A licença do software é a \textit{Lesser General Public License} versão 2.1 \cite{lgplv21}, já seus recursos linguísticos estão sob a \textit{Lesser General Public License For Linguistic Resources} \cite{lgpllr}, ambas licenças livres. O pacote redistribuível padrão já fornece ferramentas e dados complementares necessários para etiquetar um texto de entrada arbitrário. Outros recursos da mesma plataforma são busca por autômato, busca por expressão regular, representação do texto como autômato, inferência de entidades nomeadas e aplicação de transdutores \cite{paumier2016user}.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2017-11-05 03:31:10 +00:00
2017-11-05 03:52:51 +00:00
% \centerline{\fbox{\includegraphics[width=0.8\linewidth]{mapaConc/pd1-conceitosMaisRelevantesAoTema.pdf}}}
% \centerline{\fbox{\includegraphics[width=0.8\linewidth]{mapaConc/pd1-referencialTeorico.pdf}}}
%
% ---
% \hline
%
\section{Trabalhos Correlatos}
2018-02-19 16:36:46 +00:00
Nesta seção serão apresentados alguns trabalhos considerados similares a este ou cujo produto pôde ser usado neste (fazendo deste trabalho uma continuação do anterior), estando o de \citeonline{silva2014indexacao} na subseção \ref{ssec:rt:tc:silva2014}, o de \citeonline{chaves2014sistema} na subseção \ref{ssec:rt:tc:chaves2014}, o de \citeonline{bick2000parsing} na subseção \ref{ssec:rt:tc:bick2000}, o da \citeonline{sitefloresta2010home} na subseção \ref{sec:refteo:floresta} e o da \citeonline{aires2000implementacao} na subseção \ref{sec:refteo:aires}.
2017-11-05 03:52:51 +00:00
\subsection{Indexação automática por meio da extração e seleção de sintagmas nominais em textos em língua portuguesa}
2018-02-19 16:36:46 +00:00
\label{ssec:rt:tc:silva2014}
2017-11-05 03:52:51 +00:00
Diferentemente da língua inglesa, segundo \citet{silva2014indexacao} (p. 155) \aspas{pesquisas [...] em língua portuguesa ainda não atingiram um grau de amadurecimento elevado [...] pois elas não alcançam uma taxa de precisão elevada para todos os tipos de corpus.} Dada a escassez de ferramentas eficazes para processamento da língua portuguesa, o referido autor comparou três etiquetadores morfossintáticos (OGMA, PALAVRAS e LX-PARSER), e constatou que cada um possui suas peculiaridades de modo a existir situações onde alguns se destacam e outras onde apresentam dificuldades. Tais ferrametas comparadas eram as principais ferramentas existentes até 2014.
2017-11-05 03:31:10 +00:00
2017-11-05 03:52:51 +00:00
\subsection{Sistema identificador de sintagmas verbais do PB}
2018-02-19 16:36:46 +00:00
\label{ssec:rt:tc:chaves2014}
2017-11-05 03:31:10 +00:00
2017-11-05 03:52:51 +00:00
A língua portuguesa possui sintagmas nominais, verbais, adjetivais e preposicionados \cite{gagnon2000processamento}. Os verbais podem ser analisados conforme proposto por \citet{chaves2014sistema}, onde propõem a utilização do \aspas{[...] formalismo da gramática livre de contexto [...], comumente utilizado na linguística computacional para a implementação de protótipos capazes de modelar a estrutura sintagmática de uma língua natural}, sendo definido pelos próprios autores como \aspas{um protótipo com resultados interessantes} que carece na quantidade de estruturas cobertas pela gramática definida e na necessidade de melhorar a taxa de acerto na etiquetagem dos textos - sem citar valores numéricos. Tal trabalho fornece uma ferramenta para obtenção automática da análise sintagmática, mas que necessita de aprimoramentos e quantificações numéricas quanto sua eficácia.
2017-11-05 03:31:10 +00:00
2018-01-24 12:20:52 +00:00
\subsection{O sistema de análise \aspas{PALAVRAS}: Análise Gramatical Automática do Português em uma framework de gramática de restrição}
2018-02-19 16:36:46 +00:00
\label{ssec:rt:tc:bick2000}
2017-11-05 03:31:10 +00:00
2017-11-05 03:52:51 +00:00
Com uma taxa de acerto na ordem de 99\% para morfologia e entre 96\% e 97\% para sintaxe para processamento de texto livre, uma das adaptações necessárias por Bick no modelo da língua inglesa para operar para a língua portuguesa foi \cite[p. 438]{bick2000parsing} a \aspas{introdução de marcadores de dependência a nível de cláusula [...] e a introdução de funções de marcação de subcláusula para subcláusulas finitas e não-finitas}, onde algumas descobertas para a língua inglesa apresentaram se manter para a língua portuguesa, tais como: milhares de regras são necessárias para cada nível adicional de análise, que as sentenças que excluem significado são mais frequentes que as que buscam e que a determinação do contexto concentra-se mais à esquerda da sentença. Tal tese explicita as principais diferenças entre o processamento sintagmático dos idiomas português e inglês, bem como suas diferenças e adaptações necessárias para se adequar ao idioma e ainda assim manter uma alta taxa de acerto.
2017-11-05 03:31:10 +00:00
2017-11-05 03:52:51 +00:00
% Uma união das abordagens listadas por \citeauthoronline{silva2014indexacao} e das desenvolvidas por \citeauthoronline{bick2000parsing}, \citeauthoronline{chaves2014sistema}, a fim de obter resultados mais precisos, será utilizada neste trabalho.
2017-11-05 03:31:10 +00:00
2017-12-04 07:57:55 +00:00
\subsection{Floresta Sintáctica}
2018-02-07 17:48:22 +00:00
\label{sec:refteo:floresta}
2017-12-04 07:57:55 +00:00
2018-02-19 16:36:46 +00:00
O projeto Floresta Sintáctica se define como \aspas{\omissis{} um \aspas{treebank} para a língua portuguesa, ou seja, um conjunto de itens sintacticamente analisados e publicamente disponível \omissis{}}, sendo \aspas{\omissis{} um projecto de colaboração entre a Linguateca e o projecto VISL, com textos portugueses e brasileiros, anotados automaticamente pelo PALAVRAS \cite{bick2000parsing} e revistos por linguistas} \cite{sitefloresta2010home}. A tabela \ref{tab:matflosint} traz o material disponibilizado pelo projeto Floresta Sintáctica. Tal projeto é relevante para este trabalho enquanto provedor de recursos linguísticos anotados, mas sua licença de uso não é explicitada exceto pela base de dados denominada \aspas{Amazônia}, que é distribuída sob a licença \aspas{CC BY-NC-SA 3.0 BR} \cite{sitefloresta2016levantamento}.
2018-01-24 12:20:52 +00:00
\begin{table}[h]
\hspace*{0mm}\centerline{\includegraphics[width=0.9\textwidth,height=0.9\textheight,keepaspectratio]{tabela-fs-mat/model.pdf}}
\caption{O material usado no projeto Floresta Sintáctica}
\fonte{\citeonline{sitelinguateca2009floresta}}
\label{tab:matflosint}
\end{table}
2017-12-04 07:57:55 +00:00
2018-02-07 17:48:22 +00:00
\subsection{Implementação, adaptação, combinação e avaliação de etiquetadores para o português do Brasil}
\label{sec:refteo:aires}
2017-12-04 07:57:55 +00:00
2018-02-19 16:36:46 +00:00
O \citeonline{nilc2012nilctaggers} da Universidade de São Paulo mantém público desde novembro de 2000 um corpus anotado com 51 etiquetas (sendo 15 delas de pontuação) em 103674 palavras divididos ao longo de 4726 sentenças, além dos arquivos de treino para uso nos etiquetadores \textit{MXPOST}, \textit{TreeTagger} e \textit{Brill Tagger}. Tais recursos (exceto os três últimos etiquetadores) são produtos da dissertação de \citeonline{aires2000implementacao}, a qual contempla uma comparação de precisão entre os diferentes etiquetadores analisados (vide tabela \ref{tab:airescomp}).
2018-02-07 17:48:22 +00:00
\begin{table}
\begin{center}
\begin{tabular}{c|c}
\hline
Etiquetador & Precisão \\
\hline
\hline
MXPOST & $89,66\%$ \\
\hline
Brill Tagger & $88.76\%$ \\
\hline
Tree Tagger & $88.47\%$ \\
\hline
\end{tabular}
\end{center}
\caption[Comparação da precisão entre três etiquetadores]{Comparação da precisão entre os etiquetadores \textit{MXPOST}, \textit{Brill Tagger} e \textit{Tree Tagger}}
\fonte{\citeonline[p. 82]{aires2000implementacao}}
\label{tab:airescomp}
\end{table}
%\subsection{Mac-Morpho}
%O projeto Mac-Morpho se auto-denomina como \aspas{\omissis{} um corpus de textos do português brasileiro anotados com etiquetas de partes do discurso \omissis{}} (NILC, \citeyear{nilc2016macmorpho}). Tal projeto disponibiliza sob a licença \aspas{Creative Commons Attribution 4.0 International} (NILC, \citeyear{nilc2016macmorpho}) todos os recursos linguísticos oferecidos, que é composto de um corpus anotado revisado manualmente e os arquivos treinados dos etiquetadores: \textit{MXPOST}, \textit{TreeTagger} e \textit{Brill Tagger} (NILC, \citeyear{nilc2012nilctaggers}).
2017-11-05 03:31:10 +00:00
2017-11-05 03:52:51 +00:00
\section{Conceitos relevantes}
2018-02-08 01:17:01 +00:00
Nesta seção serão apresentados conceitos relevantes ao trabalho, sendo eles o processamento automático da linguagem natural, a linguística de corpus, algumas das métricas usadas para medir o desempenho de classificadores binários e o que são aplicações de internet.
2017-11-05 03:31:10 +00:00
2018-02-08 01:17:01 +00:00
\subsection{Processamento automático da linguagem natural}
2018-02-19 16:36:46 +00:00
Segundo \citet{sardinha2000linguistica}, \aspas{[...] O Processamento [automático] de Linguagem Natural é uma disciplina com laços fortes com a Ciência da Computação e, embora compartilhe vários temas com a Lingüística de Corpus, as duas mantêm-se independentes.} (p. 328). Já de acordo com \citeonline[p. 55]{oliveira2009linguistica}, programas de processamento de linguagem natural são \aspas{[...] programas capazes de interpretar e/ou gerar informações em linguagem natural [...]}, onde (p. 55) \aspas{[...] a Linguística Computacional utiliza os corpora para poder ter acesso ao material que necessita estudar, ou seja, grande quantidade de textos que ocorrem naturalmente na língua.} \apudonline[p. 158]{trask2004dicionario}{aluisio2006constroi}, por sua vez, defende que \aspas{a partir de corpora, podem-se fazer observações precisas sobre o real comportamento lingüístico de falantes reais, proporcionando informações altamente confiáveis e isentas de opiniões e de julgamentos prévios sobre os fatos de uma língua}, onde tais observações seriam feitas com auxílio do resultado do processamento de um programa que processa os corpora, que por sua vez está codificado em linguagem natural. De todos estes autores, é possível concluir que o processamento automático da linguagem natural é o tratamento computacional de estruturas textuais que se repetem, por meio da detecção automática dos padrões dessas estruturas na língua falada e estrita de uma área do conhecimento de interesse a partir de registros relevantes e confiáveis do uso desta.
2017-11-05 03:31:10 +00:00
2017-11-05 03:52:51 +00:00
\subsection{Linguística de corpus}
2017-11-05 03:31:10 +00:00
2017-11-05 03:52:51 +00:00
Um corpus, na perspectiva da Linguística de Corpus, pode ser definido como:
2017-11-05 03:31:10 +00:00
2017-12-04 01:28:43 +00:00
\begin{citacao}
\omissis{} um conjunto finito de enunciados tomados como objeto de análise. Mais precisamente, conjunto finito de enunciados considerados característicos do tipo de língua a estudar, reunidos para servirem de base à descrição e, eventualmente, à elaboração de um modelo explicativo dessa língua. Trata-se, pois, de uma colecção de documentos quer orais (gravados ou transcritos) quer escritos, quer orais e escritos, de acordo com o tipo de investigação pretendido. As dimensões do corpus variam segundo os objectivos do investigador e o volume dos enunciados considerados como característicos do fenômeno a estudar. Um corpus é chamado exaustivo quando compreende todos os enunciados característicos. E é chamado selectivo quando compreende apenas uma parte desses enunciados. \apud{galisson1983dicionario}{aluisio2006constroi}
\end{citacao}
2017-11-05 03:31:10 +00:00
2017-11-05 03:52:51 +00:00
Conceito este que pode ser complementado com a ideia de que:
2017-11-05 03:31:10 +00:00
2017-12-04 01:28:43 +00:00
\begin{citacao}
\omissis{} corpus não pode ser considerado como constituindo a língua, mas somente como uma amostra da língua. (...) O corpus deve ser representativo, isto é, deve ilustrar toda a gama das características estruturais. Poder-se-ia pensar que as dificuldades serão levantadas se um corpus for exaustivo (...). Na realidade, sendo indefinido o número de enunciados possíveis, não há exaustividade verdadeira e, além disso, grandes quantidades de dados inúteis só podem complicar a pesquisa, tornando-a pesada.O lingüista deve, pois, procurar obter um corpus realmente significativo. Enfim, o lingüista deve desconfiar de tudo o que pode tornar o seu corpus não-representativo (método de pesquisa escolhido, anomalia que constitui a intrusão de lingüista, preconceito sobre a língua). \apud{dubois1993dicionario}{aluisio2006constroi}
\end{citacao}
2017-11-05 03:31:10 +00:00
2018-02-19 16:36:46 +00:00
Ou, de acordo com \apudonline{sinclair2005corpus}{aluisio2006constroi} como uma coleção de peças de um texto na forma eletrônica, selecionadas de acordo com critérios externos para representar, o quanto melhor possível, um idioma ou variação deste como dados fonte para pesquisa linguística. Por \apudonline[p. 31]{biber1995dimensions}{oliveira2009linguistica}, \aspas{um corpus linguístico de base computacional corresponde a coleções de textos que ocorrem naturalmente na língua, organizadas sistematicamente para representar áreas de uso da língua, e das quais podemos extrair novas informações}. Segundo \citet{oliveira2009linguistica}, linguística de corpus é uma ciência empírica, onde o pesquisador utiliza diversas vezes o corpus para estender uma descrição linguística, mas esta prática pode acabar por deixar a teoria aberta para mudanças. Então é possível concluir que linguística de corpus é a área do conhecimento que estuda a língua através de agrupamentos de textos da mesma que representam um nicho a ser estudado.
2017-11-05 03:31:10 +00:00
2017-11-05 03:52:51 +00:00
\citet{gries2010useful} ainda cita três estatísticas deriváveis de uma análise de corpus, sendo eles a frequência de ocorrência de um certo fenômeno no texto, dispersão e frequências ajustadas e frequências de co-ocorrência. A primeira (frequência de ocorrência de um certo fenômeno no texto) é uma contagem de quantas ocorrências algo foram identificadas no texto, a segunda (dispersão e frequências ajustadas) é a proporção (percentual) das ocorrências dado um corpus e sua dispersão e o último (frequências de co-ocorrência) age sobre a frequência de co-ocorrência de expressões linguísticas. Portanto estas são as principais informações que uma ferramenta para a linguística de corpus deve apresentar.
2017-11-05 03:31:10 +00:00
2018-01-24 12:20:52 +00:00
\subsection{Medidas estatísticas de avaliação de desempenho de classificadores binários}
2018-02-07 17:48:22 +00:00
\label{sec:refteo:estcb}
2018-01-24 12:20:52 +00:00
Para etiquetar um corpus automaticamente, é necessário um classificador, e é desejável que este atribua etiquetas corretamente a cada palavra e marca de pontuação. Embora a perfeição seja desejável, tal processo pode apresentar imperfeições (erros), como classificar \aspas{casa} enquanto substantivo quando deveria ter sido classificada como verbo (casar, flexionado na 3ª pessoa do singular do presente do indicativo). Para medir o quanto o classificador acerta ou erra para cada etiqueta, existem algumas métricas estatísticas que podem ser utilizadas; abaixo, segue uma lista não exaustiva de algumas delas:
\begin{itemize}
\item Precisão (\textit{precision}), dado pela equação \ref{eq:prec}, \aspas{denota a proporção de casos preditos como positivos que são considerados positivos reais} \cite[p. 38]{powers2011evaluation}.
\begin{equation}
\label{eq:prec}
P_{recisão} = \frac{V_{erdadeiro}P_{ositivo}}{V_{erdadeiro}P_{ositivo} + F_{also}P_{ositivo}}
\end{equation}
\item Revocação (\textit{recall} ou sensibilidade), dado pela equação \ref{eq:rec}, \aspas{é a proporção de casos de casos positivos preditos como positivos} \cite[p. 38]{powers2011evaluation}.
\begin{equation}
\label{eq:rec}
R_{ecall} = \frac{V_{erdadeiro}P_{ositivo}}{V_{erdadeiro}P_{ositivo} + F_{also}N_{egativo}}
\end{equation}
\item \textit{F-measure} (\textit{F$_1$ score}), dado pela equação \ref{eq:f1score}, \aspas{é definida como a média harmônica entre precisão e revocação} \apud[pp. 51, 52]{van1979information}{beitzel2006understanding}, mas, segundo \citeonline{powers2011evaluation}, não leva em conta os verdadeiros negativos.
\begin{equation}
\label{eq:f1score}
F_1 = \frac{2 \times P_{recisão} \times R_{ecall}}{P_{recisão} + R_{ecall}}
\end{equation}
\item Acurácia (\textit{accuracy}), dado pela equação \ref{eq:acc}, ao contrário das anteriormente apresentadas, \aspas{explicitamente toma em conta a classificação de negativos} \cite[p. 39]{powers2011evaluation}.
\begin{equation}
\label{eq:acc}
A_{curácia} = \frac{V_{erdadeiro}P_{ositivo} + V_{erdadeiro}N_{egativo}}{V_{erdadeiro}P_{ositivo} + V_{erdadeiro}N_{egativo}+F_{also}P_{ositivo} + F_{also}N_{egativo}}
\end{equation}
\item Taxa de erro (\textit{miss rate}), dado pela equação \ref{eq:miss}, \aspas{é a proporção de positivos reais que são preditos como negativos} \cite[p. 39]{powers2011evaluation}.
\begin{equation}
\label{eq:miss}
E_{rro} = \frac{F_{also}N_{egativo}}{V_{erdadeiro}P_{ositivo} + F_{also}N_{egativo}}
\end{equation}
\item Especificidade (\textit{specificity}), dado pela equação \ref{eq:spec}, \aspas{é a proporção de casos negativos que são corretamente preditos como negativos} \cite[p. 39]{powers2011evaluation}.
\begin{equation}
\label{eq:spec}
E_{specificidade} = \frac{V_{erdadeiro}N_{egativo}}{F_{also}P_{ositivo} + V_{erdadeiro}N_{egativo}}
\end{equation}
\item Prevalência (\textit{prevalence}), dado pela equação \ref{eq:prev} \cite[p. 39]{powers2011evaluation}, representa a proporção do universo amostral que é composta por casos positivos, sendo uma métrica que independe do classificador.
\begin{equation}
\label{eq:prev}
P_{revalência} = \frac{V_{erdadeiro}P_{ositivo} + F_{also}N_{egativo}}{V_{erdadeiro}P_{ositivo} + V_{erdadeiro}N_{egativo}+F_{also}P_{ositivo} + F_{also}N_{egativo}}
\end{equation}
\end{itemize}
2017-12-04 07:57:55 +00:00
\subsection{Aplicações de internet}
2018-02-08 01:17:01 +00:00
Uma ferramenta para a linguística de corpus acessível pela internet pode ser considerada uma aplicação de internet. A lei nº 12.965 as define como \aspas{o conjunto de funcionalidades que podem ser acessadas por meio de um terminal conectado à internet} \cite{lei12965}. Tal definição se aproxima da de terminal burro\footnote{\textit{\citeauthoronline{tlip2005dumb}} (\citeyear{tlip2005dumb}) define \aspas{terminal burro} como um terminal de computador que consiste apenas de um teclado e monitor, sem unidade de processamento central ou disco rígido interno, com pouco ou nenhum poder de processamento ou armazenamento.} no ponto em que uma considerável maioria dos dados e processamentos estão ou são realizados remotamente, numa arquitetura que cliente-servidor com um processo de aplicação executando no servidor; e estes dois últimos serão abordados nas seções a seguir.
2017-12-04 07:57:55 +00:00
\subsubsection{Arquitetura cliente-servidor}
2018-01-24 12:20:52 +00:00
2018-02-07 17:48:22 +00:00
De acordo com \citeonline[p. 62]{ross2013redes}, nesta arquitetura \aspas{há um hospedeiro sempre em funcionamento, denominado servidor, que atende a requisições de muitos outros hospedeiros, denominados clientes}, mencionando aplicações \textit{Web} como um caso clássico de uso desta. A comunicação entre os processos sendo executados no cliente e no servidor ocorre através de uma interface de software denominada \textit{socket} \cite[pp. 65, 73]{ross2013redes}, pelo qual é trafegado o protocolo HTTP; onde este último está presente na camada de aplicação da pilha de protocolos da internet (figura \ref{fig:osistack}) \cite[p. 37]{ross2013redes}.
2018-01-24 12:20:52 +00:00
\begin{figure}
\begin{center}
2018-01-24 13:23:37 +00:00
\includegraphics[scale=.5]{pilhaprotoc/model.pdf}
2018-01-24 12:20:52 +00:00
\caption[Pilha de protocolos da internet e modelo OSI]{A pilha de protocolos da internet (a) e o modelo de referência OSI (b)}
\fonte{\citeonline[p. 37]{ross2013redes}}
\label{fig:osistack}
\end{center}
\end{figure}
2018-02-07 17:48:22 +00:00
Sobre o protocolo HTTP trafegam mensagens, tal como uma página \textit{Web}, que é composta de objetos, como, por exemplo, \aspas{um documento HTML, uma imagem JPEG, um applet Java, ou um clipe de vídeo}\cite[p. 72]{ross2013redes}. \citeonline{ross2013redes} ainda afirma que \aspas{a maioria das páginas \textit{Web} são constituídas de um arquivo-base HTML e diversos objetos referenciados} (p. 72), exibidas para o usuário através dum navegador, e que navegador e cliente referem-se à mesma coisa neste contexto, sendo o \textit{Internet Explorer} e o \textit{Mozilla Firefox} exemplos deste \cite{ross2013redes}. O servidor \textit{Web} abriga objetos \textit{Web} que possuem endereços (URL), sendo tais objetos acessíveis pelo clientes através destes endereços \cite{ross2013redes}. São \textit{softwares} populares deste tipo o \textit{Apache} e o \textit{Microsoft Internet Information Server}\cite{ross2013redes}, os quais são capazes de executar algum código que gere tais objetos (Apache Foundation, \citeyear{apachedoc2018dynamic}; \citeauthor{iisdoc2018using}, \citeyear{iisdoc2018using}).
\subsubsection{Framework de aplicação de internet Django}
2017-11-30 19:09:02 +00:00
2018-02-07 17:48:22 +00:00
Para facilitar o desenvolvimento de aplicações de internet, algumas \textit{frameworks} foram criadas. Um desses \textit{frameworks} é o Django, escrito na linguagem de programação Python, se autodefine como \aspas{o \textit{framework} \textit{web} para perfeccionistas com prazos} e provê uma série de ferramentas prontas para agilizar o desenvolvimento da aplicação, como ferramentas de autenticação de usuário, um renderizador de \textit{templates} e um mapeador objeto-relacional cujo banco de dados padrão é o SQLite (havendo suporte para outras soluções) \cite{djangodoc2018relance}.
2018-01-24 12:20:52 +00:00
2018-02-07 17:48:22 +00:00
SQLite se autodefine como \aspas{uma biblioteca embutida no processo que implementa um banco de dados transacional SQL de maneira autocontida, sem servidor e sem configuração}, e também afirma ser \aspas{o banco de dados mais vastamente implementado no mundo} \cite{sqlite2018about}, que para \citeonline{navathe2012sgbd}, é característica fundamental deste oferecer ao programador algum nível de abstração de dados. Para aumentar ainda mais a abstração além das técnicas apresentadas por \citeonline{navathe2012sgbd} nos capítulos onde aborda as técnicas de programação de banco de dados, mas, contraditoriamente às técnicas lá apresentadas, \citeonline{oneil2008orm} afirma que \aspas{programadores veementemente preferem trabalhar com dados persistentes em objetos do programa a usar consultas SQL diretamente para acessar os dados} (p. 1351) e apresenta o mapeamento objeto-relacional como uma \aspas{metodologia e mecanismo para que sistemas orientados a objetos mantenham controle de seus dados persistidos seguramente no banco de dados} (p. 1351), sendo tal controle feito a nível transacional de forma a tratar condições de corrida, onde as \aspas{aplicações de internet dos dias atuais são particularmente adequadas a esta abordagem} (p.1351).
2017-12-04 01:28:43 +00:00
2018-02-07 17:48:22 +00:00
\section{Deveres legais incidentes sobre aplicações de internet a respeito da mínima retenção de dados}
2017-12-04 01:28:43 +00:00
\label{marcocivil}
2018-01-24 12:20:52 +00:00
Popularmente chamado de \aspas{Marco Civil da Internet}, a lei nº 12.965, \aspas{estabelece princípios, garantias, direitos e deveres para o uso da internet no Brasil} \cite{lei12965}. Um desses deveres pode se aplicar aos provedores das aplicações de internet, quando este for uma pessoa jurídica atuando com fins econômicos:
2017-12-04 01:28:43 +00:00
\begin{citacao}
Art. 15. O provedor de aplicações de internet constituído na forma de pessoa jurídica e que exerça essa atividade de forma organizada, profissionalmente e com fins econômicos deverá manter os respectivos registros de acesso a aplicações de internet, sob sigilo, em ambiente controlado e de segurança, pelo prazo de 6 (seis) meses, nos termos do regulamento. \cite{lei12965}
\end{citacao}
Onde o que constituem \aspas{registros de acesso a aplicações de internet} fora anteriormente definido no Art. 5º:
\begin{citacao}
VIII - registros de acesso a aplicações de internet: o conjunto de informações referentes à data e hora de uso de uma determinada aplicação de internet a partir de um determinado endereço IP. \cite{lei12965}
\end{citacao}
2018-01-24 12:20:52 +00:00
Portanto, para uma aplicação de internet ser usável comercialmente em território nacional sem insegurança jurídica, deve ser auditável de forma a rastrear o endereço IP, data e hora de qualquer conteúdo gerado por qualquer usuário dentro da aplicação.
2017-11-05 03:31:10 +00:00
2017-11-05 03:52:51 +00:00
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2017-11-05 03:31:10 +00:00
2017-11-21 03:48:01 +00:00
\chapter{Desenvolvimento}
2017-11-05 03:52:51 +00:00
\label{cha:des}
2017-11-21 03:48:01 +00:00
2018-02-07 17:48:22 +00:00
Este capítulo descreve as etapas do desenvolvimento da plataforma \textit{web} proposta, uma aplicação de internet. A seção \ref{sec:des:req} descreve as etapas do levantamento de requisitos as funcionalidades desejáveis identificadas, a \ref{subsef:des:cdp}, as classes do domínio do problema numa modelagem já utilizando a tecnologia escolhida, já a seção \ref{sec:des:nav} contém o projeto da navegabilidade contemplando a estrutura de navegação da aplicação, a seção \ref{sec:des:flux}, o projeto do fluxo de informações dentro da plataforma onde será abordado como a informação fluirá entre diferentes componentes de forma a reduzir o acoplamento, favorecer a substituição de componentes e favorecer a interoperabilidade, a seção \ref{sec:des:conc} traz o projeto do concordanciador e alguns requisitos extras pertinentes a apenas este módulo, e, por fim, a seção \ref{sec:des:train} contém a metodologia utilizada para treinar o etiquetador do Unitex/GramLab e mais um outro que foi desenvolvido durante este trabalho.
2017-11-21 03:48:01 +00:00
\section{Levantamento de requisitos}
\label{sec:des:req}
2017-12-04 01:28:43 +00:00
\subsection{Requsitos e soluções}
\label{subsec:des:reqsol}
2018-02-08 01:17:01 +00:00
O levantamento de requisitos é uma das primeiras etapas do ciclo de vida de um projeto de software \cite{sommerville2011software}. Para tal, o primeiro passo foi pesquisar as ferramentas voltadas ao usuário final existentes. Excluídas as ferramentas de processamento de corpora de linha de comando, e excluídas as ferramentas que não possuíssem versão gratuita, de demonstração ou de testes, e tendo como ponto de partida os artigos do capítulo anterior, foram pesquisadas as ferramentas diretamente mencionadas nos artigos e também as ferramentas citadas nos \textit{sites} que os artigos mencionam. A ferramentas encontradas foram: \textit{WordSmith}, \textit{CorpusEye}, \textit{COCA Online Corpus}, \textit{Unitex/GramLab} e \textit{Sketch Engine}. Então, suas principais funcionalidades presentes na versão gratuita foram levantadas, comparadas, e então expressas na tabela \ref{tab:comppln}, da qual foram extraídas, de forma não-exaustiva, características desejáveis de um sistema de processamento de corpora e listadas a seguir:
2017-12-04 01:28:43 +00:00
\begin{table}
2017-12-04 07:57:55 +00:00
\hspace*{0mm}\centerline{\includegraphics[width=0.9\textheight,height=0.9\textwidth,keepaspectratio,angle=90]{tabela-comparacao-full/model.pdf}}
2017-12-04 01:28:43 +00:00
\caption{Tabela comparativa de softwares de Processamento de Linguagem Natural}
2018-02-08 01:17:01 +00:00
\fonte{O autor}
2017-12-04 07:57:55 +00:00
\label{tab:comppln}
2017-12-04 01:28:43 +00:00
\end{table}
\begin{itemize}
2018-02-08 01:17:01 +00:00
\item Possuir interface web compatível com tamanhos de tela diversos (\textit{smartphones}, \textit{tablets}, \textit{notebooks} e \textit{desktops});
2017-12-04 01:28:43 +00:00
\item Processar corpora fornecidos pelo usuário;
\item Etiquetar corpora fornecidos pelo usuário;
\item Criar corpus a partir de buscas na internet;
\item Calcular estatísticas quanto à frequência de lemas e palavras;
\item Calcular estatísticas quanto à contagem de lemas e palavras;
\item Calcular estatísticas quanto à razão de lemas e palavras;
\item Calcular estatísticas quanto à contagem de sentenças e parágrafos;
\item Calcular estatísticas quanto ao tamanho em caracteres das palavras;
\item Calcular estatísticas quanto à quantidade de palavras por sentença;
\item Extrair as palavras-chave de um corpus;
\item Calcular estatísticas quanto à distribuição da palavra-chave no corpus;
\item Calcular estatísticas quanto às palavras relacionadas às palavras-chave do corpus;
\item Buscar por uma ocorrência de uma palavra ou sequência de palavras;
\item Buscar por uma expressão que simbolize uma construção textual;
\item Possuir um concordanciador;
\item Calcular os n-gramas mais frequentes de um texto.
\end{itemize}
2018-02-19 16:36:46 +00:00
Como nenhum dos softwares apresenta extensibilidade através de \textit{plug-ins} como funcionalidade, tal requisito não está presente na lista acima. Considerando que tal lista, apesar de extensa, pode não cobrir todos os casos de uso dum linguista e que nem todas as funcionalidades serão implementadas neste trabalho, foi julgada como desejável facilitar a adição e substituição de componentes do software por outros mais atualizados, com maiores taxas de acerto, computacionalmente mais eficientes e/ou com licenças mais permissivas, a critério do administrador do servidor que executa o software. Portanto possuir extensibilidade através de \textit{plug-ins} é um requisito do software.
2017-12-04 01:28:43 +00:00
2018-02-19 16:36:46 +00:00
Dos softwares anteriormente listados, foi observado na tablela \ref{tab:comppln} que nenhum deles possui um concordanciador gratuito com suporte a etiquetas de partes do discurso para a língua portuguesa que receba textos quaisquer fornecidos pelo usuário. Adicionando esta funcionalidade como objetivo, juntamente de suas dependências, temos:
2017-12-04 01:28:43 +00:00
\begin{itemize}
\item Possuir extensibilidade através de \textit{plug-ins};
\item Possuir interface web compatível com tamanhos de tela diversos;
\item Processar corpora fornecidos pelo usuário;
\item Etiquetar corpora fornecidos pelo usuário;
\item Possuir um concordanciador.
\end{itemize}
Para gerar as páginas, foi escolhido o \textit{framework} Django em sua versão de longo suporte 1.11. Esta escolha se deve principalmente à prévia familiaridade do autor com a ferramenta. Outros fatores que influenciaram a decisão é a quantidade de bibliotecas disponíveis para a linguagem em que o \textit{framework} é escrito, Python, o que possibilita a inclusão destas nos \textit{plug-ins}.
Para que as páginas geradas sejam compatíveis com tamanhos de tela diversos, foi escolhido o \textit{framework} de folha de estilos Bootstrap em sua versão 4.0b1. Esta escolha também foi influenciada pela prévia familiaridade do autor. Em conjunto com a referida folha de estilos, também foi utilizado o pacote de ícones FontAwesome. Ele se define em sua página inicial como \aspas{um idioma pictográfico de ações relacionadas à \textit{web}} \cite{fontawesome2017home}. Foi adicionado visando melhorar a usabilidade.
2018-02-07 17:48:22 +00:00
Para processar os corpora fornecidos pelo usuário, foi selecionado o utilitário de linha de comando do \textit{software} Unitex/GramLab. É software livre licenciado sobre os termos da GPL, que não impõe restrições quanto ao seu uso. Apesar de possuir um utilitário chamado \aspas{Tagger}, somente durante a implementação foi observado que os arquivos necessários para sua utilização estavam presentes apenas para o idioma francês. Portanto, o etiquetador do Unitex/GramLab foi treinado para a língua portuguesa utilizando os corpora anotados pelo projeto Floresta Sintáctica (mais detalhes na seção \ref{sec:des:train}); em caso de resultados insatisfatórios (menos que 75\% de precisão) neste, seria utilizado os arquivos previamente treinados por \citeonline{aires2000implementacao}, dando preferência aos etiquetadores com maior precisão.
2017-12-04 01:28:43 +00:00
\subsection{Classes do domínio do problema}
\label{subsef:des:cdp}
As classes do domínio do problema, quando representadas através da \textit{framework} utilizada, se aproximam muito do modelo lógico. O mapeamento objeto-relacional feito pela plataforma admite herança e classes abstratas; como a solução de persistência padrão é SQLite, e esta não suporta herança entre tabelas, o mapeador objeto-relacional replica os campos definidos na classe pai na classe filho, já classes abstratas não geram tabelas. A figura \ref{fig:class} traz o modelo lógico gerado automaticamente a partir da implementação com algumas alteração quanto à disposição dos elementos. A classe em magenta claro (\textit{User}) é advinda do \textit{framework}, já as demais classes em amarelo claro foram escritas para compor a base da plataforma, as quais os \textit{plug-ins} utilizarão diretamente. As classes com letras em cinza (\textit{Timestampable}, \textit{RequiresIP} e \textit{AttributeMixin}) são abstratas; todas as concretas herdam de \textit{RequiresIP}, devido às obrigações legais anteriormente mencionadas na seção \ref{marcocivil}.
\begin{figure}[h]
\begin{center}
\includegraphics[width=\textwidth]{modelo-classes/model.pdf}
\caption{Modelo lógico gerado automaticamente a partir da implementação}
2017-12-04 07:57:55 +00:00
\fonte{O autor}
2017-12-04 01:28:43 +00:00
\label{fig:class}
\end{center}
\end{figure}
%E de forma a encontrar os requisitos especificados nos objetivos (seção \ref{sec:obj}) a partir das principais ferramentas voltadas ao processamento de corpus de texto existentes no mercado. . A comparação completa de funcionalidades está prensente no apêndice \ref{ap:tabcomppln} em formato de tabela. Portanto, são funcionalidades desejáveis num sistema de processamento de linguagem natural:
%Como a proposta é de uma plataforma web, é esperado que seja usável a partir de um navegador como o Google Chrome, Opera ou Mozilla Firefox. Por conta disso, o sistema deverá gerar documentos HTML e transferí-los através do protocolo HTTP, que, segundo \citeonline{ross2013redes}, atua no camada de aplicação do modelo OSI. Portanto, será utilizada uma arquitetura cliente-servidor.
2017-11-21 03:48:01 +00:00
\section{Projeto da navegabilidade}
\label{sec:des:nav}
2018-02-19 16:36:46 +00:00
A navegabilidade no sistema é fundamental para a experiência de uso do sistema pelo usuário, já que trata de como o usuário irá interagir com o sistema e das opções visíveis a ele. Como os documentos de hipertexto formam um grafo, onde cada documento é um nó e cada link é uma aresta \cite{meusel2015graph}, páginas com informações relevantes ao usuário podem ficar muitos nós de distância de onde o usuário se encontra, mas também não deve ficar poluído de forma deixar o usuário desorientado \cite{krug2008pensar}. A forma que adotada para representar tal navegação é através duma árvore (vide figura \ref{fig:arvnav}), onde a página anterior conhece seus descendentes imediatos e sua página pai, apenas. No canto direito no rodapé de todas as páginas ficarão os \textit{links} para as páginas de \aspas{Ajuda}, \aspas{Termos de uso} e \aspas{Política de privacidade}, cujo conteúdo será estático, definido nos arquivos de tradução. Na barra de navegação do topo de página ficará o seletor de idiomas alinhado à esquerda (caixa \aspas{Idioma}) e os botões que levam às páginas de autenticação (subcaixas da caixa \aspas{Contas}).
2017-12-04 01:28:43 +00:00
2018-02-07 17:48:22 +00:00
A página inicial, representada pelas caixa \aspas{Plataforma} na figura \ref{fig:arvnav}, será a página inicial; para visitantes, a página deverá exibir um formulário de \textit{login} e um botão que leva ao formulário de cadastro, enquanto, para um usuário autenticado, representa a página \aspas{Corpora} da figura \ref{fig:arvnav}, exibindo uma lista com os corpora por ele já criados e um botão para criar um novo corpus vazio. Ao clicar num corpus, o usuário entrará numa outra página (\aspas{Corpus}) que conterá os documentos que o compõem o corpus selecionado, juntamente a botões para editar e apagar o corpus selecionado, bem como para cada documento listado (\aspas{Documento}), além de um botão para adicionar um documento e outro para levar até a página com as operações que podem ser feitas sobre o corpus (\aspas{Análise}). Na página de análises, todos os botões de ação são fornecidos por \textit{plug-ins}, mas é esperado que haja ao menos um para uma lista de sentenças, um para frequência de palavras, um para o texto etiquetado e outro para o concordanciador, sendo permitido ao usuário localizar o(s) documento(s) que contém o que pode ser visto na tela num clique, no máximo dois.
2017-11-21 03:48:01 +00:00
2017-12-04 07:57:55 +00:00
\begin{figure}
\begin{center}
2018-02-07 17:48:22 +00:00
\includegraphics[scale=.4]{navegabilidade/model.pdf}
2017-12-04 07:57:55 +00:00
\caption{Árvore de navegação das páginas do sistema}
\fonte{O autor}
\label{fig:arvnav}
\end{center}
\end{figure}
2017-11-21 03:48:01 +00:00
\section{Projeto do fluxo de informações}
\label{sec:des:flux}
2018-02-19 16:36:46 +00:00
Como ser extensível através de \textit{plug-ins} é um requisito da aplicação e este recurso não é oferecida pelo \textit{framework} sem que seja necessário alterar o arquivo de configuração, somado à vantagem de que os \textit{plug-ins} sejam substituíveis, foi julgado preferível desenvolver tal parte do sistema utilizando uma arquitetura que favoreça o desacoplamento. Para tanto, foi escolhido uma arquitetura baseada em eventos, onde cada \textit{plug-in} forneça e/ou consuma serviços de outros \textit{plug-ins} utilizando apenas eventos, sem consultar diretamente o outro \textit{plug-in} ou ser informado sobre quais estão instalados ou não.
2017-12-04 01:28:43 +00:00
\begin{figure}
\begin{center}
2018-02-08 01:17:01 +00:00
\includegraphics[scale=0.65]{fluxinfo-dirtree/model.pdf}
2017-12-04 07:57:55 +00:00
\caption{Árvore de diretórios e \textit{scripts}}
\fonte{O autor}
2017-12-04 01:28:43 +00:00
\label{fig:flux:dt}
\end{center}
\end{figure}
2018-01-24 12:20:52 +00:00
A figura \ref{fig:flux:dt} mostra a árvore de diretórios em amarelo e seus \textit{scripts} em ciano. Na pasta \aspas{projeto} foram adicionados dois scripts: \aspas{gancho padrão} e \aspas{eventos}. O primeiro contém um gerador da estrutura que descreve um botão na página \aspas{Análise}. O segundo contém uma função \aspas{disparar} que recebe dois argumentos: uma cadeia de caracteres e um objeto qualquer; esta função dispara o evento e seu retorno depende da cadeia de caracteres de entrada, que especifica o tipo de evento: provedor, busca, filtro ou ação.
2017-12-04 07:57:55 +00:00
Eventos do tipo \aspas{provedor} descartam o segundo argumento de entrada e retornam uma lista. Foram idealizados para abastecer \textit{plug-ins} que aceitam recursos linguísticos além dos embarcados nele mesmo. Um exemplo de aplicação é um etiquetador que, através da resposta a eventos por ele disparados, recebe recursos para etiquetar idiomas originalmente não suportados.
Eventos do tipo \aspas{busca} recebem o objeto que está relacionado ao desejado no segundo argumento de entrada e retornam uma lista contendo o(s) resultado(s) de cada \textit{plug-in} que ofereceu aquele serviço de busca. Foram idealizados para buscar dados em outros \textit{plug-ins}, sem a necessidade de conhecer todos os modelos destes e sua representação interna. Um exemplo de aplicação é no concordanciador, onde ele fornece um corpus e recebe como resposta o \textit{cache} do corpora já etiquetado por cada etiquetador.
Eventos do tipo \aspas{filtro} recebem uma coleção de objetos no segundo argumento de entrada e retornam a uma coleção de tamanho menor ou igual, podendo ter elementos alterados, sendo a saída de um filtro a entrada do próximo. Foram idealizadas como forma de reduzir o conjunto de entrada, através de regras implementadas por outros \textit{plug-ins}. Um exemplo de aplicação são diversos tokenizadores atuando entre a lista de sentenças e o etiquetador, para garantir que a entrada do etiquetador seja consistente.
Eventos do tipo \aspas{ação} recebem um objeto qualquer e retornam nulo. Foram idealizados para notificar outros \textit{plug-ins} que uma ação foi concluída com sucesso, ou até mesmo para comunicação interna dentro do próprio \textit{plug-in}. Um exemplo de aplicação é num processamento conhecidamente demorado que é realizado em segundo plano e a notificação de sua conclusão se dá através de um \textit{e-mail}.
2018-01-24 12:20:52 +00:00
Tais eventos ocorrem dentro do subsistema de \textit{plug-ins}, cuja sequência de funcionamento é expressa em detalhes no apêndice \ref{ap:fluxplugin}.
2017-12-04 07:57:55 +00:00
2018-02-07 17:48:22 +00:00
\section{Projeto do concordanciador}
\label{sec:des:conc}
O concordanciador, um dos requisitos desta aplicação, como definido por \citeonline{tagnin2010glossario}, é o \aspas{programa que extrai todas as ocorrências de uma palavra de busca num corpus juntamente com seu cotexto \omissis{}} (p. 358), ou seja, um buscador de padrões. Um problema observado enquanto usuário das outras ferramentas para confecção da tabela \ref{tab:comppln} da seção \ref{sec:des:req} é que não havia nenhum \textit{feedback} para o usuário se o que estava sendo digitado era válido ou o que aquela busca significa, portanto o módulo a ser desenvolvido deve solucionar esse problema de usabilidade. Outro problema identificado é que a página onde a busca é digitada não possuem uma referência rápida com todas as principais construções válidas de interesse do usuário, mesmo quando existe espaço livre para tal conteúdo; também é outro problema que deve ser resolvido. Foi idealizado que este seria executado após o etiquetador, atuando por sentença, podendo filtrar por palavras inteiras, segmentos destas ou simplesmente especificar uma distância ente palavras e, ao mesmo tempo, podendo filtrar resultados por etiquetas.
Para separar a palavra da etiqueta foi reservado o símbolo de sublinhado duplo (\aspas{\_\_}), já para indicar que é um segmento (e não uma palavra inteira) foi reservado o símbolo de ponto final duplo (\aspas{..}), para indicar que é esperado um número fixo ou variável de etiquetas foi reservado a construção \aspas{\{exato\}} e \aspas{\{inicio, fim\}}, respectivamente, onde fim pode ser indefinido (até o final da sentença) se usado o caractere asterisco. A título de exemplo, nestas condições, a busca \aspas{..ado\_\_VERBO \{0,1\} terrorista \{0,*\} ..mic..} reconheceria a sentença \aspas{Um atentado terrorista realizado em nome do Estado Islâmico feriu 15 pessoas esta tarde} se, e somente se \aspas{atentado} seja etiquetado como verbo, bem como \aspas{Seu Zé foi fichado como terrorista durante a ditadura pelas opiniões que propagava que disse nos microfones em rede nacional} é uma sentença que é possível de ser reconhecido por esta busca.
2017-12-04 01:28:43 +00:00
\section{Treino do etiquetador}
\label{sec:des:train}
2018-02-07 17:48:22 +00:00
Conforme mencionado anteriormente no final da subseção \ref{subsec:des:reqsol}, o etiquetador do Unitex/GramLab foi treinado utilizando os corpora anotados do Floresta Sintáctica, que oferece os corpora nos formatos CoNLL e Árvore Deitada para todas as bases, estando demais formatos restritos a apenas um subconjunto das bases fornecidas. O formato inicialmente escolhido foi o CoNLL, mas rapidamente ele demonstrou não possuir uma estrutura consistente (a exemplo, as \textit{tags} que se assemelham à notação XML que determinam o início das sentenças possui um atributo ora nomeado \aspas{text}, ora nomeado \aspas{texto}). Portanto, foi utilizado os arquivos no formato de árvore deitada.
2017-11-21 03:48:01 +00:00
2018-02-08 01:17:01 +00:00
Após converter os corpora para o formato de entrada mais simples que o treinador do Unitex/GramLab aceita\footnote{O formato de entrada mais simples que o treinador do Unitex/GramLab aceita é uma lista de sentenças separada por duas quebras de linha seguidas, onde cada sentença é uma lista de palavras etiquetadas, que por sua vez é separada por uma quebra de linha, onde cada palavra etiquetada é um par palavra-etiqueta separados pelo caractere barra (\aspas{/}).}, era o momento de separar em treino e teste, mas não era sabido quais corpora gerariam erros devidos a eventuais erros na conversão do formato não documentado. A solução adotada foi testar cada corpus anotado: caso o treino concluísse com sucesso era separado para o conjunto treino, caso contrário, para o de teste. Resultados no quadro \ref{qua:stt}.
2017-11-21 03:48:01 +00:00
2017-12-04 07:57:55 +00:00
\begin{quadro}[h]
\begin{center}
\begin{tabular}{|c|c|}
\hline
Treino & Teste \\
\hline
\hline
amaz1.ad & amaz2.ad \\
amaz6.ad & amaz3.ad \\
bosquecf.ad & amaz4.ad \\
selva\_cien.ad & amaz5.ad \\
selva\_fala.ad & bosquecp.ad \\
selva\_lit.ad & fv\_cf.ad \\
& fv\_cp.ad \\
\hline
\end{tabular}
\end{center}
\caption{Separação entre treino e teste}
\fonte{O autor}
\label{qua:stt}
\end{quadro}
2017-11-21 03:48:01 +00:00
2018-02-19 16:36:46 +00:00
O conjunto de treino (quadro \ref{qua:stt}) continha 1.286.251 palavras anotadas distribuídas ao longo de 81.438 sentenças; já o conjunto de testes continha 4.585.010 palavras distribuídas ao longo de 266.500 sentenças. Devido a diferenças no tokenizador e separador de sentenças, o teste etiquetado continha 4.726.605 palavras anotadas ao longo de 245.718 sentenças. Separando apenas as sentenças que foram \textit{tokenizadas} da mesma forma que no conjunto de testes, tem-se 2.801.255 palavras em 176.034 sentenças. Como cada palavra é uma amostra para o treino do etiquetador, tem-se a proporção treino/teste de aproximadamente 31\% / 69\%.
2018-02-07 17:48:22 +00:00
2018-02-08 01:17:01 +00:00
Apesar de ter sido treinado para usar as etiquetas do Projeto Floresta Sintáctica, o Unitex/GramLab usou do próprio conjunto de etiquetas para etiquetar o texto, estas sendo incompletamente documentadas apenas pelo conteúdo do quadro \ref{qua:ug:fgc}. Por isso, durante a etapa de avaliação de desempenho foi necessário aproximar ambos padrões de etiquetas utilizando como referência o \aspas{glossário de etiquetas florestais} da \citeonline{sitefloresta2010glossario} e a breve e incompleta tabela de \citeonline{paumier2016user} (quadro \ref{qua:ug:fgc}), onde etiquetas não documentadas tiveram seu significado manualmente inferido (a exemplo, a etiqueta \aspas{X} provavelmente representa palavras estrangeiras, como \aspas{CD-ROM}). A conversão final antes da comparação e montagem das tabelas de contingência é expressa nas tabelas \ref{tab:tagconv:gss} e \ref{tab:tagconv:ans} (teste 1, resultados na seção \ref{sec:res:train:t1}). %, mas com isso, abre a possibilidade de etiquetas sinônimas não terem sido agrupadas ou erros podem ter sido introduzidos, fazendo com que as estatísticas podem não representar corretamente o desempenho da abordagem do algoritmo pelo Unitex/GramLab utilizado.
2018-02-07 17:48:22 +00:00
\begin{quadro}[h]
\begin{center}
\begin{tabular}{|c|c|c|}
\hline
Etiqueta & Descrição & Exemplos \\
\hline
\hline
A & adjetivo & \textit{fabulous}, \textit{broken-down} \\ \hline
ADV & advérbio & \textit{actually}, \textit{years ago} \\ \hline
CONJC & conjunção coordenativa & \textit{but} \\ \hline
CONJS & conjunção subordinativa & \textit{because} \\ \hline
DET & determinante & \textit{each} \\ \hline
INTJ & interjeição & \textit{eureka} \\ \hline
N & substantivo & \textit{evidence}, \textit{group theory} \\ \hline
PREP & preposição & \textit{without} \\ \hline
PRO & pronome & \textit{you} \\ \hline
V & verbo & \textit{overeat}, \textit{plug-and-play} \\ \hline
\end{tabular}
\end{center}
\caption{Etiquetas gramaticais frequentes}
\fonte{\citeonline[p. 47]{paumier2016user}}
\label{qua:ug:fgc}
\end{quadro}
\begin{table}[h]
\begin{center}
\begin{tabular}{cc}
\hline
Etiqueta & Convertido \\
\hline
\hline
PROP & N \\
VAUX & V \\
PP & PREP \\
PRP & PREP \\
DET & PRON \\
INTJ & INTERJ \\
\hline
\end{tabular}
\end{center}
\caption{Conversão da etiquetas utilizadas do Floresta Sintáctica para notação intermediária}
\fonte{O autor}
\label{tab:tagconv:gss}
\end{table}
\begin{table}[h]
\begin{center}
\begin{tabular}{cc}
\hline
Etiqueta & Convertido \\
\hline
\hline
A & ADJ \\
X & N \\
SIGL & N \\
ABREV & N \\
PRO & PRON \\
PREPXDET & PREP \\
PREPXPRO & PREP \\
PONCT & ??? \\
\hline
\end{tabular}
\end{center}
\caption{Conversão da etiquetas utilizadas do Unitex/GramLab para notação intermediária}
\fonte{O autor}
\label{tab:tagconv:ans}
\end{table}
O etiquetador do Unitex/GramLab \cite{paumier2016user} usa \aspas{tuplas de unigramas, bigramas e trigramas} (p. 329) gerados a partir do corpus fornecido como treino para que a aplicação, durante a etiquetagem, \aspas{aplique o algoritmo do caminho de Viterbi sobre o corpus e produza um autômato linear} (p. 294), ou seja, o processo de etiquetagem apenas remove as etiquetas atribuídas anteriormente durante o processamento feito ao carregar o corpus na ferramenta, no qual usa por padrão os dicionários nele embutidos, até restar apenas uma etiqueta por palavra. Analogamente ao problema dos significados das etiquetas, \citeauthoronline{paumier2016user} é vago sobre quais as fontes utilizadas para construir os dicionários numa tabela cuja descrição é \aspas{algumas referências bibliográficas para os dicionários eletrônicos} (p. 74), onde é passada a ideia de que é uma lista potencialmente incompleta, e não menciona nenhum processo de revisão para adequar eventuais diferenças semânticas no conjunto de etiquetas utilizadas pelos cinco diferentes trabalhos citados. Dos cinco, apenas o de \citeonline{muniz2005unitexpb} possui acesso público e menciona apenas o nome completo das 13 classes de etiquetas utilizadas: abreviação, adjetivo, advérbio, determinador, conjunção, interjeição, numeral, prefixo, preposição, pronome, acrônimo, substantivo e verbo; a abreviação que o software retorna ao usuário não está presente no artigo, e o \textit{link} mencionado na seção \aspas{contribuições para o \textit{software} UNITEX} (http://www.nilc.icmc.usp.br:8180/unitex-pb/) retorna um erro informando que o objeto requisitado não foi encontrado no servidor. Portanto, diante da limitação de compreensão da semântica das etiquetas imposta pela falta de documentação do software e pela impossibilidade de acessar gratuitamente os outros quatro artigos referenciados pelo manual, então mesmo sabendo que o ideal seria converter todo o conjunto de etiquetas do Projeto Floresta Sintáctica para a notação do Unitex/GramLab antes do treino, a conversão foi feita durante a etapa de testes; é previamente sabido que o desempenho será prejudicado.
Um outro etiquetador de \textit{design} simples que pode ser construído é um baseado em casamento de padrões. Nomeado \textit{YAS-Tagger} (Mais Um Etiquetador Simples de Partes do Discurso, do inglês \textit{Yet Another Simple Part-Of-Speech Tagger}), foi escrito para possuir formatos de entrada e saída similares ao do Unitex/GramLab de forma a reaproveitar sem adaptações os \textit{scripts} de avaliação de desempenho escritos para o teste anterior (teste 2, resultados na seção \ref{sec:res:train:t2}). Internamente, faz o casamento de padrões sem diferenciar maiúsculas de minúsculas usando uma tabela associativa que associa tuplas à sua etiqueta mais frequente, construída durante o treinamento. Durante a etiquetagem, o texto de entrada é agrupado em tuplas de tamanhos entre 1 e 3, consultando da maior para a menor, atribuindo a etiqueta armazenada ou \aspas{???} caso nenhum padrão seja encontrado. %Entretanto, por uma parte da base utilizada ter sido etiquetada automaticamente por um etiquetador treinado com a parte da base revisada por linguistas, mas as etiquetas lá presentes não foram completamente revistas por linguistas (linha \aspas{revisão} da tabela \ref{tab:matflosint}, presente na seção \ref{sec:refteo:floresta}), logo o resultado obtido ainda pode não ser considerado confiável.
Para responder uma pergunta que surgiu apenas após a realização do teste anterior a respeito da influência do tamanho do corpus de treinamento no desempenho do etiquetador, foi realizado mais uma avaliação, esta utilizando o corpus anotado por \citeonline{aires2000implementacao}, este disponibilizado publicamente pelo \citeonline{nilc2012nilctaggers}, e o mesmo algoritmo etiquetador do teste anterior. A base utilizada possui 103.666 etiquetas distribuídas ao longo de 4.713 sentenças, sendo separados 41.398 etiquetas em suas 1.915 sentenças para treino e 62.268 etiquetas em sem suas 2.798 sentenças para teste (proporção treino/teste de 40\% / 60\%), mas, devido a diferenças no alinhamento das etiquetas dos conjuntos das etiquetas de teste e predição, foram comparadas 55.808 etiquetas em sem suas 2.581 sentenças para teste. Portanto, a proporção treino/teste desta avaliação de desempenho foi 43\% / 57\% (teste 2.1, resultados na seção \ref{sec:res:train:t3}).
2017-11-21 03:48:01 +00:00
2017-12-04 01:28:43 +00:00
%\section{Atividades necessárias para o desenvolvimento}
%\label{sec:top}
2017-11-05 03:52:51 +00:00
2017-12-04 01:28:43 +00:00
%A seguir são descritos sucintamente os passos de desenvolvimento deste trabalho:
2017-11-05 03:52:51 +00:00
2017-12-04 01:28:43 +00:00
%\subsection{Analisar comparativamente os recursos das principais ferramentas existentes}
%Foi identificado que as plataformas WordSmith, CorpusEye, COCA Online Corpus, Unitex/GramLab e Sketch Engine provém recursos semelhantes aos desejados. Tais recursos desejados são os mesmos citados na seção de objetivos específicos (subseção \ref{obj:esp}), nos itens 2, 3 e 4. Não se limitado apenas às funcionalidades listadas, tais atributos foram anotados na tabela da figura \ref{fig:cfn} presente no capítulo de resultados (seção \ref{res:cfn}).
2017-11-05 03:52:51 +00:00
2017-12-04 01:28:43 +00:00
%\begin{figure}
% \begin{center}
% \includegraphics[width=\linewidth,trim={0 10cm 0 10cm},clip]{apendice/cfn.pdf}
% \caption[Comparação de ferramentas de NLP]{Comparação de ferramentas de processamento da linguagem natural}
% \label{fig:cfn}
% \end{center}
%\end{figure}
2017-11-05 03:31:10 +00:00
2017-12-04 01:28:43 +00:00
%\subsection{Selecionar as tecnologias}
%A ferramenta desenvolvida ser livre é um requisitos expressos no objetivo geral (subseção \ref{obj:ger}). A única ferramenta livre para etiquetagem morfossintática da língua portuguesa é o Unitex/Gramlab, como mencionado no estado da arte dos etiquetadores morfossintáticos para o português na subseção \ref{ea:em}. Portanto o etiquetador escolhido foi o Unitex/Gramlab.
2017-11-05 03:31:10 +00:00
2017-12-04 01:28:43 +00:00
%Para a interface web, outro requisito expresso no objetivo geral (subseção \ref{obj:ger}), foi escolhido o \textit{framework} Django. Este utiliza a linguagem de programação Python para servir páginas HTML dinâmicas. Tanto a linguagem quanto o \textit{framework} foram escolhas do autor por estes já serem conhecimentos prévios ao início deste trabalho.
2017-11-05 03:31:10 +00:00
2017-12-04 01:28:43 +00:00
%\subsection{Mapear as funcionalidades da interface gráfica em Java do Unitex/GramLab para ações em linha de comando}
%O Unitex/GramLab possui uma \aspas{janela} em sua interface na qual é possível visualizar todos os comandos \aspas{disparados} na linha de comando. Através da sequência de comandos executados, foi inferido um padrão para cada elemento da interface e seu impacto na linha de comando. Resultados disponíveis na seção (seção \ref{res:clire}).
2017-11-05 03:31:10 +00:00
2017-12-04 01:28:43 +00:00
%\subsection{Programar o núcleo extensível da plataforma sobre o framework escolhido}
2017-11-05 03:31:10 +00:00
2017-12-04 01:28:43 +00:00
%\subsection{Programar o módulo extrator de lista de palavras}
2017-11-05 03:31:10 +00:00
2017-12-04 01:28:43 +00:00
%\subsection{Programar o módulo extrator de palavras-chave}
2017-11-05 03:31:10 +00:00
2017-12-04 01:28:43 +00:00
%\subsection{Programar o módulo concordanciador, que suporte busca por funções sintagmáticas e morfológicas}
2017-11-05 03:31:10 +00:00
2017-12-04 01:28:43 +00:00
%\subsection{Integrar os módulos desenvolvidos}
%Todos os módulos desenvolvidos necessitam operar de forma coerente, de modo a priorizar a interdependência entre funcionalidades providas pelos pacotes. Para tanto foi separado os pacotes que definem as interfaces dos pacotes que definem as visualizações e dos pacotes que implementam a funcionalidade, de modo a criar reforçar uma hierarquia de dependências que permitam extensibilidade de funcionalidades. O resultado esperado é reduzir o acoplamento entre diversos \textit{plug-ins}, formando uma árvore de dependências entre pacotes.
2017-11-05 03:31:10 +00:00
2017-12-04 01:28:43 +00:00
%\section{O que falta fazer}
2017-11-05 03:31:10 +00:00
2017-12-04 01:28:43 +00:00
%\subsection{programar o núcleo extensível da plataforma sobre o framework escolhido}
%\subsection{programar o módulo extrator de lista de palavras}
%\subsection{programar o módulo extrator de palavras-chave}
%\subsection{programar o módulo concordanciador, que suporte busca por funções sintagmáticas e morfológicas}
%\subsection{integrar os módulos desenvolvidos}
%\subsection{escrever seção de desenvolvimento}
%\subsection{escrever seção de resultados e de conclusão}
%\subsection{revisar texto e enviar para a banca}
%\subsection{defender TCC}
%\subsection{corrigir os pontos levantados durante a defesa}
%\subsection{envio do texto à biblioteca e adequação a eventuais desvios da ABNT}
2017-11-05 03:31:10 +00:00
2017-12-04 01:28:43 +00:00
%\section{Cronograma}
2017-11-05 03:31:10 +00:00
2017-11-05 03:52:51 +00:00
% A análise comparativa já está pronta para ser escrita adequadamente com as técnicas de escrita científica.
2017-11-05 03:31:10 +00:00
%
2017-11-05 03:52:51 +00:00
% Para a construção da plataforma modular será utilizada a linguagem de programação Python em sua versão 3 em conjunto ao framework DJango. Isso \aspas{obriga} que os módulos sejam escritos também em Python. O módulo concordanciador usará o software Unitex/GramLab para obter as marcações.
2017-11-05 03:31:10 +00:00
%
2017-11-05 03:52:51 +00:00
% ...apesar do PALAVRAS ser o atual estado da arte, este não pode ser utilizado por não ser completamente livre. Decidimos, portanto, utilizar o Unitex/GramLab, por ser livre.
2017-11-05 03:31:10 +00:00
2017-11-05 03:52:51 +00:00
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2017-11-21 03:48:01 +00:00
\chapter{Resultados}
\label{cha:res}
2018-02-07 17:48:22 +00:00
Neste capítulo, serão apresentados e discutidos os resultados dos testes cujos métodos foram descritos e da implementação brevemente descrita no capítulo anterior, estando o primeiro na seção \ref{sec:res:train} e o segundo na seção \ref{sec:res:sis}.
2017-12-04 07:57:55 +00:00
\section{Treino do etiquetador}
\label{sec:res:train}
2018-02-07 17:48:22 +00:00
Nesta seção estão expressos o desempenho dos etiquetadores nos testes, medidos através das estatísticas apresentadas na seção \ref{sec:refteo:estcb}, podendo ser observados nas subseções a seguir, onde os os espaços em branco nas tabela são resultados de divisão por zero.
Para momentos em que desempenho da implementação é mencionado, foi utilizado um computador \textit{desktop} com as seguintes configurações:
\begin{itemize}
\item Sitema operacional Ubuntu Studio 16.04 LTS;
\item Processador Intel Core i7 4790 (8 \textit{threads} em 4 núcleos a 4GHz);
\item 16GB de RAM DDR3 a 1600 MHz;
\item Partição raiz do sistema operacional (\texttt{/}) de 60 GB num SSD SanDisk SATA III de 128GB;
\item Partição de usuário (\texttt{/home}) de 1,5TB num Western Digital Green 5400RPM SATA III de 2TB;
\item Partição de \textit{swap} de 100GB num Western Digital Blue 7200RPM SATA III de 1TB.
\end{itemize}
\subsection{Teste 1: Etiquetador do \textit{Unitex/GramLab}}
\label{sec:res:train:t1}
Das 2.801.233 etiquetas comparadas, apenas 1.701.989 foram atribuídas corretamente ($Precisão \approx 60,76\%$). Na tabela \ref{tab:t1:est} (apêndice \ref{ap:teste1}), encontram-se as estatísticas de cada etiqueta derivadas a partir da tabela de contingência (tabela \ref{tab:t1:cont}, apêndice \ref{ap:teste1}), a qual mostra que apenas as etiquetas \aspas{PREP}, \aspas{PRON} e \aspas{V} demonstraram desempenho satisfatório (precisão maior que 75\%), que também estão entre as quatro etiquetas mais prevalentes tanto no conjunto de treino quanto no conjunto de testes, como pode ser observado na figura \ref{fig:t1:prev}, já que é esperado que o etiquetador etiquete mais corretamente as etiquetas que forma mais frequentes no treino; e a etiqueta mais frequente tanto no treino, quanto no teste, obteve uma precisão ruim (59,25\%).
\begin{figure}[h]
\begin{center}
\includegraphics[scale=.8]{prevalency_charts/fs_unitextagger_prev.pdf}
\caption[Prevalência de etiquetas do \textit{Unitex/GramLab}]{Prevalência das 15 etiquetas mais frequentes do conjunto de treino, teste e etiquetado pelo \textit{Unitex/GramLab}}
\fonte{O autor}
\label{fig:t1:prev}
\end{center}
\end{figure}
Outro ponto relevante é que o treino deste etiquetador levou alguns poucos segundos, mas, usando do mesmo \textit{pipeline} que seria executado do lado do servidor caso fosse implementado, o fez levar mais de 72 horas para concluir o processamento, onde utilizava, num momento arbitrário de observação já no segundo dia de execução, 14GB da memória principal mais 30GB de \textit{swap}. Portanto, por conta destes problemas e dos apresentados na última seção do capítulo anterior, este etiquetador com esta base de dados não apresentou características atrativas para entrar na solução desenvolvida.
\subsection{Teste 2: Etiquetador \textit{YAS-Tagger}}
\label{sec:res:train:t2}
Das 4.571.238 etiquetas comparadas, 3.516.634 foram atribuídas corretamente ($Precisão \approx 76,93\%$). Na tabela \ref{tab:t2:est} (apêndice \ref{ap:teste2}), encontram-se as estatísticas de cada etiqueta derivadas a par tabela de contingência (tabela \ref{tab:t2:cont}, apêndice \ref{ap:teste2}), nesta estão destacadas em cinza algumas linhas que são erros advindos de várias conversões de formatos onde o caractere barra (\aspas{/}), usado em datas e outros, colide com o separador usado para distinguir excertos do texto de suas respectivas etiquetas; tais erros somam 52 ocorrências distribuídas ao longo de todo o corpus de teste, totalizando aproximadamente $0,0011375\%$ da amostra e, portanto, possuem impacto desprezível sobre as métricas exibidas na precisão de casas decimais apresentadas. Também é possível observar que o etiquetador como um todo demonstrou desempenho satisfatório (\textit{F$_1$ score} maior que 75\% e acurácia maior que 97,5\%), mas também errou 14,13\% das etiquetas atribuindo a etiqueta \aspas{???}. Tal etiqueta é reservada para significar que não foi possível atribuir nenhuma outra etiqueta, sendo consequência dum treino que não recebeu a construção encontrada no texto durante o teste; o corpus possui um número na ordem de milhão de etiquetas, mas se fosse da ordem de grandeza menor (centena de milhar), o quanto isso afetaria o desempenho negativamente?
\begin{figure}[h]
\begin{center}
\includegraphics[scale=.8]{prevalency_charts/fs_yastagger_prev.pdf}
\caption[Prevalência de etiquetas do \textit{YAS-Tagger}]{Prevalência das 15 etiquetas mais frequentes do conjunto de treino, teste e etiquetado pelo \textit{YAS-Tagger}}
\fonte{O autor}
\label{fig:t2:prev}
\end{center}
\end{figure}
\subsubsection{Teste 2.1: Etiquetador \textit{YAS-Tagger} sobre corpus de \citeauthoronline{aires2000implementacao}}
\label{sec:res:train:t3}
Das 55.808 etiquetas comparadas, apenas 29.799 foram atribuídas corretamente ($Precisão \approx 53,40\%$). Tabelas de contingência e suas estatísticas encontram-se no apêndice \ref{ap:teste3}. Observada essa queda de precisão de 23,56\%, os erros advindos da etiqueta \aspas{???} agora são 33,74\% (aumento de aproximadamente 138\%), que a faz a etiqueta mais prevalente na saída do etiquetador (vide figura \ref{fig:t3:prev}). Tais mudanças indicam que este etiquetador é altamente dependente de seu corpus de treinamento, e que este deve ser suficientemente volumoso para cobrir todos os casos de uso da língua para o contexto em que este pretende ser utilizado; como a aplicação de internet em que este etiquetador seria incluído não possui um contexto de aplicação previamente determinado, outro algoritmo terá preferência.
\begin{figure}[h]
\begin{center}
\includegraphics[scale=.8]{prevalency_charts/nilc_yastagger_prev.pdf}
\caption[Prevalência de etiquetas do \textit{YAS-Tagger} sobre corpus de \citeauthoronline{aires2000implementacao}]{Prevalência das 15 etiquetas mais frequentes do conjunto de treino, teste e etiquetado pelo \textit{YAS-Tagger} sobre o copus de \citeauthoronline{aires2000implementacao}}
\fonte{O autor}
\label{fig:t3:prev}
\end{center}
\end{figure}
2018-02-19 16:36:46 +00:00
Concluídos os testes, com os dados da tabela \ref{tab:airescomp} (da seção \ref{sec:refteo:aires}), pode-se montar a tabela \ref{tab:taggercomp} com os melhores resultados dos etiquetadores testados.
2018-02-07 17:48:22 +00:00
\begin{table}[h]
\begin{center}
\begin{tabular}{c|c}
\hline
Etiquetador & Precisão \\
\hline
\hline
MXPOST & $89,66\%$ \\
\hline
Brill Tagger & $88,76\%$ \\
\hline
Tree Tagger & $88,47\%$ \\
\hline
YAS-Tagger & $76,93\%$ \\
\hline
Unitex/GramLab & $60,76\%$ \\
\hline
\end{tabular}
\end{center}
\caption[Comparação da precisão entre cinco etiquetadores]{Comparação da precisão entre os etiquetadores \textit{MXPOST}, \textit{Brill Tagger}, \textit{Tree Tagger}, \textit{YAS-Tagger} e \textit{Unitex/GramLab}}
\fonte{O autor e \citeonline[p. 82]{aires2000implementacao}}
\label{tab:taggercomp}
\end{table}
2017-12-04 07:57:55 +00:00
\section{O sistema desenvolvido}
2018-02-07 17:48:22 +00:00
\label{sec:res:sis}
Nesta seção será apresentado o sistema enquanto aplicação implantada, bem como as decisões e soluções para os problemas apresentados no capítulo anterior. Apesar de não ter sido mencionado anteriormente, durante a codificação foi utilizado o sistema de versionamento de código GitLab, com implantação contínua automatizada e servidor \textit{web} NGINX, num servidor privado virtual alugado da empresa de hospedagem OVH, servindo o domínio \aspas{corpusslayer.com}.
Começando da página principal (figura \ref{fig:ss:home}), esta traz os principais elementos que se repetem em todas as páginas: na barra de navegação, o nome da aplicação e o seletor de idiomas (em detalhe na figura \ref{fig:ss:langsel}), no rodapé, um texto estático alinhado à esquerda arbitrariamente definido durante a tradução e três \textit{links} que levam a páginas cujo ambos conteúdo e título são definidos na tradução. Porque o formulário de \textit{login} é exibido nesta tela juntamente ao botão que leva ao fomulário de cadastro, está ausente nesta página, mas a figura \ref{fig:ss:loginreg} traz esses botões em detalhe.
\begin{figure}[h]
\begin{center}
\includegraphics[scale=.5,trim={0 16mm 0 0},clip]{screenshots/home/deslogado_comform.pdf}
\caption{Página inicial do sistema desenvolvido}
\fonte{O autor}
\label{fig:ss:home}
\end{center}
\end{figure}
\begin{figure}[h]
\begin{center}
\includegraphics[scale=1,trim={43mm 113mm 120mm 10mm},clip]{screenshots/language_selector_desktop.pdf}
\includegraphics[scale=.5,trim={0 150mm 0 0},clip]{screenshots/language_selector_mobile.pdf}
\caption[Detalhe do seletor de idiomas]{Detalhe do seletor de idiomas, \textit{desktop} à esquerda e em dispositivos móveis à direita}
\fonte{O autor}
\label{fig:ss:langsel}
\end{center}
\end{figure}
\begin{figure}[h]
\begin{center}
\includegraphics[scale=1,trim={180mm 135mm 0 0},clip]{screenshots/home/deslogado_semform.pdf}
\includegraphics[scale=.5,trim={40mm 120mm 40mm 57mm},clip]{screenshots/language_selector_mobile.pdf}
\caption[Detalhe dos botões de autenticação]{Detalhe dos botões de autenticação, \textit{desktop} à esquerda, sendo encontrado alinhado à direita na mesma barra que aparece o seletor de idiomas, e em dispositivos móveis à direita, sendo encontrado imediatamente abaixo do seletor de idiomas}
\fonte{O autor}
\label{fig:ss:loginreg}
\end{center}
\end{figure}
Após autenticar-se na aplicação, ao usuário é exibido uma tela como a da figura \ref{fig:ss:corpora}, a qual mostra a lista de corpora que o usuário criou e um botão para adicionar um corpus vazio sugestivamente nomeado \aspas{Adicionar corpus}. Clicando no botão \aspas{Detalhes}, o usuário é levado à lista de documentos daquele corpus, como na figura \ref{fig:ss:corpus}, que permite editar e deletar o corpus, adicionar, editar e deletar documentos, além exibir um botão para ações extras que leva à página nomeada \aspas{Análise}.
\begin{figure}[h]
\begin{center}
\includegraphics[scale=.5,trim={0 35mm 0 0},clip]{screenshots/home/logado.pdf}
\caption{Lista de corpora dum usuário}
\fonte{O autor}
\label{fig:ss:corpora}
\end{center}
\end{figure}
\begin{figure}[h]
\begin{center}
\includegraphics[scale=.5,trim={0 0 0 0},clip]{screenshots/corpus.pdf}
\caption{Lista de documentos dum corpus}
\fonte{O autor}
\label{fig:ss:corpus}
\end{center}
\end{figure}
Na página de análises (figura \ref{fig:ss:analysis}), são encontrados os serviços dos \textit{plug-ins} desenvolvidos já aplicando o abordado na seção \ref{sec:des:flux}. Nas seções seguintes serão abordados o \textit{Unitex/GramLab} como extrator de sentenças e lista de palavras (seção \ref{ssec:res:unitex}), o \textit{MXPOST} e o \textit{Tree Tagger} enquanto etiquetadores (seção \ref{ssec:res:tagger}) e a implementação do concordanciador proposto na seção \ref{sec:des:conc} (seção \ref{ssec:res:concord}).
\begin{figure}[h]
\begin{center}
\includegraphics[scale=.75,trim={0 0 0 0},clip]{screenshots/analise.pdf}
\caption{Opções de análises para um corpus}
\fonte{O autor}
\label{fig:ss:analysis}
\end{center}
\end{figure}
\subsection{Extrator de sentenças e lista de palavras}
\label{ssec:res:unitex}
Usando o \textit{Unitex/GramLab} como a parte que faz, de fato, o processamento dos dados, restou apenas apenas encapsular o dado e exibí-los ao usuário. A primeira parte foi solucionada escrevendo código a partir do manual de \citeonline{paumier2016user}, que serviu de base para a realização da segunda parte. A segunda parte teve fortes influências da interface do Unitex/GramLab, onde a lista de sentenças (figura \ref{fig:ss:sentences}) também exibe o número sequencial do item da lista e a lista de palavras (figura \ref{fig:ss:wordlist}), que uma janela composta de três listas, tornou-se uma página com três seções (são elas: \aspas{Palavras não reconhecidas}, \aspas{Palavra Composta} e \aspas{Palavra Simples}) que abrigam as lista e cada lista teve seu conteúdo reorganizado em formato de tabela.
\begin{figure}[h]
\begin{center}
\includegraphics[scale=.5,trim={0 16mm 0 0},clip]{screenshots/unitex/sentences.pdf}
\caption{Lista de sentenças dum corpus}
\fonte{O autor}
\label{fig:ss:sentences}
\end{center}
\end{figure}
\begin{figure}[h]
\begin{center}
\includegraphics[scale=.7,trim={0 90mm 0 0},clip]{screenshots/unitex/wordlist.pdf}
\caption{Lista de palavras dum corpus}
\fonte{O autor}
\label{fig:ss:wordlist}
\end{center}
\end{figure}
\subsection{Etiquetador}
\label{ssec:res:tagger}
O primeira tentativa de integrar um etiquetador à ferramenta foi o \textit{MXPOST}, que, para textos da língua portuguesa, retornava o erro da figura \ref{fig:ss:mxerr}, mas foi mantido por funcionar para etiquetar com sucesso textos na língua inglesa. O segundo foi o \textit{Brill Tagger}, que requer fornecer permissão de execução (figura \ref{fig:ss:brillerr}) a arquivos cujo nome sugere que abrigarão conteúdo fornecido pelo usuário, o que pode gerar possibilidade de execução remota de código no servidor se assumir que o usuário sempre será mal-intencionado, descartando-o como possibilidade. O terceiro foi o \textit{Tree Tagger}, cuja visualização é bastante similar à lista de sentenças, mas com pares palavra-etiqueta, como pode ser observado na figura \ref{fig:ss:tted}.
\begin{figure}[h]
\begin{center}
\includegraphics[scale=.5,trim={0 14mm 0 0},clip]{screenshots/mxpost_erro.pdf}
\caption[Erro do \textit{MXPOST}]{Erro do \textit{MXPOST} ao etiquetar para o Português Brasileiro utilizado arquivos treinados por \citeonline{aires2000implementacao}}
\fonte{O autor}
\label{fig:ss:mxerr}
\end{center}
\end{figure}
\begin{figure}[h]
\begin{center}
\includegraphics[scale=.2,trim={0 0 0 0},clip]{screenshots/brill_erro.png}
\caption[Erro do \textit{Brill Tagger}]{Erro do \textit{Brill Tagger} requisitando arquivos com permissão de execução}
\fonte{O autor}
\label{fig:ss:brillerr}
\end{center}
\end{figure}
%\begin{figure}[h]
% \begin{center}
% \includegraphics[scale=.5,trim={0 45mm 0 0},clip]{screenshots/etiquetar.pdf}
% \caption{Tela de processamento do \textit{Tree Tagger}}
% \fonte{O autor}
% \label{fig:ss:tter}
% \end{center}
%\end{figure}
\begin{figure}[h]
\begin{center}
\includegraphics[scale=.5,trim={0 39mm 0 0},clip]{screenshots/etiquetado.pdf}
\caption{Corpus processado pelo \textit{Tree Tagger}}
\fonte{O autor}
\label{fig:ss:tted}
\end{center}
\end{figure}
\subsection{Concordanciador}
\label{ssec:res:concord}
O concordanciador desenvolvido, para resolver o problema da falta levantado na seção \ref{sec:des:train} a respeito da compreensão da sintaxe do buscador e do termo de busca digitado, em sua tela de pesquisa (figura \ref{fig:ss:concbusca}), foi adicionado uma tabela com a referência das construções aceitas e uma previsualização em tempo real de como o termo será entendido pelo buscador que está no servidor. Já nos resultados (figura \ref{fig:ss:concres}), o destaque se dá tanto pelo par palavra-etiqueta em vermelho se destacando a cinza (pessoas com alguns tipos de deficiência visual congênita incapazes de distinguir cores (daltonismo) podem não ver esta diferença) e pela cor de destaque da etiqueta com fundo colorido e letra branca se diferenciando da com fundo branco e letra preta. Também é observado um botão com uma seta apontando \aspas{para trás} na figura \ref{fig:ss:concres}, bem como na \ref{fig:ss:tted}, \ref{fig:ss:wordlist} e \ref{fig:ss:sentences}, onde tal seta, quando clicada, busca no corpus pelo documento que contém o que estava sendo exibido na tela, retornando o documento diretamente em caso de resultado único (figura \ref{fig:ss:bts}) ou uma lista deles em caso haja múltiplos resultados (figura \ref{fig:ss:btm}).
\begin{figure}[h]
\begin{center}
\includegraphics[scale=.75,trim={0 0 0 0},clip]{screenshots/concordanciador/busca.pdf}
\caption{Tela de busca do concordanciador}
\fonte{O autor}
\label{fig:ss:concbusca}
\end{center}
\end{figure}
\begin{figure}[h]
\begin{center}
\includegraphics[scale=.75,trim={0 61mm 0 0},clip]{screenshots/concordanciador/resultados.pdf}
\caption{Tela de resultados do concordanciador}
\fonte{O autor}
\label{fig:ss:concres}
\end{center}
\end{figure}
\begin{figure}[h]
\begin{center}
\includegraphics[scale=.5,trim={0 50mm 0 0},clip]{screenshots/concordanciador/backtrack.pdf}
\caption{Visualização de documento a partir dum clique na \aspas{seta para trás}}
\fonte{O autor}
\label{fig:ss:bts}
\end{center}
\end{figure}
\begin{figure}[h]
\begin{center}
\includegraphics[scale=.5,trim={0 42mm 0 0},clip]{screenshots/concordanciador/backtrack_many.pdf}
\caption{Listagem de documentos a partir dum clique na \aspas{seta para trás}}
\fonte{O autor}
\label{fig:ss:btm}
\end{center}
\end{figure}
2017-11-05 03:52:51 +00:00
2018-01-24 12:20:52 +00:00
\section{Código fonte}
2018-02-07 17:48:22 +00:00
O código fonte da aplicação desenvolvida neste trabalho está publicamente disponível tanto em {\url{https://github.com/adlerosn/corpusslayer}}, quanto em {\url{https://git.adlerosn.com/root/corpusslayer}}; já o do etiquetador está publicamente disponível tanto em {\url{https://github.com/adlerosn/yas-pos-tagger}}, quanto em {\url{https://git.adlerosn.com/root/yas-pos-tagger}}.
2018-01-24 12:20:52 +00:00
2017-11-05 03:52:51 +00:00
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2017-11-21 03:48:01 +00:00
\chapter{Conclusão}
\label{cha:conc}
2018-02-07 17:48:22 +00:00
2018-02-08 01:17:01 +00:00
Neste trabalho, iniciado com a observação de que havia espaço dentro dos \textit{softwares} para estudo da língua, sucedido com a comparação de características e a listagem de requisitos duma ferramenta desejável, culminando com a implementação e implantação desta. Para tanto, foi necessário compatibilizar a entrada e saída de diversos sistemas e ferramentas com características diferentes, com e sem documentação adequada, tanto com formatos cujo \textit{parser} foi mais fácil de escrever que outros.
Quanto ao aspecto documentação, etiquetadores como \textit{MXPOST} e \textit{Tree Tagger} não precisaram de nenhum documento além do breve e direto \aspas{leia-me} incluído em seus respectivos pacotes de distribuição. Já o \textit{Unitex/GramLab}, além do manual do usuário para compreender o conteúdo nada trivial dos arquivos gerados pelo programa, foi necessário usar o programa para, a partir do \textit{log} de comandos disparados ao terminal, inferir quais os comandos produzem quais arquivos e seus efeitos colaterais, onde em um momento, o código fonte da interface \textit{desktop} teve de ser consultado; além do já discorrido sobre a documentação das etiquetas utilizadas na seção \ref{sec:des:train}. Isso demonstra que o \textit{Unitex/GramLab} ainda não possui uma documentação madura, que cubra o \textit{software} como um todo de forma que um programador seja capaz de estender suas funcionalidades, não apenas o manuseio de sua interface. Independentemente do nível de maturidade da ferramenta, neste trabalho, elas foram integradas de forma transparente ao usuário que pode escolher a fonte de informação desejada para a tarefa desejada, ocultando detalhes de implementação intrínsecos a cada ferramenta (utilizando as configurações padrão) e trazendo o resultado pronto e relevante para o usuário (o linguista pesquisador); sem ocultar o fluxo de informações: os \textit{softwares} envolvidos naquele fluxo e quais bases de dados estão sendo utilizadas em conjunto com o \textit{software}, está explícito duma forma que é esperado ser possível, a partir da ferramenta desenvolvida, produzir conhecimento científico sem que seja necessário pagar pelo uso das ferramentas.
2018-02-07 17:48:22 +00:00
2018-02-08 01:17:01 +00:00
Outra contribuição é sobre o problema relatado na seção (\ref{sec:des:conc}) que aborda o concordanciador, onde os softwares que realizam este papel de concordanciador (tabela \ref{tab:comppln} da seção \ref{sec:des:req}) assumem que o usuário conhece e domina perfeitamente a sintaxe que apenas aquele software utiliza, já leu o manual e praticou; o que vai de encontro às premissas de usabilidade defendidas por \citeonline{krug2008pensar}. Com uma tabela de exemplos que abrangem todas as construções da sintaxe, a consulta ao manual foi substituída por uma rolagem na mesma página, e com a visualização gráfica em tempo real da consulta digitada, é esperado que o usuário iniciante sinta-se mais seguro e confortável quanto às buscas realizadas. Portanto, este trabalho também contribuiu para com a usabilidade dos concordanciadores.
2017-12-04 07:57:55 +00:00
\section{Trabalhos futuros}
2018-02-07 17:48:22 +00:00
2018-02-08 01:17:01 +00:00
\begin{itemize}
\item Embora a interoperabilidade de programas dentro da aplicação desenvolvida tenha sido uma preocupação durante o desenvolvimento, a interoperabilidade com aplicações externas acabou sendo negligenciada por conta do cronograma. É trabalho futuro tornar as funcionalidades acessíveis através de outras aplicações (sugestão: API restful com dados em notação JSON);
\item Embora este trabalho tenha levado em conta a acessibilidade de daltônicos na escolha de cores, a aplicação não foi projetada para cegos que usam leitores de tela. Portanto, tornar a aplicação acessível para tais pessoas é trabalho futuro;
\item Embora mencionado na introdução (seção \ref{sec:intro:motiv}) uma possível aplicação para o ensino da língua, são trabalhos futuros realizar um estudo de caso do uso da aplicação desenvolvida enquanto ferramenta de apoio no processo de ensino-aprendizagem num curso de letras, num curso de língua estrangeira, num curso de treinamento profissional e/ou numa turma de ensino médio;
\item Embora atributos de corpora arbitrariamente fornecidos pelo usuário estejam implementados no modelo de dados (figura \ref{fig:class} da seção \ref{subsef:des:cdp}), eles não foram implementados para o usuário. É trabalho futuro implementar tais atributos, de preferência movendo o gerenciador de corpora para um \textit{plug-in} à parte;
\item Embora considerado desejável para grupos de pesquisadores atuando sobre um único objeto que pudessem compartilhar corpora e resultados uns com os outros, o requisito foi abandonado para esta primeira versão quando colocado no cronograma. É trabalho futuro implementá-lo;
\item Embora um painel de controle administrativo seja considerado relevante para administradores dos sistemas de tecnologia da informação de universidades ou empresas que venham a instalar a aplicação, o requisito foi abandonado para esta primeira versão quando colocado no cronograma. É trabalho futuro implementá-lo;
\item Embora a aplicação tenha sido idealizada para usar apenas softwares gratuitos de código aberto ou livre, o \textit{MXPOST} e o \textit{Tree Tagger} possuem licenças restritivas quanto a quais usos podem ser feitos dos etiquetadores em questão. É trabalho futuro substituir tais etiquetadores a fim de remover restrições quanto aos usos permitidos da plataforma;
\item Pela falta de documentação no \textit{Unitex/GramLab}, é trabalho futuro inferir o significado das etiquetas por ele fornecido e documentá-las adequadamente;
\item Embora considerado desejável extrair automaticamente palavras-chave a partir do texto fornecido, o requisito foi abandonado para esta primeira versão quando colocado no cronograma. É trabalho futuro implementá-lo;
\item Embora considerado desejável montar corpora automaticamente a partir de buscas na internet, o requisito foi abandonado para esta primeira versão quando colocado no cronograma. É trabalho futuro implementá-lo;
\item Embora considerado desejável obter a frequência dos n-gramas do texto, o requisito foi abandonado para esta primeira versão quando colocado no cronograma. É trabalho futuro implementá-lo;
\item Embora considerado desejável obter as estatísticas do texto (itens da lista de requisitos em \ref{subsec:des:reqsol} que iniciam com \aspas{Calcular estatísticas}), o requisito foi abandonado para esta primeira versão quando colocado no cronograma. É trabalho futuro implementá-lo.
\end{itemize}
2018-02-07 17:48:22 +00:00
2018-02-08 01:17:01 +00:00
%\textit{lista de tópicos mencionando: trocar plugins que baixam código proprietário por que sejam completamente livres, mais plugins (de preferencia, livres), interface para adicionar e atualizar plugins a partir de repositórios GIT, caça aos bugs, o que refatorar na plataforma, implementar a api JSON que \aspas{não saiu a tempo}, estudo de caso com uma turma real}
2017-11-05 03:31:10 +00:00
2018-02-07 17:48:22 +00:00
%Uma aplicação de internet que atingiu grande parte da população mundial é o Facebook.
%
%Sendo um grande site de relacionamentos na internet, ultrapassou a marca dos 2 bilhões de usuários em junho de 2017 \cite{telegraph2017facebook}, o que representa 26\% da população mundial, segundo \citeonline{worldometers2018population}.
%
%Uma das pessoas que o autor conversou com nesta rede social durante os estágios iniciais da execução deste trabalho dizia possuir dislexia (que o DSM-5 \cite{dsm5} cataloga como \aspas{315.00 (F81.0)} sob o nome \aspas{desordem específica de aprendizado com prejuízo na leitura} (p. 67)) e digitava com muitas palavras com grafia incorreta e com pontuação em locais arbitrários (que o DSM-5 \cite{dsm5} cataloga como \aspas{315.2 (F81.81)} sob o nome \aspas{desordem específica de aprendizado com prejuízo na escrita} (p. 67)), dificultando a compreensão da mensagem; usando o recurso de digitação por voz do teclado do telefone móvel dele, a grafia era correta mas a pontuação era inexistente.
%
2017-11-05 03:52:51 +00:00
\input{tcc_end}