BERTopic 为sbert嵌入添加GNN消息传递和特征聚合层

ttisahbt  于 5个月前  发布在  其他
关注(0)|答案(5)|浏览(67)

摘要:

消息传递和特征聚合是提高基于图的主题建模系统中主题簇质量的有效技术。消息传递通过使用矩阵指数在图的边缘上传播信息,这允许在节点之间共享信息并帮助捕捉它们之间的关系。这使得对主题簇的建模更加准确,有助于识别原始数据中可能不明显的隐藏主题。通过结合这两种技术,主题模型能够识别更连贯和有意义的主题簇,并产生更具信息性和实用性的结果,供下游分析使用。

实现

我正在使用消息传递和特征聚合来改进指令数据的表示,然后使用BERTopic来可视化数据。我注意到指令主题表示的总体改进。
示例:https://github.com/danielpatrickhug/Sentence_Kernels
开源实现:LAION-AI/Open-Assistant#1650
另一个潜在问题:聊天机器人总结的大型主题簇具有脆弱的主题标签。我想添加一个新的汇总器,该汇总器汇总不同代表性文档样本的主题摘要。我也为此编写了代码(在句子核函数中)。
我可以发起一个PR,如果你有任何建议,请告诉我! :)

kuuvgm7e

kuuvgm7e2#

抱歉回复晚了!感谢你分享这个。如果我没弄错的话,这是一种与嵌入无关的方法,可以在聚类之前捕获文档之间的关系,对吗?你能给我一个我可以尝试的最小示例吗?例如,使用20 NewsGroups数据集,没有ChatGPT标签?如果我们在一个基本的例子上评估输出,验证结果会更容易。

fivyi3re

fivyi3re3#

正确的,嵌入集合(余弦相似度作为核函数)的核(sim矩阵)A首先进行阈值处理(给定距离阈值,将连接设置为0或1,我使用SVD查看连接组件以设置阈值,但您也可以使用激活函数。)
然后,对核A进行指数化A^2,并对特征进行聚合(k-hop消息传递)以捕获文档之间的更高阶关系,从而创建节点嵌入。我曾在分子和蛋白质水平、机器人路径规划策略预测以及神经科学中看到过这种方法的研究。
我有一个使用Open Assistant数据的可靠评估脚本,但数据集尚未发布...我没有新闻组,但我可以创建一个。
我编写了一个仓库,通过遍历仓库提取的AST来生成上下文图(代码摘要、QAchains,不久还将检索文档),使用不同的聊天机器人系统提示。然后将代码和生成的内容的嵌入集合并成为一个单一的核和它们之间的消息传递。一般来说,代码嵌入和生成的内容嵌入会被聚合,从而创建丰富的节点/边缘特征。然后将聚合的特征传递到主题模型管道中。 https://github.com/danielpatrickhug/GitModel
我使用我的仓库对其身份主题树进行主题建模,就像Python在吃自己一样哈哈,对我来说,当不使用消息传递时,表示更加一致。您是否有兴趣查看使用BERTopic表示如何发生变化?

vddsk6oq

vddsk6oq4#

我也将循环的方面纳入考虑,其中产生的树被传回到系统中提示和管道再次运行。这里还有一个来自最近的羊驼模型$x_{1e0f1}x$的例子。此外,这个团队发现,使用通过消息传递的GNN层进行训练的图感知BERTs(trained with a message passed GNN layer)可以提高链接预测任务约30%。

nkkqxpd9

nkkqxpd95#

我使用我的repo对主题模型的身份主题树进行主题建模,就像Python吃自己一样哈哈。对我来说,当使用消息传递时,表示更加连贯,而不使用时则不是这样。你是否有兴趣看看使用BERTopic表示会如何变化?
是的,很高兴看到它使用最小示例如何改变表示。在上面有类似ChatGPT的表示的问题是,很难评估由此产生的模型,无论是稳定性还是直接从源代码中使用关键字的解释。如果你能创建一个带有20NewsGroups和默认管道的例子,那么更容易看到你的建议是如何单独工作的。

相关问题