我正在嘗試使用一個非常大的大約85,000個推文,我試圖與電視廣告中的對話進行比較。但是,由於我的語料庫的大小,我無法處理餘弦相似性度量,而沒有得到「錯誤:無法分配大小爲n的向量」消息(本例中爲26 GB)。使用quanteda計算R中大型語料庫的餘弦相似度
我已經在具有大量內存的服務器上運行R 64位。我也嘗試在內存最多的服務器上使用AWS(244 GB),但無濟於事(同樣的錯誤)。
有沒有辦法使用像fread這樣的軟件包來解決這個內存限制問題,還是隻能發明一種方法來分解我的數據?感謝很多的幫助,我已經追加下面的代碼:
x <- NULL
y <- NULL
num <- NULL
z <- NULL
ad <- NULL
for (i in 1:nrow(ad.corp$documents)){
num <- i
ad <- paste("ad.num",num,sep="_")
x <- subset(ad.corp, ad.corp$documents$num== yoad)
z <- x + corp.all
z$documents$texts <- as.character(z$documents$texts)
PolAdsDfm <- dfm(z, ignoredFeatures = stopwords("english"), groups = "num",stem=TRUE, verbose=TRUE, removeTwitter=TRUE)
PolAdsDfm <- tfidf(PolAdsDfm)
y <- similarity(PolAdsDfm, ad, margin="documents",n=20, method = "cosine", normalize = T)
y <- sort(y, decreasing=T)
if (y[1] > .7){assign(paste(ad,x$documents$texts,sep="--"), y)}
else {print(paste(ad,"didn't make the cut", sep="****"))}
}
你使用最新的(GitHub)版本嗎?對不起,直到十二月27日沒有電腦,但高興地解決這個問題! –
我會檢查GitHub版本。感謝您的幫助,我期待在假期後收到您的回覆。祝一切順利! – StanO
好的我已經找到了這裏的問題 - 「相似性()」將稀疏矩陣強制爲一個密集矩陣。我將改變底層實施以避免這種脅迫。但是目前(quanteda_0.9.1-7),如果您沒有足夠的內存來容納矩陣的整個密集版本,它將無法工作。我就此提交了[GitHub上的問題#84](https://github.com/kbenoit/quanteda/issues/84)。 –