LoslegenKostenlos loslegen

Namen mit Kontext extrahieren

Schnappen wir uns erneut unseren Datensatz zu Schweizer Politikerinnen und Politikern. Er besteht aus zwei Variablen: articles, einer Sammlung von Nachrichtenartikeln zur Schweizer Politik, und politicians, einem Vektor mit mehreren Namen von Schweizer Politikerinnen und Politikern.

Du hast die Anzahl der Vorkommen pro Name bereits gezählt, aber wäre es nicht spannend, nicht nur die Namen zu zählen, sondern auch zu sehen, in welchem Kontext diese Namen vorkommen? Du könntest zum Beispiel vergleichen, ob sich die Kontexte zwischen weiblichen und männlichen Politikern unterscheiden. Dafür musst du den Text rund um die Namen unserer Politikerinnen und Politiker extrahieren.

Da der Text sowohl Wortzeichen \\w als auch Interpunktionszeichen [:punct:] wie Punkte . oder Kommas , enthält, musst du ein Muster erstellen, das beide Zeichentypen matcht.

Diese Übung ist Teil des Kurses

Fortgeschrittene Reguläre Ausdrücke in R

Kurs anzeigen

Anleitung zur Übung

  • Verwende den Vektor politicians und kollabiere ihn, um wie in Kapitel 2 ein "Oder-Muster" zu erstellen.
  • Erstelle ein eigenes Muster in eckigen Klammern [], das sowohl Wortzeichen als auch Interpunktionszeichen matcht.
  • Füge mit glue das neu erstellte context sowohl vor als auch nach dem polit_pattern ein. Das \\s? zeigt an, dass nach den Politikernamen entweder ein Leerzeichen oder keines folgen kann.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# Create our polit_pattern again by collapsing "politicians"
polit_pattern <- glue_collapse(___, sep = "|")

# Match one or more word characters or punctuations
context <- "([___[___]]+\\s){0,10}"

# Add this pattern in front and after the polit_pattern
polit_pattern_with_context <- glue(
  "{___}({polit_pattern})\\s?{___}"
)

str_extract_all(
  articles$text,
  pattern = polit_pattern_with_context
)
Code bearbeiten und ausführen