image

Access unlimited bootcamps and 650+ courses

50
%OFF
Article image
GREICE HORA
GREICE HORA12/02/2025 16:16
Share

NLP, Machine Learning e Python: A Tríade da Inteligência Artificial em Dados

  • #Python

Será que alguém um dia, chegou a pensar que poderíamos ensinar uma máquina a entender uma piada? Parece impossível, não é? No entanto, é exatamente isso que o Processamento de Linguagem Natural (NLP) busca alcançar, sendo uma subárea crucial do Machine Learning que se dedica a fazer computadores compreenderem e processarem a linguagem humana, consequentemente gerenciando Dados.

O NLP é fundamentalmente uma aplicação de ML focada em dados textuais. Enquanto o Machine Learning fornece os algoritmos e métodos para aprendizado, o NLP aplica esses conceitos especificamente para problemas de linguagem.


Por Que o NLP é Revolucionário?

Ele está por trás de tecnologias que usamos diariamente:

  • Chatbots inteligentes (Tem bootcamp da Dio, hein!)
  • Assistentes virtuais como Siri e Alexa
  • Tradutores automáticos que quebram barreiras linguísticas
  • Sistemas de análise de sentimentos que avaliam a satisfação de clientes
  • Ferramentas de sumarização que condensam longos documentos em resumos concisos

 

O Ambiente: Suas Ferramentas para o Sucesso

Antes de mergulharmos nas técnicas avançadas, temos de configurar nosso ambiente de desenvolvimento. O Python oferece um ecossistema rico em bibliotecas para NLP, as três mais poderosas: NLTK, spaCy e Gensim.

 # Instalação das bibliotecas
!pip install nltk spacy gensim
 
# Download do modelo em português do spaCy
!python -m spacy download pt_core_news_sm
 
# Importações necessárias
import nltk
import spacy
import gensim
from nltk.tokenize import word_tokenize, sent_tokenize
from nltk.corpus import stopwords
 
# Download dos recursos do NLTK
nltk.download(['punkt', 'stopwords'])
 
# Carregar modelo do spaCy para português
nlp = spacy.load("pt_core_news_sm")

 

A Arte do Pré-processamento: Transformando Texto Bruto em Dados Estruturados

O pré-processamento é como preparar os ingredientes antes de cozinhar: fundamental para um resultado excelente ou comível pelo menos… 👀

Vejamos no mundo real.


Tokenização: Dividindo para Conquistar

A tokenização é o primeiro passo para entender um texto. Há diferentes bibliotecas que abordam essa tarefa:

import nltk
import spacy
from nltk.tokenize import word_tokenize
 
# Baixando os recursos necessários do nltk
nltk.download('punkt')
 
# Baixando o modelo do spaCy (rode isso no terminal antes, se necessário: `python -m spacy download pt_core_news_sm`)
nlp = spacy.load("pt_core_news_sm")
 
# Exemplo prático com um tweet real
tweet = "Acabei de assistir à palestra sobre #InteligênciaArtificial! 🤖 Mind = Blown @techconference"
 
# Tokenização com NLTK
tokens_nltk = word_tokenize(tweet)
print("NLTK:", tokens_nltk)
 
# Tokenização com spaCy
doc = nlp(tweet)
tokens_spacy = [token.text for token in doc]
print("spaCy:", tokens_spacy)

 

Limpeza e Normalização: Removendo o Ruído( Aleluia!🙌🏼)

 

import re
def limpar_texto(texto):
 # Remove URLs
 texto = re.sub(r'https?://\S+|www\.\S+', '', texto)
 
 # Remove emojis e caracteres especiais
 texto = re.sub(r'[^\w\s]', '', texto)
 
 # Converte para minúsculas
 texto = texto.lower()
 
 return texto
 
# Exemplo de tweet
tweet = "Acabei de assistir à palestra sobre #InteligênciaArtificial! 🤖 Mind = Blown @techconference"
 
# Aplicando a função de limpeza
texto_limpo = limpar_texto(tweet)
 
# Exibir resultados
texto_limpo
 
Resultado
 
'acabei de assistir à palestra sobre inteligênciaartificial mind blown techconference’

 

Remoção de Stopwords: Focando no que Importa!

import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
 
# Baixando os pacotes necessários do nltk
nltk.download('punkt')
nltk.download('stopwords')
 
# Carregando stopwords em português
stop_words = set(stopwords.words('portuguese'))
 
def remover_stopwords(texto):
 palavras = word_tokenize(texto)
 texto_sem_stopwords = [palavra for palavra in palavras if palavra.lower() not in stop_words]
 return ' '.join(texto_sem_stopwords)
 
# Exemplo de texto
texto_limpo = "Este é um exemplo de frase com algumas palavras desnecessárias."
 
# Removendo stopwords
texto_processado = remover_stopwords(texto_limpo)
print("Texto sem stopwords:", texto_processado)

 

Representação Vetorial: Transformando Texto em Números

Para que máquinas possam processar texto, precisamos convertê-lo em representações numéricas, igual criança que precisa aprender as letras, antes das palavras. Tem três técnicas populares:


Bag of Words (BoW)

from sklearn.feature_extraction.text import CountVectorizer
 
corpus = [
 "O café está muito quente",
 "O café está muito frio",
 "Não gosto de café"
]
 
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(corpus)
print("Vocabulário:", vectorizer.get_feature_names_out())
print("Matriz BoW:\n", X.toarray())


TF-IDF: Ponderando a Importância das Palavras

from sklearn.feature_extraction.text import TfidfVectorizer
 
