如何将词袋转换为R中的大文档字矩阵?

时间:2016-04-20 15:06:31

标签: r

对于具有此表单的数据框:

pg_backups

我希望生成一个大小为docId bow 1 [(3,1),(4,3),(6,1)...] 2 [(1,1),(2,5),(3,1),(6,3)...] ... 的大型doc-word-matrix(d * w表示文档数量,d表示单词数量):

w

SO中有一个python解决方案。我想知道如何在R中做到这一点?谢谢!

1 个答案:

答案 0 :(得分:0)

我们可以首先提取所有(idx,count),然后将其格式化为所需的矩阵格式,如下所示:

options(stringsAsFactors=FALSE)
library(stringi)
library(plyr)

df <- data.frame(docId=1:2, bow=c("[(3,1),(4,3),(6,1),(10,8)","[(1,1),(2,5),(3,1),(6,3)"))
tuples <- stri_extract_all_words(df$bow)

ans <- rbind.fill.matrix(lapply(tuples, function(x) {
    idx <- stri_split_fixed(x, ",", simplify=TRUE)
    idx <- `dim<-`(as.numeric(idx),dim(idx))
    res <- matrix(0, ncol=max(idx[,1]))
    res[1,idx[,1]] <- idx[,2]
    res
}))
ans[is.na(ans)] <- 0
ans