我的文档术语矩阵中有空文档。我需要删除它们。这是我用来构建DocumentTermMatrix的代码:
tweets_dtm_tfidf <- DocumentTermMatrix(tweet_corpus, control = list(weighting = weightTfIdf))
这是我收到的警告信息:
Warning message:
In weighting(x) :
empty document(s): 823 3795 4265 7252 7295 7425 8240 8433 9303 12160 12278 14465 15166 15485 15933 20775 21666 21807 26131 27039 34035 34050 34101
我尝试使用以下代码删除这些空文档:
rowTotals <- apply(tweets_dtm_tfidf , 1, sum)
dtm_tfidf <- tweets_dtm_tfidf[rowTotals> 0, ]
以下是我尝试删除它们的错误:
> rowTotals <- apply(tweets_dtm_tfidf , 1, sum)
Error: cannot allocate vector of size 6.8 Gb
关于如何解决这个问题的任何想法?感谢您提前提出任何建议。
答案 0 :(得分:0)
apply中的和将您的稀疏矩阵转换为密集矩阵,如果它是一个大的稀疏矩阵,则会占用大量内存。
不需要apply
功能。稀疏矩阵有函数。由于dtm是simple_triplet_matrix
,您可以使用来自slam的row_sums。
以下内容应该有效。
rowTotals <- slam::row_sums(tweets_dtm_tfidf)
dtm_tfidf <- dtm_tfidf[rowTotals > 0, ]
但要记住,如果你有很多单词,你所做的任何事情都是为了从稀疏矩阵中获取数据可能会导致大内存占用对象。在继续之前,您可能希望使用removeSparseTerms
。