From e683019f32c18366d7f870d52bddbd3d345ce095 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rton=20Kardos=C3=98?= Date: Wed, 26 Nov 2025 15:28:58 +0100 Subject: [PATCH 1/7] 2x speedup with smarter JITing on SNMF --- turftopic/models/_snmf.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/turftopic/models/_snmf.py b/turftopic/models/_snmf.py index fcc1d7d..37e5f06 100644 --- a/turftopic/models/_snmf.py +++ b/turftopic/models/_snmf.py @@ -1,6 +1,7 @@ """This file implements semi-NMF, where doc_topic proportions are not allowed to be negative, but components are unbounded.""" import warnings +from functools import partial from typing import Optional import numpy as np @@ -33,7 +34,6 @@ def init_G( return G + constant -@jit def separate(A): abs_A = jnp.abs(A) pos = (abs_A + A) / 2 @@ -41,12 +41,10 @@ def separate(A): return pos, neg -@jit def update_F(X, G): return X @ G @ jnp.linalg.inv(G.T @ G) -@jit def update_G(X, G, F, sparsity=0): pos_xtf, neg_xtf = separate(X.T @ F) pos_gftf, neg_gftf = separate(G @ (F.T @ F)) @@ -59,12 +57,18 @@ def update_G(X, G, F, sparsity=0): return G -@jit def rec_err(X, F, G): err = X - (F @ G.T) return jnp.linalg.norm(err) +def step(G, F, X, sparsity=0): + G = update_G(X.T, G, F, sparsity) + F = update_F(X.T, G) + error = rec_err(X.T, F, G) + return G, F, error + + class SNMF(TransformerMixin, BaseEstimator): def __init__( self, @@ -89,14 +93,13 @@ def fit_transform(self, X: np.ndarray, y=None): F = update_F(X.T, G) error_at_init = rec_err(X.T, F, G) prev_error = error_at_init + _step = jit(partial(step, sparsity=self.sparsity, X=X)) for i in trange( self.max_iter, desc="Iterative updates.", disable=not self.progress_bar, ): - G = update_G(X.T, G, F, self.sparsity) - F = update_F(X.T, G) - error = rec_err(X.T, F, G) + G, F, error = _step(G, F) difference = prev_error - error if (error < error_at_init) and ( (prev_error - error) / error_at_init From e0a9973f42de0676ac3900949cc9e5a17d099be9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rton=20Kardos=C3=98?= Date: Fri, 28 Nov 2025 18:39:07 +0100 Subject: [PATCH 2/7] Sped up model even further with Jitting only once --- turftopic/models/_snmf.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/turftopic/models/_snmf.py b/turftopic/models/_snmf.py index 37e5f06..7b9b016 100644 --- a/turftopic/models/_snmf.py +++ b/turftopic/models/_snmf.py @@ -62,6 +62,7 @@ def rec_err(X, F, G): return jnp.linalg.norm(err) +@jit def step(G, F, X, sparsity=0): G = update_G(X.T, G, F, sparsity) F = update_F(X.T, G) @@ -93,7 +94,7 @@ def fit_transform(self, X: np.ndarray, y=None): F = update_F(X.T, G) error_at_init = rec_err(X.T, F, G) prev_error = error_at_init - _step = jit(partial(step, sparsity=self.sparsity, X=X)) + _step = partial(step, sparsity=self.sparsity, X=X) for i in trange( self.max_iter, desc="Iterative updates.", From 585fbab79326f6353275d668cb42383fc1fc3f7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rton=20Kardos=C3=98?= Date: Sat, 29 Nov 2025 18:17:06 +0100 Subject: [PATCH 3/7] Added Info to model overview --- docs/SensTopic.md | 7 + docs/images/coherence_diversity.html | 3888 ++++++++++++++++++++++++++ docs/images/fastica_vs_nmf.html | 3888 ++++++++++++++++++++++++++ docs/images/model_speed.html | 3888 ++++++++++++++++++++++++++ docs/model_overview.md | 6 +- 5 files changed, 11675 insertions(+), 2 deletions(-) create mode 100644 docs/images/coherence_diversity.html create mode 100644 docs/images/fastica_vs_nmf.html create mode 100644 docs/images/model_speed.html diff --git a/docs/SensTopic.md b/docs/SensTopic.md index deac1b8..7bee147 100644 --- a/docs/SensTopic.md +++ b/docs/SensTopic.md @@ -12,6 +12,13 @@ If you want to enable hardware acceleration and JIT compilation, make sure to in pip install jax ``` +SensTopic produces the same quality of topics as $S^3$ without having to interpret negative topic descriptions, and also has better scaling properties. Our implementation of SNMF is considerably faster than FastICA, which $S^3$ is based on. + +
+ +
FastICA vs SNMF runtime on the 20 newsgroups dataset with different number of topics.
+
+ Here's an example of running SensTopic on the 20 Newsgroups dataset: ```python diff --git a/docs/images/coherence_diversity.html b/docs/images/coherence_diversity.html new file mode 100644 index 0000000..b2a7269 --- /dev/null +++ b/docs/images/coherence_diversity.html @@ -0,0 +1,3888 @@ + + + +
+
+ + \ No newline at end of file diff --git a/docs/images/fastica_vs_nmf.html b/docs/images/fastica_vs_nmf.html new file mode 100644 index 0000000..6c3d667 --- /dev/null +++ b/docs/images/fastica_vs_nmf.html @@ -0,0 +1,3888 @@ + + + +
+
+ + \ No newline at end of file diff --git a/docs/images/model_speed.html b/docs/images/model_speed.html new file mode 100644 index 0000000..11570fa --- /dev/null +++ b/docs/images/model_speed.html @@ -0,0 +1,3888 @@ + + + +
+
+ + \ No newline at end of file diff --git a/docs/model_overview.md b/docs/model_overview.md index 0312f38..57cac62 100644 --- a/docs/model_overview.md +++ b/docs/model_overview.md @@ -7,7 +7,7 @@ It is quite important that you choose the right topic model for your use case. | ⚡ **Speed** | 📖 **Long Documents** | 🐘 **Scalability** | 🔩 **Flexibility** | |-------------|-----------------------|--------------------|---------------------| -| [SemanticSignalSeparation](s3.md) | [KeyNMF](KeyNMF.md) | [KeyNMF](KeyNMF.md) | [ClusteringTopicModel](clustering.md) | +| [SensTopic](SensTopic.md); [SemanticSignalSeparation](s3.md) | [KeyNMF](KeyNMF.md) | [KeyNMF](KeyNMF.md) | [ClusteringTopicModel](clustering.md) | _Table 1: You should tailor your model choice to your needs_ @@ -53,7 +53,9 @@ In general, the most balanced models are $S^3$, Clustering models with `centroid | Model | :1234: Multiple Topics per Document | :hash: Detecting Number of Topics | :chart_with_upwards_trend: Dynamic Modeling | :evergreen_tree: Hierarchical Modeling | :star: Inference over New Documents | :globe_with_meridians: Cross-Lingual | :ocean: Online Fitting | | - | - | - | - | - | - | - | - | -| **[KeyNMF](KeyNMF.md)** | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| **[KeyNMF](KeyNMF.md)** | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| **[SensTopic](SensTopic.md)** | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | +| **[Topeax](Topeax.md)** | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | | **[SemanticSignalSeparation](s3.md)** | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | | **[ClusteringTopicModel](clustering.md)** | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | | **[GMM](GMM.md)** | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | From 692233104cd7634985f8c5f990b07a1cdfda6f6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rton=20Kardos=C3=98?= Date: Tue, 2 Dec 2025 21:38:31 +0100 Subject: [PATCH 4/7] Started writing benchmark page: --- docs/benchmark.md | 309 ++ docs/images/coherence_diversity.html | 114 +- docs/images/model_speed.html | 114 +- docs/images/oom_error.html | 3888 +++++++++++++++++++++++ docs/images/performance_speed_plot.html | 3888 +++++++++++++++++++++++ docs/model_overview.md | 1 - mkdocs.yml | 1 + 7 files changed, 8200 insertions(+), 115 deletions(-) create mode 100644 docs/benchmark.md create mode 100644 docs/images/oom_error.html create mode 100644 docs/images/performance_speed_plot.html diff --git a/docs/benchmark.md b/docs/benchmark.md new file mode 100644 index 0000000..cdd4ce2 --- /dev/null +++ b/docs/benchmark.md @@ -0,0 +1,309 @@ +# Model Leaderboard + +To aid you in choosing the best model for your use case, we have made a topic model benchmark and leaderboard. +The benchmark consists of all English clustering tasks from the most recent version of [MTEB](https://huggingface.co/spaces/mteb/leaderboard), plus a tweet and a news dataset, as these are not present in MTEB. + +Models were tested for topic quality using the methodology of [Kardos et al. 2025](https://aclanthology.org/2025.acl-long.32/), +and cluster quality using adjusted mutual information (AMI), the Fowlkes-Mallows index (FMI) and V-measure scores. +All models were run on an older, but still powerful Dell Precision laptop, with 32 GBs of RAM, and i7, which was apparently not enough, +as some models ran out of memory on some of the larger datasets. +Due to this, and the fact that the scale of the scores is different for different tasks, we present the **average percentile** scores on these metrics in the table bellow. + +For models that are able to detect the number of topics, we ran the test with this setting, this is marked as ***(Auto)*** in our tables and plots. +For models, where users can set the number of topics, we also ran the benchmark setting the correct number of topics a-priori. + +??? info "Click to see Benchmark code" + ```python + import argparse + import json + import time + from itertools import chain, combinations + from pathlib import Path + from typing import Callable, Iterable + + import gensim.downloader as api + import mteb + import numpy as np + from datasets import load_dataset + from glovpy import GloVe + from sentence_transformers import SentenceTransformer + from sklearn import metrics + from sklearn.feature_extraction.text import CountVectorizer + from turftopic import (GMM, AutoEncodingTopicModel, BERTopic, FASTopic, KeyNMF, + SemanticSignalSeparation, SensTopic, Top2Vec, Topeax) + + topic_models = { + "Topeax(Auto)": lambda encoder, n_components: Topeax( + encoder=encoder, random_state=42 + ), + "BERTopic(Auto)": lambda encoder, n_components: BERTopic( + encoder=encoder, random_state=42 + ), + "Top2Vec(Auto)": lambda encoder, n_components: Top2Vec( + encoder=encoder, random_state=42 + ), + "SensTopic(Auto)": lambda encoder, n_components: SensTopic( + n_components="auto", encoder=encoder, random_state=42 + ), + "SensTopic": lambda encoder, n_components: SensTopic( + n_components=n_components, encoder=encoder, random_state=42 + ), + "KeyNMF(Auto)": lambda encoder, n_components: KeyNMF( + n_components="auto", encoder=encoder, random_state=42 + ), + "KeyNMF": lambda encoder, n_components: KeyNMF( + n_components=n_components, encoder=encoder, random_state=42 + ), + "GMM": lambda encoder, n_components: GMM( + n_components=n_components, encoder=encoder, random_state=42 + ), + "Top2Vec(Reduce)": lambda encoder, n_components: Top2Vec( + n_reduce_to=n_components, encoder=encoder, random_state=42 + ), + "BERTopic(Reduce)": lambda encoder, n_components: BERTopic( + n_reduce_to=n_components, encoder=encoder, random_state=42 + ), + "ZeroShotTM": lambda encoder, n_components: AutoEncodingTopicModel( + n_components=n_components, encoder=encoder, random_state=42, combined=False + ), + "SemanticSignalSeparation": lambda encoder, n_components: SemanticSignalSeparation( + n_components=n_components, encoder=encoder, random_state=42 + ), + "FASTopic": lambda encoder, n_components: FASTopic( + n_components=n_components, encoder=encoder, random_state=42 + ), + } + + + def load_corpora() -> Iterable[tuple[str, Callable]]: + mteb_tasks = mteb.get_tasks( + [ + "ArXivHierarchicalClusteringP2P", + "BiorxivClusteringP2P.v2", + "MedrxivClusteringP2P.v2", + "StackExchangeClusteringP2P.v2", + "TwentyNewsgroupsClustering.v2", + ] + ) + for task in mteb_tasks: + + def _load_dataset(): + task.load_data() + ds = task.dataset["test"] + corpus = list(ds["sentences"]) + if isinstance(ds["labels"][0], list): + true_labels = [label[0] for label in ds["labels"]] + else: + true_labels = list(ds["labels"]) + return corpus, true_labels + + yield task.metadata.name, _load_dataset + + def _load_dataset(): + # Taken from here cardiffnlp/tweet_topic_single with "train_all" + ds = load_dataset("kardosdrur/tweet_topic_clustering", split="train_all") + corpus = list(ds["text"]) + labels = list(ds["label"]) + return corpus, labels + + yield "TweetTopicClustering", _load_dataset + + def _load_dataset(): + ds = load_dataset("gopalkalpande/bbc-news-summary", split="train") + corpus = list(ds["Summaries"]) + labels = list(ds["File_path"]) + return corpus, labels + + yield "BBCNewsClustering", _load_dataset + + + def diversity(keywords: list[list[str]]) -> float: + all_words = list(chain.from_iterable(keywords)) + unique_words = set(all_words) + total_words = len(all_words) + return float(len(unique_words) / total_words) + + + def word_embedding_coherence(keywords, wv): + arrays = [] + for index, topic in enumerate(keywords): + if len(topic) > 0: + local_simi = [] + for word1, word2 in combinations(topic, 2): + if word1 in wv.index_to_key and word2 in wv.index_to_key: + local_simi.append(wv.similarity(word1, word2)) + arrays.append(np.nanmean(local_simi)) + return float(np.nanmean(arrays)) + + + def evaluate_clustering(true_labels, pred_labels) -> dict[str, float]: + res = {} + for metric in [ + metrics.fowlkes_mallows_score, + metrics.homogeneity_score, + metrics.completeness_score, + metrics.adjusted_mutual_info_score, + ]: + res[metric.__name__] = metric(true_labels, pred_labels) + return res + + + def get_keywords(model) -> list[list[str]]: + """Get top words and ignore outlier topic.""" + n_topics = model.components_.shape[0] + try: + classes = model.classes_ + except AttributeError: + classes = list(range(n_topics)) + res = [] + for topic_id, words in zip(classes, model.get_top_words()): + if topic_id != -1: + res.append(words) + return res + + + def evaluate_topic_quality(keywords, ex_wv, in_wv) -> dict[str, float]: + res = { + "diversity": diversity(keywords), + "c_in": word_embedding_coherence(keywords, in_wv), + "c_ex": word_embedding_coherence(keywords, ex_wv), + } + return res + + + def load_cache(out_path): + cache_entries = [] + with out_path.open() as cache_file: + for line in cache_file: + entry = json.loads(line.strip()) + cache_entry = (entry["task"], entry["model"]) + cache_entries.append(cache_entry) + return set(cache_entries) + + + def main(encoder_name: str = "all-MiniLM-L6-v2"): + out_dir = Path("results") + out_dir.mkdir(exist_ok=True) + encoder_path_name = encoder_name.replace("/", "__") + out_path = out_dir.joinpath(f"{encoder_path_name}.jsonl") + if out_path.is_file(): + cache = load_cache(out_path) + else: + cache = set() + # Create file if doesn't exist + with out_path.open("w"): + pass + print("Loading external word embeddings") + ex_wv = api.load("word2vec-google-news-300") + print("Loading benchmark") + tasks = load_corpora() + for task_name, load in tasks: + if all([(task_name, model_name) in cache for model_name in topic_models]): + print("All models already completed, skipping.") + continue + print("Load corpus") + corpus, true_labels = load() + print("Training internal word embeddings using GloVe...") + tokenizer = CountVectorizer().build_analyzer() + glove = GloVe(vector_size=50) + tokenized_corpus = [tokenizer(text) for text in corpus] + glove.train(tokenized_corpus) + in_wv = glove.wv + encoder = SentenceTransformer(encoder_name, device="cpu") + print("Encoding task corpus.") + embeddings = encoder.encode(corpus, show_progress_bar=True) + for model_name in topic_models: + if (task_name, model_name) in cache: + print(f"{model_name} already done, skipping.") + continue + print(f"Running {model_name}.") + true_n = len(set(true_labels)) + model = topic_models[model_name](encoder=encoder, n_components=true_n) + start_time = time.time() + doc_topic_matrx = model.fit_transform(corpus, embeddings=embeddings) + end_time = time.time() + labels = getattr(model, "labels_", None) + if labels is None: + labels = np.argmax(doc_topic_matrx, axis=1) + keywords = get_keywords(model) + print("Evaluating model.") + clust_scores = evaluate_clustering(true_labels, labels) + topic_scores = evaluate_topic_quality(keywords, ex_wv, in_wv) + runtime = end_time - start_time + res = { + "encoder": encoder_name, + "task": task_name, + "model": model_name, + "auto": "(Auto)" in model_name, + "runtime": runtime, + "dps": len(corpus) / runtime, + "n_components": model.components_.shape[0], + "true_n": len(set(true_labels)), + **clust_scores, + **topic_scores, + } + print("Results: ", res) + res["keywords"] = keywords + with out_path.open("a") as out_file: + out_file.write(json.dumps(res) + "\n") + + + if __name__ == "__main__": + parser = argparse.ArgumentParser(prog="Evaluate clustering.") + parser.add_argument("embedding_model") + args = parser.parse_args() + encoder = args.embedding_model + main(encoder) + print("DONE") + ``` + +## Model Performance + + + + +#### Topic Quality + +It seems, that Auto models, and, in particular, Topeax, SensTopic, KeyNMF and GMM were best at generating high quality topics, as can be seen from interpretability scores. +Out of non-auto models, KeyNMF, GMM, ZeroShotTM, FASTopic and SensTopic did best, though ZeroShotTM and FASTopic did not run on some of the more challenging datasets due to running out of memory. + +#### Cluster Quality + +Clear winners in cluster quality were GMM, Topeax(also GMM-based) and SensTopic. FASTopic also did reasonably well when recovering gold clusters in the data. + +## Computational Efficiency + +
+ +
Figure 1: Speed of Different Models on 20 Newsgroups
+
+ +#### Speed + +We recorded documents per second for each topic model for each run, not including the time it takes to produce embeddings. + + +
+ +
Figure 1: Speed of Different Models on 20 Newsgroups
+
+ +#### Out of Memory diff --git a/docs/images/coherence_diversity.html b/docs/images/coherence_diversity.html index b2a7269..bd69b1b 100644 --- a/docs/images/coherence_diversity.html +++ b/docs/images/coherence_diversity.html @@ -3,7 +3,7 @@
+}));
\ No newline at end of file diff --git a/docs/images/model_speed.html b/docs/images/model_speed.html index 11570fa..541f743 100644 --- a/docs/images/model_speed.html +++ b/docs/images/model_speed.html @@ -3,7 +3,7 @@
+}));
\ No newline at end of file diff --git a/docs/images/oom_error.html b/docs/images/oom_error.html new file mode 100644 index 0000000..0efa9ee --- /dev/null +++ b/docs/images/oom_error.html @@ -0,0 +1,3888 @@ + + + +
+
+ + \ No newline at end of file diff --git a/docs/images/performance_speed_plot.html b/docs/images/performance_speed_plot.html new file mode 100644 index 0000000..b02ad35 --- /dev/null +++ b/docs/images/performance_speed_plot.html @@ -0,0 +1,3888 @@ + + + +
+
+ + \ No newline at end of file diff --git a/docs/model_overview.md b/docs/model_overview.md index 57cac62..b2638e4 100644 --- a/docs/model_overview.md +++ b/docs/model_overview.md @@ -4,7 +4,6 @@ Turftopic contains implementations of a number of contemporary topic models. Some of these models might be similar to each other in a lot of aspects, but they might be different in others. It is quite important that you choose the right topic model for your use case. - | ⚡ **Speed** | 📖 **Long Documents** | 🐘 **Scalability** | 🔩 **Flexibility** | |-------------|-----------------------|--------------------|---------------------| | [SensTopic](SensTopic.md); [SemanticSignalSeparation](s3.md) | [KeyNMF](KeyNMF.md) | [KeyNMF](KeyNMF.md) | [ClusteringTopicModel](clustering.md) | diff --git a/mkdocs.yml b/mkdocs.yml index f0a885e..4e17ebf 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -24,6 +24,7 @@ nav: - Customer Dissatisfaction Analysis: tutorials/reviews.md - Topic Models: - Model Overview: model_overview.md + - Model Leaderboard: benchmark.md - Semantic Signal Separation (S³): s3.md - SensTopic (BETA): SensTopic.md - KeyNMF: KeyNMF.md From e1f52b5b1b14f25c8ad88c1541a221a6b0ad37c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rton=20Kardos=C3=98?= Date: Wed, 3 Dec 2025 09:36:01 +0100 Subject: [PATCH 5/7] Wrote benchmark page --- docs/benchmark.md | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/docs/benchmark.md b/docs/benchmark.md index cdd4ce2..1a56e8d 100644 --- a/docs/benchmark.md +++ b/docs/benchmark.md @@ -1,7 +1,7 @@ # Model Leaderboard To aid you in choosing the best model for your use case, we have made a topic model benchmark and leaderboard. -The benchmark consists of all English clustering tasks from the most recent version of [MTEB](https://huggingface.co/spaces/mteb/leaderboard), plus a tweet and a news dataset, as these are not present in MTEB. +The benchmark consists of all English P2P clustering tasks from the most recent version of [MTEB](https://huggingface.co/spaces/mteb/leaderboard), plus a tweet and a news dataset, as these are not present in MTEB. Models were tested for topic quality using the methodology of [Kardos et al. 2025](https://aclanthology.org/2025.acl-long.32/), and cluster quality using adjusted mutual information (AMI), the Fowlkes-Mallows index (FMI) and V-measure scores. @@ -287,13 +287,14 @@ Clear winners in cluster quality were GMM, Topeax(also GMM-based) and SensTopic. width="675px" height="420px" > -
Figure 1: Speed of Different Models on 20 Newsgroups
#### Speed -We recorded documents per second for each topic model for each run, not including the time it takes to produce embeddings. - +We recorded the amount of documents a model could process per second for each of the runs. +It seems that matrix factorization approaches were fastest ($S^3$, SensTopic, KeyNMF), while neural approaches (FASTopic, ZeroShotTM) the slowest. +While in our investigations, SensTopic seems slower than SemanticSignalSeparation, it is important to note, that SensTopic has built-in JIT compilation capabilities, once JAX is installed, and is therefore likely to be even faster than $S^3$. For more detail, see [SensTopic](SensTopic.md). +We plotted model speed versus performance on the interactive graph to the right. Model size represents the Fowlkes-Mallows Index.
-
Figure 1: Speed of Different Models on 20 Newsgroups
#### Out of Memory + +While we did not record memory usage, three models stood out for being unable to complete some of the more challenging tasks on the test hardware. +FASTopic failed twice, on some of the larger corpora, while Top2Vec and BERTopic had problems when trying to reduce the number of topics to a desired amount. +This is likely due to the computational and memory burden of hierarchical clustering, and thus we recommend that you do not use topic reduction if you are unsure whether your hardware will be able to handle it. +If you got your heart set on using FASTopic, we recommend that you get a lot of memory, and preferably a GPU too. +Unfortunately neural topic modelling still takes a lot of resources to run. + +## Discovering the Number of Topics + +A number of methods are, in theory, able to discover the number of topics in a dataset. +We have tested this, and found that this claim is rather exaggerated, especially in the case of BERTopic and Top2Vec, +which consistently overestimated the number of topics, sometimes by orders of magnitude. +This effect gets worse with larger corpora. +Topeax was the most accurate at this task, mostly when run on larger corpora, but it was still very much off most of the time. +KeyNMF and SensTopic also got reasonably close sometimes, while completely missing the mark in others. + +We conclude that this area needs a lot of improvement. + +| Model | ArXivHierarchical (23) | BBCNews (5) | Biorxiv (26) | Medrxiv (51) | StackExchange (524) | TweetTopic (6) | TwentyNewsgroups (20) | +|--------------|--------------------------|-------------|---------------|---------------|-----------------------|----------------|-------------------------| +| BERTopic | **25** | 42 | 602 | 1583 | 2542 | 76 | 1861 | +| KeyNMF | 3 | **5** | 250 | 250 | **250** | 2 | 10 | +| SensTopic | 8 | 6 | 14 | 14 | 6 | 11 | 4 | +| Top2Vec | 18 | 18 | 405 | 1000 | 1495 | 49 | 1612 | +| Topeax | 6 | 8 | **19** | **23** | 21 | **8** | **13** | + From dab14c2951c3aef1191e617f14b5182fd4647d15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rton=20Kardos=C3=98?= Date: Wed, 3 Dec 2025 14:24:12 +0100 Subject: [PATCH 6/7] Added benchmark to docs --- docs/benchmark.md | 18 +- docs/images/leaderboard_screenshot.png | Bin 0 -> 152260 bytes docs/images/radar_chart.html | 3888 ++++++++++++++++++++++++ docs/model_overview.md | 64 +- mkdocs.yml | 2 +- 5 files changed, 3931 insertions(+), 41 deletions(-) create mode 100644 docs/images/leaderboard_screenshot.png create mode 100644 docs/images/radar_chart.html diff --git a/docs/benchmark.md b/docs/benchmark.md index 1a56e8d..19756bb 100644 --- a/docs/benchmark.md +++ b/docs/benchmark.md @@ -9,8 +9,6 @@ All models were run on an older, but still powerful Dell Precision laptop, with as some models ran out of memory on some of the larger datasets. Due to this, and the fact that the scale of the scores is different for different tasks, we present the **average percentile** scores on these metrics in the table bellow. -For models that are able to detect the number of topics, we ran the test with this setting, this is marked as ***(Auto)*** in our tables and plots. -For models, where users can set the number of topics, we also ran the benchmark setting the correct number of topics a-priori. ??? info "Click to see Benchmark code" ```python @@ -257,7 +255,6 @@ For models, where users can set the number of topics, we also ran the benchmark print("DONE") ``` -## Model Performance +For models that are able to detect the number of topics, we ran the test with this setting, this is marked as ***(Auto)*** in our tables and plots. +For models, where users can set the number of topics, we also ran the benchmark setting the correct number of topics a-priori. #### Topic Quality @@ -277,6 +276,19 @@ Out of non-auto models, KeyNMF, GMM, ZeroShotTM, FASTopic and SensTopic did best Clear winners in cluster quality were GMM, Topeax(also GMM-based) and SensTopic. FASTopic also did reasonably well when recovering gold clusters in the data. +
+ +
Performance profile of all models on different metrics. + Top 5 models on average performance are highlighted, click on legend to show the others. +
+
+ ## Computational Efficiency
diff --git a/docs/images/leaderboard_screenshot.png b/docs/images/leaderboard_screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..2474e8e1c6ab97c8d0fdfa645c1a5375fdedb6f6 GIT binary patch literal 152260 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 uJ~d|#pvGR=Q9PBMUibQ+|19%Hr!LW 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

