Last chance! 50% off unlimited learning
Sale ends in
Returns a document by feature matrix with the feature frequencies weighted according to one of several common methods. Some shortcut functions that offer finer-grained control are:
dfm_weight(x, type = c("frequency", "relFreq", "relMaxFreq", "logFreq",
"tfidf"), weights = NULL)dfm_smooth(x, smoothing = 1)
document-feature matrix created by dfm
a label of the weight type:
"frequency"
integer feature count (default when a dfm is created)
"relFreq"
the proportion of the feature counts of total feature counts (aka relative frequency)
"relMaxFreq"
the proportion of the feature counts of the highest feature count in a document
"logFreq"
take the logarithm of 1 + the feature count, for base 10
"tfidf"
Term-frequency * inverse document frequency. For a
full explanation, see, for example,
http://nlp.stanford.edu/IR-book/html/htmledition/term-frequency-and-weighting-1.html.
This implementation will not return negative values. For finer-grained
control, call tfidf
directly.
if type
is unused, then weights
can be
a named numeric vector of weights to be applied to the dfm,
where the names of the vector correspond to feature labels of the dfm, and
the weights will be applied as multipliers to the existing feature counts
for the corresponding named fatures. Any features not named will be
assigned a weight of 1.0 (meaning they will be unchanged).
constant added to the dfm cells for smoothing, default is 1
The dfm with weighted values.
This converts a matrix from sparse to dense format, so may exceed memory requirements depending on the size of your input matrix.
Manning, Christopher D., Prabhakar Raghavan, and Hinrich Schutze. Introduction to Information Retrieval. Vol. 1. Cambridge: Cambridge University Press, 2008.
# NOT RUN {
dtm <- dfm(data_corpus_inaugural)
x <- apply(dtm, 1, function(tf) tf/max(tf))
topfeatures(dtm)
normDtm <- dfm_weight(dtm, "relFreq")
topfeatures(normDtm)
maxTfDtm <- dfm_weight(dtm, type = "relMaxFreq")
topfeatures(maxTfDtm)
logTfDtm <- dfm_weight(dtm, type = "logFreq")
topfeatures(logTfDtm)
tfidfDtm <- dfm_weight(dtm, type = "tfidf")
topfeatures(tfidfDtm)
# combine these methods for more complex dfm_weightings, e.g. as in Section 6.4
# of Introduction to Information Retrieval
head(logTfDtm <- dfm_weight(dtm, type = "logFreq"))
head(tfidf(logTfDtm, normalize = FALSE))
#' # apply numeric weights
str <- c("apple is better than banana", "banana banana apple much better")
(mydfm <- dfm(str, remove = stopwords("english")))
dfm_weight(mydfm, weights = c(apple = 5, banana = 3, much = 0.5))
# }
# NOT RUN {
# smooth the dfm
dfm_smooth(mydfm, 0.5)
# }
Run the code above in your browser using DataLab