Aan de slagGa gratis aan de slag

Namen met context extraheren

Laten we onze gegevensset over Zwitserse politici er weer bij pakken. Die bestaat uit twee variabelen: articles, een verzameling nieuwsartikelen over de Zwitserse politiek, en politicians, een vector met verschillende namen van Zwitserse politici.

Je hebt het aantal voorkomens per naam al geteld, maar zou het niet interessant zijn om niet alleen de namen te tellen, maar ook te zien in welke context de namen worden gebruikt? Je zou bijvoorbeeld kunnen vergelijken of de contexten verschillen tussen vrouwelijke en mannelijke politici. Daarvoor moet je de tekst rondom onze politici-namen extraheren.

Omdat de tekst zowel woordtekens \\w als leestekens [:punct:] bevat, zoals punten . of komma’s ,, moet je een patroon maken dat beide tekentypen matcht.

Deze oefening maakt deel uit van de cursus

Gevorderde reguliere expressies in R

Cursus bekijken

Oefeninstructies

  • Gebruik de vector politicians en voeg die samen tot één "of-patroon", zoals je in hoofdstuk 2 hebt gedaan.
  • Maak een eigen patroon tussen rechte haken [] dat zowel woordtekens als leestekens matcht.
  • Voeg met glue de nieuw gemaakte context zowel vóór als na het polit_pattern toe. De \\s? geeft aan dat er na de politici-namen wel of geen spatie kan staan.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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 bewerken en uitvoeren