我最近创建了一个能够通过并行处理计算文档中某些关键字出现频率的函数。
现在我想调整代码,使其不计算所有关键字在文档中出现的次数,而是计算文档中出现的关键字数量。
可重复的例子:
keywords <- c("Toyota", "Prius", "BMW", "M3")
documents <- c("New Toyota Prius for sale, the Toyota Prius is in good condition","BMW M3 that drives like a Toyota but is a BMW")
count_strings <- function(x, words){sum(unlist(strsplit(x, ' ')) %in% words)}
library(parallel)
mcluster <- makeCluster(detectCores())
number_of_keywords <- parSapply(mcluster, documents, count_strings, keywords, USE.NAMES=F)
stopCluster(mcluster)
按照说明,代码目前计算每个文档中关键字出现的频率,即4,4。
但是我想调整我的功能,以便程序计算每个文档中出现的关键字数量。正确答案应为2,3。
答案 0 :(得分:1)
这是使用apply和grepl的基本R选项:
def insertNum(num, line):
try:
list.insert(num, line)
return list
except:
print('custom error')
注意上面有一个关键步骤,我们将每个关键字术语包装在单词边界中。这将防止从关键字发生的错误标记匹配发生为较大单词的子字符串。