我遇到以下问题:
我有一组我需要规范频率的单词。该列表有350个单词。我有另一个列表,我们称之为频率列表,有超过550万个不同的单词及其相应的标准绝对频率。
现在,我需要这350个单词的频率。我想在R中使用这个代码,但只需加载频率列表,我的MacBook大概需要7分钟。
w
我注意到这段代码效率不高。相反,我想使用矢量,因为我的猜测是它会阻止我不得不实现这个循环350次,从而使我的笔记本电脑在几个小时内保持忙碌。
提前谢谢。
答案 0 :(得分:0)
library(tm)
library(janeaustenr)
wordlist<-janeaustenr::emma
wordlist<-sample(wordlist,50)
wordlist<-tokenizers::tokenize_words(wordlist)
wordlist<-unlist(wordlist)
wordlist<-removeWords(wordlist,stopwords('english'))
wordlist<-table(wordlist)[-1]
wordlist
这个示例向您显示table()
函数提供的频率。
库(tm)是使用removeWords()
而[-1]
是从表中删除""
计数。
希望这有帮助
答案 1 :(得分:0)
我找到的解决方案很可能比我以前的方法更快:
#Create word vector containing all entries from word list
wordvec1 <- unname(unlist(sapply(wordlist$word, function(z) str_split(tolower(z), " "))))
#Create empty word vector with length of word vector 1
wordvec2 <- rep(0,length(wordvec1))
#Iteration
for (i in 1:length(wordvec1)) {
wordvec2[i] <- wordvec2[i]+sum(decow$f_raw[decow$token_lowercase==wordvec1[i]])
}
任何有待改进的想法都很高兴。