使用R计算文本文件中单词的出现次数

时间:2016-03-09 09:33:24

标签: r text find-occurrences

我尝试创建一个函数,该函数返回文本文件中单词的出现次数。 为此,我创建了一个List,其中包含文本的所有单词。 (a,c,c,d,e,f在这里是示例中的单词)

[[1]]

 [1] a  

 [2] f 

 [3] e       

 [4] a 

[[2]] 

 [1] f 

 [2] f

 [3] e

我为每个单词创建一个表格,以显示出现次数

table(unlist(list))

  a b c d e

  3 3 2 1 1

我现在的问题是如何在参数中提取单词出现的值。 该函数将具有此结构

GetOccurence <- function(word, table)
{
   return(occurence)
} 

任何想法请帮助我,提前致谢

1 个答案:

答案 0 :(得分:4)

要回答有关您的功能的问题,您可以采取以下方法。

数据准备

为了重现性,我使用了公开数据并稍微清理了一下。

library(tm)
data(acq)

# Basic cleaning
acq <- tm_map(acq, removePunctuation)  
acq <- tm_map(acq, removeNumbers)     
acq <- tm_map(acq, tolower)     
acq <- tm_map(acq, removeWords, stopwords("english"))  
acq <- tm_map(acq, stripWhitespace)   
acq <- tm_map(acq, PlainTextDocument) 

# Split list into words
wrds <- strsplit(paste(unlist(acq), collapse = " "), ' ')[[1]]
# Table
tblWrds <- table(wrds)

功能

GetOccurence <- function(word, table) {
    occurence <- as.data.frame(table)
    occurence <- occurence[grep(word, occurence[,1]), ]
    return(occurence)
}

修改(仅限全字)

此功能仅匹配完整字词,以下解决方案会大写this answer

GetOccurence <- function(word, table) {
    occurence <- as.data.frame(table)
    word <- paste0("\\b", word, "\\b")
    occurence <- occurence[grep(word, occurence[,1]), ]
    return(occurence)
}