首页 > 解决方案 > 如何通过考虑多词在文本中的位置来挖掘多词?

问题描述

我想提取给定文本中位于年份和以下逗号之间的某些单词。尽管该术语Mining出现在 in 之前和之后2020,但我需要在andtext之间找到的后一个。相同的概念适用于以下术语。(2020),Computer Sciencetext

library(stringr)
text <- "This is text Mining exercise (2020) Mining, p. 628508; Computer Science text analysis (1998) Computer Science, p.345-355; Introduction to data mining (2015) J. Data Science, pp. 31-33"
comp <- c("Mining", "Computer Science", "J. Data Science")
pattern <- str_c(comp,collapse ="|")
data <- str_extract_all(text, pattern)

上述代码的最后一行给出了以下输出:

[1] "Mining" "Mining" "Computer Science" "Computer Science" "J. Data Science" 

我正在寻找的输出是:

[1] "Mining" "Computer Science" "J. Data Science" 

注意:这些词的位置很重要。非常感谢任何帮助!

标签: rstringtext-mining

解决方案


如果我们需要)在数字之后和之间提取,,请创建一个正则表达式环视

library(stringr)
str_extract_all(text, str_c("(?<=\\(\\d{4}\\)\\s)(", pattern, ")(?=,)"))[[1]]
#[1] "Mining"           "Computer Science" "J. Data Science" 

推荐阅读