Ir para o conteúdo PET Sistemas de Informação Ir para o menu PET Sistemas de Informação Ir para a busca no site PET Sistemas de Informação Ir para o rodapé PET Sistemas de Informação
  • Acessibilidade
  • Sítios da UFSM
  • Área restrita

Aviso de Conectividade Saber Mais

Início do conteúdo

Introdução a Mineração de textos com Python



Olá pessoal! Nesta edição do PET-Redação iremos fazer uma breve introdução a mineração de texto através do processamento de linguagem natural, utilizando a linguagem Python e algumas bibliotecas. Ao final, após realizarmos um breve tratamento no texto, iremos gerar uma worldcloud com as principais palavras.

Mas o que é mineração de texto?

É extrair informações úteis e de seu interesse a partir de textos em formato livre, ou seja, textos que não seguem um padrão como os arquivos XML ou JSON, por exemplo. Tais como informações que quando exploradas e analisadas, têm grande poder, pois podem influenciar em decisões econômicas, realizar análise sentimentais em redes sociais, melhorias em serviços prestados através da análise de feedbacks, marketing, verificação de mensagens de spam em e-mails, etc.  Mas de onde surgem tantos dados?  Bom, pode-se citar como exemplo uma pessoa normal ao usar uma rede social, automaticamente ela gera dados para aquela empresa, haja vista que o que parece ser gratuito, na verdade não é, pois os usuários pagam entregando seus dados.

Ao trabalhar com um grande volume de dados, torna-se muito difícil extrair as informações de seu interesse manualmente, então, para isso existem bibliotecas focadas no tratamento de textos, entre elas está a nltk, que utilizaremos a seguir. Para se minerar informações de um texto existem diversas etapas, mas nesta edição do pet redação, o conteúdo tratado será uma breve introdução a essa ampla área, ou seja, será realizada a leitura dos dados, tokenização, remoção de stopwords, verificação das palavras com mais frequência e a geração da nuvem de palavras.

Tokenização: é o processo de quebrar a string inteira (texto de entrada) em palavras únicas.
Stopwords: palavras irrelevantes, que quando retiradas de um texto, o sentido não é alterado.

Para realizar o processo, utilizaremos:

A ferramenta Jupyter Lab, que pode ser baixada no link (https://www.anaconda.com/products/individual);

Python 3, que pode ser baixado no link (https://www.python.org/downloads/);

E as bibliotecas nltk e wordcloud. No cmd (modo administrador) uso os comandos para instalar:

-> pip install nltk

-> pip install wordcloud

 Desenvolvimento:

Certo, agora que você já tem noção do que vamos fazer e está com seu ambiente organizado, para iniciar, precisamos do texto a ser minerado. Neste exemplo utilizarei a reportagem que pode ser acessada através do link (https://g1.globo.com/economia/tecnologia/noticia/2021/07/07/microsoft-libera-atualizacao-de-emergencia-no-windows-para-corrigir-falha-de-seguranca.ghtml). Porém, a base de dados é de sua escolha, podendo ser um capítulo de livro, artigo ou algo de seu interesse.

Após definir sua base de dados, salve-a em um arquivo.txt, na mesma pasta que você criará seu arquivo do Jupyter Lab, isso facilitará o acesso aos dados. Depois de criado o arquivo com o texto e o arquivo do Jupyter Lab, podemos começar importando as bibliotecas que serão utilizadas. A biblioteca NLTK (Natural Language Toolkit) será usada para o tratamento do texto, onde será possível realizar a remoção de stopwords e calcular a frequência de cada palavra. Já a Wordcloud é a biblioteca responsável pela configuração e criação da nossa nuvem de palavras. E a biblioteca string será utilizada para realizar a remoção de toda pontuação desnecessária do texto. Vamos ao código: 

Importação das bibliotecas:

Abertura do arquivo a ser minerado:

Será realizada a abertura do arquivo em modo leitura, e em seguida, a função .lower() deixará o texto todo minúsculas.

Remoção da pontuação:

Agora vamos começar a realizar a limpeza do texto, primeiro será retirada toda a pontuação desnecessária.

 

Tokenização:

Agora o texto inteiro será separado em palavras únicas, para que seja possível realizar o cálculo de frequência das palavras e a verificação das stopwords. A função nltk.word_tokenize() da biblioteca nlkt realizará o processo de tokenização.

O print abaixo mostra um trecho do texto após ter sido realizada a tokenização:

Remoção das Stopwords:

Aqui será realizado o download das stopwords em português, que como explicado anteriormente, são as palavras que quando retiradas de um texto, o sentido não é alterado. Devido a isso iremos removê-las do texto, para trabalharmos com uma base de dados menor. 

Exemplos de stopwords em português:

O print abaixo mostra um trecho do texto após ter sido realizada a remoção das stopwords:

Verificando as palavras com mais frequência:

Após ter sido realizada a limpeza do texto, é possível checar o número de aparições das principais palavras. A função .most_common() da biblioteca nltk irá retornar as 10 palavras que mais aparecem no texto, sendo printado a palavra seguido do número de vezes em que é usada.

Gerando a wordcloud:

Para isso será utilizada a biblioteca wordcloud. Definimos a cor do fundo como branco, as stopwords em português, para que apareça somente as palavras chaves do texto, a altura e largura de 1080 pixels e o número máximo de palavras escolhido. Lembrando que existem muitas outras opções para configurar a wordcloud do seu jeito, informações que podem ser encontradas no site da documentação da biblioteca.

A função .generate() vai gerar a wordcloud com as especificações que passamos, e a função .to_file() salvará a imagem no mesmo diretório em que se encontra o seu arquivo do Jupyter Lab.

Wordcloud gerada: 

Pronto, você conseguiu realizar o tratamento no texto e gerar uma wordcloud com as principais palavras. Lembrando que quanto maior o tamanho da palavra na imagem, mais vezes ela aparece no texto.

Como comentado anteriormente, essa redação foi apenas uma breve introdução à área, sendo este assunto muito amplo, existem diversas outras ramificações que podem ser estudadas. Bons estudos.

Referências: 

Publicações Relacionadas

Publicações Recentes