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.

model

A loaded [sbert_model][load_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.

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).

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 bonds / markets / price 0.01792973