a`+T^vgI2%m6Z4?w0f#r1my6%vQ4c zq&4i>yo{#H8&=|lc@6_=R%b`cO4d=rKQksI?p~8H$zytM-T1$EF3h+LU4*P5p453T zG8U3N!09CxMC0EzAs^`^6JLAeTwMO**zJ}{AD;YIiR?ep^4i^Rg|VyrD^)ZXuH+QY zAP9f#*o8)mp1p0$(44=cz{C9k6EFVdI>G7Vmm{Q9xc!&GNgb>E#$6aA{<9Cz=gyFC ztV(5w$;YQgYSXQv?FuMHkZ~BuP=eBA31C5j(Fn3ZOg_eHCUflDpgJKbw(fo0I#kSL z6A=RI{W!(le%3xmM+D{RoStGaipZHkgG3+LBT>ZT;oG47Km8w9&R{j?nfU!+p+h;? z|8;>w7WY$7@ZAQc`0CE~ezrr0Nl$k{$Y9X9y+R-m@U4}vBRlO!G$Dr6iN1qNHJ;#E zwbnl-V!j|A-~*qe{k9sWS#G{6#AR)*v#CvY_B)r9y>@fPgpjBkwF=qfW=XEJM~1y7 zZcF-{AO6>Nxu?NB)s}ag@$h2d@4(ZiPscj>Z;WbZZ6r>H|H5QM*b{YQ4wnuylU5vv zFI)6`V(pN#0%zs^6UrFJQPG9(g94gWtIe{!z$}#UXn~k%5KYOG5NRujj|OP9o-2+( zIEyoHz*&dFjBAQthd5Y$@qKXdTC4o7LhArW!%AQ7Mg$24lWyfqOpLL37W^lARhYZ; zXj@l~VR+?#__4$)DZ;>MMC!h}aG*YuyK7RTPT`~d7Y2`!7p=dy zO)~IPX{tQ5Y=4@&gqx)2$(GFIk-Ote^Ys+;CcmE5XnfmNGwY0e=C8OD(>{EyY#TtJ zecxIBMWqoYU3=a;Y|>KOz3t7(SL4Sy{+W5ya-r?K0cWJ;BLl_$E}HUF@oejXwZ0n$ zw6&c)6YOBLdHwI$9wSv+iw_y35A!nYd{WKyL;Nzj)dM?BhK5zz4T|cg(rd)HuVrdD zcXKloiOQ;I(``(Cu82j z@UNf=D}NgkIpf%!loa#n9)87!BOON<+S`4IxNR7)ZxdtG)}(~@Fiey0zflx)F$#&K zc+UF0#H)j0?s;R?yy?doU~m2T`Ea5HR-!oZmO07^II!sGL{Y5;bn!J74dn=L$c@{+ zFUanoH%3sp0GcJg({b>YM^Cl|f1!sH9ojH8=d*Mm*}G903(4$N!<5^*ZigYAqi#T- zndNNuv!>=FY6B723=dr&kzCL*-XS48!d%5n2L(3`FrM0shO2iG0svLqEgD3p&#oz*oI5 zlk2oZDj%4V6xs^Cq7@E!#lhNYL#FNjZs^7Z*JyM+y6_$%g{a)ip$gaCcSRLk)e({n z^elCD4lRG}gfJTd#EKAoJ`?LcDoH2sNXE6@_li`svreus0c4Y+{tWs#TE=pG(qC?2;Oz&Np;OIZjP`;UFmH^DKk7 z!h}^&C^7;18iSt8FW+!UIqZ_cLywqCPSqaL)UNGbYaP(15LFz4?VIy8S1*g z!b9F)p|$OKm0$OPF?Sa{`(}1_dR*LdFL?>s=cbcB$X~ZBI^fz+Whfj=#cA^>*|Gni zY&E(p*@2D%h4mZs=wZu`4;eZX$;?Vq)62V(qyU6z<-!u)s2?pGEoa6;0nqI@h$5 z06;hNes+Dp!2jNq;JLX7WW|_3rnCSfqd-xpdGP$dwE!EQt*A?BZ^;vbKJ8!^8q54`WT6ooLM<#g8Kz?akt5qQcum%aL&6W2a5i{jejC4g?tf z0l=8hmI$Jh87C$e@*}iIq9xNp<$?M(_->H`SOh&==6DH_IRm^Ra1e-c;rfQqD*gCT zq>o|e`V3-0O5wB|TNMC&m z#*I}ek7iD?U17YNxiDS2bu&R4fU-@vD>!eU+k|Bo8K@Xdc=hccduwZ-&Q)v`;eSL2 zx;S+WA!8d`Q;EhPVCe(^2D30k^@g?u{rc*NX_bFnx-Ara82fwBJl8qkZVMxIt*M2D z3=fE0%H`$G`CmcZmHBE=WAp>6O1L}7uXf}l>AsgAWU`%?vxT|E0 z!-om}TH;;c=qj%kBADqaK>d)VHz}r2eMQ^7%wmKAkCfKW^kz30pW2=)IbKAR7Fx}d zLR3~BQ@Fk8_Cz`aL8KyfXqRzY=e#echfv51Ms&&)5yLCyW~itn&e87pHH$AG@|Oj% zBj(={q6|Nfs_xdvSt9rUpCz|3e}3H<3Ld#gtcq9R-5Bb@`WXp8h*@q-aCE!(MMLt- z6OmU5%9+m@(!!)NPwE=snb$Zu>?o}$)f6+ev>q-Gq6-i*Inq9;B&Qp1_~ns#O2zE^ z=}yhAl>>?`(^lM@Rlfb_`~gw=6IT36|9t3r%F5is10@z2=e;*AiD;>uQlGuX`S0TX zCx%a0m3U_GzJ244I0b49@JjpJbGWnljp`R2Dkh~o@-7~+*<$_SHJ?LkKjz5nv%Nkp z^zj>qFYUS>{hAlGMMUUM}mNd|Q7zI`-DKCX+L<_cUbNg1%IK?Nc|(`<glx_widCYb`_0W9xT0L>SwK8?_B~o#I77~t$bB)60t>d<@0|cd6Z1zNd;= ze+4(r)%V?)0xm`~OZlseDy%)*bA_fFWbAtS*wKQio) z2uN`A(WN$paL=C78V0d$b!7P zCWAtV(!VBO-}t8(;YE@O!dxOicc$z`$hs7kn9RU1I%<&YI#MgAk~22S>9Y>!&0r#j zQg>7nqmQ;kxU*`f5_l>iUV!d6NyVDN!x5 zoJ@V)=qwPToZ)i|1(4kLKgdIvRght2SM`o|s5ck=4qj@iBMaam z!3EiLgWQP+05AnFJdu2>d&sLt9Hz79nz1-~? z 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 ?@tF4hKNBJo2+|9NM9G>rNXS@hp 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 LTj|Sln>YUge4)tO literal 0 HcmV?d00001 diff --git a/docs/images/radar_chart.html b/docs/images/radar_chart.html new file mode 100644 index 0000000..cf0e2fe --- /dev/null +++ b/docs/images/radar_chart.html @@ -0,0 +1,3888 @@ + + + +

