1

textmatrix()しばらくの間、この機能を使用して、さらに LSI に使用できる DTM を作成しました。

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

Textmatrix() は、ディレクトリ (フォルダー パス) を受け取り、ドキュメントごとの用語頻度を返す関数です。これは、Latent Semantic Indexing/Allocation(LSI/LSA) などのさらなる分析で使用されます。

しかし、私が遭遇した新しい問題は、バッチ ファイル (〜 500000 ツイート/バッチ) にツイート データがあり、このデータに対して同様の操作を実行したい場合です。

データをクリーンアップするためのコード モジュールがあり、クリーンアップされたツイートを LSI 関数に直接渡したいと考えています。私が直面している問題は、textmatrix()がそれをサポートしていないことです。

他のパッケージとコード スニペットを調べてみましたが、それ以上はわかりませんでした。ある種の行項行列を作成する方法はありますか?

ループに送信しようとしtable(tokenize(cleanline[i]))ましたが、マトリックスにまだ存在しない単語の新しい列を追加しません。回避策はありますか?

更新:私はこれを試しました:

a<-table(tokenize(cleanline[10]))
b<-table(tokenize(cleanline[12]))

df1<-data.frame(a)
df1
df2<-data.frame(b)
df2

merge(df1,df2, all=TRUE)

私はこれを得た:

> 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

私は近いと思います。

4

2 に答える 2

0

私のために働く何か:

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))
}

このコードについてどう思いますか?

于 2013-01-03T10:30:49.587 に答える