germeval-textfeatures01

tidymodels
textmining
prediction
sentiment
germeval
string
Published

November 16, 2023

Aufgabe

Extrahieren Sie gängige Textfeatures - mit Hilfe des gleichnamigen R-Pakets - als Teil des Feature Engineering im Rahmen eines Tidymodels-Klassifikationsmodells.

Modellieren Sie dann mit einem einfachen linearen Modell die abhängige Variable.

Verwenden Sie diesen Datensatz:

# Analyse-Daten:
data("germeval_train", package = "pradadata")
data("germeval_test", package = "pradadata")
# Sentiment-Daten
data("sentiws", package = "pradadata")

Die AV ist c1.

Hinweise:











Lösung

Setup

library(tidyverse)
library(tidymodels)
library(tictoc)
library(beepr)
library(textrecipes)

Daten

c2 brauchen wir hier nicht:

d_train <-
  germeval_train |> 
  select(-c2) |> 
  as_tibble()

Rezept

Rezept definieren:

rec <-
  recipe(c1 ~ ., data = d_train) |> 
  update_role(id, new_role = "id")  |> 
  #update_role(c2, new_role = "ignore") |> 
  update_role(text, new_role = "ignore") |> 
  step_textfeature(text)  # isst `text` auf

step_mutate ergänzt für die erzeugte (mutierte) Variable automatisch eine Rolle im Rezept, nimmt sie also als Prädiktor auf.

Mal schauen:

rec
tidy(rec)

Preppen und backen:

tic()
rec_prepped <- prep(rec)
toc()
beep()
rec_prepped
rec_baked <- bake(rec_prepped, new_data = NULL)
head(rec_baked)

Folgende Spalten/Features hat step_textfeatures extrahiert:

names(rec_baked)

Model

mod <-
  logistic_reg()

Workflow

wf <- workflow() |> 
  add_recipe(rec) |> 
  add_model(mod)

Fit

tic()
fit1 <-
  fit(wf,
      data = d_train)
toc()
fit1

Test-Set-Güte

Vorhersagen im Test-Set:

tic()
preds <-
  predict(fit1, new_data = germeval_test)
toc()

Und die Vorhersagen zum Test-Set hinzufügen, damit man TRUTH und ESTIMATE vergleichen kann:

d_test <-
  germeval_test |> 
  bind_cols(preds) |> 
  mutate(c1 = as.factor(c1))
metrics(d_test,
        truth = c1,
        estimate = .pred_class)

Baseline

Ein einfaches Referenzmodell ist, einfach die häufigste Kategorie vorherzusagen:

d_train |> 
  count(c1)

Categories:

  • tidymodels
  • textmining
  • prediction
  • sentimentanalysis
  • germeval
  • string