🚀 Oferta especial: 60% OFF no CrazyStack - Últimas vagas!Garantir vaga →
NLP Fundamentals

NLTK, spaCy e Técnicas Avançadas NLP com Python: Guia Completo

Domine o processamento de linguagem natural do zero. Aprenda as técnicas fundamentais usadas por Google, Amazon e Microsoft em seus sistemas de IA.

Por Que NLP é a Habilidade Mais Demandada de 2024?

Processamento de Linguagem Natural está em tudo: chatbots, tradutores, análise de sentimentos, assistentes virtuais. É a tecnologia por trás do ChatGPT, Alexa e Google Translate.

+127%
Crescimento de vagas
R$ 18K
Salário médio
85%
Empresas usando NLP
24h
Para aprender o básico

1. Fundamentos: Tokenização e Normalização

Tudo em NLP começa aqui. Transformar texto bruto em dados estruturados que algoritmos podem processar. É como preparar ingredientes antes de cozinhar.

Processamento Básico com NLTK:

# Fundamentos de NLP com NLTK
import nltk
from nltk.tokenize import word_tokenize, sent_tokenize
from nltk.corpus import stopwords
from nltk.stem import PorterStemmer, WordNetLemmatizer
import string
import re

# Download dos recursos necessários
nltk.download('punkt')
nltk.download('stopwords')
nltk.download('wordnet')

class
ProcessadorTexto
:
def
__init__
(self, idioma='english'):
self.stop_words = set(stopwords.words(idioma))
self.stemmer = PorterStemmer()
self.lemmatizer = WordNetLemmatizer()

def
limpar_texto
(self, texto):
"""Limpeza básica do texto"""
# Converter para minúsculas
texto = texto.lower()
# Remover URLs
texto = re.sub(r'http\S+', '', texto)
# Remover emails
texto = re.sub(r'\S+@\S+', '', texto)
# Remover números
texto = re.sub(r'\d+', '', texto)
# Remover pontuação
texto = texto.translate(str.maketrans('', '', string.punctuation))
return
texto.strip()

def
tokenizar
(self, texto):
"""Divide texto em tokens (palavras)"""
texto_limpo = self.limpar_texto(texto)
tokens = word_tokenize(texto_limpo)
# Remover stopwords
tokens = [token for token in tokens if token not in self.stop_words]
return
tokens

def
processar_completo
(self, texto, usar_stemming=True):
"""Processamento completo: tokenização + stemming/lemmatização"""
tokens = self.tokenizar(texto)
if
usar_stemming:
# Stemming: mais rápido, menos preciso
tokens = [self.stemmer.stem(token) for token in tokens]
else
:
# Lemmatização: mais lento, mais preciso
tokens = [self.lemmatizer.lemmatize(token) for token in tokens]
return
tokens

Exemplo Prático:

# Testando o processador
processador = ProcessadorTexto()

texto = "Harper Lee escreveu O Sol é Para Todos em 1960. O livro ganhou o Prêmio Pulitzer!"

# Tokenização simples
tokens = processador.tokenizar(texto)
print("Tokens:", tokens)
# ['harper', 'lee', 'escreveu', 'sol', 'todos', 'livro', 'ganhou', 'prêmio', 'pulitzer']

# Processamento completo com stemming
tokens_stem = processador.processar_completo(texto, usar_stemming=True)
print("Com stemming:", tokens_stem)
# ['harper', 'lee', 'escrev', 'sol', 'todo', 'livr', 'ganh', 'prêmi', 'pulitz']
🎯 Tokenização:
  • • Divide texto em palavras
  • • Remove pontuação
  • • Converte para minúsculas
  • • Base para tudo em NLP
⚡ Stemming:
  • • Rápido e simples
  • • Remove sufixos
  • • Pode gerar palavras inexistentes
  • • Ideal para busca
🎓 Lemmatização:
  • • Mais preciso
  • • Usa dicionário
  • • Palavras sempre válidas
  • • Ideal para análise

2. Análise de Sentimentos - Caso Prático

Uma das aplicações mais populares de NLP. Empresas pagam milhões para entender o que os clientes pensam sobre seus produtos. Vamos criar um analisador profissional.

Analisador de Sentimentos Completo:

# Análise de Sentimentos com VADER e TextBlob
from textblob import TextBlob
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
import pandas as pd

class
AnalisadorSentimentos
:
def
__init__
(self):
self.vader = SentimentIntensityAnalyzer()
self.processador = ProcessadorTexto()

def
analisar_vader
(self, texto):
"""Análise com VADER (melhor para redes sociais)"""
scores = self.vader.polarity_scores(texto)
return
{
'positivo': scores['pos'],
'neutro': scores['neu'],
'negativo': scores['neg'],
'composto': scores['compound']
}

def
analisar_textblob
(self, texto):
"""Análise com TextBlob (melhor para textos formais)"""
blob = TextBlob(texto)
return
{
'polaridade': blob.sentiment.polarity, # -1 a 1
'subjetividade': blob.sentiment.subjectivity # 0 a 1
}

def
classificar_sentimento
(self, score_composto):
"""Classifica sentimento baseado no score"""
if
score_composto >= 0.05:
return
"Positivo"
elif
score_composto <= -0.05:
return
"Negativo"
else
:
return
"Neutro"

💡 Aplicações Reais:

🛒 E-commerce:
  • • Análise de reviews de produtos
  • • Monitoramento de satisfação
  • • Detecção de problemas
📱 Redes Sociais:
  • • Monitoramento de marca
  • • Análise de campanhas
  • • Gestão de crise

Roadmap Completo para Dominar NLP

1

Fundamentos (Semana 1-2)

  • Tokenização, stemming, lemmatização
  • NLTK e spaCy básico
  • Limpeza e normalização de texto
2

Feature Engineering (Semana 3-4)

  • TF-IDF, Bag of Words, N-gramas
  • Word embeddings (Word2Vec, GloVe)
  • Análise de sentimentos
3

Machine Learning (Semana 5-6)

  • Classificação de texto
  • Named Entity Recognition (NER)
  • Topic modeling (LDA)
4

Deep Learning (Semana 7-8)

  • RNNs, LSTMs para sequências
  • Transformers e BERT
  • Fine-tuning de modelos pré-treinados

Domine NLP e abra portas no mercado de IA

NLP é uma das áreas mais quentes da tecnologia. Profissionais ganham até R$ 18.000/mês.