Resumindo textos com NLP 🤗 [updated]

Marina Ramalhete
4 min readSep 28, 2021

--

Photo by Kelly Sikkema on Unsplash

Resumir textos automaticamente é algo que pode ser extremamente útil quando estamos muito ocupados e também quando o que desejamos é apenas um breve resumo do texto ou artigo em questão. São diversas as formas existentes para se resumir um texto, a que desenvolvi neste projeto foi através do Processamento de Linguagem Natural — Natural Language Processing (NLP) e duas de suas bibliotecas mais famosas, NLTK e spaCy. Para construir e colocar a aplicação em produção utilizei a plataforma Streamlit e a plataforma em nuvem Heroku.

Update! Devido a atualizações na plataforma Heroku, a platforma Streamlit também foi utilizada para o deploy da aplicação.

Algumas definições importantes:

  1. Processamento de Linguagem Natural — Natural Language Processing (NLP)

“Processamento de Linguagem Natural se refere ao ramo da ciência da computação — e mais especificamente, o ramo da inteligência artificial ou IA — preocupado em dar aos computadores a capacidade de entender texto e palavras faladas da mesma forma que os seres humanos.”

2. NLTK (Natural Language Toolkit)

“NLTK é uma plataforma líder para a construção de programas Python para trabalhar com dados de linguagem humana. Ele fornece interfaces fáceis de usar para mais de 50 corpora e recursos lexicais , como WordNet, junto com um conjunto de bibliotecas de processamento de texto para classificação, tokenização, lematização, marcação, análise e raciocínio semântico, wrappers para bibliotecas de PNL de força industrial.” — Documentação NLTK

3. spaCy

“spaCy é uma biblioteca de código aberto gratuita para Processamento de Linguagem Natural avançado em Python. Foi projetado especificamente para uso em produção e ajuda a criar aplicativos que processam e “entendem” grandes volumes de texto. Ele pode ser usado para construir sistemas de extração de informações ou de compreensão de linguagem natural, ou para pré-processar texto para aprendizado profundo.” — Documentação spaCy

4. Streamlit

“Streamlit é uma biblioteca Python de código aberto que facilita a criação e o compartilhamento de belos aplicativos da web personalizados para aprendizado de máquina e ciência de dados. Em apenas alguns minutos, você pode criar e implantar aplicativos de dados poderosos.” — Documentação Streamlit

5. Heroku

“Heroku é uma plataforma como serviço (PaaS) em nuvem baseada em contêiner. Os desenvolvedores usam o Heroku para implantar, gerenciar e dimensionar aplicativos modernos. Nossa plataforma é elegante, flexível e fácil de usar, oferecendo aos desenvolvedores o caminho mais simples para colocar seus aplicativos no mercado.” — Sobre Heroku

Vamos começar com a implementação utilizando a biblioteca NLTK.

Para acompanhar o código completo, acesse o repositório no GitHub.

Primeiro instale e importe as dependências necessárias:

Defina as Stop Words que você irá utilizar, neste exemplo utilizei as em português e em inglês:

Agora vamos criar uma função para remover as Stop Words, em português:

E enfim, criamos uma função para realizar todo processamento e sumarizar o texto, em português (para sumarizar em inglês, mude os parâmetros passados):

Para calcular a frequência de distribuição das palavras utilizamos o módulo de probabilidade do NLTK.

A classe FreqDist,probability Module, é usada para codificar “distribuições de frequência”, que contam o número de vezes que ocorre cada resultado de um experimento. — Documentação NLTK

Para tokenizar as frases utilizamos o sent_tokenize e para retornar uma cópia tokenizada do texto, o word_tokenize.

Por fim, utilizamos o nlargest para retornar uma lista com os n maiores elementos do conjunto de dados recebido.

Para criar a aplicação web, utilizamos o framework Streamlit. Existem diferentes maneiras de definir essa etapa e a documentação pode te ajudar a criar da forma que achar mais interessante.

And… wait for it… deploy!

Esta aplicação foi deployada na plataforma Heroku (posteriormente, devido a atualizações na plataforma Heroku, o deploy foi realizado na plataforma Streamlit) e você pode acessá-la aqui.

Para a implementação utilizando a biblioteca spaCy, acesse o notebook no GitHub.

É isso! Experimente com qualquer texto e veja os resultados. Existem muitos algoritmos de sumarização que foram propostos nos últimos anos e há muito mais a se explorar. Que tal tornar a aplicação inteligente com IA?! Vá em frente, melhore esse algoritmo! 🤘

Se você tiver alguma sugestão ou recomendação, eu adoraria saber!

--

--