R中for循环和intersect()的问题

问题描述 投票:-1回答:1

我对R比较陌生,目前主要用于文本分析。在下面的代码中,我试图在某些单词中找到重复。

tableinter <- intersect(innsong, Inncorpus[[1]])
inntable <- table(innsong)
repwords <- list()
notrepwords <- list()
for(i in length(tableinter)){
  if(inntable[tableinter[i]] > 1){
    repwords[[i]] <- tableinter[[i]]
    return(repwords)
  } else{
    notrepwords[[i]] <- tableinter[[i]]
  }
}

我的最终目标是从innsonginncorpus[[1]]相交的单词中有两个列表。一个列表,repwords,将有来自inncorpus[[1]]的单词,它们都与innsong相交并且频率> 1。另一个列表是那些在文本中只出现一个的单词。

r
1个回答
0
投票

分析文档中单词出现的一种更通用的方法是通过文档特征矩阵(或文档 - 术语矩阵)。

我推荐包quanteda

require("quanteda")
require("magrittr")

df_matrix <- c(innsong, Inncorpus[[1]]) %>%
    dfm(tolower = TRUE, stem = FALSE, remove_numbers = TRUE,
        remove_punct = TRUE, remove_symbols = TRUE)

这将生成一个矩阵,其中每行是一个文档,每列是一个不同的单词。每个值表示每个文档中每个单词的出现次数。你将有两排到达。然后,您可以评估矩阵以找到答案。

在我看来,这是一种更通用的方法。如果您愿意,它可以为您提供词干和删除停用词的选项。

© www.soinside.com 2019 - 2024. All rights reserved.