2016-11-29 3 views
2

Kann mir jemand erklären?dtm sparsity unterschiedlich je nach tf/tfidf, gleicher corpus

Mein Verständnis:

tf >= 0 (absolute frequency value) 

tfidf >= 0 (for negative idf, tf=0) 



sparse entry = 0 

nonsparse entry > 0 

Also der genaue spärliche/nonsparse Anteil soll gleich in den beiden DTMs mit dem folgenden Code erstellt werden.

library(tm) 
data(crude) 

dtm <- DocumentTermMatrix(crude, control=list(weighting=weightTf)) 
dtm2 <- DocumentTermMatrix(crude, control=list(weighting=weightTfIdf)) 
dtm 
dtm2 

Aber:

> dtm 
<<DocumentTermMatrix (documents: 20, terms: 1266)>> 
**Non-/sparse entries: 2255/23065** 
Sparsity   : 91% 
Maximal term length: 17 
Weighting   : term frequency (tf) 
> dtm2 
<<DocumentTermMatrix (documents: 20, terms: 1266)>> 
**Non-/sparse entries: 2215/23105** 
Sparsity   : 91% 
Maximal term length: 17 
Weighting   : term frequency - inverse document frequency (normalized) (tf-idf) 

Antwort

3

Die sparsity kann unterschiedlich sein. Der TF-IDF-Wert ist Null, wenn TF Null ist oder wenn IDF Null ist, und IDF ist Null, wenn ein Ausdruck in jedem Dokument vorkommt. Betrachten Sie das folgende Beispiel:

txts <- c("super World", "Hello World", "Hello super top world") 
library(tm) 
tf <- TermDocumentMatrix(Corpus(VectorSource(txts)), control=list(weighting=weightTf)) 
tfidf <- TermDocumentMatrix(Corpus(VectorSource(txts)), control=list(weighting=weightTfIdf)) 

inspect(tf) 
# <<TermDocumentMatrix (terms: 4, documents: 3)>> 
# Non-/sparse entries: 8/4 
# Sparsity   : 33% 
# Maximal term length: 5 
# Weighting   : term frequency (tf) 
# 
#  Docs 
# Terms 1 2 3 
# hello 0 1 1 
# super 1 0 1 
# top 0 0 1 
# world 1 1 1 

inspect(tfidf) 
# <<TermDocumentMatrix (terms: 4, documents: 3)>> 
# Non-/sparse entries: 5/7 
# Sparsity   : 58% 
# Maximal term length: 5 
# Weighting   : term frequency - inverse document frequency (normalized) (tf-idf) 
# 
#  Docs 
# Terms   1   2   3 
# hello 0.0000000 0.2924813 0.1462406 
# super 0.2924813 0.0000000 0.1462406 
# top 0.0000000 0.0000000 0.3962406 
# world 0.0000000 0.0000000 0.0000000 

Der Begriff Super tritt 1mal in Dokument 1, die 2 Begriffe hat, und es tritt in 2 von 3 Dokumente:

1/2 * log2(3/2) 
# [1] 0.2924813 

Der Begriff Welt tritt einmal in Dokument 3 auf, das 4 Begriffe hat, und es tritt in allen 3 Dokumenten auf:

1/4 * log2(3/3) # 1/4 * 0 
# [1] 0 
Verwandte Themen