术语频率矩阵

时间:2014-05-23 13:45:36

标签: r text-mining word-frequency term-document-matrix

我有一个这样的字符串:

M< - “abcdabcdbcadacbddabcc ...”

我想生成一个这样的矩阵:

enter image description here

我怎么能在r?

中这样做

2 个答案:

答案 0 :(得分:3)

这给了我相信你所追求的东西:

m <- "abcdabcdbcadacbddabcc"

library(qdap)

chars <- unique(unlist(strsplit(m, "")))
terms <- paste2(expand.grid(rep(list(chars), 3)), sep="")
t(counts(termco(m, match.list=sort(terms)))[, -c(1:2)])

输出:

    1
aaa 0
aab 0
aac 0
aad 0
aba 0
.
.
.
dcc 0
dcd 0
dda 1
ddb 0
ddc 0
ddd 0

答案 1 :(得分:1)

函数gregexpr为您提供模式的每个匹配的位置。

你可以这样做:

a <- c("a","b","c")
b <- matrix(outer(a,a,paste,sep=""),ncol=1)
patterns <- matrix(outer(a,b,paste,sep=""),ncol=1)

m<-"abcdabcdbcadacbddabcc..."

positions <- function(pattern, text) 
  gregexpr(pattern, text)[[1]][1]

sapply(patterns, positions, text=m)