Repositório Institucional UFC: Implementação de melhorias no framework ShareMining para mineração de texto do Twitter

Livre

0
0
75
1 year ago
Preview
Full text

  UNIVERSIDADE FEDERAL DO CEARÁ CAMPUS QUIXADÁ

  BACHARELADO EM ENGENHARIA DE SOFTWARE GUSTAVO AIRES MATOS

  IMPLEMENTAđấO DE MELHORIAS NO FRAMEWORK SHAREMINING PARA MINERAđấO DE TEXTO DO TWITTER

  GUSTAVO AIRES MATOS

  IMPLEMENTAđấO DE MELHORIAS NO FRAMEWORK SHAREMINING PARA MINERAđấO DE TEXTO DO TWITTER

  Monografia apresentada no curso de Engenharia de Software da Universidade Federal do Ceará, como requisito parcial à obtenção do título de bacharel em Engenharia de Software. Área de concentração: Computação. Orientadora: Dra. Ticiana Linhares Coelho da Silva Dados Internacionais de Catalogação na Publicação

Universidade Federal do Ceará

Biblioteca Universitária Gerada automaticamente pelo módulo Catalog, mediante os dados fornecidos pelo(a) autor(a)

  M381i Matos, Gustavo Aires.

  Implementação de melhorias no framework ShareMining para mineração de texto do Twitter / Gustavo Aires Matos. – 2017. 73 f. : il. color. Trabalho de Conclusão de Curso (graduação) – Universidade Federal do Ceará, Campus de Quixadá, Curso de Engenharia de Software, Quixadá, 2017. Orientação: Profa. Dra. Ticiana Linhares Coelho da Silva.

1. Mineração de texto. 2. Framework (Programa de computador). 3. Twitter (Redes sociais on-line). I.

  Título. CDD 005.1

  GUSTAVO AIRES MATOS

  IMPLEMENTAđấO DE MELHORIAS NO FRAMEWORK SHAREMINING PARA MINERAđấO DE TEXTO DO TWITTER

  Monografia apresentada no curso de Engenharia de Software da Universidade Federal do Ceará, como requisito parcial à obtenção do título de bacharel em Engenharia de Software. Área de concentração: Computação.

  Aprovado em: ____/_____/______ BANCA EXAMINADORA

  Dra. Ticiana Linhares Coelho da Silva (Orientadora) Universidade Federal do Ceará – UFC

  Dr. Marcos Antônio de Oliveira Universidade Federal do Ceará - UFC

  Me. Regis Pires Magalhães Universidade Federal do Ceará - UFC

  AGRADECIMENTOS Agradeço a Deus por ter me ajudado durante toda a trajetória da minha vida até esse ponto.

  Sou muito grato à minha família, principalmente meus pais, Josemir e Cláudia, que foram extremamente importante para o meu sucesso durante toda minha vida e faculdade. Agradeço também aos meus avós que sempre, José e Delice, que sempre se importaram muito e fizeram parte da minha educação e formação. Agradeço também à minha namorada, Gabriela Jácome, por todo o suporte durante todos esse anos, fornecendo grande apoio moral e paz nos momentos de muita ansiedade e correria. Um agradecimento muito especial à minha orientadora, Ticiana Linhares Coelho da Silva, que foi de fundamental importância nos últimos semestres da faculdade, durante o desenvolvimento deste trabalho e também por me fazer entrar nesse área de pesquisa. Com certeza, sem sua dedicação as coisas teriam sido bem mais difíceis. Aos professores participantes da banca examinadora, Regis Pires Magalhães e Marcos Antônio de Oliveira pelas valiosas colaborações e sugestões. Aos meus colegas da faculdade, Caio, Davi, Eduardo, Wanderson, Gabriel, Júlio, Letícia, Lucas, Isac, Isaías, Kayo, Felipe, Marcelo, Marcos, Matheus e Sérgio, por todas as noites mal dormidas e trabalhos feitos com grande comprometimento, além dos momentos de descontração e divertimento. Levo vocês comigo para vida! Aos professores que foram meus orientadores em bolsas, Samy Soares Passos de Sá, Antônia Diana Braga Nogueira e Marcos Dantas Ortiz. Agradeço também a todos os professores da UFC que me deram aula e que contribuíram para minha formação. Obrigado pela dedicação e pelos ensinamentos.

  RESUMO Nas redes sociais, muitos dados são gerados em forma de texto contendo opiniões sobre temas diversos. O que fazer com essa informação tem tido grande destaque nos últimos tempos.

  Empresas como Twitter ou Facebook são capazes de gerar informações relevantes com as publicações dos perfis. Como fazer isso é um desafio para os especialistas que em geral implementam seus próprios algoritmos ou utilizam variadas ferramentas para processar esses dados. A mineração de texto é uma área da mineração de dados que envolve extração de padrões e conhecimento de documentos em formato de texto. Sendo assim, muitas vezes os especialistas podem implementar os mesmos algoritmos mais de uma vez tornando o processo muito manual e repetitivo, já que há passos em comum quando se executa o processo de mineração de texto, como foi identificado em alguns trabalhos. Os passos em comum para mineração de texto podem ser resumidos em coleta, pré-processamento, análise e visualização. Este trabalho propõe melhorias para a ferramenta Sharemining que implementa todas estas etapas de forma automatizada e integrada. Dessa forma, os usuários podem empregar maior foco na avaliação dos resultados do que na implementação de todo o processo, fazendo uso do framework. Este trabalho também realiza uma validação das melhorias aplicadas utilizando dados do Twitter sobre a reforma da previdência social brasileira.

  Palavras-chave: Mineração de texto. Framework (Programa de computador). Twitter (Redes sociais on-line).

  ABSTRACT In social networks, many data are generated in the form of text containing opinions on various topics. What you have to do with this information has been very prominent in recent times.

  Text mining is an area of data mining that involves extracting patterns and knowledge from text documents. Companies like Twitter or Facebook are able to generate relevant information with its profiles’ posts. How to do this analysis is a challenge for experts who often implement their own algorithms or use a variety of tools to process this data. Therefore, specialists can often implement the same algorithms more than once, making the process very manual and repetitive, since there are common steps when executing the text mining process, as has been identified in some works. Common steps for text mining can be summarized in collection, pre-processing, analysis and visualization. This work proposes improvements for Sharemining tool that implements all these steps in an automated and integrated way. Thus, the users can use more focus in the evaluation of the results than in the implementation of the whole process, making use of the framework. This paper also validates the improvements applied using Twitter data on the Brazilian social security reform.

  Keywords: Text mining. Framework (Computer program). Twitter (Online social network).

  LISTA DE FIGURAS . . . . . . . . . . . . . . . . . .

  56 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  59 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  59 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  58 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  57 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  57 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  56 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  55 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  20 . . .

  46 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  46 . . . . . . . . . . . . . .

  45 . . . . . . . . . . . . . .

  44 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  36 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  24 . . . . . . . . . . . . . . . .

  60

   . . . . . . . . . . . . . .

  68 . . . . . . . . . . . . . .

  73 . . . . . . . . . . . . . . . .

  72 . . . . . . . . . . . . . . . .

  72 . . . . . . . . . . . . . . .

  71 . . . . . . . . . . . . . . .

  71 . . . . . . . . . . . . . . . . . . . . . . . . . . .

  70 . . . . . . . . . . . . . . .

  70 . . . . . . . . . . . . . . .

  69 . . . . . . . . . . . . . . .

  69 . . . . . . . . . . . . . .

  68 . . . . . . . . . . . . . . . .

  62 . . . . . . . . . . . . . . .

  67 . . . . . . . . . . . . . . . .

  67 . . . . . . . . . . . . . . .

  66 . . . . . . . . . . . . . . .

  66 . . . . . . . . . . . . . . .

  65 . . . . . . . . . . . . . . . .

  65 . . . . . . . . . . . . . . . .

  64 . . . . . . . . . . . . . . .

  64 . . . . . . . . . . . . . . .

  63 . . . . . . . . . . . . . . .

  63 . . . . . . . . . . . . . . .

  73

LISTA DE QUADROS

  . . .

  30 . . . . . . . . . . . . . . . . . . . . . . . .

  43 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  47 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  47 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  49 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  49 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  49 LISTA DE ABREVIATURAS E SIGLAS PLN Processamento de Linguagem Natural NLP Natural Language Processing SVM Support Vector Machine CRF Conditional Random Fields API Application Interface Programming HTML HyperText Markup Language

  SUMÁRIO

1 INTRODUđấO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  23 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  31

  28 . . . . . . . . . . . . . . . . . . . .

  28 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  27

  27 . . .

  27 . . . . . . .

  26 . . . . . . . . . . . . . . . . . . . . .

  25 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  25 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  25 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  23 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  22 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  22 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  22 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  22 . . . . . . . . . . . . . . . . . . . . . . . . . . .

  21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  20 . . . .

  19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  18 . . . . . . . . . . . . . . . . . . . . . .

  18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.3 Twitter como um corpus para análise de sentimentos e mineração de opinião . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5.4 Análise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  40 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  51

  47 . . . . . . . . . . . . . . . . . . . . . . . .

   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  45

  45 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  43 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  43 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  42 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  42 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  42 . . . . . . . . . . . . . . . . . . . . . . . . . . .

  41 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  41 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  40 . . . . . . . . . . . . . . . . . . . . . . . . . .

  32 . . . . . . . . . . . . . . . .

  33 . . . . . . . . . . . . . . . . . . . . .

  40 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  38 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  38 . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  37 . . . . . . . . . . . . . . . . . . . . .

  37 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  36 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  36 . . . . . . . . . . . . . . . . . . . . . . . . . . .

  35 . . . . . . . . . . . . . . . . . . . . . . . . . .

  35 . . . . . . . . . . . . . . . . . . . . . . . . . . . .

   . . . . . . . . . . . . . . . . . . . . .

  35

  34 . . . . . . . . . . . . . . . . . . . . . . . . . . .

  34 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  33 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  40 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

   . .

  55 58

  

  61 . . . . . . . . . . . . . . . . .

