R中有效的语言处理

时间:2018-02-22 23:44:50

标签: r vector linguistics

我遇到以下问题:

我有一组我需要规范频率的单词。该列表有350个单词。我有另一个列表,我们称之为频率列表,有超过550万个不同的单词及其相应的标准绝对频率。

现在,我需要这350个单词的频率。我想在R中使用这个代码,但只需加载频率列表,我的MacBook大概需要7分钟。

w

我注意到这段代码效率不高。相反,我想使用矢量,因为我的猜测是它会阻止我不得不实现这个循环350次,从而使我的笔记本电脑在几个小时内保持忙碌。

提前谢谢。

2 个答案:

答案 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]])
}

任何有待改进的想法都很高兴。