コンテキスト付きで名前を抽出する
スイスの政治家に関するデータセットに戻りましょう。これは2つの変数から成ります。articles はスイス政治に関するニュース記事のコレクション、politicians は複数のスイスの政治家名を含むベクトルです。
すでに名前ごとの出現回数は数えましたが、名前を数えるだけでなく、その名前がどのような文脈で使われているかも見られたら面白いと思いませんか?例えば、女性政治家と男性政治家で文脈が異なるかを比較できます。そのためには、政治家の名前の前後にあるテキストを抽出する必要があります。
テキストには単語文字 \\w と、ピリオド . やカンマ , などの句読点 [:punct:] の両方が含まれているため、これら両方の文字種にマッチするパターンを作成してください。
この演習はコースの一部です
Rで学ぶ中級正規表現
演習の手順
- ベクトル
politiciansを使って、チャプター2で行ったように「ORパターン」に結合してください。 - 角かっこ
[]で、単語文字と句読点の両方にマッチするカスタムパターンを作成してください。 - glue を使って、新しく作った
contextをpolit_patternの前後両方に追加してください。\\s?は、政治家名の後にスペースがあってもなくてもよいことを示します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# 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
)