如何在R语言中检测产品名向量是否包含指定关键词列表?
解决R语言产品名与关键词匹配问题
你之前的代码问题出在这两个地方:
- 第一个
str_detect里写的".keywords."是字面匹配字符串"keywords",不是调用你的关键词向量,而且正则里的.是匹配任意单个字符,完全不符合需求。 grepl(keywords, products)参数顺序搞反了,grepl要求第一个参数是匹配模式,第二个是待匹配的文本;而且直接传关键词向量的话,会按顺序循环匹配,没法实现"任意一个关键词匹配即标记"的逻辑。
- 第一个
正确的实现步骤:
- 先把80个关键词合并成一个正则表达式,用
|分隔,表示"匹配任意一个关键词":library(stringr) keyword_pattern <- str_c(keywords, collapse = "|") - 用
str_detect匹配并新增标记列:# 假设你的产品数据存储在data.frame里,比如叫product_df,产品名列是product_name product_df$has_keyword <- str_detect(product_df$product_name, regex(keyword_pattern, ignore_case = TRUE)) - 如果你习惯用基础包的
grepl,写法是:product_df$has_keyword <- grepl(keyword_pattern, product_df$product_name, ignore.case = TRUE)
- 先把80个关键词合并成一个正则表达式,用
这样就能正确识别出包含任意一个关键词的产品名,标记为TRUE,其余为FALSE。
内容的提问来源于stack exchange,提问作者TWilliams
相关产品推荐
相关产品推荐

