Skip to contents

`type = "metrics"` (the default) draws coherence, topic diversity, and between-topic variance against the candidate topic counts, marking the count with the highest coherence. A comparison over several segment levels draws one line per level in each panel, told apart by color, point shape, and line type, with a legend. There is no single correct topic count; the useful signal is the count after which coherence stops improving, not a global maximum.

Usage

# S3 method for class 'sbert_topic_sweep'
plot(
  x,
  type = c("metrics", "fit"),
  main = "Topic-count comparison",
  n_topics = NULL,
  segment = NULL,
  n_terms = 8L,
  n_representatives = 5L,
  ...
)

Arguments

x

A comparison returned by [compare_topics()].

type

`"metrics"` (default) or `"fit"`.

main

Overall title for `type = "metrics"`.

n_topics

For `type = "fit"`, the candidate count whose models are drawn. Required when the comparison holds several candidates.

segment

For `type = "fit"`, the segment levels to draw; defaults to every level in the comparison.

n_terms, n_representatives

For `type = "fit"`, passed to [plot.sbert_topic_model()].

...

Passed to the underlying plotting calls.

Value

`x`, invisibly.

Details

`type = "fit"` draws the per-topic fit report of [plot.sbert_topic_model()] for the retained model at `n_topics`, one figure per segment level, so the same topic count can be read across segmentations side by side.

Examples

text <- c(
  "Cats chase mice", "Dogs chase balls", "Kittens nap in sunshine",
  "Stocks and bonds trade", "Markets price shares", "Banks report profit"
)
embeddings <- rbind(
  c(1, 0), c(0.95, 0.05), c(0.9, 0.1),
  c(0, 1), c(0.05, 0.95), c(0.1, 0.9)
)
comparison <- compare_topics(text, n_topics = 2:3, embeddings = embeddings)
plot(comparison)