Substitute features based on vectorized one-to-one matching for lemmatization or user-defined stemming.
dfm_replace(
x,
pattern,
replacement,
case_insensitive = TRUE,
verbose = quanteda_options("verbose")
)
dfm whose features will be replaced
a character vector. See pattern for more details.
if pattern
is a character vector, then
replacement
must be character vector of equal length, for a 1:1
match.
logical; if TRUE
, ignore case when matching a
pattern
or dictionary values
print status messages if TRUE
dfmat1 <- dfm(tokens(data_corpus_inaugural))
# lemmatization
taxwords <- c("tax", "taxing", "taxed", "taxed", "taxation")
lemma <- rep("TAX", length(taxwords))
featnames(dfm_select(dfmat1, pattern = taxwords))
#> [1] "tax" "taxation" "taxing"
dfmat2 <- dfm_replace(dfmat1, pattern = taxwords, replacement = lemma)
featnames(dfm_select(dfmat2, pattern = taxwords))
#> [1] "TAX"
# stemming
feat <- featnames(dfmat1)
featstem <- char_wordstem(feat, "porter")
dfmat3 <- dfm_replace(dfmat1, pattern = feat, replacement = featstem, case_insensitive = FALSE)
identical(dfmat3, dfm_wordstem(dfmat1, "porter"))
#> [1] TRUE