2017-07-02 72 views
0

使用R和tm,我加載並清理了一堆文本文檔,並將它們製作成語料庫。之後,我使用tf-idf構建了他們的DTM,並且可以用於各種分類聚類算法。到現在爲止還挺好。使用tf-idf時使用R和tm的新數據

現在,讓我們假設我有一個新文檔,並嘗試計算它與Corpus中文檔的距離。當然,我需要將它應用於原始集合的所有轉換。但我不明白如何計算新文檔的tf-idf矢量,因爲tf-idf依賴於整個集合,而不是單個文檔。將新文檔添加到語料庫並重新計算其tf-idf DTM不能正常工作:這不僅效率低下,而且每個新文檔都會使已經看到的文檔的值變爲可能,這將改變任何集羣的結果 - 分類算法我可能已經將它們作爲訓練集來運行。

所以,我的問題是,如何使用R和tm計算新文檔的tf-idf矢量,並使用它來計算新文檔與訓練語料庫中每個文檔的距離,而無需重新計算tf-idf所有文件?

在此先感謝。

回答

1

首先,您可以在訓練腳本中計算idf並將其保存爲R obj。

idf = log2(nDocs(dtm)/col_sums(dtm > 0)) 

然後在得分腳本可以加載本屆IDF上,並使用下面的邏輯規範的得分DTM

for(i in 1:length(dtmscore$i)){dtmscore$v[i] = idf[dtmscore$j[i]] * dtmscore$v[i] } 

我希望這有助於!