{"id":3178,"date":"2021-07-12T13:33:54","date_gmt":"2021-07-12T16:33:54","guid":{"rendered":"http:\/\/www.55bet-pro.com\/pet\/sistemas-de-informacao\/?p=3178"},"modified":"2025-09-02T14:20:48","modified_gmt":"2025-09-02T17:20:48","slug":"introducao-a-mineracao-de-textos-com-python","status":"publish","type":"post","link":"http:\/\/www.55bet-pro.com\/pet\/sistemas-de-informacao\/2021\/07\/12\/introducao-a-mineracao-de-textos-com-python","title":{"rendered":"Introdu\u00e7\u00e3o a Minera\u00e7\u00e3o de textos com Python"},"content":{"rendered":"\n

Ol\u00e1 pessoal! Nesta edi\u00e7\u00e3o do PET-Reda\u00e7\u00e3o iremos fazer uma breve introdu\u00e7\u00e3o a minera\u00e7\u00e3o de texto atrav\u00e9s do processamento de linguagem natural, utilizando a linguagem Python e algumas bibliotecas. Ao final, ap\u00f3s <\/span>realizarmos<\/span> um breve tratamento no texto, iremos gerar uma worldcloud com as principais palavras.<\/span><\/p>\n

Mas o que \u00e9 minera\u00e7\u00e3o de texto?<\/b><\/h4>\n

\u00c9 extrair informa\u00e7\u00f5es \u00fateis e de seu interesse a partir de textos em formato livre, ou seja, textos que n\u00e3o seguem um padr\u00e3o como os arquivos XML ou JSON, por exemplo. Tais como i<\/span>nforma\u00e7\u00f5es que quando exploradas e analisadas, t\u00eam grande poder, pois podem influenciar em decis\u00f5es econ\u00f4micas, realizar an\u00e1lise sentimentais em redes sociais, melhorias em servi\u00e7os prestados atrav\u00e9s da an\u00e1lise de feedbacks, marketing, verifica\u00e7\u00e3o de mensagens de spam em e-mails, etc.\u00a0 Mas de onde surgem tantos dados?\u00a0 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\u00e3o \u00e9, pois os usu\u00e1rios pagam entregando seus dados.<\/span><\/p>\n

Ao trabalhar com um grande volume de dados, torna-se muito dif\u00edcil extrair as informa\u00e7\u00f5es de seu interesse manualmente, ent\u00e3o, para isso existem bibliotecas focadas no tratamento de textos, entre elas est\u00e1 a nltk, que utilizaremos a seguir. Para se minerar informa\u00e7\u00f5es de um texto existem diversas etapas, mas nesta edi\u00e7\u00e3o do pet reda\u00e7\u00e3o, o conte\u00fado tratado ser\u00e1 uma breve introdu\u00e7\u00e3o a essa ampla \u00e1rea, ou seja, ser\u00e1 realizada a leitura dos dados, tokeniza\u00e7\u00e3o, remo\u00e7\u00e3o de stopwords, verifica\u00e7\u00e3o das palavras com mais frequ\u00eancia e a gera\u00e7\u00e3o da nuvem de palavras.<\/span><\/p>\n

Tokeniza\u00e7\u00e3o<\/strong>: \u00e9 o processo de quebrar a string inteira (texto de entrada) em palavras \u00fanicas.
<\/span>Stopwords<\/strong>: palavras irrelevantes, que quando retiradas de um texto, o sentido n\u00e3o \u00e9 alterado.<\/span><\/p>\n

Para realizar o processo, utilizaremos:<\/span><\/p>\n

A ferramenta Jupyter Lab, que pode ser baixada no link (<\/span>http:\/\/www.anaconda.com\/products\/individual<\/span><\/a>);<\/span><\/p>\n

Python 3, que pode ser baixado no link (<\/span>http:\/\/www.python.org\/downloads\/<\/span><\/a>);<\/span><\/p>\n

E as bibliotecas nltk e wordcloud. No cmd (modo administrador) uso os comandos para instalar:<\/span><\/p>\n

-> pip install nltk<\/span><\/code><\/p>\n

-> pip install wordcloud<\/span><\/code><\/p>\n

\u00a0<\/span>Desenvolvimento:<\/b><\/p>\n

Certo, agora que voc\u00ea j\u00e1 tem no\u00e7\u00e3o do que vamos fazer e est\u00e1 com seu ambiente organizado, para iniciar, precisamos do texto a ser minerado. Neste exemplo utilizarei a reportagem que pode ser acessada atrav\u00e9s do link (<\/span>http:\/\/g1.globo.com\/economia\/tecnologia\/noticia\/2021\/07\/07\/microsoft-libera-atualizacao-de-emergencia-no-windows-para-corrigir-falha-de-seguranca.ghtml<\/span><\/a>). Por\u00e9m, a base de dados \u00e9 de sua escolha, podendo ser um cap\u00edtulo de livro, artigo ou algo de seu interesse.<\/span><\/p>\n

Ap\u00f3s definir sua base de dados, salve-a em um arquivo.txt, na mesma pasta que voc\u00ea criar\u00e1 seu arquivo do Jupyter Lab, isso facilitar\u00e1 o acesso aos dados. Depois de criado o arquivo com o texto e o arquivo do Jupyter Lab, podemos come\u00e7ar importando as bibliotecas que ser\u00e3o utilizadas. A biblioteca NLTK (<\/span>Natural Language Toolkit<\/span>) ser\u00e1 usada para o tratamento do texto, onde ser\u00e1 poss\u00edvel realizar a remo\u00e7\u00e3o de stopwords e calcular a frequ\u00eancia de cada palavra. J\u00e1 a Wordcloud \u00e9 a biblioteca respons\u00e1vel pela configura\u00e7\u00e3o e cria\u00e7\u00e3o da nossa nuvem de palavras. E a biblioteca string ser\u00e1 utilizada para realizar a remo\u00e7\u00e3o de toda pontua\u00e7\u00e3o desnecess\u00e1ria do texto. Vamos ao c\u00f3digo:\u00a0<\/span><\/p>\n

Importa\u00e7\u00e3o das bibliotecas:<\/b><\/p>\n

\"\"<\/p>\n

Abertura do arquivo a ser minerado:<\/b><\/p>\n

Ser\u00e1 realizada a abertura do arquivo em modo leitura, e em seguida, a fun\u00e7\u00e3o .lower() deixar\u00e1 o texto todo min\u00fasculas.<\/span><\/p>\n

\"\"<\/p>\n

Remo\u00e7\u00e3o da pontua\u00e7\u00e3o:<\/b><\/p>\n

Agora vamos come\u00e7ar a realizar a limpeza do texto, primeiro ser\u00e1 retirada toda a pontua\u00e7\u00e3o desnecess\u00e1ria.<\/span><\/p>\n

\"\"\u00a0<\/span><\/span><\/p>\n

Tokeniza\u00e7\u00e3o:<\/b><\/p>\n

Agora o texto inteiro ser\u00e1 separado em palavras \u00fanicas, para que seja poss\u00edvel realizar o c\u00e1lculo de frequ\u00eancia das palavras e a verifica\u00e7\u00e3o das stopwords. A fun\u00e7\u00e3o nltk.word_tokenize() da biblioteca nlkt realizar\u00e1 o processo de tokeniza\u00e7\u00e3o.<\/span><\/p>\n

\"\"<\/p>\n

O print abaixo mostra um trecho do texto ap\u00f3s ter sido realizada a tokeniza\u00e7\u00e3o:<\/span><\/p>\n

\"\"<\/p>\n

Remo\u00e7\u00e3o das Stopwords:<\/b><\/p>\n

Aqui ser\u00e1 realizado o download das stopwords em portugu\u00eas, que como explicado anteriormente, s\u00e3o as palavras que quando retiradas de um texto, o sentido n\u00e3o \u00e9 alterado. Devido a isso iremos remov\u00ea-las do texto, para trabalharmos com uma base de dados menor.\u00a0<\/span><\/p>\n

\"\"<\/p>\n

Exemplos de stopwords em portugu\u00eas:<\/span><\/p>\n

\"\"<\/p>\n

O print abaixo mostra um trecho do texto ap\u00f3s ter sido realizada a remo\u00e7\u00e3o das stopwords:<\/span><\/p>\n

\"\"<\/p>\n

Verificando as palavras com mais frequ\u00eancia:<\/b><\/p>\n

Ap\u00f3s ter sido realizada a limpeza do texto, \u00e9 poss\u00edvel checar o n\u00famero de apari\u00e7\u00f5es das principais palavras. A fun\u00e7\u00e3o .most_common() da biblioteca nltk ir\u00e1 retornar as 10 palavras que mais aparecem no texto, sendo printado a palavra seguido do n\u00famero de vezes em que \u00e9 usada.<\/span><\/p>\n

\"\"<\/p>\n

Gerando a wordcloud:<\/b><\/p>\n

Para isso ser\u00e1 utilizada a biblioteca wordcloud. Definimos a cor do fundo como branco, as stopwords em portugu\u00eas, para que apare\u00e7a somente as palavras chaves do texto, a altura e largura de 1080 pixels e o n\u00famero m\u00e1ximo de palavras escolhido. Lembrando que existem muitas outras op\u00e7\u00f5es para configurar a wordcloud do seu jeito, informa\u00e7\u00f5es que podem ser encontradas no site da documenta\u00e7\u00e3o da biblioteca.<\/span><\/p>\n

A fun\u00e7\u00e3o .generate() vai gerar a wordcloud com as especifica\u00e7\u00f5es que passamos, e a fun\u00e7\u00e3o .to_file() salvar\u00e1 a imagem no mesmo diret\u00f3rio em que se encontra o seu arquivo do Jupyter Lab.<\/span><\/p>\n

\"\"<\/p>\n

Wordcloud gerada:\u00a0<\/span><\/p>\n

\"\"<\/p>\n

Pronto, voc\u00ea 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.<\/span><\/p>\n

Como comentado anteriormente, essa reda\u00e7\u00e3o foi apenas uma breve introdu\u00e7\u00e3o \u00e0 \u00e1rea, sendo este assunto muito amplo, existem diversas outras ramifica\u00e7\u00f5es que podem ser estudadas. Bons estudos.<\/span><\/p>\n

Refer\u00eancias:\u00a0<\/b><\/p>\n