Zacznij terazZacznij za darmo

Wyodrębnianie nazwisk z kontekstem

Wróćmy do naszego zbioru danych o szwajcarskich politykach. Składa się on z dwóch zmiennych: articles – kolekcji artykułów prasowych o szwajcarskiej polityce – oraz politicians – wektora z kilkoma nazwiskami szwajcarskich polityków.

Wiesz już, jak zliczać wystąpienia poszczególnych nazwisk, ale czy nie byłoby interesujące zobaczyć nie tylko to, jak często pojawiają się dane nazwisko, lecz również w jakim kontekście jest używane? Można by na przykład sprawdzić, czy konteksty różnią się w zależności od płci polityków. W tym celu trzeba wyodrębnić fragmenty tekstu otaczające nazwiska polityków.

Ponieważ tekst zawiera zarówno znaki słowne \\w, jak i znaki interpunkcyjne [:punct:], takie jak kropki . czy przecinki ,, konieczne będzie utworzenie wzorca dopasowującego oba te typy znaków.

To ćwiczenie jest częścią kursu

Wyrażenia regularne w R – poziom średnio zaawansowany

Zobacz kurs

Instrukcje do ćwiczenia

  • Użyj wektora politicians i połącz jego elementy, aby utworzyć wzorzec "lub" – tak jak w rozdziale 2.
  • Utwórz własny wzorzec w nawiasach kwadratowych [], który dopasowuje zarówno znaki słowne, jak i znaki interpunkcyjne.
  • Korzystając z funkcji glue, dodaj nowo utworzoną zmienną context zarówno przed, jak i po polit_pattern. Wyrażenie \\s? oznacza, że po nazwisku polityka może, ale nie musi, wystąpić spacja.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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
)
Edytuj i uruchom kod