2016-12-19 27 views
0

とfallowコード私はcsv(200.000 docs)にあるすべてのドキュメントについて、各用語のtfidfを見つけようとしています。そして、それを含む列csvを1つ作成します。それぞれの項はtfidfで非減少である。私は少しサンプルを試して、私はそれが動作すると思います。大きなcsv Rstudioのために置くallways crasing ..任意のアイデア?tf:idfテキスト解析r

#read text converted to csv 
myfile3 <- "tweetsc.csv" 
x <- read.csv(myfile3, header = FALSE) 
#make data frame 
x <- data.frame(lapply(x, as.character), stringsAsFactors=FALSE) 
# make vector sources 
dd <- Corpus(DataframeSource(x)) 
# from tm package conculate tfidf 
xx <- as.matrix(DocumentTermMatrix(dd, control = list(weighting = weightTfIdf))) 
#data frame from columns to rows decreasing 
freq = data.frame(sort(colSums(as.matrix(xx)), decreasing=FALSE)) 
write.csv2(freq, "important_tweets.csv") 
+1

ようこそ。あなたはあなたの質問を改善することができます。 [Rで最小限の再現可能な例を提供する方法](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example#answer-5963610)をお読みください。それに応じて編集して改善してください。良いポストは通常​​、最小限の入力データ、望ましい出力データとコードを提供します。すべてのコピー&ペーストは、新しい/クリーンなRセッションで実行可能です。しかし、あなたのコードでは、 "ファイル 'tweetsc.csv'を開くことができません:そのようなファイルやディレクトリはありません。 – lukeA

+0

freq PVoulg

答えて

1

TDMをマトリックスに強制しないでください。非常に多くのドキュメントで整数オーバーフローの問題が発生する可能性が最も高いです。 tmパッケージは、slamパッケージを使用してtdm/dtmを表します。それは、密行列に強制することなく、行または列の操作を行うためのいくつかの関数を持っています。

library(slam) 
#read text converted to csv 
myfile3 <- "tweetsc.csv" 
x <- read.csv(myfile3, header = FALSE) 
#make data frame 
x <- data.frame(lapply(x, as.character), stringsAsFactors=FALSE) 
# make vector sources 
dd <- Corpus(DataframeSource(x)) 
# from tm package conculate tfidf 
xx <- DocumentTermMatrix(dd, control = list(weighting = weightTfIdf)) 
#data frame from columns to rows decreasing 
freq = as.data.frame(sort(col_sums(xx), decreasing=FALSE) 
write.csv2(freq, "important_tweets.csv") 

一つのことに注意する:あなたが計算したい言及し、「そのTFIDFと各用語を...」TFIDFは、各文書内の各用語に固有のものです。 tf-idfを合計することは、所定の文書内の用語の重みを不明瞭にするので、意味のある尺度ではないかもしれない。