你好,Maarten,
我目前有一个用例,正在使用零样本主题建模将文档分配给已知的聚类列表。我并不真正感兴趣于在数据中找到其他未知的聚类,但我知道会有一些文档与任何内容都不匹配,我只想将它们视为离群值。
目前,零样本的工作流程是:任何与零样本主题不匹配到某个阈值的文档都会进入一个池子,然后通过标准的bertopic管道运行。这在某些情况下是有用的,但在其他情况下则不是。我遇到的问题是,如果只有少数文档不符合主题(例如4个),UMAP无法处理它并产生错误(当我试图仅可视化4个主题时,#1900中也出现了相同的错误)。
我们能否在零样本中添加一个选项来确定将哪些低于zeroshot_min_similarity
的文档引导到哪里?是引导到离群值还是重新聚类?
祝好!
3条答案
按热度按时间jtjikinw1#
感谢您的建议!
我想防止在BERTopic的初始化中添加任何参数,因为这会进一步复杂化使用该模型。尽管如此,我认为您已经可以按照以下方式实现您建议的功能:
zeroshot_min_similarity=0
设置为确保所有文档都被分配到零样本主题中。这将防止聚类。.probabilities_
)来选择仅超过您指定阈值的文档。因此,您通常会在零样本主题建模中使用的阈值。保留超过阈值的主题标签,将未超过此阈值的主题标签设置为-1。本质上,您正在创建.topics_
。4szc88ey2#
谢谢你,Maarten。
这基本上就是我现在正在做的事情,只是零样本实际上不会分配概率,所以
topic_model.probabilities_
是nan
,所以我自己重新计算零样本主题嵌入和余弦相似度。这不是什么大问题,因为它不会花费很长时间,但将最大余弦相似度保存在probabilities_
中是有意义的,因为它们基本上是一样的。如果你想要一个 PR,可能只需要一行代码就可以添加。cyej8jka3#
这基本上是我目前正在做的事情,只是zeroshot实际上没有分配概率,所以topic_model.probabilities_是nan,所以我自己重新计算zeroshot主题嵌入和余弦相似度。
你是用
.transform
来做这个吗?这样一来,你就不需要在BERTopic之外做任何事情了。这并不是什么大问题,因为它不会花费很长时间,但将最大余弦相似度保存在probabilities_中是有意义的,因为它们基本上就是一样的。如果你想要一个PR,可能只需要一行代码就可以添加。
我不确定我是否理解你的意思。你是说在零样本主题建模过程中已经计算出了概率吗?那确实应该很简单。