2016-07-01 170 views
2

有人可以告訴我,意思是下面的代碼和輸出?我在這裏做創建語料庫文本挖掘稀疏/非稀疏含義

frequencies = DocumentTermMatrix(corpus) 
frequencies 

輸出

<<DocumentTermMatrix (documents: 299, terms: 1297)>> 
Non-/sparse entries: 6242/381561 
Sparsity   : 98% 
Maximal term length: 19 
Weighting   : term frequency (tf) 

而對於稀疏代碼是在這裏。

sparse = removeSparseTerms(frequencies, 0.97) 
sparse 

輸出

> sparse 
<<DocumentTermMatrix (documents: 299, terms: 166)>> 
Non-/sparse entries: 3773/45861 
Sparsity   : 92% 
Maximal term length: 10 
Weighting   : term frequency (tf) 

正在發生的事情在這裏,是什麼非/稀疏項和稀疏的意思嗎?有人可以幫助我理解這些。

謝謝。

回答

5

通過您所創建的語料庫

frequencies = DocumentTermMatrix(corpus) 

文檔詞矩陣(DTM)的文件項矩陣這個代碼列出在語料庫中單詞的所有實例,通過文檔。在DTM中,文檔由行和術語(或詞)表示。如果某個單詞出現在特定文檔中,那麼與該行和列相對應的矩陣條目爲1,否則爲0(記錄文檔中的多個事件 - 也就是說,如果一個單詞在文檔中出現兩次,它是在相關矩陣條目中記錄爲「2」)。

作爲一個例子考慮有兩個文件的語料庫。

文檔1:香蕉,都是

文檔2:香蕉是黃色

DTM對上述語料庫會是什麼樣

   banana   are  yellow  good 
Doc1   1    1   1   0 

Doc2   1    1   0   1 

輸出

<<DocumentTermMatrix (documents: 299, terms: 1297)>> 
Non-/sparse entries: 6242/381561 
Sparsity   : 98% 
Maximal term length: 19 
Weighting   : term frequency (tf) 

輸出意味着DTM有299個條目,其中至少有1297個條目已出現一次。

sparse = removeSparseTerms(frequencies, 0.97) 

現在您將刪除那些在您的數據中不常出現的術語。我們將刪除至少3%條目(或文檔)中未出現的元素。關於上面創建的DTM,我們基本上刪除了文檔數量最少的條目爲1的那些列。

現在,如果你看一下輸出

> sparse 
<<DocumentTermMatrix (documents: 299, terms: 166)>> 
Non-/sparse entries: 3773/45861 
Sparsity   : 92% 
Maximal term length: 10 
Weighting   : term frequency (tf) 

項(文件)的數量仍然是相同的即299,但數量方面方面已經出現了至少一次變爲166。

+0

謝謝拉維,這有助於 – subro

+0

如果有幫助,那麼upvote會很好 – Ravi

3

非/稀疏條目:三十八萬一千五百六十一分之六千二百四十二
稀疏:98%

此讀象381561細胞frequencies06242具有非零值。所有細胞的98%是零(這是381561/(381561+6242)

removeSparseTerms(frequencies, 0.97)去除在frequencies這些術語,爲此,所有單元中的至少97%均爲零,即它們是在語料庫中非常罕見。因此,您將得到一個新的DocumentTermMatrix,166條款,並且只有45861零條目。

稀疏度是一個常用術語。在文本挖掘中,您經常會得到非常大的矩陣,其中許多單元爲零。將所有單元格逐個存儲在內存中可能很明智,但只需存儲少量非零入口+它們的位置以節省內存。您可以通過查找稀疏矩陣來了解更多信息。

+0

這有幫助,謝謝。這裏有一個問題, 在「至少97%的所有細胞都爲零」的說法中,如何確定這個97%? 另外,如何知道97%的單元格是零? @lukeA – subro