Extrahera namn med kontext
Nu tar vi fram datasetet om schweiziska politiker igen. Det består av två variabler: articles, som innehåller en samling nyhetsartiklar om schweizisk politik, och politicians, som är en vektor med namn på flera schweiziska politiker.
Du har redan räknat antalet förekomster per namn, men skulle det inte vara intressant att inte bara räkna namnen utan också se i vilket sammanhang de används? Du skulle till exempel kunna jämföra om kontexten skiljer sig åt mellan kvinnliga och manliga politiker. För att göra det behöver du extrahera texten som omger politikernas namn.
Eftersom texten innehåller ordtecken \\w och skiljetecken [:punct:] som punkter . och kommatecken ,, behöver du skapa ett mönster som matchar båda dessa teckentyper.
Den här övningen är en del av kursen
Reguljära uttryck på mellannivå i R
Övningsinstruktioner
- Använd vektorn
politiciansoch slå ihop den för att skapa ett "eller-mönster" på samma sätt som i kapitel 2. - Skapa ett eget mönster i hakparenteser
[]som matchar både ordtecken och skiljetecken. - Använd glue för att lägga till den nyskapade variabeln
contextbåde före och efterpolit_pattern.\\s?anger att det kan finnas ett mellanslag eller inget mellanslag efter politikernas namn.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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
)