1 INTRODUđấO

  Diariamente, tem-se uma quantidade massiva de dados sendo gerada em diversos tipos de sistemas e aplicativos. apontam alguns tipos de fontes desses dados, como: serviços e sistemas web, e-commerce, sistemas corporativos, transações financeiras e redes sociais. Juntos, esses sistemas geram petabytes de dados todo dia

  Enquanto humanos, as pessoas desejam obter informações da forma mais fácil e rápida possível. Querem também satisfazer suas curiosidades e serem ouvidos. Isso impulsiona o sucesso de redes sociais como Facebook e Twitter e o surgimento de tantas outras nos últimos anos

  Somente no Twitter, há mais de meio bilhão de usuários Essa quantidade de dados talvez se dê pela possibilidade de usuários fazerem postagens na "velocidade do pensamento", o que é um fator importante para uma rede social ser bem sucedida Entender essa grande quantidade de dados disponíveis em redes sociais é uma chave para, por exemplo, tomadas de decisões.

  Os dados de forma bruta e individual não dizem muito mas, em conjunto, possuem uma capacidade de gerar informações sobre o que um grupo de pessoas pode estar falando, por exemplo. Para tanto, é necessário que seja realizado algum tipo de análise, dando um novo propósito para os dados individuais, como, por exemplo, direcionamento de campanhas publicitárias. Essa análise pode ser feita utilizando técnicas de mineração de dados.

  Mineração de dados envolve um conjunto de técnicas que, por meio de algoritmos baseados em modelos computacionais, são capazes de extrair informações, trazendo à tona padrões presentes nos dados analisados, possibilitando expor o conhecimento inserido no conjunto bruto analisado

  por sua vez, analisa tweets utilizando a técnica de classificação Naive Bayes.

  Os trabalhos de realizam classificação de dados do Twitter utilizando uma técnica não supervisionada para categorização do conjunto de treino. Para isso, foram usados emoticons nas consultas enviados para a API do Twitter. Ambos compararam algoritmos de classificação Naive Bayes, SVM e outros. Em todos os trabalhos citados, as etapas seguidas, de forma geral, foram: 1) coleta; 2) pré-processamento, que compreende às etapas do processamento em linguagem natural; 3) aplicação de um algoritmo de mineração de dados, e; 4) avaliação de resultados utilizando alguma medida de qualidade, como inspeção visual ou acurácia da solução.

  No cenário atual de mineração de texto em redes sociais, muitas etapas do processo de extração de conhecimento se assemelham bastante. Seguindo os mesmos passos, os trabalhos, em geral, se assemelham nas etapas de mineração de texto. Esse esforço se torna repetitivo, mesmo em se tratando de trabalhos com propósitos diferentes. Dada a sua estrutura similar, é possível diminuir o retrabalho e concentrar mais esforços na análise e avaliação dos resultados obtidos.

  Com os padrões observados no processo de mineração de dados, é possível que uma

  

  ferramenta como Scikit-Learn possa reduzir o número de atividades desempenhadas por um especialista, evitando retrabalhos de codificação. Mais especificamente para mineração de texto, desenvolveu o framework ShareMining que contempla todas as etapas citadas anteriormente, resultando em uma redução de trabalho para o especialista.

  Anteriormente, o framework ShareMining apresentava implementações de algoritmos para pré-processamento de texto, Processamento de Linguagem Natural (PLN), algoritmos de coleta de dados do Twitter e um algoritmo de clusterização chamado DBSCAN. Todos esses algoritmos estavam em diferentes projetos, diferentes repositórios no GitHub e não funcionavam como uma ferramenta única. A arquitetura do framework ShareMining não era a mais adequada para uma ferramenta que visa facilitar trabalhos na área de mineração de texto.

  Este trabalho se propõe a dar continuidade ao framework ShareMining desenvolvido por promovendo algumas mudanças, visando sua melhoria geral, adição de algumas funcionalidades e padronização do que foi implementado. Por exemplo, melhoria por meio da adição dos algoritmos Naive Bayes e K-Medoids. As alterações visam que a ferramenta diferentes algoritmos de mineração de dados para redes sociais e que seja feita uma validação do framework .

  Este trabalho está dividido da seguinte forma: na Seção 2, o estado atual do é apresentado. A Seção 3 informa os objetivos do trabalho, geral e específicos. Na framework

  Seção 4 os conceitos chave deste trabalho são descritos. Na Seção 5, são exibidos os trabalhos relacionados. A Seção 6 descreve a metodologia a ser seguida. Na Seção 7, os resultados obtidos até o momento são discutidos e na Seção 8 são apresentadas as considerações finais.

2 OBJETIVOS A seguir, são apresentados os objetivos deste trabalho.

  2.1 Objetivo Geral Dada a estrutura do processo de mineração de textos, é necessária uma ferramenta para diminuição de retrabalho nas etapas envolvidas no processo de mineração de textos. Portanto, este trabalho tem o objetivo de melhorar o framework ShareMining para mineração de texto do Twitter de no sentido de adicionar novos meios de coleta de dados e adicionar novos algoritmos de mineração de dados, além de possibilitar formas de visualização desses resultados.

  2.2 Objetivos Específicos

  a) Implementar os scripts de coleta de dados com uso das APIs de Search e Streaming do Twitter e método de Scraping para dados publicados no Twitter há mais de uma semana.

  b) Criar um módulo para gerenciamento de arquivos.

  c) Implementar o algoritmo de classificação Naive Bayes, bastante utilizado na classificação de textos.

  d) Implementar mais um algoritmo de clusterização.

  e) Implementar novas medidas de similaridade para a clusterização.

  f) Implementar visualização de resultados.

  g) Validar a nova versão do framework por meio de um estudo de caso.

3 FUNDAMENTAđấO TEốRICA Nesta seção, serão apresentados os conceitos fundamentais deste trabalho.

