如何在R语言中基于字典匹配提取文本关键词并生成目标数据框?
从文本列中匹配字典词汇生成标注列(R语言)
需要从数据框的pets列中匹配指定的颜色字典词汇,提取对应颜色值并生成新的color列,最终得到包含颜色标注的目标数据框。
原始数据与字典
df <- data.frame(id = c(1:5), pets = c("brown dog", "black cat", "orange cat", "black bird", "white hamster")) dictionary <- c("black", "orange", "white", "brown", "green", "red")
解决方案
方法一:使用stringr包快速提取
stringr包的str_extract函数可以便捷地从字符串中提取第一个匹配字典的完整词汇,适合每个pets条目仅含一个颜色的场景:
library(stringr) # 将字典转换为匹配完整单词的正则模式 color_pattern <- paste0("\\b(", paste(dictionary, collapse = "|"), ")\\b") # 提取匹配的颜色 df$color <- str_extract(df$pets, color_pattern) # 生成目标数据框 final_df <- df
方法二:Base R原生实现
无需额外安装包,通过grepl遍历字典匹配目标字符串:
# 遍历每个pets条目,找到匹配的颜色 df$color <- sapply(df$pets, function(text) { # 筛选出匹配当前文本的字典词汇 matched_colors <- dictionary[grepl(paste0("\\b", dictionary, "\\b"), text)] # 返回第一个匹配结果(此处每个条目仅一个匹配) matched_colors[1] }) final_df <- df
结果验证
运行上述任意一种方法后,final_df的输出如下:
> final_df id pets color 1 1 brown dog brown 2 2 black cat black 3 3 orange cat orange 4 4 black bird black 5 5 white hamster white
内容的提问来源于stack exchange,提问作者Dan G
相关产品推荐
相关产品推荐

