使用BERTopic高效地设置端到端系统,

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

你好,Maarten,

感谢你开发了这样一个模块化的主题建模设置和优秀的库!我一直在尝试使用BERTopic搭建一个系统,该系统执行以下步骤:

  1. 给定一组初始文档,训练一个BERTopic模型以获取相关主题并创建一个{topic_id: topic}Map。
  2. 给定新文档,对它们进行推理以将它们分配给现有的主题ID。
  3. 仅使用新文档进行训练,以便将它们分配给先前的主题ID并创建新的主题ID。
    我的问题如下:
  • 我有一些文档比sentence transformers接受的长度要长,我想将它们分块。我不确定如何为具有BERTopic的文档维护一个id,以便在训练/推理后我可以将多个主题和相应的主题ID与文档关联起来。
  • 在第三步中,你有关于如何训练模型的建议吗?这样我们就不需要用步骤1中使用的文档重新训练?
  • 对于上面概述的步骤,你还有其他建议吗?

翻译结果:
你好,Maarten,

感谢你开发了这样一个模块化的主题建模设置和优秀的库!我一直在尝试使用BERTopic搭建一个系统,该系统执行以下步骤:

  1. 给定一组初始文档,训练一个BERTopic模型以获取相关主题并创建一个{topic_id: topic}Map。
  2. 给定新文档,对它们进行推理以将它们分配给现有的主题ID。
  3. 仅使用新文档进行训练,以便将它们分配给先前的主题ID并创建新的主题ID。
    我的问题如下:
  • 我有一些文档比sentence transformers接受的长度要长,我想将它们分块。我不确定如何为具有BERTopic的文档维护一个id,以便在训练/推理后我可以将多个主题和相应的主题ID与文档关联起来。
  • 在第三步中,你有关于如何训练模型的建议吗?这样我们就不需要用步骤1中使用的文档重新训练?
  • 对于上面概述的步骤,你还有其他建议吗?
0ve6wy6x

0ve6wy6x1#

你好!对于迟来的回复表示歉意。
我有一些文档比句子转换器接受的长度要长,我想将它们分块。我不确定如何在使用BERTopic时为文档维护一个ID,以便在训练/推理后可以将多个主题和相应的topic_ids与文档关联起来。
主题以与输入文档相同的顺序返回。这意味着您可以自己跟踪句子的ID,然后稍后将它们分配给文档。例如,如果您将单个文档拆分为5个句子并将其传递给BERTopic,输出也将是与这5个句子完全相同的5个主题。
在步骤3中训练模型时,您是否有关于不重新使用步骤1中的文档进行训练的建议?
如果您不使用online BERTopic,您始终需要重新训练模型。您可以使用manual topic modeling来确保原始主题保持不变,并将新主题添加到模型中。
对于上面概述的步骤,您可能还有其他建议!
以下方法可能值得尝试:

  1. 给定一组初始文档,训练BERTopic模型以获取相关主题并创建一个{topic_id: topic}Map
  2. 给定新文档,对它们进行推理以将它们分配给现有的topic_ids
  3. 将新文档转换为主题并检查哪些被分配为异常值
  4. 仅使用新的异常值进行训练,以将它们分配给先前的topic_ids并创建新的topic_ids
    这意味着,而不是在所有新文档上进行训练,其中许多很可能属于原始主题之一,您首先检查哪些文档属于已经找到的主题之一。然后,您取所有异常值并在新模型上拟合它们。通过manual topic modeling获得的结果新主题可以添加到原始模型中。
    不过,我想说的是,这个问题越来越频繁地出现,因为许多用户不想使用online BERTopic变体,因为它相对于默认模型的性能有所下降。我可能会创建一个关于如何合并使用manual topic modeling的主题模型的额外页面/文档/教程。

相关问题