Exercícios 5
Aula 5
1) Workflow
Para esse exercício, será necessário carregar uma base de discursos presidenciais feitos por Dilma Rousseff e Michel Temer em parte de seus mandatos:
<- "https://github.com/FLS-6497/datasets/raw/main/aula5/discursos_presidenciais.csv"
link <- readr::read_csv2(link) discursos
import pandas as pd
= 'https://github.com/FLS-6497/datasets/raw/main/aula5/discursos_presidenciais.csv'
link = pd.read_csv(link, sep=';') discursos
Também precisaremos fazer pré-processamento dos textos:
library(mlr3verse)
library(quanteda)
# 1) Criar um corpus
<- corpus(discursos, docid_field = "id", text_field = "discurso")
corpus_disc
# 2) Tokenizacao
<- corpus_disc %>%
tks_disc tokens(remove_punct = TRUE, remove_numbers = TRUE) %>%
tokens_tolower()
# 3) Matriz bag-of-words
<- dfm(tks_disc) %>%
tks_dfm dfm_trim(min_docfreq = 5)
# 4) Transforma em tibble e inclui o target
<- as.matrix(tks_dfm) %>%
dados as_tibble() %>%
::clean_names()
janitor
$y <- discursos$presidente dados
from sklearn.feature_extraction.text import CountVectorizer
= CountVectorizer()
vct = vct.fit_transform(discursos.discurso) X
a) Pré-processamento
Usando ferramentas de processamento de texto, implemente uma pequena pipeline para limpar dados e, quando estiver satisfeito com ela, crie uma função que aplique ela em uma nova lista textos.
b) Modelo
Usando os frameworks de aprendizado de máquina, use a bag of words criada anteriormente para treinar algum modelo de classificação para predizer o nome do ou da presidente que proferiu cada discurso na amostra de teste.
c) Validação
Roda o item pedido em b) 100 vezes e salve os resultados de alguma métrica de validação.
c) Validação II
Repita o exercício c), dessa vez usando a variável planalto
, que indica se um discurso foi proferido no Palácio do Planalto, como target.
2) Evitando data leaks
Como vimos, pré-processamento deve ser aplicado antes de fazermos split sample de validação (i.e., criar amostras de teste e de treino). Agora, implemente um workflow que leva isso em conta. Para tanto, você deverá criar uma função que separe textos em treino e teste, que aplique pré-processamento apenas na amostra de treino e que, depois, replique ele na amostra de teste para, então, rodar um algoritmo e calcular alguma métrica de validação.
3) Benchmark
Usando as ferramentas que vimos, experimente com os seguintes pré-processamentos:
- Usando apenas palavras maiores do que 4 caracteres;
- Removendo palavras que não ocorrem em, pelo menos, 10 documentos;
- Removendo palavras que não ocorrem em, pelo menos, 10% dos documentos;
- Usando TF-IDF para normalizar os elementos da matriz bag of words;