R文本挖掘-如何识别关键字前面的单词

R文本挖掘-如何识别关键字前面的单词,r,text,count,frequency,text-mining,R,Text,Count,Frequency,Text Mining,我正在使用R进行文本挖掘,我想确定是否有一些单词在我的焦点关键字之前出现了三个或更少的单词。例如,我的焦点关键字是兼容性,我想知道单词limited是否在我的关键字前面加上三个或更少的单词。因此,我想在文本中获得关于以下组合出现多少次的频率计数(X=任何其他单词): 有限兼容性 有限X兼容性 有限X X 相容性 欢迎提出任何建议。谢谢。这里有一种使用tidytext查找跳过NGRAM的方法: 库(tidyverse) 图书馆(tidytext) x% unnest_标记(行,x,'行')%>

我正在使用R进行文本挖掘,我想确定是否有一些单词在我的焦点关键字之前出现了三个或更少的单词。例如,我的焦点关键字是兼容性,我想知道单词limited是否在我的关键字前面加上三个或更少的单词。因此,我想在文本中获得关于以下组合出现多少次的频率计数(X=任何其他单词):

  • 有限兼容性
  • 有限X兼容性
  • 有限X X 相容性

欢迎提出任何建议。谢谢。

这里有一种使用tidytext查找跳过NGRAM的方法:

库(tidyverse)
图书馆(tidytext)
x%
unnest_标记(行,x,'行')%>%
变异(行数=行数())%>%
unnest_令牌(ngram,行,“跳过ngrams”,n=2,k=2)%>%
过滤器(grepl('limited',ngram),grepl('compatibility',ngram))
#>#A tibble:3×2
#>行号
#>                          
#>1.2有限兼容性
#>2.3有限兼容性
#>3.4有限兼容性

这里是一种使用基R和正则表达式的方法。
grepRaw
提供每个匹配正则表达式模式的位置(参数
all=TRUE
)。此结果的长度提供匹配数

d <- c("
Limited compatibility Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla maximus lobortis 
tellus quis egestas. Donec non dignissim urna. Praesent at commodo ligula. 
Cras laoreet limited compatibility interdum mi nec euismod. Ut interdum odio non sem luctus iaculis. Mauris id sapien limited X XXXX compatibility accumsan, imperdiet justo non,limited compatibility egestas felis. Morbi commodo lectus limited X compatibility scelerisque limited XXX compatibility est bibendum, vel varius tellus vulputate. Aenean dictum accumsan limited X compatibility neque limited X X compatibility sed dictum. Vivamus finibus lacus sit amet iaculis molestie. Fusce enim limited X compatibility sapien, iaculis quis leo non, pellentesque lobortis arcu. Proin commodo limited X XXX XXXXX compatibility velit placerat venenatis mattis. Limited compatibility Curabitur et laoreet ipsum. Limited compatibility
")

> length(grepRaw("Limited compatibility", d, ignore.case = TRUE, all = TRUE))
[1] 5
> length(grepRaw("limited \\w+ compatibility", d, ignore.case = TRUE, all = TRUE))
[1] 4
> length(grepRaw("limited (\\w+ ){2}compatibility", d, ignore.case = TRUE, all = TRUE))
[1] 2
> length(grepRaw("limited (\\w+ ){3}compatibility", d, ignore.case = TRUE, all = TRUE))
[1] 1
将每个“有限xx兼容性”模式放在一行上可能更安全:

d <- gsub("Limited", "\nLimited", d, ignore.case = TRUE)
d <- gsub("compatibility", "compatibility\n", d, ignore.case = TRUE)
# writeLines(d)
d <- gsub("Limited", "\nLimited", d, ignore.case = TRUE)
d <- gsub("compatibility", "compatibility\n", d, ignore.case = TRUE)
# writeLines(d)
> length(grepRaw("limited (\\w+ ){6}compatibility", d, ignore.case = TRUE, all = TRUE))
[1] 0