【问题标题】:Efficient linguistic processing in RR中的高效语言处理
【发布时间】:2018-02-22 23:44:49
【问题描述】:

我遇到以下问题:

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

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

#Read data
decow <- read.table("decow14ax.freq10.w.tsv", header = TRUE, fill = TRUE)

#Converting wordlist in lower case
decow$token_lowercase <- tolower(as.character(decow$token...)) 

#Read word list
wordlist <- read.csv("wordlist.csv") 

#Set frequency counter to 0
wordlist$norm_frequency = 0  

#Obtaining frequencies for word list from norm database
for (i in 1:nrow(wordlist))                                               
{ 
  for (j in 1:nrow(decow_small)) {
    if (wordlist$word[i]==decow$token_lowercase[j]) {
    wordlist$norm_frequency[i] <- decow_small$f_raw[j]}
  }
}

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

提前谢谢你。

【问题讨论】:

    标签: r vector linguistics


    【解决方案1】:
    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] 用于从表中删除"" 计数。

    希望对你有帮助

    【讨论】:

    • 谢谢迈克尔。问题不在于频率,它们已经可以访问。我只是不想在文件中查找 350 个单词。这就是我写那个小脚本的原因。它只是效率不高,可能需要一天的时间来计算。此外,在您提供的示例中,只有一个列表。我有两个。包含频率的 550 万单词列表和 350 单词列表。
    【解决方案2】:

    我找到了一个解决方案,它很可能比我以前的方法更快:

    #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]])
    }
    

    我们很高兴有任何改进的想法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-02
      • 1970-01-01
      • 2010-10-30
      • 2013-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多