Acesse o painel da sua conta

Não tem uma conta? Registrar

Entrar em contato

Visite também nosso site craftxp.com.br

  • img
  • img
  • img
  • img
  • img
  • img

Entre em contato

NLP com Python: Processamento de Linguagem Natural com NLTK, spaCy e Aplicações Práticas

NLP com Python: Processamento de Linguagem Natural com NLTK, spaCy e Aplicações Práticas

O que é Processamento de Linguagem Natural?

O Processamento de Linguagem Natural (NLP) é um ramo da Inteligência Artificial que capacita computadores a compreender, interpretar e gerar linguagem humana. Combinando linguística computacional com machine learning, o NLP é a tecnologia por trás de assistentes virtuais, tradutores automáticos, chatbots e sistemas de análise de sentimentos.

Com o ecossistema Python, a barreira de entrada para NLP nunca foi tão baixa. Bibliotecas maduras como NLTK e spaCy oferecem ferramentas prontas para tarefas que vão desde a tokenização básica até a classificação de textos em larga escala.

Principais Bibliotecas Python para NLP

Duas bibliotecas dominam o cenário de NLP em Python, cada uma com seus pontos fortes:

  • NLTK (Natural Language Toolkit) — Ideal para aprendizado e experimentação. Oferece mais de 50 corpora e recursos lexicais como WordNet, além de implementações clássicas de algoritmos de NLP. Perfeita para fins acadêmicos e prototipação.
  • spaCy — Focada em produção e performance. Oferece pipelines pré-treinados extremamente rápidos para tokenização, POS tagging, reconhecimento de entidades (NER) e análise de dependência sintática. Suporta mais de 70 idiomas.
  • Transformers (Hugging Face) — Para quem precisa do estado da arte com modelos BERT, GPT e similares. Ideal quando acurácia máxima é necessária.

Tokenização: O Primeiro Passo

A tokenização é o processo de dividir um texto em unidades menores chamadas tokens — palavras, pontuações ou subpalavras. É a base de qualquer pipeline de NLP.

from nltk.tokenize import word_tokenize, sent_tokenize

texto = "Python é incrível! NLP transforma texto em dados valiosos."

palavras = word_tokenize(texto)
print(palavras)
# ['Python', 'é', 'incrível', '!', 'NLP', 'transforma', 'texto', 'em', 'dados', 'valiosos', '.']

frases = sent_tokenize(texto)
print(frases)
# ['Python é incrível!', 'NLP transforma texto em dados valiosos.']

Já no spaCy, a tokenização vem integrada no pipeline e leva em conta regras linguísticas específicas de cada idioma, retornando também classes gramaticais (POS tagging).

Análise de Sentimento

A análise de sentimento classifica textos como positivos, negativos ou neutros. É amplamente usada em monitoramento de redes sociais, avaliações de produtos e pesquisas de satisfação.

from nltk.sentiment import SentimentIntensityAnalyzer
import nltk
nltk.download('vader_lexicon')

sia = SentimentIntensityAnalyzer()
textos = [
    "Este produto é fantástico! Superou minhas expectativas.",
    "Péssimo atendimento. Não compraria novamente.",
    "O filme é razoável, nada de especial."
]

for t in textos:
    score = sia.polarity_scores(t)
    print(f"{t[:30]}... | Score: {score['compound']:.2f}")
# Score: 0.85 (positivo)
# Score: -0.74 (negativo)
# Score: 0.00 (neutro)

O score compound varia de -1 (extremamente negativo) a +1 (extremamente positivo). Valores acima de 0.05 indicam positividade, abaixo de -0.05 indicam negatividade.

Reconhecimento de Entidades Nomeadas (NER)

NER identifica e classifica entidades em um texto como pessoas, organizações, locais, datas e valores monetários. É essencial para extração estruturada de dados não-estruturados.

import spacy

nlp = spacy.load("pt_core_news_sm")
texto = "Elon Musk fundou a Tesla em 2003 e a SpaceX em 2002."
doc = nlp(texto)

for ent in doc.ents:
    print(f"{ent.text} -> {ent.label_}")
# Elon Musk -> PER (Pessoa)
# Tesla -> ORG (Organização)
# 2003 -> DATE (Data)
# SpaceX -> ORG (Organização)

Aplicações Práticas de NLP

  • Chatbots e Assistentes Virtuais — Classificação de intenções e extração de entidades para entender comandos do usuário.
  • Sumarização de Textos — Redução automática de documentos longos em resumos concisos usando técnicas extrativas ou abstrativas.
  • Tradutores Automáticos — Modelos sequência-a-sequência que traduzem entre idiomas mantendo contexto e fluência.
  • Análise de Currículos (Resume Parsing) — Extração automática de habilidades, experiências e formação acadêmica de currículos.
  • Moderação de Conteúdo — Detecção automática de spam, discurso de ódio ou conteúdo impróprio em plataformas digitais.
  • Sistemas de Recomendação baseados em Texto — Recomendação de artigos, vagas ou produtos usando similaridade semântica entre descrições.

Pipeline Completo de NLP com Python

Um fluxo típico de NLP em produção combina várias etapas: pré-processamento, vetorização TF-IDF e classificação com machine learning.

import spacy
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import Pipeline

nlp = spacy.load("pt_core_news_sm")

def preprocess(texto):
    doc = nlp(texto)
    tokens = [token.lemma_.lower() for token in doc 
              if not token.is_stop and not token.is_punct]
    return " ".join(tokens)

pipeline = Pipeline([
    ('tfidf', TfidfVectorizer(preprocessor=preprocess, max_features=1000)),
    ('clf', MultinomialNB())
])

print("Pipeline pronto para classificação de textos!")

Conclusão

O Processamento de Linguagem Natural com Python é uma habilidade essencial para qualquer profissional de Ciência de Dados. Com bibliotecas como NLTK para aprendizado, spaCy para produção e Hugging Face Transformers para o estado da arte, você tem ferramentas para resolver desde problemas simples até desafios complexos de compreensão de linguagem.

Comece com os fundamentos — tokenização, análise de sentimento e NER — e evolua para pipelines mais sofisticados com classificação de textos, sumarização e modelos de linguagem de grande escala. O ecossistema Python oferece tudo que você precisa para transformar texto bruto em insights valiosos.

Craft XP
Craft XP