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