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
Instrukcje do ćwiczenia
- Użyj wektora
politiciansi 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ą
contextzarówno przed, jak i popolit_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
)