Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何从文本块列表创建类似DTM的文本矩阵?_R_Text Mining_Corpus - Fatal编程技术网

R 如何从文本块列表创建类似DTM的文本矩阵?

R 如何从文本块列表创建类似DTM的文本矩阵?,r,text-mining,corpus,R,Text Mining,Corpus,我使用textmatrix()函数创建DTM已有一段时间了,可以进一步用于LSI dirLSA<-function(dir){ dtm<-textmatrix(dir) return(lsa(dtm)) } textdir<-"C:/RProjects/docs" dirLSA(textdir) > tm $matrix D1 D2 D3 D4 D5 D6 D7 D8 D9 1. 000 2 0

我使用
textmatrix()
函数创建DTM已有一段时间了,可以进一步用于LSI

dirLSA<-function(dir){
  dtm<-textmatrix(dir)
  return(lsa(dtm))
}

textdir<-"C:/RProjects/docs"
dirLSA(textdir)

> tm
$matrix
                  D1 D2 D3 D4 D5 D6 D7 D8 D9
1. 000             2  0  0  0  0  0  0  0  0
2. 20              1  0  0  1  0  0  1  0  0
3. 200             1  0  0  0  0  0  0  0  0
4. 2014            1  0  0  0  0  0  0  0  0
5. 2015            1  0  0  0  0  0  0  0  0
6. 27              1  0  0  0  0  0  0  1  0
7. 30              1  0  0  0  1  0  1  0  0
8. 31              1  0  2  0  0  0  0  0  0
9. 40              1  0  0  0  0  0  0  0  0
10. 45             1  0  0  0  0  0  0  0  0
11. 500            1  0  0  0  0  0  1  0  0
12. 600            1  0  0  0  0  0  0  0  0
728. bias          0  0  0  2  0  0  0  0  0
729. biased        0  0  0  1  0  0  0  0  0
730. called        0  0  0  1  0  0  0  0  0
731. calm          0  0  0  1  0  0  0  0  0
732. cause         0  0  0  1  0  0  0  0  0
733. chauhan       0  0  0  2  0  0  0  0  0
734. chief         0  0  0  8  0  0  1  0  0
我明白了:

> df1
    Var1 Freq
1           6
2      "    2
3    and    1
4   home    1
5   mabe    1
6 School    1
7   then    1
8   xbox    1
> b<-table(tokenize(cleanline[12]))
> df2<-data.frame(b)
> df2
        Var1 Freq
1              13
2          "    2
3  BillGates    1
4       Come    1
5       help    1
6        Mac    1
7       make    1
8  Microsoft    1
9     please    1
10   Project    1
11    really    1
12   version    1
13      wish    1
14     would    1
> merge(df1,df2)
  Var1 Freq
1    "    2
> merge(df1,df2, all=TRUE)
        Var1 Freq
1               6
2              13
3          "    2
4        and    1
5       home    1
6       mabe    1
7     School    1
8       then    1
9       xbox    1
10 BillGates    1
11      Come    1
12      help    1
13       Mac    1
14      make    1
15 Microsoft    1
16    please    1
17   Project    1
18    really    1
19   version    1
20      wish    1
21     would    1
>df1
Var1频率
1           6
2      "    2
3和1
4家1
5 mabe 1
6学校1
7那么1
8 xbox 1
>b df2 df2
Var1频率
1              13
2          "    2
3个广告牌1
4来1
5帮助1
6 Mac 1
7等于1
8微软1
9.请
10项目1
11真的吗
12第1版
13愿望1
14会是1吗
>合并(df1,df2)
Var1频率
1    "    2
>合并(df1、df2、all=TRUE)
Var1频率
1               6
2              13
3          "    2
4和1
5家1
6 mabe 1
7学校1
8那么1
9 xbox 1
10个广告牌1
11来1
12帮助1
13 Mac 1
14等于1
15微软1
16、请
17项目1
18真的吗
19第1版
20愿望1
21会是1吗

我想我很接近了。

试试这样的东西

  ll <- list(df1,df2)
  dtm <- xtabs(Freq ~ ., data = do.call("rbind", ll))

ll适合我的东西:

textLSA<-function(text){

  a<-data.frame(table(tokenize(text[1])))
  colnames(a)[2]<-paste(c("Line",1),collapse=' ')
  df<-a

  for(i in 1:length(text)){
    a<-data.frame(table(tokenize(text[i])))
    colnames(a)[2]<-paste(c("Line",i),collapse=' ')
    df<-merge(df,a, all=TRUE)
  }

  df[is.na(df)]<-0
  dtm<-as.matrix(df[,-1])
  rownames(dtm)<-df$Var1

  return(lsa(dtm))
}

text如果在df1和df2中有一些空格,它们是转义还是什么?df1 e.gyep的第一行和第二行。所以,如果一个单词不在第二行,它将显示为NA。是的。它将DFs汇总到一个累积列表中,而不是根据需要汇总到表中。我想问题在于各个数据帧中的列名称是相同的,这导致它们汇总到相同的列中。我的解决方案面临相同的问题,这就是为什么我必须更改列名称。
textLSA<-function(text){

  a<-data.frame(table(tokenize(text[1])))
  colnames(a)[2]<-paste(c("Line",1),collapse=' ')
  df<-a

  for(i in 1:length(text)){
    a<-data.frame(table(tokenize(text[i])))
    colnames(a)[2]<-paste(c("Line",i),collapse=' ')
    df<-merge(df,a, all=TRUE)
  }

  df[is.na(df)]<-0
  dtm<-as.matrix(df[,-1])
  rownames(dtm)<-df$Var1

  return(lsa(dtm))
}