Skip to contents

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 fitted max_tokens, merge_below, and min_content) and assigns every segment.

model

A loaded sbert_model, a pinned model name, or NULL for the default model; ignored when embeddings are 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() when model is 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