Chapter 1 Mineração de Textos

Atualmente, vivemos na era do Big Data, ou seja, estamos gerando dados a todo momento, porém, na maioria das vezes, são dados não estruturados, como notícias, e-mails e documentos de forma geral. Mineração de textos ou do inglês Text Mining, tem como objetivo, encontrar termos relevantes e estabelecer relacionamento entre eles de acordo com a sua frequência e assim extrair informações de grandes volumes de textos.

1.1 Workflow

Agora, que sabemos que é possível obter informações, de grandes volumes de textos, vejamos como é o processo de obtenção dessas informações:

  • Começar com uma pergunta: Primeiramente, devemos ter um problema que queremos resolver, ou uma pergunta que desejamos responder, como, por exemplo: O que as pessoas que estão falando sobre data science?

  • Obter os dados: Agora, que temos um questionamento, precisamos conseguir os dados que o responda, sendo assim, utilizarei como fonte de dados, o que as pessoas estão conversando no Twitter.

  • Limpar: E com os nossos dados em mãos, iremos realizar outra etapa do processo, que é a limpeza dos nossos dados, removendo caracteres especiais, como acentos, pontuações, tranformando todas as palavras em uma só estrutura, como, minúsculo e removeremos todas as stopwords, que são palavras irrelevantes para a pergunta que queremos responder.

  • Analisar: Com os nossos dados prontos, iremos realizar uma das partes mais divertidas, que é analisar os nossos dados, onde poderemos aplicar diversas técnicas e verificar se com o dados que possuímos, responderemos à pergunta que nos motivou a analisar esses dados.

  • Visualizar: Nessa etapa, poderemos visualizar o resultado da nossa análise e assim gerar diversas opções de gráficos, como, por exemplo, nuvem de palavras.

  • Extrair conhecimento: E chegamos a última etapa, e se tudo estiver ocorrido bem, durante o processo de análise, teremos transformado os nossos dados em informação e agregando ao nosso entendimento prévio sobre o assunto, como resultado, gerado um conhecimento novo, sobre o fato que estávamos analisando.

1.2 Conceitos

Antes, de continuarmos, vamos conhecer alguns conceitos:

  • Corpus: Conjuntos de textos.
  • Stopwords: Como comentado anteriormente, são palavras que não adicionam sentido ao texto, como palavras de ligação por exemplo e existem listas de stopwords para vários idiomas na internet.

1.3 Código exemplo

Chegou o momento mais divertido onde criaremos um projeto básico de text mining, e para isso, utilizaremos a linguagem de programação R e os seguintes pacotes:

  • ‘rtweet’ É um pacote, que permitirá que você se conecte ao Twitter, caso você tenha uma conta, onde você poderá realizar buscas, com no máximo 18 mil tweets.
  • ‘tm’ O pacote tm de “Text Mining” é um pacote utilizado para trabalharmos com textos.
  • ‘wordcloud’ É um pacote que nos permite visualizar de forma rápida, as palavras, utilizando como critério de tamanho, a frequência.
  • ‘tydeverse’ É um pacote, que possui uma coleção de pacotes inclusos, para ajudar na manipulação dos dados.

Primeiramente, vamos instalar os pacotes que serão necessários durante o projeto:

E com os pacotes instalados, devemos carregar os mesmos e assim poderemos utilizar as funções desses pacotes.

Precisaremos de dados e vamos coletar esses dados utilizando a API do Twitter, usando a função de busca ‘search_tweets()’, passaremos a # que iremos buscar, o número de tweets, onde o número máximo é 18 mil, informaremos que não queremos os retweets e a linguagem dos tweets deverá ser em inglês.

E essas são as primeiras linhas da busca:

Visualizando a frequência de tweets utilizando #datascience, no intervalo de 1 hora:

Vamos começar a mineração dos textos e para isso iremos pegar a (coluna) text e atribuir a uma variável.

Tranformando os nossos textos em um corpus, para assim podermos realizar a limpeza utilizando a função tm_map, onde removeremos os caracteres especiais, transformaremos todas as letras para minúsculas, removeremos as pontuações e as stopwords em inglês.

Após, realizar a limpeza dos nossos textos, chegou o momento de visualizar o resultado em uma nuvem de palavras e iremos utilizar a função brewer.pal, para gerar as cores em hexadecimal, para assim, colorirmos a nossa nuvem.

Criando uma matriz de documentos-termos (DocumentTermMatrix), removendo os termos menos frequentes da matriz e somando os termos restantes para assim verificar os termos mais frequentes.

Gerando um dataframe com os termos mais frequentes e visualizando em um gráfico.

E podemos visualizar o resultado em uma nuvem de palavras, porém utilizaremos outro pacote para gerar a nuvem que é o wordcloud2, pois ele gera uma nuvem de palavras mais bonita que o pacote que utilizamos até o momento, mas antes, temos que instalar o pacote em nosso computador e utilizamos o comando abaixo para realizar a instalação.

E após, instalarmos, carregaremos o pacote wordcloud2 e passaremos o nosso dataframe com os termos mais frequentes para a função wordcloud2 e teremos como resultado o seguinte gráfico.

E podemos visualizar como os nossos termos estão agrupados, e para isso produziremos um dendrograma de agrupamento hierárquico, que é um diagrama de árvore.