Predicts the topic of unseen documents by embedding them and assigning each
to the nearest stored topic centroid under cosine distance. The fitted
model is not modified. Supply either a loaded model (to embed text) or
a precomputed embedding matrix whose rows align with text.
Usage
# S3 method for class 'sbert_topic_model'
predict(object, text, model = NULL, embeddings = NULL, batch_size = 32L, ...)Arguments
- object
A fitted
topics()model.- text
Character vector of new documents. A model fitted with
segment = "sentence","clause", or"phrase"splits them the same way first (with the fittedmax_tokens,merge_below, andmin_content) and assigns every segment.- model
A loaded sbert_model, a pinned model name, or
NULLfor the default model; ignored whenembeddingsare supplied. The embedding dimension must match the fitted model.- embeddings
Optional numeric matrix with one row per document, or one row per segment for a segmented model.
- batch_size
Batch size passed to
encode()whenmodelis used.- ...
Unused; included for S3 compatibility.
Value
A base data frame with one row per document and columns
document_id, document_name, text, topic, label (the fitted
topic label), and distance (cosine distance to the assigned centroid).
For a segmented model, one row per segment, with document_id naming
the source document and segment its position within it.
Examples
text <- c(
"Cats chase mice", "Dogs chase balls",
"Stocks and bonds trade", "Markets price shares"
)
embeddings <- rbind(c(1, 0), c(0.9, 0.1), c(0, 1), c(0.1, 0.9))
fitted <- topics(text, 2, embeddings = embeddings)
predict(fitted, "Bulls and bears move markets", embeddings = rbind(c(0.2, 0.8)))
#> document_id document_name text topic
#> 1 1 Bulls and bears move markets 2
#> label distance
#> 1 Stocks and bonds trade 0.01792973
