CHAPITRE 2 : CADRE CONCEPTUEL ET METHODOLOGIQUE
III- 5 Collecte des données et outils d’analyse
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 Python1, 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. Para a coleta de dados usando o método de scraping será utilizada a biblioteca TwitterScraper2. A documetação do Twitter recomenda uma série de bibliotecas para acessar sua API3e a que
será utilizada neste estudo é a Tweepy4, 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 Russel (2013) descreve.
Na versão atual do framework, apenas a forma de coleta por meio do stream de tweetsestá implementada. Essa implementação foi feita em Java, e para deixar o framework 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 6.2.2 já estão presentes no framework, exceto a remoção de pontuação do texto, de caracteres como "?", "!"e outros. Essa deve ser a
2 https://github.com/taspinar/TwitterScraper 3 https://dev.twitter.com/resources/twitter-libraries
ú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 JSON5(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 tweetspré-processados.
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 uma versão desenvolvida disponível no GitHub6. 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.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 3). 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.