BERTopic 返回的主题数量少于nr_topics指定的数量,尽管有充足的数据,

3bygqnnd  于 2个月前  发布在  其他
关注(0)|答案(1)|浏览(31)

你好,@MaartenGr,

我必须承认,这对我来说是一个相当新的问题,因为以前我们的数据流似乎能够产生预期的输出。然而,最近当我将主题模型应用于我的数据和嵌入时,它只返回了少量的主题,其中绝大多数记录被分配给了主题1。
换句话说,在输入约40k篇文档和指定的nr_topics=20的情况下,它返回了-1、0和1个主题,其中大约90%的数据属于主题0。
topic_mode.get_params()的输出如下:

"calculate_probabilities": False,
    "ctfidf_model": ClassTfidfTransformer(),
    "embedding_model": None,
    "hdbscan_model": HDBSCAN(min_cluster_size=785, min_samples=560),
    "language": "multilingual",
    "low_memory": False,
    "min_topic_size": 5,
    "n_gram_range": (1, 2),
    "nr_topics": 20,
    "representation_model": None,
    "seed_topic_list": None,
    "top_n_words": 10,
    "umap_model": UMAP(
        min_dist=0.020396346954772607,
        tqdm_kwds={
            "bar_format": "{desc}: {percentage:3.0f}%| {bar} {n_fmt}/{total_fmt} [{elapsed}]",
            "desc": "Epochs completed",
            "disable": True,
        },
    ),
    "vectorizer_model": CountVectorizer(ngram_range=(1, 2), stop_words="english"),
    "verbose": False,
}

这对我来说看起来很合理。我很难理解为什么这种参数组合会返回少量/不平衡的主题,或者为什么它会返回少于指定的20个主题。
如果你能提供任何见解,我将非常感激。
许多感谢,H

r7s23pms

r7s23pms1#

很可能,这是由于您的相对较高的 min_cluster_sizemin_samples 。如果这些值过高,底层的 HDBSCAN 模型将无法创建聚类。如果只生成了几个主题,那么它也无法将它们减少到20个。降低 min_cluster_sizemin_samples 的值通常有所帮助。
此外,请注意,由于您正在使用自定义的 hdbscan_model ,因此 min_topic_size 在这里没有做任何事情。
最后,我建议您遵循 best practices guide 。有很多技巧和窍门可以帮助,包括如何设置 HDBSCAN 和 UMAP 的一般方法。

相关问题