Ich hatte zuerst versucht Keyness auf meinen vollen Datensatz (ski1) anzuwenden, die Resultate waren aber nicht interessant weil:
\(\bullet\) starke Präsenz an
Eigennnamen
\(\bullet\) ungenaue Zuordnung der
Artikel nach Geschlecht
\(\bullet\) enrome Menge an Daten
Aus diesem Grund habe ich mich entschieden den dd_kwic Datensatz (i.e. 30 Wörter, welche die Namen der SkimeisterInnen umzingeln) zu gebrauchen aus dem ich schon die (mit POS erkannten) Eigennamen entfernt habe.
dd_kwic_keyness <- read.csv("Inputs/kwic_filtered.csv")
dd_kwic_keyness <- as.data.frame(dd_kwic_keyness)
dd_kwic_keyness <- dplyr::select(dd_kwic_keyness, c("docname", "text", "keyword", "sex"))
#corpus
corpus_kwic_keyness <- corpus(dd_kwic_keyness)
#tokens
tokens_kwic_keyness <- tokens(corpus_kwic_keyness,
remove_punct = T,
remove_numbers = T,
remove_symbols = T)
#additionnal stopwords
stopwords <- readRDS("Inputs/stopwords.rds")
tokens_kwic_keyness <- tokens_remove(tokens_kwic_keyness, stopwords)
#stemming von besonders interessanten wörtern wos nicht funktioniert hat
tokens_kwic_keyness <- tokens_wordstem(tokens_kwic_keyness, language = "de") #solala
tokens_kwic_keyness<- tokens_replace(tokens_kwic_keyness, pattern = c("favoritin", "favoritinnen"), replacement = c("favorit", "favorit"))
tokens_kwic_keyness<- tokens_replace(tokens_kwic_keyness, pattern = c("athletin", "athletinnen"), replacement = c("athlet", "athlet"))
tokens_kwic_keyness<- tokens_replace(tokens_kwic_keyness, pattern = c("konkurrentin", "konkurrentinnen"), replacement = c("konkurrent", "konkurrent"))
tokens_kwic_keyness<- tokens_replace(tokens_kwic_keyness, pattern = c("topfavoritin", "topfavoritinnen", "top-favoritin", "top-favoritinnen", "top-favorit"), replacement = c("topfavorit", "topfavorit", "topfavorit", "topfavorit", "topfavorit"))
tokens_kwic_keyness<- tokens_replace(tokens_kwic_keyness, pattern = c("spitzenfahrerin", "spitzenfahrerinnen"), replacement = c("spitzenfahr", "spitzenfahr"))
tokens_kwic_keyness<- tokens_replace(tokens_kwic_keyness, pattern = c("aussenseiterin", "aussenseiterinnen"), replacement = c("aussenseit", "aussenseit"))
tokens_kwic_keyness<- tokens_replace(tokens_kwic_keyness, pattern = c("nachwuchsfahrerin", "nachwuchsfahrerinnen"), replacement = c("nachwuchsfahr", "nachwuchsfahr"))
tokens_kwic_keyness<- tokens_replace(tokens_kwic_keyness, pattern = c("teamleaderin", "teamleaderinnen"), replacement = c("teamlead", "teamlead")) #stamm achntung
tokens_kwic_keyness<- tokens_replace(tokens_kwic_keyness, pattern = c("sportlerin", "sportlerinnen"), replacement = c("sportler", "sportler")) #stamm achtung
tokens_kwic_keyness<- tokens_replace(tokens_kwic_keyness, pattern = c("leaderin", "leaderinnen", "leader"), replacement = c("leader", "leader", "leader")) #stamm achtung
tokens_kwic_keyness<- tokens_replace(tokens_kwic_keyness, pattern = c("dominatorin", "dominatorinnen"), replacement = c("dominator", "dominator"))
tokens_kwic_keyness<- tokens_replace(tokens_kwic_keyness, pattern = c("hoffnungstragerin", "hoffnungstragerinnen"), replacement = c("hoffnungstrager", "hoffnungstrager")) #stamm achtung
#dfm
dfm_kwic_keyness <- dfm(tokens_kwic_keyness)
#dfm_kwic_keyness_bis <- dfm_remove(tokens_kwic_keyness_bis, german_stopwords)
#keyness
kwic_keyness_results_m <- dfm_group(dfm_kwic_keyness, sex) %>% textstat_keyness("Mann")
kwic_keyness_results_m
#plot
textplot_keyness(kwic_keyness_results_m, n = 20, show_reference = FALSE, color = "darkgreen")
kwic_keyness_results_f <- dfm_group(dfm_kwic_keyness, sex) %>% textstat_keyness("Frau")
kwic_keyness_results_f
textplot_keyness(kwic_keyness_results_f, n = 20, show_reference = FALSE, color = "darkgreen")
An sich sind die Resultate nicht direkt gebrauchbar weil es beim Stemming viele Probleme gab dennoch kommen gewisse Beschreibungen zum Vorschein, welche man weiter nachgehen könnte:
\(\bullet\) favorit
\(\bullet\) topfavorit
\(\bullet\) athlet
\(\bullet\) konkurrent
\(\bullet\) spitzenfahr
\(\bullet\) spezialist
\(\bullet\) legendar
\(\bullet\) held
\(\bullet\) grandios
\(\bullet\) dominator
\(\bullet\) aussenseiter
\(\bullet\) sieger
\(\bullet\) titelverteidiger
\(\bullet\) leader
\(\bullet\) allrounder
\(\bullet\) hoffnungstrager
\(\bullet\) aufsteiger
\(\bullet\) nachfolger
\(\bullet\) uberflieger
Auch hier verwende ich die Resultate fom KWIC und dem Preprocessing mit Entfernung der Eigennamen anhand POS-tags.
dd_kwic_fssm <- read.csv("Inputs/kwic_filtered.csv")
dd_kwic_fssm <- as.data.frame(dd_kwic_fssm)
dd_kwic_fssm <- dplyr::select(dd_kwic_fssm, c("docname", "text", "keyword", "sex"))
#corpus
corpus_kwic_fssm <- corpus(dd_kwic_fssm)
#tokens
tokens_kwic_fssm <- tokens(corpus_kwic_fssm,
remove_punct = T,
remove_numbers = T,
remove_symbols = T)
#additionnal stopwords
stopwords <- readRDS("Inputs/stopwords.rds")
tokens_kwic_fssm <- tokens_remove(tokens_kwic_fssm, stopwords)
#stemming
tokens_kwic_fssm <- tokens_wordstem(tokens_kwic_fssm, language = "de")
#dfm
dfm_kwic_fssm <- dfm(tokens_kwic_fssm)
set.seed(1111)
docvars(dfm_kwic_fssm)
train_dfm <- dfm_kwic_fssm |> dfm_trim(100)
nrow(train_dfm)
length(train_dfm)
model_nb <- textmodel_nb(train_dfm, docvars(train_dfm,"sex"))
coefs_nb <- coef(model_nb) |>
as.data.frame()
coefs_nb |>
arrange(-Frau) |>
head(10)
coefs_nb_plot <- coefs_nb |>
arrange(Frau) |>
rownames_to_column("feature") |>
head(50)
coefs_nb_plot |>
ggplot(aes(x=Frau,y=factor(feature,levels=feature)))+
geom_point(colour = "darkgreen", size = 2) +
geom_segment(aes(x=0, xend=Frau, y=feature, yend=feature))+
labs(x = "Vorhersagekraft für Geschlecht = Mann",
y = "Feature") +
theme_bw()+
theme(legend.position="none",text=element_text(size=15))
coefs_nb_plot <- coefs_nb |>
arrange(Mann) |>
rownames_to_column("feature") |>
head(50)
coefs_nb_plot |>
ggplot(aes(x=Mann,y=factor(feature,levels=feature)))+
geom_point(colour = "darkgreen", size = 2) +
geom_segment(aes(x=0, xend=Mann, y=feature, yend=feature))+
labs(x = "Vorhersagekraft für Geschlecht = Frau",
y = "Feature") +
theme_bw()+
theme(legend.position="none",text=element_text(size=15))