# Exemplo de corpus (lista de textos)
corpus = [
 "Machine learning é incrível",
 "Deep learning faz parte do machine learning",
 "O NLP é uma área do machine learning"
]
 
# Aplicando TF-IDF
tfidf = TfidfVectorizer()
X_tfidf = tfidf.fit_transform(corpus)
 
# Exibir matriz TF-IDF
X_tfidf.toarray()

 

Word Embeddings: Capturando Relações Semânticas

 from gensim.models import Word2Vec
 
# Novo corpus com a palavra "café"
corpus = [
 "Eu gosto de tomar café pela manhã",
 "O café é uma bebida popular no mundo todo",
 "Tomar café me ajuda a acordar e focar no trabalho",
 "Muitas pessoas preferem café sem açúcar"
]
 
# Preparando as sentenças para Word2Vec
sentences = [texto.split() for texto in corpus]
 
# Treinando o modelo Word2Vec
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, workers=4)
 
# Visualizando o vetor da palavra "café"
vector_cafe = model.wv['café']
vector_cafe

 

Colocando o NLP no Ringue!

Esse é exemplo prático de análise de sentimentos usando as técnicas que falei anteriormente:

from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
 
# Definição do pipeline
pipeline = Pipeline([
 ('tfidf', TfidfVectorizer(stop_words='english')),
 ('clf', LogisticRegression())
])
 
# Exemplo de dados de treinamento (convertendo neutro para negativo ou positivo)
X_train = [
 "Adorei o produto, superou minhas expectativas!",
 "Produto terrível, não recomendo",
 "Produto razoável, mas caro"
]
y_train = [1, 0, 0] # Convertendo 0.5 para 0 para manter binário
 
# Treinando o modelo
pipeline.fit(X_train, y_train)
 
# Fazendo previsões
texto_teste = "Produto incrível, vale cada centavo!"
sentimento = pipeline.predict([texto_teste])[0]
print(f"Sentimento previsto: {'positivo' if sentimento == 1 else 'negativo'}")


Tendências e Futuro do NLP

 

Transformers e Modelos Pré-treinados

Os modelos baseados em arquitetura Transformer, como BERT e GPT, revolucionaram o NLP com sua capacidade de compreender contexto e nuances linguísticas:

from transformers import pipeline
 
# Exemplo de uso do BERT para classificação
classifier = pipeline('sentiment-analysis')
resultado = classifier("Estou muito feliz com os resultados!")
print("Análise de sentimento:", resultado)


Desafios Atuais e Soluções Emergentes

  1. Ambiguidade Linguística - Exemplo: "Banco" pode ser instituição financeira ou móvel
  2. Solução: Modelos contextuais como BERT
  3. Processamento Multilíngue - Desafio: Tradução preservando contexto
  4. Solução: Modelos multilíngues como mBERT
  5. Eficiência Computacional - Desafio: Modelos grandes consomem muitos recursos
  6. Solução: Técnicas de destilação de conhecimento

 


Espero que essa pequena escrita, tenha conseguido mostrar como NLP, Machine Learning e Python trabalham juntos para criar soluções poderosas de processamento de linguagem. À medida que a tecnologia avança, essa combinação se torna cada vez mais importante para desenvolver sistemas que compreendam, interajam com a linguagem humana de forma natural e eficiente.


Aprofunde-se


Livros Recomendados

 

Cursos Online

 

Comunidades e Fóruns

  • Stack Overflow - Tag: nlp
  • Reddit: r/LanguageTechnology
  • GitHub: Projetos open-source de NLP

 

A prática é fundamental! Comece com projetos pequenos e vá aumentando a complexidade gradualmente, o mundo do NLP está literalmente em nossas mãos! SÉRIO!

 

Muitos Bons Ventos! 🍀🚀

Share
Comments (2)
GREICE HORA
GREICE HORA - 13/02/2025 08:36

Oie! NLP é uma área fascinante( é uma das coisas que tenho gostado de estudar na universidade), mas cheia de desafios. Pra mim, um dos maiores sempre foi o pré-processamento. Limpar e estruturar de forma eficiente pode ser mais trabalhoso do que parece—remoção de stopwords, tokenização… cada etapa influencia diretamente o desempenho do modelo. Creio também, que escolha do modelo certo também é um desafio, porque depende muito do caso de uso. Modelos clássicos como TF-IDF e Naïve Bayes ainda são ótimos para tarefas simples, mas quando entramos em deep learning, surgem questões como custo computacional e necessidade de grandes volumes de dados rotulados... Mas no fim das contas, esses desafios fazem parte e são justamente o que torna NLP tão bacana!

DIO Community
DIO Community - 12/02/2025 17:04

Muito top, Greice! Seu artigo apresenta um panorama muito rico sobre NLP e sua relação com Machine Learning e Python, destacando não apenas os conceitos fundamentais, mas também exemplos práticos e bibliotecas essenciais. A forma como você explica cada etapa, desde o pré-processamento até a implementação de modelos mais avançados, torna o aprendizado acessível e aplicável para quem deseja se aprofundar no assunto.

Na DIO, incentivamos o uso dessas tecnologias para criar soluções inovadoras e ampliar as possibilidades no mercado de IA. O NLP já está transformando setores como atendimento ao cliente, análise de sentimentos e assistentes virtuais, e sua evolução com modelos como BERT e GPT só reforça sua importância. Seu artigo é um ótimo guia para quem quer entender como essas ferramentas podem ser aplicadas de maneira prática.

Qual foi o maior desafio que você encontrou ao trabalhar com NLP? Foi o pré-processamento dos dados, a escolha do modelo ou a avaliação dos resultados?