if (!require("pacman")) install.packages("pacman")
pacman::p_load(
    here, qs, # file management
    magrittr, janitor, # data wrangling
    easystats, sjmisc, # data analysis
    gt, gtExtras, # table visualization
    ggpubr, ggwordcloud, # visualization
    tidytext, widyr, # text analysis    
    openalexR, 
    tidyverse # load last to avoid masking issues
  )Text processing with R
Session 08 - Exercise
Ziel der Anwendung: Textanalyse in R kennenlernen
- Auffrischung der Grundkenntnisse im Umgang mit R, tidyverse und ggplot2
 - Typische Schritte der Textanalyse mit 
tidytextkennenlernen, von der Tokenisierung bis zur Visualisierung. 
Background
Todays’s data basis: OpenAlex
Via API bzw. openalexR (Aria et al. 2024) gesammelte “works” der Datenbank OpenAlex mit Bezug zu Literaturriews in den Sozialwissenschaften zwischen 2013 und 2023
Detaillierte Informationen und Ergebnisse zur Suchquery finden Sie hier.
Preparation
Wichtige Information
- Bitte stellen Sie sicher, dass Sie das jeweilige R-Studio Projekt zur Übung geöffnet haben. Nur so funktionieren alle Dependencies korrekt.
 - Um den einwandfreien Ablauf der Übung zu gewährleisten, wird für die Aufgaben auf eine eigenständige Datenerhebung verzichtet und ein Übungsdatensatz zu verfügung gestelt.
 
Packages
Import und Vorverarbeitung der Daten
# Import from local
review_works <- qs::qread(here("data/session-07/openalex-review_works-2013_2023.qs"))
# Create correct data
review_works_correct <- review_works %>% 
    mutate(
        # Create additional factor variables
        publication_year_fct = as.factor(publication_year), 
        type_fct = as.factor(type)
        )🛠️ Praktische Anwendung
Achtung, bitte lesen!
- Bevor Sie mit der Arbeit an den folgenden 📋 Exercises beginnen, stellen Sie bitte sicher, dass Sie alle Chunks des Abschnitts Preparation gerendert haben. Das können Sie tun, indem Sie den “Run all chunks above”-Knopf 
des nächsten Chunks benutzen. - Bei Fragen zum Code lohnt sich ein Blick in den Showcase (.qmd oder .html). Beim Showcase handelt es sich um eine kompakte Darstellung des in der Präsentation verwenden R-Codes. Sie können das Showcase also nutzen, um sich die Code-Bausteine anzusehen, die für die R-Outputs auf den Slides benutzt wurden.
 
