BERTopic 请求:零样本选项,将未分配的文档分配给离群值,而不是重新聚类,

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

你好,Maarten,

我目前有一个用例,正在使用零样本主题建模将文档分配给已知的聚类列表。我并不真正感兴趣于在数据中找到其他未知的聚类,但我知道会有一些文档与任何内容都不匹配,我只想将它们视为离群值。

目前,零样本的工作流程是:任何与零样本主题不匹配到某个阈值的文档都会进入一个池子,然后通过标准的bertopic管道运行。这在某些情况下是有用的,但在其他情况下则不是。我遇到的问题是,如果只有少数文档不符合主题(例如4个),UMAP无法处理它并产生错误(当我试图仅可视化4个主题时,#1900中也出现了相同的错误)。

我们能否在零样本中添加一个选项来确定将哪些低于zeroshot_min_similarity的文档引导到哪里?是引导到离群值还是重新聚类?

祝好!

jtjikinw

jtjikinw1#

感谢您的建议!
我想防止在BERTopic的初始化中添加任何参数,因为这会进一步复杂化使用该模型。尽管如此,我认为您已经可以按照以下方式实现您建议的功能:

  1. 训练一个零样本主题模型,并将zeroshot_min_similarity=0设置为确保所有文档都被分配到零样本主题中。这将防止聚类。
  2. 使用生成的概率(.probabilities_)来选择仅超过您指定阈值的文档。因此,您通常会在零样本主题建模中使用的阈值。保留超过阈值的主题标签,将未超过此阈值的主题标签设置为-1。本质上,您正在创建.topics_
  3. 最后,使用manual BERTopic对您新创建的主题进行建模。
4szc88ey

4szc88ey2#

谢谢你,Maarten。

这基本上就是我现在正在做的事情,只是零样本实际上不会分配概率,所以 topic_model.probabilities_nan ,所以我自己重新计算零样本主题嵌入和余弦相似度。这不是什么大问题,因为它不会花费很长时间,但将最大余弦相似度保存在 probabilities_ 中是有意义的,因为它们基本上是一样的。如果你想要一个 PR,可能只需要一行代码就可以添加。

cyej8jka

cyej8jka3#

这基本上是我目前正在做的事情,只是zeroshot实际上没有分配概率,所以topic_model.probabilities_是nan,所以我自己重新计算zeroshot主题嵌入和余弦相似度。
你是用.transform来做这个吗?这样一来,你就不需要在BERTopic之外做任何事情了。
这并不是什么大问题,因为它不会花费很长时间,但将最大余弦相似度保存在probabilities_中是有意义的,因为它们基本上就是一样的。如果你想要一个PR,可能只需要一行代码就可以添加。
我不确定我是否理解你的意思。你是说在零样本主题建模过程中已经计算出了概率吗?那确实应该很简单。

相关问题