你好,
我使用CUML的HDBSCAN和UMAP对BERTopic模型进行了拟合。我在Huggingface上使用了microsoft/codebert-base
作为嵌入模型,如下所示:
model = pipeline("feature-extraction",
model="microsoft/codebert-base",
device=0)
topic_model = BERTopic(embedding_model=model,
umap_model=umap_model,
hdbscan_model=hdbscan_model,
calculate_probabilities=True,
)
topic_model = topic_model.fit(docs)
topic_model.save("models/codebert",
serialization="safetensors",
save_ctfidf=True)
上面的代码运行没有任何问题。以下是我加载模型的方式:
embedding_model = 'microsoft/codebert-base'
model = pipeline('feature-extraction', embedding_model)
model = HFTransformerBackend(model)
topic_model = BERTopic.load("models/codebert",
embedding_model=model)
尽管从topic_model中调用get_topic_info方法会返回一个有意义的主题列表,但当我调用find_topics时,无论输入什么词,都会返回一组几乎相同概率的主题列表。当我使用另一个Huggingface模型时也发生了同样的事情。有没有潜在的解决方法?
5条答案
按热度按时间cvxl0en21#
您似乎没有在保存和加载主题模型之间以相同的方式加载后端。您是否可以以相同的方式应用它并再次尝试?
此外,您能否展示一个关于您在使用
find_topics
时遇到的问题的例子?这将有助于理解问题。rkttyhzu2#
我尝试以相同的方式加载它,但它仍然显示相同的行为:
下面是一个尝试使用不同关键词的例子:
输出结果存在两个问题:
1-主题相似度太高(根据我对句子转换器的实验,这不应该是这样)
2-尽管主题模型内部的主题是连贯的,但返回的主题与搜索查询无关。
a6b3iqyw3#
1-主题相似度非常高(根据我对句子转换器的实验,这不应该是这样)
啊,现在我明白了!这是预期的行为,因为sentence-transformers中的模型是优化用于相似性任务的,而普通的BERT类模型则不是,通常会输出非常高的相似度分数。这也是BERTopic中使用sentence-transformers作为默认模型的原因,它们在性能上优于常规的BERT模型。可以在here找到BERTopic中使用的非常强大的模型概述。
c86crjj04#
我明白了。感谢您的指导!
我应该查看提供的链接中的"聚类"部分进行比较吗?哪个选项卡包含了适当的比较?
xoshrz7s5#
你通常会查看聚类选项卡。