📋 Exercise 1: Neues Subsample
Ziel der Aufgabe
- Erstellung eines neuen Datensatzes 
review_subsample_new, der sich auf englischsprachig Bücher bzw. Buchrartikel beschränkt. 
- Erstellen Sie einen neuen Datensatz 
review_subsample_new- Basierend auf dem Datensatzes 
review_works_correct:- Nutzen Sie die 
filter()-Funktion, um- nur englischsprachige (
language), - Bücher und Buchkapitel (
type) herauszufiltern. 
 - nur englischsprachige (
 - Speichern Sie diese Umwandlung in einem neuen Datensatz mit dem Namen 
review_subsample_new 
 - Nutzen Sie die 
 
 - Basierend auf dem Datensatzes 
 - Überprüfen Sie die Transformation mit Hilfe der 
glimpse()-Funktion. - ✍️ Notieren Sie, wie viele Artikel im neuen Subsample enthalten sind.
 
# Erstellung Subsample
# Überprüfung
# Notiz:
# Subsample enthält ... Einträge📋 Exercise 2: Umwandlung zu ‘tidy text’
- Erstellen Sie einen neuen Datensatz 
subsample_new_tidy,- Basierend auf dem Datensatz 
review_subsample_new, mit folgenden Schritten:- Tokenisierung der Abstracts (
ab) mit der Funktionunnest_tokens. - Ausschluss von Stoppwörter mit 
filterundstopwords$wordsheraus. - Speichern Sie diese Umwandlung, indem Sie einen neuen Datensatz mit dem Namen 
subsample_new_tidyerstellen. 
 - Tokenisierung der Abstracts (
 
 - Basierend auf dem Datensatz 
 - Prüfen Sie, ob die Umwandlung erfolgreich war (z.B. mit der Funktion 
glimpse()) - ✍️ Notieren Sie, wie viele Token im neuen Datensatz 
subsample_new_tidyenthalten sind. 
# Erstellung des neuen Datensatzes `subsample_new_tidy`
# Überprüfung
# Notiz:
# Der neue Datensatz enthält ... Token. 📋 Exercise 3: Auswertung der Token
- Erstellen Sie einen neuen Datensatz 
subsample_new_summarized,- Fassen Sie auf der Grundlage des Datensatzes 
subsample_new_tidydie Häufigkeit der einzelnen Token zusammen, indem Sie die Funktioncount()auf die Variabletextanwenden. Verwenden Sie das Argumentsort = TRUE, um den Datensatz nach absteigender Häufigkeit der Token zu sortieren. - Speichern Sie diese Transformation, indem Sie einen neuen Datensatz mit dem Namen 
subsample_new_summarizederstellen. 
 - Fassen Sie auf der Grundlage des Datensatzes 
 - Prüfen Sie, ob die Umwandlung erfolgreich war, indem Sie die Funktion 
print()verwenden.- Verwenden Sie das Argument 
n = 50, um die 50 wichtigsten Token anzuzeigen (nur möglich, wenn das Argumentsort = TRUEbei der Ausführung der Funktioncount()verwendet wurde) 
 - Verwenden Sie das Argument 
 - Verteilung der Token prüfen
- Verwenden Sie die Funktion 
datawizard::describe_distribution(), um verschiedene Verteilungsparameter des neuen Datensatzes zu überprüfen - ✍️ Notieren Sie, wie viele Token ein Abstract durchschnittlich enthält.
 
 - Verwenden Sie die Funktion 
 
- Optional: Ergebnisse mit einer Wortwolke überprüfen
- Basierend auf dem sortierten Datensatz 
subsample_new_summarized- Auswahl der 50 häufigsten Token mit Hilfe der Funktion 
top_n() - Erstellen Sie eine 
ggplot()-Basis mitlabel = textundsize = nalsaes()und - Benutze ggwordcloud::geom_text_wordclout() um die Wortwolke zu erstellen.
 - Verwenden Sie scale_size_are(), um die Skalierung der Wortwolke zu übernehmen.
 - Verwenden Sie 
theme_minimal()für eine saubere Visualisierung. 
 - Auswahl der 50 häufigsten Token mit Hilfe der Funktion 
 
 - Basierend auf dem sortierten Datensatz 
 
# Erstellung des neuen Datensatzes `subsample_new_summmarized`
# Preview Top 50 token
# Check distribution parameters 
# Notiz:
# Ein Absatz enthält durchschnittlich ... Token. # Optional: Check results with a wordcloud📋 Exercise 4: Wortbeziehungen im Fokus
4.1 Couting word pairs
- Zählen von häufigen Wortpaaren
- Zählen Sie auf der Grundlage des Datensatzes 
subsample_new_tidyWortpaare mitwidyr::pairwise_count(), mit den Argumentenitem = text,feature = idundsort = TRUE. - Speichern Sie diese Transformation, indem Sie einen neuen Datensatz mit dem Namen 
subsample_new_word_pairserstellen. 
 - Zählen Sie auf der Grundlage des Datensatzes 
 - Prüfen Sie, ob die Umwandlung erfolgreich war, indem Sie die Funktion 
print()verwenden.- Verwenden Sie das Argument 
n = 50, um die 50 wichtigsten Token anzuzeigen (nur möglich, wenn bei der Ausführung der Funktioncount()das Argumentsort = TRUEverwendet wurde) 
 - Verwenden Sie das Argument 
 
# Couting word pairs among sections
# Überprüfung 4.2 Pairwise correlation
- Ermittlung der paarweisen Korrelation
- Basierend auf dem Datensatz 
subsample_new_tidy, - gruppieren Sie die Daten mit der Funktion 
group_by()nach der Variabletextund - verwenden Sie 
filter(n() >= X), um nur Token zu verwenden, die mindestens in einer bestimmte Anzahl (X) vorkommen; Sie können fürXeinen Wert Ihrer Wahl wählen, ich würde jedoch dringend empfehlen, einX > 100zu wählen, da die folgende Funktion sonst möglicherweise nicht in der Lage ist, die Berechnung durchzuführen. - Erstellen Sie Wortkorrelationen mit 
widyr::pairwise_cor(), mit den Argumentenitem = text,feature = idundsort = TRUE. - Speichern Sie diese Transformation, indem Sie einen neuen Datensatz mit dem Namen 
subsample_new_correrstellen. 
 - Basierend auf dem Datensatz 
 - Prüfen Sie die Paare mit der höchsten Korrelation mit der Funktion 
print().. 
# Getting pairwise correlation 
# Check pairs with highest correlation📋 Exercise 5: Inhaltlicher Vergleich
- Vergleichen Sie die Ergebnisse der Übung mit den Auswertungen der Folien:
- Wie unterscheiden sich die Ergebnisse?
 - Würden Sie die Bücher bzw. Buchabschnitte mit in die Untersuchung integrieren?
 
 
References
Aria, Massimo, Trang Le, Corrado Cuccurullo, Alessandra Belfiore, and June Choe. 2024. “openalexR: An R-Tool for Collecting Bibliometric Data from OpenAlex.” The R Journal 15 (4): 167–80. https://doi.org/10.32614/rj-2023-089.