Fit a text model to a dfm. Creates an object of virtual class textmodel_fitted-class, whose exact properties (slots and methods) will depend on which model was called (see model types below).

textmodel(x, y = NULL, data = NULL, model = c("wordscores", "nb",
"wordfish", "ca", "lsa"), ...)

# S4 method for dfm,ANY,missing,character
textmodel(x, y = NULL, data = NULL,
model = c("wordscores", "nb", "wordfish", "ca", "lsa"), ...)

# S4 method for formula,missing,dfm,character
textmodel(x, y = NULL,
data = NULL, model = c("wordscores", "nb", "wordfish", "ca", "lsa"), ...)

## Arguments

x a quanteda dfm object containing feature counts by document for supervised models, a vector of class labels or values for training the model, with NA for documents to be excluded from the training set; for unsupervised models, this will be left NULL. dfm or data.frame from which to take the formula the model type to be fit. Currently implemented methods are: wordscoresFits the "wordscores" model of Laver, Benoit, and Garry (2003). Options include the original linear scale of LBG or the logit scale proposed by Beauchamp (2001). See textmodel_wordscores. nbFits a Naive Bayes model to the dfm, with options for smoothing, setting class priors, and a choice of multinomial or binomial probabilities. See textmodel_nb. wordfishFits the "wordfish" model of Slapin and Proksch (2008). See textmodel_wordfish. caCorrespondence analysis scaling of the dfm. lsaCorrespondence Latent Semantic Analysis. ldaFit a topic model based on latent Dirichlet allocation. Not yet implemented -- use convert to convert a dfm into the applicable input format and then use your favourite topic modelling package directly. kNNk-nearest neighbour classification, coming soon. additional arguments to be passed to specific model types An object of class formula of the form y ~ x1 + x2 + .... (Interactions are not currently allowed for any of the models implemented.) The x variable(s) is typically a dfm, and the y variable a vector of class labels or training values associated with each document.

## Value

a textmodel class list, containing the fitted model and additional information specific to the model class. See the methods for specific models, e.g. textmodel_wordscores, etc.

## Class hierarchy

Here will go the description of the class hierarchy that governs dispatch for the predict, print, summary methods, since this is not terribly obvious. (Blame it on the S3 system.)

textmodel, textmodel_wordscores

## Examples

ieDfm <- dfm(data_corpus_irishbudget2010, verbose=FALSE)
refscores <- c(rep(NA, 4), -1, 1, rep(NA, 8))
ws <- textmodel(ieDfm, refscores, model="wordscores", smooth=1)

# alternative formula notation - but slower
# need the - 1 to remove the intercept, as this is literal formula notation
wsform <- textmodel(refscores ~ . - 1, data=ieDfm, model="wordscores", smooth=1)
identical(ws@Sw, wsform@Sw)  # compare wordscores from the two models#> [1] TRUE

# compare the logit and linear wordscores
bs <- textmodel(ieDfm[5:6,], refscores[5:6], model="wordscores", scale="logit", smooth=1)
plot(ws@Sw, bs@Sw, xlim=c(-1, 1), xlab="Linear word score", ylab="Logit word score")
# NOT RUN {
wf <- textmodel(ieDfm, model="wordfish", dir = c(6,5))
wf
# }