This entry is parte 20 de 24 in the series Python + IA: Fundamentos e Projetos Práticos
Python + IA: Fundamentos e Projetos Práticos
Hoje vamos treinar um modelo de IA para detectar notícias falsas (fake news) com base em texto.
É um projeto real que aplica NLP (Processamento de Linguagem Natural) e Machine Learning com Python.
🧠 O que é a detecção de fake news?
É a tarefa de classificar uma notícia como VERDADEIRA ou FALSA com base em seu conteúdo textual. Isso ajuda a:
- Combater desinformação em massa
- Criar filtros automáticos em redes sociais
- Ajudar jornalistas e plataformas de checagem
🧰 O que usamos
| Ferramenta | Função |
|---|---|
pandas | Manipulação de dados em tabela (CSV) |
scikit-learn | Machine Learning e avaliação |
TfidfVectorizer | Transforma texto em números |
PassiveAggressiveClassifier | Algoritmo eficiente para dados de texto |
📦 Instale os pacotes
pip install pandas scikit-learn
📂 Dataset de exemplo
📥 Baixar fake_news_dataset.csv
Esse CSV contém 10 notícias (5 reais, 5 falsas) com colunas title, text e label.
🐍 Código Python:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import PassiveAggressiveClassifier
from sklearn.metrics import accuracy_score
# Carrega o dataset
df = pd.read_csv("fake_news_dataset_v2.csv")
df = df[['title', 'text', 'label']].dropna()
# Divide os dados
X_train, X_test, y_train, y_test = train_test_split(
df['text'], df['label'], test_size=0.25, random_state=7)
# Vetorização dos textos
vectorizer = TfidfVectorizer(stop_words='english', max_df=0.7)
X_train_vec = vectorizer.fit_transform(X_train)
X_test_vec = vectorizer.transform(X_test)
# Treinamento do classificador
model = PassiveAggressiveClassifier(max_iter=50)
model.fit(X_train_vec, y_train)
# Teste do modelo
y_pred = model.predict(X_test_vec)
score = accuracy_score(y_test, y_pred)
# Exibir resultados
resultado_df = pd.DataFrame({
'Texto': X_test.values,
'Real': y_test.values,
'Previsto': y_pred
})
print("📋 Classificação de Notícias:")
print(resultado_df.to_string(index=False))
print(f"\n🔍 Acurácia: {round(score * 100, 2)}%")
✅ Aprendizado do Dia
Você aprendeu a:
- Ler um dataset de texto
- Transformar esse texto em dados numéricos (vetorização)
- Treinar um modelo real de classificação
- Avaliar e interpretar o resultado
🧪 Desafio
Crie um novo arquivo meu_classificador.py com os seguintes ajustes:
- Treine o modelo com 100% dos dados (
test_size=0) - Faça uma interface interativa via
input():- Usuário digita um texto
- O modelo responde se parece REAL ou FAKE
- Permita digitar várias vezes até o usuário escrever “sair”