3.1 Mineração de Texto

  A Mineração de Texto (Text Mining) é um processo que conta com um conjunto de técnicas para análise de documentos em forma de texto. É considerada uma evolução da área de Recuperação de Informações, estando voltada para a descoberta de conhecimento em dados não estruturados - dados que não possuem formato ou padrão de armazenamento. Algoritmos são aplicados para a identificação de informações úteis, dentro de qualquer domínio que disponha de documentos textuais, onde tais informações dificilmente seriam extraídas de forma tradicional

  Mineração de Texto está ligada à descoberta de padrões relevantes e não-triviais a partir de documentos de texto. Atualmente, um número expressivo de empresas tem trabalhado na área de Mineração de Texto, dada a grande importância que tem ganhado, pela sua capacidade de gerar conhecimento

  Vários trabalhos definem etapas diferentes para o processo de mineração de texto. dividem em seleção de documentos, definição do tipo de abordagem dos dados (análise estatística ou semântica), preparação dos dados, indexação e normalização, cálculo da relevância dos termos, seleção dos termos e análise dos resultados.

  dividem a mineração de texto de uma forma mais simples e genérica. As etapas são: coleta de dados, pré-processamento, indexação, mineração de dados (processamento) e análise da informação (Figura A maioria dessas etapas já foram abordadas na seção anterior e são muito comuns em trabalhos de mineração de texto. De forma simples, a etapa de coleta foca em determinar o domínio de estudo e montar a base dos dados a ser usada. A próxima etapa, de pré-processamento, organiza os dados em um formato adequado para processamento, geralmente visando minimizar irregularidades que possam impactar os resultados. Processamento de Linguagem Natural (PLN) é um dos métodos dessa etapa e será explorado neste trabalho. A terceira etapa é chamada de indexação, quando os dados são análise se concentra em interpretar os resultados da etapa anterior, cruzando os resultados com o conhecimento que se tem do domínio.

  A prática de mineração de texto pode ser aplicada a diversos contextos onde haja a disponibilidade de documentos que possam ser analisados. Neste trabalho, postagens do Twitter serão analisadas seguindo três passos gerais baseados nas etapas definidas por e processamento (mineração).

  Figura 1 – Etapas do processo de mineração de texto.

  Fonte –

  3.1.1 Coleta Basicamente, essa etapa pode ser resumida como o ponto onde os dados são escolhidos e coletados. Essa decisão de que dados utilizar, geralmente é tomada pensando previamente no que se quer ter como resultado, para que possa-se pensar sobre de onde é possível extrair tais informações. Uma das possíveis técnicas utilizadas nessa etapa é a de crawling , que pode ser resumido como ler alguma página web e extrair informações de sua estrutura HTML. dos níveis de análise linguística referentes aos processos de produção e compreensão de linguagem utilizados pelos humanos. Dois dos objetivos do PLN são responder perguntas sobre o conteúdo de um texto e fazer inferências a partir do texto. Particularmente, esse último objetivo será um dos objetivos deste trabalho.

  Processamento de Linguagem Natural é um campo de estudo que foca em como fazer um computador entender linguagem natural (inglês, português etc), para a realização de outras tarefas úteis. As pesquisas sobre PLN tentam entender como os seres humanos usam e entendem a linguagem, para que possa ser possível desenvolver algoritmos que ajudem computadores a entenderem linguagem natural Para entender linguagem natural, lista sete níveis de análise linguística usados para extrair-se informações de textos ou linguagem falada: fonético, morfológico, léxico, sintático, semântico, discurso e pragmático. Um PLN pode conter todos ou alguns destes níveis.

  O nível morfológico trabalha com as partes das palavras que contém sentido, sufixos e prefixos. Já o nível sintático, lida com a gramática e a estrutura das sentenças do texto Neste trabalho, apenas os níveis morfológico e sintático serão usados, visando estruturar os textos coletados do Twitter para a fase de processamento dos dados, de acordo com o que está descrito na Seção

  Dois conceitos importantes ligados a essa etapa são: tokenização e stopwords. Tokenização é o processo de separar as palavras de um documento, tornando-as em documentos com apenas uma palavra. Esse processo de tokenização é útil, por exemplo, para a detecção de stopwords , que são palavras que não possuem significado e, portanto, podem ser removidas do documento,

  3.1.3 Indexação Na etapa de indexação, realiza-se a separação dos dados para facilitar o uso e as buscas. Por exemplo, pode-se dividir os dados em dias, para um resultado de processamento por dias.

  3.1.4 Mineração se agrupar dados, pode-se usar algoritmos de clusterização.

  3.1.5 Análise Na etapa de análise, o especialista deve observar os resultados para conseguir formar informações coerentes que possam ser úteis. As formas de exibir esses resultados são variadas, e de acordo com os algoritmos de mineração que foram aplicados, podem existir diferentes formas de se visualizar esses dados de saída.

3.2 Medidas de Similaridade

  Na mineração de dados, medidas de similaridade são muito utilizadas. As medidas servem para informar um grau de diferença ou semelhança entre dois objetos. Algoritmos de clusterização se utilizam dessas medidas para agrupar dados similares e separar dados diferentes. Essas medidas podem se basear em dados de texto, dados numéricos e geoespaciais. A seguir, duas medidas presentes na ferramenta ShareMining são demonstradas.

  3.2.1 Jaccard A medida de Jaccard calcula a diferença, semelhança e distância entre dois conjuntos que, no caso da ferramenta, serão conjuntos de palavras. Essa medida é o resultado da divisão entre o número de palavras que são comuns entre os conjuntos dividido pelo número total de palavras presentes e nos conjuntos, como visto na Fórmula

  Quanto mais próximo de 1 é o resultado, maior é a semelhança entre os conjuntos.

  |A ∩ B| (3.1)

  J (A , B ) = |A ∪ B|

  3.2.2 Levenshtein O algoritmo de Levenshtein para o cálculo de similaridade concentra-se basicamente em contar a quantidade necessárias de edições a serem feitas para transformar uma palavra em edições necessárias para cada índice.

3.3 Clusterização

  Clusterização é o processo que organiza dados multidimensionais em clusters (grupos ou partições) de acordo com uma medida de similaridade. Logo, itens de um mesmo cluster devem ser mais similares (próximos ou parecidos) entre si do que entre itens de clusters diferentes. Assim, clusterizar é agrupar dados que possuem padrões desconhecidos, e cada cluster passa a ter um significado revelado pelos dados que o constituem. Esse processo pode ser utilizado para análise de padrões, agrupamento, classificação de padrões, segmentação de imagens e tomada de decisão

  caracterizam clusterização como o problema de encontrar partições de um conjunto de dados em que itens similares estejam em um mesmo grupo e itens diferentes estejam em grupos diferentes. Os grupos são formados baseados em alguma definição de similaridade.

  Para a realização do estudo de caso deste trabalho, clusterização será utilizada para categorizar os dados coletados do Twitter, com intuito de posteriormente gerar o modelo para o algoritmo de classificação.

  3.3.1 DBScan O algoritmo DBScan foi proposto para bases de dados espaciais e leva em consideração a densidade dos clusters, tornando automática a definição da quantidade de a serem formados. Um valor máximo de distância é definido para que seja possível clusters dizer, de acordo com o contexto, se pontos são vizinhos (similares) ou não. Cada cluster deve respeitar um threshold (limite) mínimo de pontos similares em sua composição

  

  define dois parâmetros importantes: Eps e MinPts. Eps indica qual a diferença máxima permitida entre dois pontos para que sejam considerados similares. Espacialmente, isso pode ser considerado o raio de distância máxima entre os pontos. Para texto,

  Existem três tipos de pontos no DBScan. CorePoint é um ponto que tem uma quantidade de vizinhos maior ou igual a MinPts. Já um borderPoint é um ponto que tem como um de seus vizinhos um corePoint, mas não possui a quantidade mínima de vizinhos (MinPts). Por último, noisePoint é um ponto que não tem em seus vizinhos um corePoint nem possui uma quantidade mínima de vizinhos

  Os valores de Eps e MinPts são fornecidos pelo especialista e podem variar dependendo do conjunto de dados. A forma indicada para se definir o Eps e o MinPts, é usar os valores que servem para o cluster menos denso da base, para que esse valor possa ser aplicado para todos os outros, já que não é possível saber o valor aplicável individualmente para cada

   cluster

  De forma geral, o algoritmo seleciona um ponto P aleatório para iniciar e percorrer

  1

  todos os outros pontos que ainda não foram visitados em busca de pontos com uma distância máxima igual a Eps. Caso o ponto P possua o número mínimo (minPts) de vizinhos (de acordo

  1

  com uma função de distância ou de similaridade), um novo cluster C é criado com P e seus

  1

  vizinhos. Em seguida, os vizinhos de P são usados para alcançar novos pontos do conjunto de

  1

  dados e expandir o cluster. Para cada vizinho P de P , os vizinhos de P são adicionados ao

  x 1 x

  , se P possui no mínimo minPts de vizinhos. Quando todos os vizinhos de P forem cluster C

  x

  1

  visitados, um outro ponto não visitado é escolhido e o processo é recomeçado. O algoritmo pára quando todos os pontos foram visitados. Exemplos de visualização de resultados do DBScan podem ser vistos na Figura

  Figura 2 – Exemplos de clusters descobertos pelo DBScan para dados espaciais.

  Fonte –

  3.3.2 K-medoids K-medoids é um algoritmo de clusterização particional, ou seja, divide o conjunto de dados em grupos distintos, tentando minimizar a distância entre os pontos, formando um cluster e definindo também um determinado ponto como o centro deste cluster. Inicialmente, são escolhidos k objetos do conjunto de dados e eles são nomeados como medoids. Cada medoid representa um cluster. Ao final, o algoritmo devolve k clusters, em que os objetos do conjunto de dados são associados ao cluster cujo medoid é o de menor distância

  3.3.2.1 Método do cotovelo

1 O método do cotovelo consiste em calcular a soma dos erros de cada integrante do

  cluster para seu medoid. Dessa forma, é possível visualizar os erros totais para um determinado valor de k, e quando aplicado para valores em sequência é possível ver se há uma diminuição ou não dos erros. Em geral, os erros tendem a diminuir conforme o número de clusters aumentam, ao passo que clusters com tamanho 1 tem o menor erro possível.

3.4 Classificação

  Classificação é o processo de estabelecer uma categoria, ou classe, para um objeto, sendo essa categoria parte de um grupo predefinido A classificação é feita com base em um modelo criado a partir de um conjunto de dados já categorizado, podendo-se prever as categorias de dados ainda não analisados. É uma técnica supervisionada, isto é, é necessário categorizar um conjunto inicial para a construção do modelo.

  Na pesquisa de classificação de texto visa atribuir classes predefinidas à documentos de texto. Essas classes podem ser, por exemplo, "bom", "muito bom", "ruim"e "muito ruim". descrevem classificação como a predição de classes de objetos através da construção de um modelo baseado em um conjunto de usado para classificar novos dados. A classificação envolve dois passos: 1) a construção treino

  Todas as definições de classificação citadas aqui se complementam, e este trabalho adiciona esse método ao framework para a predição de classes por possuir um grande uso em análise de textos com o algoritmo descrito na próxima Seção.

  3.4.1 Naive Bayes Alguns dos algoritmos para classificar texto são: Naive Bayes, SVM e Maximum

  Entropy. Esses algoritmos podem possuir variações em suas implementações. O algoritmo Naive Bayes, por exemplo, pode lidar com diferentes tipos de dados e formas diferentes de calcular a probabilidade de uma classe para um objeto. Algumas das formas de aplicação do algoritmo Naive Bayes são Bernoulli multivariado, multinomial com frequência de termos (palavras), multinomial com atributos booleanos, Gauss multivariado e Bayes Flexível.

  O algoritmo Naive Bayes se baseia no Teorema de Bayes, também conhecido como probabilidade condicional O Teorema de Bayes calcula a probabilidade de um evento C ocorrer dado que o evento t ocorreu. Nesse caso, o cálculo da probabilidade de um texto t ser da classe C é resumido na Fórmula

  P (t|C)P(C)

  P (3.2)

  (C|t) = P (t)

  Partindo disso, o algoritmo Naive Bayes calcula a probabilidade de um determinado texto t ser de uma classe, usando P(C), como a probabilidade da classe C, multiplicada pelo produto da probabilidade condicional de cada palavra presente no texto ser da classe C. O valor , C ) expressa a quantidade de vezes que a palavra W ocorre na classe C, enquanto que de qtd(w i expressa a quantidade total de palavras presentes na classe C (Fórmula w

  c n

  qtd (w , C )

  i

  P (t|C) = P(C) · (3.3)

  ∏

  w

  c i

  Dessa forma, o uso desse classificador se divide em dois passos, sendo o primeiro calcular a probabilidade das palavras para cada classe de acordo com sua frequência nos

4 TRABALHOS RELACIONADOS

  4.1 Um Framework para Mineração de Texto em Redes Sociais inicia a construção do framework ShareMining para mineração de textos do Twitter, a partir de alguns trabalhos já existentes na época. Ele utiliza algoritmos

  

  

  como o de e disponibiliza um algoritmo de clusterização DBScan. Ao mesmo tempo, realiza um estudo de caso com dados referentes ao impeachment da ex presidente Dilma Rousseff. Além disso, desenvolve uma aplicação web para a visualização dos resultados com nuvens de palavras, onde é possível visualizar dados da pesquisa feita: total de tweets coletados, clusters criados, gráficos e outras informações.

  Este trabalho pretende dar continuidade ao que foi iniciado por dado o potencial do desenvolvimento de um framework para mineração de dados poder ajudar a comunidade diretamente. No decorrer do desenvolvimento de novas funcionalidades para o framework , algumas alterações podem ser feitas, caso seja necessário. As principais novidades no framework serão as novas opções de coleta e o algoritmo de classificação Naive Bayes. Apesar do framework ShareMining já desenvolvido por ser um bom ponto de partida para realizar mineração de texto do Twitter, busca-se aqui expandir a sua capacidade de aplicação. Para tal, novas medidas de similaridade serão adicionadas, uma maior integração entre os módulos será realizada, além de correção da estrutura do código existente.

  4.2 Classificação de Sentimentos no Twitter usando supervisão distante realizaram um processo de classificação não supervisionado com textos do Twitter. É proposta uma forma de identificar automaticamente o sentimento de um tweet do tranining set e, para tanto, emoticons são utilizados. Os dados do conjunto de treino foram coletados usando a API de Search do Twitter, com consultas contendo os emoticons. Por exemplo, quando o emoticon ":)"está presente em um tweet retornado pela API de Search, ele expressa que o texto escrito é positivo, e a presença do emoticon “:("indica nomes de usuários, links e outras partes do texto que pudessem alterar os resultados negativamente ou que não tinham impacto positivo na acurácia. Finalmente, os dados foram processados por algoritmos como Naive Bayes, baseado em palavra-chave, Maximum Entropy e Support Vector Machines (SVM).

  A coleta de dados realizada por por meio da API de Search do Twitter, é uma das funcionalidades que estarão no framework a ser construído. Logo, a análise de emoticons para separar os tweets positivos e negativos já no momento da coleta poderá ser executada com o auxílio do framework. A limpeza dos dados, ou pré-processamento, descrita no artigo é, de certa forma, simples e já está disponível no framework. A diferença que pode ser a mais significativa entre a pesquisa de e este trabalho é a utilização de outros algoritmos para o processamento, como SVM e Maximum Entropy.

  4.3 Twitter como um corpus para análise de sentimentos e mineração de opinião A pesquisa de

  mas se difere por considerar a presença de tweets neutros. Na etapa de pré-processamento, consideram um Processamento de Linguagem Natural (PLN) diferente, pois houve preocupação com a retirada de stopwords e um processo de tokenização de palavras mais elaborado. Para o processamento dos dados, o algoritmo Naive Bayes foi escolhido em detrimento dos algoritmos SVM e CRF (Conditional Random Fields); mais uma vez, o algoritmo usado é o mesmo a ser implementado no framework deste trabalho.

  De forma geral, os dois estudos descritos fizeram uma coleta utilizando a mesma API do Twitter para coletar os dados. Para diminuir o trabalho de classificação do traning set, ambos categorizaram os tweets pelos emoticons que continham, o que parece ser interessante mas acarreta alguns problemas, como para o caso de tweets com sentimento de ironia. Mas, como framework permite o acesso à API do Twitter, essa coleta e automação da categorização do conjunto de treino podem ser realizadas por meio do framework.

  4.4 Ferramentas presente é a coleta de dados, provavelmente porque a ferramenta tenta ser mais genérica em relação a origem dos dados. A ferramenta cobre também alguns passos, embora bem específicos, de pré-processamento. Porém, não estão disponíveis meios para aplicação de PLN. Scikit-Learn não conta, por exemplo, com remoção de stopwords ou sufixos.

  Ela conta com diferentes algoritmos para para processamento dos dados. Há os algoritmos para classificação, como SVM, Naive Bayes, Árvore de Decisão e Redes Neurais. Para clusterização, também há diferentes algoritmos, como DBScan, K-means, e Propagação de Afinidade.

  Outra ferramenta interessante e disponível na internet para um uso mais simples é

  

  a SentiStrenght A ferramenta é capaz de classificar textos em categorias binárias (positivo e negativo), ternárias (positivo, neutro e negativo) e escala única de classificação (de -4, muito negativo, a 4, muito positivo). Na versão web da ferramenta, lê-se apenas um texto por vez, porém, na sua versão para download a ferramenta tem seu uso melhorado, podendo processar até

  16.000 tweets por segundo. Mas assim como Scikit, SentiStrenght não está presente em todas as etapas do processo de mineração de texto. SentiStrenght não possui coleta e outras opções de PLN dentro da etapa de pré-processamento, bem como não possui outras opções de algoritmos para mineração de texto, nem para classificação ou para clusterização, por exemplo.

  Para cada trabalho ou ferramenta descrita, o Quadro sumariza o que é feito ou utilizado dentro de cada uma das três principais etapas do processo de mineração de dados. Como é possível ver pelos quadros, nenhum dos trabalhos possui todas as funcionalidades citadas, mas a proposta deste trabalho é estar em todas as etapas de mineração de texto. Assim, por mais que alguns algoritmos não estejam presentes, ou alguma outra funcionalidade, a ideia geral é adequar o framework para cenários de mineração de texto que envolvam todo o processo e possa funcionar de forma automatizada dentro de qualquer aplicação que o use. Quadro 1 – Comparativo das características de coleta, pré-processamento e processamento usados pelas pesquisas ou disponíveis em ferramentas.

  Trabalho/Ferramenta Coleta Pré-processamento Processamento Stream de Dados. Remoção de caracteres repetidos, sufixos, acentos, stopwords, links, nomes próprios, nomes de usuário; Substituição de emoticons e abreviações.

  Clusterização (DBScan).

  

Dados até 7 dias. Substituição de nomes de usuários,

links e palavras com letras repetidas.

  Classificação (Naive Bayes, Maximum Entropy, SVM, palavra- chave). Dados até 7 dias. Remoção de stopwords, url, nomes de usuários e emoticons; tokenização; n-gramas.

  Classificação (Naive Bayes, SVM, CRF). Scikit-Learn Não implementado.

  Padronização, Normalização, Binarização, Codificação de Categorias, Atribuição de Valores Perdidos e Redução de Dimensões.

  Classificação, Clusterização e Regressão. Gensim Não implementado.

  Padronização, Normalização, Binarização, Codificação de Categorias, Atribuição de Valores Perdidos e Redução de Dimensões.

  Classificação, Clusterização e Regressão. NLTK Não implementado.

  Padronização, Normalização, Binarização, Codificação de Categorias, Atribuição de Valores Perdidos e Redução de Dimensões.

  Classificação, Clusterização e Regressão. SentiStrenght Não implementado.

  Tokenização. Classificação (palavra- chave). Este trabalho Dados até

  7 dias, Stream de Dados e Dados históricos.

  Remoção de caracteres repetidos, sufixos, acentos, stopwords, links, nomes próprios, nomes de usuário; Substituição de emoticons e abreviações.

  Clusterização (DBScan) e classificação (Naive Bayes).

  Fonte – Elaborado pelo autor

5 O FRAMEWORK SHAREMINING

   Nesta seção é exibido um snapshot de como o framework ShareMining estava no

  início deste trabalho, a partir de uma visão das etapas gerais de um processo de mineração de texto. O trabalho feito por inicia fazendo uma revisão das abordagens utilizadas para mineração de texto na Universidade Federal do Ceará para identificar suas semelhanças. Essa análise foi utilizada para desenvolver o framework de forma a ser reutilizável dentro das etapas de mineração de texto.

  5.1 Coleta Para a etapa de coleta o framework conta com as implementações feitas por

  Esse módulo foi implementado em Java e faz uso da API de Streaming do Twitter para realizar a coleta. Essa abordagem permite a coleta de tweets em tempo real, gerando arquivos

  

  5.2 Pré-processamento Na segunda etapa do processo, o módulo do framework foi implementado em Python, e conta com muitas funcionalidades para Processamento de Linguagem Natural (PLN). O PLN implementado suporta tratamentos para a língua portuguesa e inglesa. Essa implementação lida

  

  5.3 Processamento A etapa de processamento da ferramenta conta apenas com um método de clusterização. É importante ressaltar que não há muita flexibilidade quanto ao uso da ferramenta no que diz respeito ao formato dos documentos. Em geral foram utilizados arquivos .txt e .csv (e variantes). Inclusive os arquivos JSON gerados na primeira etapa precisam ser convertidos para .txt ou .csv para o uso nas etapas subsequentes.

  1 https://github.com/mineracaoUFC/

  5.3.1 Clusterização

  

  e Jaccard. Muitas das decisões de processamento de texto são refletidas no código de forma hard coded. Isso implica que não é disponibilizada uma API para o uso da ferramenta como um todo, mas, na verdade, é necessário modificar o código onde é necessário. Um exemplo disso pode ser visto na implementação do DBScan, onde para escolher a medida de similaridade é necessário alterar as chamadas de funções. Isso torna o uso muito inflexível, já que os valores são fixos e não parametrizados.

5.4 Análise

  Depois de todas as etapas, a ferramenta conta com um módulo de exibição dos clusters gerados pela etapa de processamento. As nuvens de palavras foram geradas com o

  

  auxílio de uma ferramenta web de O módulo em si que foi criado no trabalho de envolve um aplicativo web que exibe essas imagens dos resultados. O processo de criação das nuvens de palavras é ainda bem rústico, pois é feito de forma bem manual, colocando os dados na ferramenta web que gera as nuvens de cada cluster.

6 PROCEDIMENTOS METODOLÓGICOS

  Dado o que já foi desenvolvido na versão anterior do framework a ser expandido, os procedimentos para o desenvolvimento da nova versão foram divididos em duas partes, sendo uma relacionada ao framework e outra ao estudo de caso. A divisão ficou da seguinte forma:

  1. Melhorias aplicadas ao framework;

  • – Algoritmos de coleta;
  • – Pré-processamento;
  • – Medidas de similaridade;
  • – Algoritmos de Mineração de Dados; – Módulo de visualização.
  • – Arquitetura do framework.

  2. Validação do framework.

  • – Dados utilizados;
  • – Pré-processamento;
  • – Categorização do conjunto de treino;
  • – Classificação dos dados;
  • – Comparação dos métodos de classificação;

6.1 Melhorias aplicadas ao framework

  O framework conta atualmente com algoritmos para as três etapas gerais da mineração de texto discutidas até agora. Este trabalho visa disponibilizar novas possibilidades para os futuros usuários do framework, que estarão disponíveis na parte de coleta, onde alterações serão feitas, e processamento, onde um novo algoritmo estará disponível para uso.

  Além disso, o framework estará disponível completamente na linguagem de programação

  

  por já contar com as fases de pré-processamento e processamento da versão atual nessa linguagem, e por Python ser uma linguagem com muito suporte da comunidade, disponibilizando de muitas bibliotecas que são próprias para análise de dados. Isso facilita ainda mais o surgimento de possíveis novas versões para o framework.

  6.1.1 Algoritmos de coleta Existem três formas de se coletar os dados do Twitter. A primeira é por meio da API REST do Twitter buscando por tweets que foram postados até no máximo sete dias atrás.

  A segunda forma de coleta é por meio da API de Stream do Twitter: ela disponibiliza dados em tempo real. Todos os tweets postados a partir do momento em que se inicia a coleta serão retornados pela API de Stream.

  A terceira forma de coleta, soluciona o problema do Twitter retornar dados de no máximo uma semana atrás com o uso da API REST. Essa forma consiste em utilizar um scraper para buscar as páginas do Twitter que possuem os dados desejados. A grande diferença é que a API REST não é acessada diretamente para se ter apenas os dados, mas é carregada toda a página HTML com os tweets e o algoritmo é responsável por analisar o conteúdo em busca dos dados.

  

   e a que

  para acessar a API REST e a de Streaming.

  Por meio do uso do framework será possível ter dois tipos de tweets como saída. Utilizando o método de scraping, um tweet será composto pelo screen name, id, created at, name e text, que representam respectivamente o nome de usuário (ou username), id do tweet, data de postagem, nome real do perfil e o texto postado. O outro tipo de tweet é obtido através das APIs do Twitter, que contam com os mesmos dados do método de scraping e vários outros, como descreve.

  Na versão atual do framework, apenas a forma de coleta por meio do stream de está implementada. Essa implementação foi feita em Java, e para deixar o framework tweets unificado em apenas uma linguagem, um algoritmo será feito para coletar os dados de stream em Python. Além disso, as outras duas formas de coleta estão implementadas para dar ao especialista a oportunidade de trabalhar com os três tipos de acesso aos dados.

  6.1.2 Pré-processamento Todos os passos que serão listados na Seção já estão presentes no framework,

  única alteração na parte de pré-processamento do framework atual, dado que a existência desses caracteres poderiam influenciar nas outras etapas de PLN, como na remoção de sufixos. Para

  

  a coleta dos dados, o framework processa arquivos (JavaScript Object Notation) direto das APIs do Twitter. Para armazenar os dados pré-processados, o usuário do framework terá as opções de armazenamento em JSON, CSV (Comma Separated Values) e TSV (Tab Separated Values). Na versão anterior, apenas o formato TSV era suportado para o armazenamento de pré-processados. tweets

  6.1.3 Medidas de similaridade O framework já disponibiliza algumas medidas de similaridade, como: Fading,

  Euclidiana e Jaccard. Sendo que destas, para texto, a mais apropriada é a de Jaccard, por considerar apenas a diferença entre os textos e nenhum outro atributo. Visando ter mais possibilidades para melhores resultados para a clusterização de texto, outra medida de similaridade para texto, chamada de Levenshtein, é implementada.

  6.1.4 Algoritmos de Mineração de Dados O algoritmo de classificação a ser implementado é o Naive Bayes e é baseado em

  

Além disso, o K-medoids está implementado.

  O framework passa a contar com três algoritmos para mineração de dados, DBScan, Naive Bayes e K-medoids. Isso deve trazer ainda mais utilidade à ferramenta, por contar com uma quantidade maior de opções de análise para dados.

  6.1.5 Módulo de visualização Para auxiliar na análise dos resultados, o framework conta com um módulo de visualização. Com o uso desse módulo é possível gerar nuvens de palavras, gráficos e também cálculos de erro para resultados de classificação.

  5 http://www.json.org/json-pt.html

  6 https://github.com/gustavoaires/movie-review-sentiment-analysis

  6.1.6 Arquitetura do framework Para uma maior modularidade e organização do código do framework, o código será divido em módulos. Haverá um módulo responsável apenas por coletar os tweets, um módulo para pré-processar os dados, um módulo para algoritmos de classificação, um módulo para algoritmos de clusterização e um módulo responsável por lidar somente com leitura e escrita em arquivos (ver Figura Dessa forma, em todos os pontos do framework onde existe manipulação de arquivos, será realizada uma refatoração visando estabelecer módulos mais coesos. Isso facilita o uso de partes do framework individualmente, no caso de algum módulo não ser necessário quando usado por um especialista.

  Figura 3 – Diagrama de uso dos módulos do framework.

  Fonte – Elaborado pelo autor.

6.2 Validação do framework

  Como um meio de garantir que o framework tem um bom desempenho, este trabalho realizará um estudo com dados do Twitter para validar principalmente o algoritmo de classificação Naive Bayes, o K-medoids e os algoritmos de coleta, dado que os outros algoritmos já foram testados pela pesquisa de Além disso, a validação será responsável por informar como as formas de categorização propostas na Seção impactam nos resultados da

  6.2.1 Dados utilizados Para a realização do estudo de caso, dados sobre a reforma da previdência social do

  Brasil (sistema de aposentadoria público) serão analisados. Para isso, as palavras "previdencia social", "reforma da previdencia", "reforma da presidencia"e "previdencia"serão utilizadas na string de busca enviada para o Twitter. Somente tweets postados em português serão analisados. O tema foi escolhido devido à sua grande relevância político-social e para que seus dados pudessem ser utilizados na validação da ferramenta.

  6.2.2 Pré-processamento A etapa de limpeza dos dados visa estruturar os dados de maneira que a análise feita pelos algoritmos não seja prejudicada. Na versão atual do framework, há uma versão bem completa de algoritmos para pré-processamento. O framework conta com análise de textos em inglês e português, dando suporte para leitura de arquivos JSON e arquivos CSV.

  Considerando o texto original de um tweet para um exemplo de aplicação dos passos de pré-processamento, como "Botaram grades no Congresso para impedir o povo de participar. Pq se o povo estiver aqui, a reforma da Previdência não passa @fulanodetal http://link.com", pode-se observar a seguinte estrutura:

  1. Transformação dos caracteres para minúsculo: "botaram grades no congresso para impedir o povo de participar. pq se o povo estiver aqui, a reforma da previdência não passa. @fulanodetal http://link.com".

  2. Remoção de links: "botaram grades no congresso para impedir o povo de participar. pq se o povo estiver aqui, a reforma da previdência não passa @fulanodetal".

  3. Remoção de pontuação (caracteres especiais): "botaram grades no congresso para impedir o povo de participar pq se o povo estiver aqui a reforma da previdência não passa @fulanodetal".

  4. Remoção de acentos: "botaram grades no congresso para impedir o povo de participar pq se o povo estiver aqui a reforma da previdencia nao passa

  6. Remoção de sufixos: "bot grad congress imped pov particip pq pov aqu reform previdenc nao pass @fulanodetal".

  7. Remoção de nomes de usuário: "bot grad congress imped pov particip pq pov aqu reform previdenc nao pass". são palavras sem muito significado importante para a análise do texto,

  Stopwords tais como artigos e preposições, e por isso devem ser removidas. Assim como os sufixos das palavras foram removidos por não haver diferença entre, por exemplo, "participa", "participará"ou "participou".

  Os dados, depois de limpos, deverão ser armazenados em arquivos para futuras análises, sem a necessidade de repetição do processo, a menos que seja necessário realizar diferentes passos de pré-processamento.

  6.2.3 Categorização do conjunto de treino Uma parte muito importante deste estudo de caso é a utilização de diferentes tipos de categorização do conjunto de treino. Duas formas de categorização são aplicadas: com auxílio do DBScan e de um especialista.

  Com o uso do algoritmo DBScan implementado no framework, espera-se que seja possível verificar as categorias existentes nos dados, para que a classificação possa ser mais representativa. Também se espera tornar o processo de categorização do traning set mais automatizado, embora ainda seja necessário um especialista analisar os clusters gerados. Dessa forma, o DBScan funcionaria como um sumarizador das categorias que auxilia na detecção mais realista do que os dados representam. Esse método também possibilita uma categorização de um maior número de tweets que estarão no conjunto de treino, o que pode levar a uma melhor acurácia do modelo.

  Outra forma de categorizar os dados é com o auxílio de um especialista. Esse método é manual, dependendo completamente de uma pessoa para categorizar um tweet por vez. Por conta do esforço exigido, um menor conjunto de treino é gerado e uma representatividade menor de palavras é alcançada. executar o algoritmo para a criação dos modelos e então executar alguns testes de classificação para novos tweets, que fazem parte de um conjunto de teste. Esse conjunto de teste deverá ser classificado com base nos dois modelos gerados.

7 RESULTADOS Este capítulo apresenta os resultados alcançados neste trabalho.

7.1 Melhorias aplicadas

  A partir da versão da ferramenta descrita no Capítulo melhorias e novas funcionalidades foram aplicadas. No geral, essas melhorias visam tornar a ferramenta unificada e agregar valor com as novas funcionalidades, permitindo um processo de mineração de texto mais completo. A ideia é que a ferramenta seja utilizada como uma biblioteca Python, e com essas modificações possa ser utilizada dentro de outras aplicações.

  7.1.1 Coleta O módulo de coleta foi totalmente reescrito. Na versão anterior havia apenas a coleta por meio da API de Streaming do Twitter, e agora é possível realizar a coleta com API de

  , API de Busca (Search API) e utilizando o método de scraping para coletar tweets Streaming mais antigos. Para os casos de uso da API de Stream ou de Busca, é necessário informar alguns dados que dão acesso a API que são disponibilizados pelo Twitter, como a Chave, Secret, Token

  

  7.1.2 Pré-processamento

   é o que mais se aproxima da nova arquitetura da ferramenta e, portanto, sofreu menos modificações.

  Um exemplo de melhoria nesse módulo foi adicionar mais símbolos para o conjunto de símbolos de caracteres especiais.

  Uma decisão tomada para tornar a ferramenta mais flexível, foi usar dicionários baseados nos arquivos JSON gerados, para facilitar a descrição dos documentos processados. Uma vez que para acessar uma dada informação só é necessário saber qual a chave para se obter o valor, e dessa forma, é possível passar os nomes das chaves que cada algoritmo precisará

  7.1.3 Gerenciamento de arquivos Uma outra melhoria importante foi o desacoplamento dos módulos existentes em relação ao gerenciamento de entrada e saída de resultados. Foi criado um módulo responsável por lidar apenas com leitura e escrita de arquivos, tanto JSON, como CSV e variantes. Isso ajuda a reduzir a complexidade dos outros módulos, aumentando a coesão e diminuindo a quantidade de responsabilidades delegadas aos outros módulos. Isso possibilita ao usuário ler e escrever os dados somente uma vez durante o processo de mineração.

  7.1.4 Processamento Na versão anterior do framework havia apenas um algoritmo de mineração de dados, chamado DBScan, e ainda algumas medidas de similaridades: Fading, Euclidiana e Jaccard.

  Havia um nível muito alto de acoplamento entre o algoritmo e as medidas. Uma das primeiras melhorias feitas foi separar essas medidas a fim de facilitar a adição de novas, bem como diminuir o acoplamento. Em seguida, foi possível adicionar a distância de Levenshtein ao módulo de clusterização.

  Além dessa melhoria arquitetural, houve também a adição de mais um algoritmo de

  

  clusterização, o Isso dá uma possibilidade a mais para o especialista, dado que a proposta do K-medoids (clusterização por partição) é diferente da proposta do DBScan (clusterização por densidade). Para auxiliar no uso do K-medoids, foi adicionada uma funcionalidade que faz uso do método do cotovelo para ajudar na decisão do valor de K.

  Para esta etapa de processamento, foi também adicionado o algoritmo Naive Bayes

  

  para A implementação desses algoritmos busca ser a mais genérica possível para que o especialista consiga usar para os seus dados que podem ter estruturas diferentes. Isso significa dizer que, as estruturas de dicionários do Python foram utilizadas para facilitar a descrição dos documentos, no qual é possível informar os nomes dos campos que precisam ser analisados durante a execução do algoritmo.

  3 https://github.com/gustavoaires/minetext/blob/master/minetext/clustering/K-medoids.py

  4 https://github.com/gustavoaires/minetext/blob/master/minetext/classifying/naivebayes.py

  7.1.5 Análise Para a etapa de análise, o trabalho que deu inicio ao framework fez uso de nuvens de palavras geradas com o auxílio de uma ferramenta web de terceiros. As nuvens de palavras mostram em maior destaque as palavras com mais ocorrências para os documentos analisados. Essa é uma forma de conseguir observar os padrões dos clusters. Na nova versão do framework é possível gerar as nuvens de palavras sem a necessidade de usar uma outra ferramenta. Isso diminui o trabalho manual que pode ser criar nuvens de palavras, além de poder gerar resultados mais claros utilizando-se de funcionalidades que acompanham esse módulo de visualização. Por exemplo, após a etapa de pré-processamento muitas palavras podem ficar ilegíveis, mas com o uso da ferramenta é possível recuperar os dados originais e utilizá-los para gerar as nuvens de palavras. Para ajudar na exibição das palavras, é possível fornecer um conjunto de palavras que não devem aparecer na imagem, além de ser possível reutilizar o módulo de pré-processamento para remover artigos, preposições, stopwords, entre outros para deixar a nuvem de palavras gerada mais legível e exibir as palavras mais importantes.

  Aproveitando também que o método do cotovelo foi adicionado a ferramenta, uma funcionalidade para visualização desses valores também foi adicionada, na qual é gerado um gráfico que torna mais compreensível em qual valor de K os erros calculados param de decrescer. Essa visualização não é um resultado gerado de uma clusterização, mas ajuda na tomada de decisão sobre qual K usar.

7.2 Validação das melhorias

  Nesta seção são apresentados os passos para a validação das etapas de mineração de texto com o auxílio do framework.

  7.2.1 Coleta A etapa de coleta durou de março de 2017 à agosto de 2017 e foram coletados dados sobre a reforma da previdência social brasileira. Infelizmente, o tema escolhido não rendeu uma postagens de notícias sobre a reforma da previdência. Para a realização da coleta, o framework disponibiliza uma API simples para uso, encapsulando funcionalidades obtidas com o auxílio de outras bibliotecas. Esses dados coletados foram persistidos no formato JSON para facilitar posteriormente as manipulações dos documentos, fazendo uso de dicionário em Python, que tem uma representação igual. Desses tweets coletados, apenas alguns serão utilizados para realizar a clusterização e a classificação.

  Quadro 2 – Quantidade de tweets por mês.

  Mês Total de tweets Março 55.237 Abril 63.577 Maio 32.671 Junho 18.079 Julho 9.877 Agosto 9.458 Fonte – Elaborado pelo autor

  Um provável motivo para a diminuição da quantidade de tweets coletados, é ida e vinda dos trâmites legais para aprovação da reforma da previdência. O tema oscilou bastante no período e, provavelmente, deixou de ser um tema mais chamativo como era no princípio da coleta.

  7.2.2 Pré-processamento O PLN aplicado inclui transformar o texto em minúsculo, remover acentos, remover caracteres especiais, remover sufixos de palavras, remover links e nomes de usuários, conforme explicado na Seção Após o pré-processamento, o texto é salvo também em formato JSON e está pronto para ser processado. Obviamente, os documentos não precisavam ser salvos a cada etapa, mas para fins de repetição da validação isso foi feito.

  7.2.3 Processamento Após a etapa de pré-processamento, os documentos estavam prontos para serem processados pelos algoritmos K-medoids e Naive Bayes. Para a utilização do K-medoids, antes mês de março a julho. O resultado do mês de agosto pode ser visto na Figura

  Figura 4 – Soma dos quadrados dos erros do mês de agosto utilizando a distância de Jaccard.

  Fonte – Elaborado pelo autor.

  Dados os valores desses erros, é possível perceber que o valor decresce de forma irregular. Provavelmente, o uso da distância de Jaccard aliado aos medoids aleatórios possa causar isso. Para tentar buscar outros resultados e ver de que maneira os erros vão se comportar, foi então usada a distância de Levenshtein e os resultados podem ser vistos no Apêndice para os meses de março a julho. O resultado do mês de agosto pode ser visto na Figura

  De acordo com a Figura é possível ver que a variação dos valores dos erros é muito maior para o uso da distância de Levenshtein, mas de acordo com a natureza dos dados é provável de que não haja tantos clusters como é exibido com os gráficos de Jaccard. Muito provavelmente, existem menos de 10 clusters para cada mês, o que é possível notar por conta de haver sempre uma grande queda nos valores dos erros e depois uma variância perto de um valor comum quando a distância de Levenshtein é utilizada.

  Aproximadamente 200 mil tweets foram processados. Com esses dados, 2 clusters

  Figura 5 – Soma dos quadrados dos erros do mês de agosto utilizando a distância de Levenshtein.

  Fonte – Elaborado pelo autor.

  7.2.4 Análise Nesta Seção, os resultados da clusterização e classificação serão discutidos, bem como o processo para obtê-los.

  7.2.4.1 Clusterização Após a etapa de processamento, foram geradas as imagens dos clusters e com base nessas imagens são analisadas as classes que podem surgir para a entrada do algoritmo de classificação. Para fins de simplificação, apenas os dados do mês de agosto serão exibidos nessa seção e os dados dos outros meses estão disponíveis no Apêndice No geral, o que é possível notar é que muitos dos tweets publicados sobre esse tema eram notícias ou eram contra a reforma.

  Os clusters das Figura descrevem tweets no geral contra a reforma da previdência. Muitas publicações chamando a reforma da previdência de farsa, criticando os políticos que as defendem. Os termos mais comuns são "não", "contra", "temer"e mais

  Figura 6 – Nuvem de palavras do primeiro cluster de agosto.

  Fonte – Elaborado pelo autor.

  notícias.

  Figura 7 – Nuvem de palavras do segundo cluster de agosto.

  Fonte – Elaborado pelo autor. positivo, nem quando o valor de k era aumentado.

  7.2.4.2 Classificação Após realizar alguns testes, foi possível perceber que os clusters são em geral negativos ou notícias. Os tweets que são positivos acabam sendo minoria e não formando seus próprios clusters. Como resultado disso, é difícil dar nomes aos clusters que posteriormente precisam virar classes. Dessa forma, apenas 2 clusters vão ser criados.

  A classificação dos dados se baseou nas duas categorias geradas a partir os clusters. Para realizar a classificação, vários testes foram feitos para que a acurácia do modelo fosse alta. Na primeira tentativa, a clusterização dos dados foi feita de forma direta, como explicada nos Procedimentos Metodológicos. Os resultados não foram bons. O modelo gerado não foi capaz de prever as classes de forma correta (Quadro

  Quadro 3 – Resultado da classificação baseada no uso dos completos do mês de agosto com retweets. clusters

  Tweets classificados corretamente (traning set) 4,89% (324) Tweets classificados incorretamente (traning set) 95,11% (6.297) Tweets classificados corretamente (test set) 4,37% (124) Tweets classificados incorretamente (test set) 95,63% (2.713) Total de tweets utilizados 9.458 Fonte – Elaborado pelo autor

  Por conta do resultado ruim, imaginou-se que a desproporção de tamanho entre os clusters gerados pudesse estar gerando um modelo enviesado. Para tentar sanar esse problema, usou-se a abordagem onde é utilizada apenas a quantidade do menor cluster para criar o modelo. Isto é, para os dois clusters gerados anteriormente, apenas 500 tweets de cada cluster foi utilizado para a execução do algoritmo de classificação, já que o menor cluster possuía apenas 500 tweets (Quadro

  Quadro 4 – Resultado da classificação baseada no uso dos parciais do mês de agosto com retweets. clusters Com o uso dessa nova abordagem, pode-se perceber que o modelo melhorou e que ele não está viciado nas entradas, já que a classificação do conjunto de treino teve 50% de erro. Mas os resultados do teste são muito satisfatórios, com 100% de precisão. Ainda assim, foi investigado se a remoção de retweets poderia ser benéfica para a classificação desses textos, e o resultado pode ser visto no Quadro

  Quadro 5 – Resultado da classificação baseada no uso dos clusters completos do mês de agosto sem retweets.

  Tweets classificados corretamente (traning set) 1,75% (116) Tweets classificados incorretamente (traning set) 98,25% (6.505) Tweets classificados corretamente (test set) 2,36% (50) Tweets classificados incorretamente (test set) 97,64% (2.069) Total de tweets utilizados 8.740 Fonte – Elaborado pelo autor

  Em comparação ao resultado do Quadro não é melhor. Foi repetido o processo então de classificação, mas com o tamanho do menor cluster aplicado para todos os outros clusters, e o resultado está no Quadro Esse resultado é tão bom quanto o o resultado do Quadro já que ele possui uma amostra bem maior e o erro aumentou pouco.

  Quadro 6 – Resultado da classificação baseada no uso dos parciais do mês de agosto sem retweets. clusters

  Tweets classificados corretamente (traning set) 48,25% (3.657) Tweets classificados incorretamente (traning set) 51,75% (3.923) Tweets classificados corretamente (test set) 95,57% (1.058)

classificados incorretamente (test set) 4,43% (42)

Tweets Total de tweets utilizados 8.680

  Fonte – Elaborado pelo autor

  A maior parte da dificuldade de lidar com mais clusters está contida na existência de muitos tweets negativos e de notícias. Por fim, acabariam existindo mais de um cluster para cada classe, o que prejudicaria a classificação. Como é possível ver no Apêndice 5 clusters foram gerados para cada mês, e em sua maioria eles possuem palavras de tom negativo sobre a reforma em destaque. negativos, foi possível perceber que as notícias tem um tom negativo ou os negativos também apresentam informações como as notícias (ver Quadro

  Quadro 7 – Resultado da classificação baseada no uso dos clusters parciais do mês de agosto sem retweets e conjunto de teste de tamanho igual para notícias e negativos.

  Tweets classificados corretamente (traning set) 43,32% (2.599) Tweets classificados incorretamente (traning set) 56,68% (3.401) Tweets classificados corretamente (test set) 45,30% (501) Tweets classificados incorretamente (test set) 54,70% (605) Total de tweets utilizados 7.106 Fonte – Elaborado pelo autor

  Para o experimento do Quadro foram usados 3 mil tweets em cada categoria para o conjunto de treino e 553 tweets em cada categoria para o conjunto de testes. A quantidade de tweets classificados em cada categoria para o conjunto de treino ficou distribuído como no Quadro

  Quadro 8 – Resultado da classificação baseada no uso dos clusters parciais do mês de agosto sem retweets e conjunto de treino de tamanho igual para notícias e negativos.

  Categoria/Categoria Prevista Notícias Negativo Notícias 2.310 690 Negativa 2.711 289 Fonte – Elaborado pelo autor

  Quadro 9 – Resultado da classificação baseada no uso dos clusters parciais do mês de agosto sem retweets e conjunto de teste de tamanho igual para notícias e negativos.

  Categoria/Categoria Prevista Notícias Negativo Notícias 439 114 Negativa 491

  62 também são notícias, e vice-versa. Algo que deve ser levado em consideração no caso do uso dessa abordagem, é posicionamentos bem definidos e sem muitas interseções, para que os clusters gerados possam, de fato, servirem de entrada para o modelo. Além disso, a quantidade de clusters também pode impactar bastante na qualidade dos resultados da classificação. Muito provavelmente, uma classificação feita com dados categorizados por um especialista para entrada do modelo, poderia ter resultados melhores no momento de classificar novos documentos.

8 CONSIDERAđỏES FINAIS

  Este trabalho dá continuidade ao framework iniciado por visando torná-lo mais abrangente dentro das etapas de mineração de texto e proporcionar melhorias baseado no que foi encontrado nos processos utilizados na literatura.

  Para a divisão de etapas da mineração de texto usada, o framework agora tem serviços disponíveis em todo o processo de mineração de texto. Algumas das funcionalidades que não estavam presentes na versão anterior do framework eram: algoritmo de classificação, ferramentas para visualização dos resultados (gráficos e nuvens de palavras), diferentes tipos de coleta de dados do Twitter e mais um algoritmo de clusterização, que se difere do já implementado.

  De forma mais descritiva, as novas funcionalidades são: coleta através da API de Search, coleta com uso de um crawler para dados antigos, nova medida de similaridade - Levenshtein, novo algoritmo de clusterização - K-medoids, algoritmo de classificação - Naive Bayes, criação de nuvens de palavras e gráficos. Além disso, um módulo auxiliar para lidar com entrada e saída de dados.

  O framework passou por validações neste trabalho e nos trabalhos de e que inclusive colaboraram com correções de problemas encontrados ao usarem a

  

  Neste trabalho, foi feita a utilização de todos os módulos da ferramenta, visando executar um processo de classificação de texto de forma não semi-assistida. Para isso, foram gerados clusters utilizando o algoritmo K-medoids, com 2 clusters encontrados, para então serem usados como entradas do modelo criado pelo algoritmo de classificação Naive Bayes. Esta validação mostrou que, para obter bons resultados dessa forma os clusters precisam estar bem divididos, e quanto menos tweets dúbios melhor.

  Como trabalhos futuros, seria muito bom o framework poder contar com novos algoritmos e opções de visualização de resultados, o que pode vir por meio de uma comunidade ativa no repositório da ferramenta. Uma ferramenta web que acesse os recursos disponíveis pelo tornando ainda mais prático o trabalho de quem a usa seria um grande benefício para framework a comunidade, principalmente dentro das instituições de ensino, podendo, quem sabe, diminuir a muitas outras plataformas. É necessário também fazer um teste de integracão e regressão para validar o funcionamento da ferramenta como um todo depois das modificações feitas.

  Em termos da abordagem da validação, algo que poderia ser feito para saber ainda mais sobre os resultados obtidos, é o uso de um especialista para categorizar os tweets a serem usados no modelo, já que um humano pode separar bem melhor, principalmente para casos onde os dados são como os coletados neste estudo.

  Para o uso dos clusters como as categorias de entrada para classificação, é necessário realizar um estudo mais profundo sobre como se comporta essa abordagem. Verificar se a classificação sobre esses dados é realmente necessária ou se reutilizar os medoids para categorizar um novo documento é suficiente.

  Por fim, este trabalho visa contribuir de alguma forma para aqueles que desejam realizar trabalhos na área de mineração de textos, contribuindo para a melhoria e unificação da ferramenta, bem como tornar esse processo mais simples.

  REFERÊNCIAS ALVES, M. F. S. Laura: Um chatterbot para responder perguntas sobre java. Quixadá, CE, BRA, 2017.

  ARANHA, C. N.; VELLASCO, M. Uma abordagem de pré-processamento automático para mineração de textos em português: sob o enfoque da inteligência computacional. Pontifícia Universidade Católica do Rio de Janeiro, Rio de Janeiro, RJ, 2007. CHOWDHURY, G. G. Natural language processing. Annual review of information science and technology, Wiley Online Library, v. 37, n. 1, p. 51–89, 2003.

  ESTER, M.; KRIEGEL, H.-P.; SANDER, J.; XU, X. et al. A density-based algorithm for discovering clusters in large spatial databases with noise. In: KDD. Portland, Oregon, USA: [s.n.], 1996. v. 96, p. 226–231. FILHO, J. A. C. Mineração de Textos: Análise de sentimento utilizando tweets referentes à copa do mundo 2014. Quixadá, CE, BRA, 2014.

  GO, A.; BHAYANI, R.; HUANG, L. Twitter sentiment classification using distant supervision. CS224N Project Report, Stanford, v. 1, n. 12, 2009.

  GUHA, S.; MEYERSON, A.; MISHRA, N.; MOTWANI, R.; O’CALLAGHAN, L. Clustering data streams: Theory and practice. IEEE transactions on knowledge and data engineering,

  IEEE, v. 15, n. 3, p. 515–528, 2003. HAN, J.; PEI, J.; KAMBER, M. Data mining: concepts and techniques. San Francisco, CA, USA: Elsevier, 2011.

  HEERINGA, W. J. Measuring dialect pronunciation differences using Levenshtein distance. Tese (Doutorado) — University Library Groningen][Host], 2004. HOTHO, A.; NÜRNBERGER, A.; PAASS, G. A brief survey of text mining. In: LDV Forum. [S.l.: s.n.], 2005. v. 20, p. 19–62. JAIN, A. K.; MURTY, M. N.; FLYNN, P. J. Data clustering: a review. ACM computing surveys (CSUR), Acm, v. 31, n. 3, p. 264–323, 1999. JUNIOR, R. d. A. L. Um Framework para Mineração de Textos de Redes Sociais. Quixadá, CE, BRA, 2016. JUNIOR, R. d. A. L.; JUNIOR, J. H. F.; T., J. da S.; SILVA, T. L. da; MAGALHÃES, R. P. Mineração em Dados Abertos. Parnaíba, PI, BRA, 2014. LEITE, J. L. A. Mineração de Textos do Twitter Utilizando Técnicas de Classificação. Quixadá, CE, BRA, 2015. LIDDY, E. D. Natural language processing. [S.l.], 2001.

  MORAIS, E. A. M.; AMBRÓSIO, A. P. L. Mineraçao de textos. Relatório Técnico–Instituto de Informática (UFG), 2007. NIWATTANAKUL, S.; SINGTHONGCHAI, J.; NAENUDORN, E.; WANAPU, S. Using of jaccard coefficient for keywords similarity. In: Proceedings of the International MultiConference of Engineers and Computer Scientists. [S.l.: s.n.], 2013. v. 1, n. 6. PAK, A.; PAROUBEK, P. Twitter as a corpus for sentiment analysis and opinion mining. In: LREc. Valletta, Malta: [s.n.], 2010. v. 10. RODRIGUES, P. R. F.; SILVA, T. C. da; SOUSA, F. R. C.; MAGALHÃES, R. P.; MACÊDO, J.

  A. F. Dinâmica de temas abordardos no twitter via evolução de clusters. In: Journal of Information and Data Management. Salvador, BA, BRA: [s.n.], 2016. v. 7. RUSSEL, M. A. Mining the Social Web: Data Mining Facebook, Twitter, LinkedIn, Google+, GitHub, and More. Sebastopol, CA, USA: O’Reilly Media, Inc., 2013. SILVA, T. L. da; SOUSA, F. R.; MACÊDO, J. A. F. de; MACHADO, J. d. C.; CAVALCANTE,

  A. A. Análise em Big Data e um Estudo de Caso utilizando Ambientes de Computação em Nuvem. Quixadá, CE, BRA, 2013. SIMOS, G. How Much Data Is Generated Every Minute On Social Media? [S.l.], 2015. Disponível em:

  Acesso em: 09 abr. 2017.

  TAN, A.-H. et al. Text mining: The state of the art and the challenges. In: Proceedings of the PAKDD 1999 Workshop on Knowledge Disocovery from Advanced Databases. [S.l.: s.n.], 1999. v. 8, p. 65–70.

  TAN, P.-N.; STEINBACH, M.; KUMAR, V. Introduction to Data Mining. 1st Edition. Addison-Wesley: Pearson, 2005.

  VELMURUGAN, T.; SANTHANAM, T. Computational complexity between k-means and k-medoids clustering algorithms for normal and uniform distributions of data points. Journal of computer science, v. 6, n. 3, p. 363, 2010.

  VIANA, Z. L. Mineração de Textos: Análise de sentimento utilizando tweets referentes às eleições presidenciais 2014. Quixadá, CE, BRA, 2014.

  APÊNDICE A Ố RESULTADO DA APLICAđấO DO MÉTODO DO COTOVELO USANDO A DISTÂNCIA DE JACCARD DOS MESES DE MARÇO A JULHO

  Neste apêndice são exibidos os resultados da aplicação do método do cotovelo para os dados da reforma da previdência coletados do Twitter no período de março a julho. Como pode ser visto nas imagens deste apêndice, a curva começa a ser desenhada no gráfico, mas com apenas 40 clusters não é o suficiente para ver uma estabilização. Expandindo o valor de k deve ser possível ver isso acontecer, mas essa abordagem não foi aplicada porque os dados não se mostraram detentores de mais do que dois clusters reais. Isso pode ser confirmado pelas nuvens de palavras disponíveis no Apêndice

  Figura 8 – Soma dos quadrados dos erros do mês de março utilizando a distância de Jaccard.

  Fonte – Elaborado pelo autor.

  Figura 9 – Soma dos quadrados dos erros do mês de abril utilizando a distância de Jaccard.

  Fonte – Elaborado pelo autor.

  Figura 10 – Soma dos quadrados dos erros do mês de maio utilizando a distância de Jaccard.

  Figura 11 – Soma dos quadrados dos erros do mês de junho utilizando a distância de Jaccard.

  Fonte – Elaborado pelo autor.

  Figura 12 – Soma dos quadrados dos erros do mês de julho utilizando a distância de Jaccard. APÊNDICE B Ố RESULTADO DA APLICAđấO DO MÉTODO DO COTOVELO USANDO A DISTÂNCIA DE LEVENSHTEIN DOS MESES DE MARÇO A JULHO

  Da mesma maneira que no Apêndice neste apêndice são exibidas as somas dos quadrados dos erros para as clusterizações com valor de k variando entre 2 e 40. A diferença dos resultados encontrados com a distância de Levenshtein para os resultados com a distância de

  , é a estabilização dentro de um range para um valor de k menor. Ainda assim, os valores Jaccard possuem muita variação.

  Figura 13 – Soma dos quadrados dos erros do mês de março utilizando a distância de Levenshtein.

  Fonte – Elaborado pelo autor.

  Figura 14 – Soma dos quadrados dos erros do mês de abril utilizando a distância de Levenshtein.

  Fonte – Elaborado pelo autor.

  Figura 15 – Soma dos quadrados dos erros do mês de maio utilizando a distância de Levenshtein.

  Figura 16 – Soma dos quadrados dos erros do mês de junho utilizando a distância de Levenshtein.

  Fonte – Elaborado pelo autor.

  Figura 17 – Soma dos quadrados dos erros do mês de julho utilizando a distância de Levenshtein. APÊNDICE C Ố RESULTADO DA CLUSTERIZAđấO DOS MESES DE MARđO A JULHO As nuvens de palavras geradas para os meses de março a abril são exibidas aqui.

  Para cada mês existem 5 nuvens, utilizando a distância de Jaccard. É possível perceber pelas nuvens de palavras que no geral, todas tem um tom informativo ou negativo. Essa característica dos dados foi um agravante para os resultados de classificação não serem tão satisfatórios.

  Figura 18 – Nuvem de palavras do primeiro cluster de março.

  Fonte – Elaborado pelo autor.

  Figura 19 – Nuvem de palavras do segundo cluster de março.

  Fonte – Elaborado pelo autor.

  Figura 20 – Nuvem de palavras do terceiro cluster de março.

  Figura 21 – Nuvem de palavras do quarto cluster de março.

  Fonte – Elaborado pelo autor.

  Figura 22 – Nuvem de palavras do quinto cluster de março.

  Figura 23 – Nuvem de palavras do primeiro cluster de abril.

  Fonte – Elaborado pelo autor.

  Figura 24 – Nuvem de palavras do segundo cluster de abril.

  Figura 25 – Nuvem de palavras do terceiro cluster de abril.

  Fonte – Elaborado pelo autor.

  Figura 26 – Nuvem de palavras do quarto cluster de abril.

  Figura 27 – Nuvem de palavras do quinto cluster de abril.

  Fonte – Elaborado pelo autor.

  Figura 28 – Nuvem de palavras do primeiro cluster de maio.

  Figura 29 – Nuvem de palavras do segundo cluster de maio.

  Fonte – Elaborado pelo autor.

  Figura 30 – Nuvem de palavras do terceiro cluster de maio.

  Figura 31 – Nuvem de palavras do quarto cluster de maio.

  Fonte – Elaborado pelo autor.

  Figura 32 – Nuvem de palavras do quinto cluster de maio.

  Figura 33 – Nuvem de palavras do primeiro cluster de junho.

  Fonte – Elaborado pelo autor.

  Figura 34 – Nuvem de palavras do segundo cluster de junho.

  Figura 35 – Nuvem de palavras do terceiro cluster de junho.

  Fonte – Elaborado pelo autor.

  Figura 36 – Nuvem de palavras do quarto cluster de junho.

  Figura 37 – Nuvem de palavras do quinto cluster de junho.

  Fonte – Elaborado pelo autor.

  Figura 38 – Primeiro cluster de julho.

  Figura 39 – Nuvem de palavras do segundo cluster de julho.

  Fonte – Elaborado pelo autor.

  Figura 40 – Nuvem de palavras do terceiro cluster de julho.

  Figura 41 – Nuvem de palavras do quarto cluster de julho.

  Fonte – Elaborado pelo autor.

  Figura 42 – Nuvem de palavras do quinto cluster de julho.

Novo documento

Tags

Documento similar

O “PROGRAMA DE TRANSIÇÃO” DA JUSTIÇA DO TRABALHO PÓS- MODERNA APÓS O ADVENTO DA NOVA COMPETÊNCIA MATERIAL DO ART. 114, I DA CR88 (EC 452004): o “bloco histórico” do novo Direito do Trabalho entre a Desconstrução (Contrarreforma) e a Construção (Reforma) d
0
2
379
André Barbosa de Lima O PROCESSO PRODUTIVO DO CIMENTO PORTLAND
0
0
38
O PROCESSO DE MATRÍCULA DOS ALUNOS VETERANOS DO CURSO DE GEOGRAFIA DA UFMG: análises e intervenções para o aumento de sua eficiência
0
0
43
Repositório Institucional UFC: (In)tolerância e preconceito linguístico no ciberespaço: reflexões acerca dos comentários de usuários
0
0
20
Repositório Institucional UFC: In major affective disorders, early life trauma predict increased nitro-oxidative stress, lipid peroxidation and protein oxidation and recurrence of major affective disorders, suicidal behaviors and a lowered quality of life
0
0
16
Repositório Institucional UFC: A imunidade tributária do livro eletrônico
0
0
57
Repositório Institucional UFC: Imposto inflacionário e dívida pública: período pós - Plano Real
0
0
70
Repositório Institucional UFC: A importância dos investimentos públicos para os municípios recém emancipados: caso de João Costa/PI
0
0
52
Repositório Institucional UFC: A importância do PRONAF na redução da pobreza nos municípios cearenses na década de 2000 a 2010
0
0
84
A importância do processo de formação em projetos de comunicação e educação para crianças e adolescentes
0
0
14
Repositório Institucional UFC: A importância do fluxo de caixa para o processo decisório, estudo de caso da Holding Adminstração e Participações Ltda
0
2
44
Repositório Institucional UFC: A importância do esquecimento organizacional para as organizações que aprendem
0
1
61
Repositório Institucional UFC: importância do compliance no auxílio à gestão das empresas: estudo de caso em uma concessionária de veículos
0
2
18
Repositório Institucional UFC: A importância da informação contábil no processo de prestação de contas dos partidos políticos no Estado do Ceará
0
2
80
Repositório Institucional UFC: Implicações de viver o sentido: por uma aproximação de Victor Frankl com Ortega y Gasset
0
1
16
Show more