+
+ + \ No newline at end of file diff --git a/docs/model_overview.md b/docs/model_overview.md index b2638e4..04e1d34 100644 --- a/docs/model_overview.md +++ b/docs/model_overview.md @@ -4,50 +4,42 @@ Turftopic contains implementations of a number of contemporary topic models. Some of these models might be similar to each other in a lot of aspects, but they might be different in others. It is quite important that you choose the right topic model for your use case. -| ⚡ **Speed** | 📖 **Long Documents** | 🐘 **Scalability** | 🔩 **Flexibility** | -|-------------|-----------------------|--------------------|---------------------| -| [SensTopic](SensTopic.md); [SemanticSignalSeparation](s3.md) | [KeyNMF](KeyNMF.md) | [KeyNMF](KeyNMF.md) | [ClusteringTopicModel](clustering.md) | +!!! tip "Looking for Model Performance?" -_Table 1: You should tailor your model choice to your needs_ + If you are interested in seeing how these models perform on a bunch of datasets, and would like to base your model choice on evaluations, + make sure to check out the [Model Leaderboard](benchmark.md) tab: +
+
+ +
-
- -
Figure 1: Speed of Different Models on 20 Newsgroups
(Documents per Second; Higher is better)
-
+
-Different models will naturally be good at different things, because they conceptualize topics differently for instance: - - -- `SemanticSignalSeparation`($S^3$) conceptualizes topics as **semantic axes**, along which topics are distributed -- `ClusteringTopicModel` finds **clusters** of documents and treats those as topics -- `KeyNMF` conceptualizes topics as **factors**, or looked at it from a different angle, it finds **clusters of words** - -You can find a detailed overview of how each of these models work in their respective tabs. +| Model | Summary | Strengths | Weaknesses | +| - | - | - | - | +| [Topeax](Topeax.md) | Density peak detection + Gaussian mixture approximation | Cluster quality, Topic quality, Stability, Automatic n-topics | Underestimates N topics, Slower, No inference for new documents | +| [KeyNMF](KeyNMF.md) | Keyword importance estimation + matrix factorization | Reliability, Topic quality, Scalability to large corpora and long documents | Automatic topic number detection, Multilingual performance, Sometimes includes stop words | +| [SensTopic(BETA)](SensTopic.md) | Regularized Semi-nonnegative matrix factorization in embedding space | Very fast, High quality topics and clusters, Can assign multiple soft clusters to documents, GPU support | Automatic n-topics is not too good | +| [GMM](GMM.md) | Soft clustering with Gaussian Mixtures and soft-cTF-IDF | Reliability, Speed, Cluster quality | Manual n-topics, Lower quality keywords, [Curse of dimensionality](https://en.wikipedia.org/wiki/Curse_of_dimensionality) | +| [FASTopic](FASTopic.md) | Neural topic modelling with Dual Semantic-relation Reconstruction | High quality topics and clusters, GPU support | Very slow, Memory hungry, Manual n-topics | +| [$S^3$](s3.md) | Semantic axis discovery in embedding space | Fastest, Human-readable topics | Axes can be very unintuitive, Manual n-topics | +| [BERTopic and Top2Vec](clustering.md) | Embed -> Reduce -> Cluster | Flexible, Feature rich | Slow, Unreliable and unstable, Wildly overestimates number of clusters, Low topic and cluster quality | +| [AutoEncodingTopicModel](ctm.md) | Discover topics by generating BoW with a variational autoencoder | GPU-support | Slow, Sometimes low quality topics | -Some models are also capable of being used in a dynamic context, some can be fitted online, some can detect the number of topics for you and some can detect topic hierarchies. You can find an overview of these features in Table 2 below. +
-
- -
Figure 2: Models' Coherence and Diversity on 20 Newsgroups
(Higher is better)
-
- -!!! warning - You should take the results presented here with a grain of salt. A more comprehensive and in-depth analysis can be found in [Kardos et al., 2024](https://arxiv.org/abs/2406.09556), though the general tendencies are similar. - Note that some topic models are also less stable than others, and they might require tweaking optimal results (like BERTopic), while others perform well out-of-the-box, but are not as flexible ($S^3$) - -The quality of the topics you can get out of your topic model can depend on a lot of things, including your choice of [vectorizer](vectorizers.md) and [encoder model](encoders.md). -More rigorous evaluation regimes can be found in a number of studies on topic modeling. +Different models will naturally be good at different things, because they conceptualize topics differently for instance: -Two usual metrics to evaluate models by are *coherence* and *diversity*. -These metrics indicate how easy it is to interpret the topics provided by the topic model. -Good models typically balance these to metrics, and should produce highly coherent and diverse topics. -On Figure 2 you can see how good different models are on these metrics on 20 Newsgroups. +- `BERTopic`, `Top2Vec`, `GMM` and `Topeax` find **clusters** of documents and treats those as topics +- `KeyNMF`, `SensTopic`, `FASTopic` and `AutoEncodingTopicModel` conceptualize topics as latent nonnegative **factors** that generate the documents. +- `SemanticSignalSeparation`($S^3$) conceptualizes topics as **semantic axes**, along which topics are distributed. -In general, the most balanced models are $S^3$, Clustering models with `centroid` feature importance, GMM and KeyNMF, while FASTopic excels at diversity. +You can find a detailed overview of how each of these models work in their respective tabs. -
+## Model Features +Some models are also capable of being used in a dynamic context, some can be fitted online, some can detect the number of topics for you and some can detect topic hierarchies. You can find an overview of these features in the table below. | Model | :1234: Multiple Topics per Document | :hash: Detecting Number of Topics | :chart_with_upwards_trend: Dynamic Modeling | :evergreen_tree: Hierarchical Modeling | :star: Inference over New Documents | :globe_with_meridians: Cross-Lingual | :ocean: Online Fitting | @@ -61,9 +53,7 @@ In general, the most balanced models are $S^3$, Clustering models with `centroid | **[AutoEncodingTopicModel](ctm.md)** | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | | **[FASTopic](fastopic.md)** | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | -_Table 2: Comparison of the models based on their capabilities_ - -## API Reference +## Model API Reference :::turftopic.base.ContextualModel diff --git a/mkdocs.yml b/mkdocs.yml index 4e17ebf..160a465 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -22,7 +22,7 @@ nav: - Discourse Analysis on Morality and Religion: tutorials/religious.md - Discovering a Data-driven Political Compass: tutorials/ideologies.md - Customer Dissatisfaction Analysis: tutorials/reviews.md - - Topic Models: + - Topic Models (Overview and Performance): - Model Overview: model_overview.md - Model Leaderboard: benchmark.md - Semantic Signal Separation (S³): s3.md From 7df15cb0e4b39ca381d5a5ed1dfca9911d8c5fee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rton=20Kardos=C3=98?= Date: Wed, 3 Dec 2025 14:24:34 +0100 Subject: [PATCH 7/7] Version bump --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 8bfe462..0f6d837 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,7 @@ profile = "black" [project] name = "turftopic" -version = "0.22.0" +version = "0.23.0" description = "Topic modeling with contextual representations from sentence transformers." authors = [ { name = "Márton Kardos ", email = "martonkardos@cas.au.dk" }