计算R中多个单词的词频?

计算R中多个单词的词频?,r,tm,word-frequency,R,Tm,Word Frequency,我试图计算给定文本中多个单词的频率。例如,考虑文本:“环境研究环境研究环境研究研究科学能源、经济学、农业、生态学和生物学”。然后我想知道“环境研究”这个组合词在文本中出现的次数。这是我试过的代码 library(tm) #Reading the data text = readLines(file.choose()) text1 = Corpus(VectorSource(text)) #Cleaning the data text1 = tm_map(text1, content_trans

我试图计算给定文本中多个单词的频率。例如,考虑文本:“环境研究环境研究环境研究研究科学能源、经济学、农业、生态学和生物学”。然后我想知道“环境研究”这个组合词在文本中出现的次数。这是我试过的代码

library(tm)
#Reading the data
text = readLines(file.choose())
text1 = Corpus(VectorSource(text))

#Cleaning the data
text1 = tm_map(text1, content_transformer(tolower))
text1 = tm_map(text1, removePunctuation)
text1 = tm_map(text1, removeNumbers)
text1 = tm_map(text1, stripWhitespace)
text1 = tm_map(text1, removeWords, stopwords("english"))

#Making a document matrix
dtm = TermDocumentMatrix(text1)
m11 = as.matrix(text1)
freq11 = sort(rowSums(m11), decreasing=TRUE)
d11 = data.frame(word=names(freq11), freq=freq11)
head(d11,9)

但是,该代码分别生成每个单词的频率。相反,我如何获得“环境研究”在文本中同时出现的次数?谢谢

如果您已经有一个多字列表,并且您想计算它们在文本中的频率,您可以使用
str\u extract\u all

text <- "Environmental Research Environmental Research Environmental Research study science energy, economics, agriculture, ecology, and biology"

library(stringr)
str_extract_all(text, "[Ee]nvironmental [Rr]esearch")
[[1]]
[1] "Environmental Research" "Environmental Research" "Environmental Research"
如果您对一次提取所有多字感兴趣,您可以这样进行:

首先定义一个包含所有多字的向量:

multiwords <- c("[Ee]nvironmental [Rr]esearch", "study science energy")
要获取多字的频率,可以使用

table(str_extract_all(text, paste0(multiwords, collapse = "|")))

Environmental Research   study science energy 
                     3                      1

@Chris Ruehlemann我能再问你一个问题吗?基本上,我有很多单词。当我尝试
str_extract_all(global,paste0(multiwords,collapse=“|”)
时,它给我一个错误,上面写着:
stri_extract_all_regex中的错误(string,pattern,simplify=simplify,:括号表达式上缺少右括号。U_regex_缺少右括号)
。请你指导我解决这个问题好吗?Tnxs!从这里很难判断;据我所知,我的代码和你的代码之间的唯一区别是你为
全局
添加了
text
,对吗?在那段代码中,我不明白为什么缺少括号。如果您能让我更多地访问您的数据,我可能会更好地帮助您。但也许你可以自己尝试找出解决方案。我很确定你的代码中有一点点遗漏或不正确。我得到了我的错误。Tnx!我还有一个问题。让我们考虑下面的场景。code>txt1您可以将这些模式定义为其他可选模式,例如:
multiwords感谢您的快速回复!
str_extract_all(text, paste0(multiwords, collapse = "|"))
[[1]]
[1] "Environmental Research" "Environmental Research" "Environmental Research" "study science energy"
table(str_extract_all(text, paste0(multiwords, collapse = "|")))

Environmental Research   study science energy 
                     3                      1