开始使用免费开始使用

连同上下文提取姓名

让我们再次使用关于瑞士政治人物的数据集。它包含两个变量:articles 是一组关于瑞士政治的新闻文章,politicians 是一个包含多位瑞士政治人物姓名的向量。

您已经按姓名统计了出现次数,但如果不仅能计数,还能看到这些姓名所处的语境,不是更有意思吗?例如,您可以比较女性与男性政治人物的上下文是否不同。为此,您需要提取政治人物姓名周围的文本。

由于文本同时包含单词字符 \\w,以及像句号 .、逗号 , 这类标点 [:punct:],您需要创建一个同时匹配这两类字符的模式。

本练习是课程的一部分

R 中级正则表达式

查看课程

练习说明

  • 使用向量 politicians 并将其折叠,像在第 2 章那样创建一个"或模式"。
  • 在方括号 [] 中创建一个自定义模式,既能匹配单词字符,也能匹配标点符号。
  • 使用 glue,在 polit_pattern 的前后都添加新建的 context。其中 \\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
)
编辑并运行代码