你好,
感谢你在BERTopic上所做的出色工作。这确实是一个改变主题分析的游戏规则。
我正在进行主题分析的研究,并想知道以下问题:是否可以通过'topic_visualize'函数提取每个呈现文档的"坐标"?我寻找这个原因是因为我想在不同的数据分析软件(如Tableau)上编辑图表。
我已经尝试通过运行'topic_model.visualize_documents(data_list).to_dict'命令提取每个主题的“X,Y”坐标,但最终的散点图与脚本生成的略有不同。
你对此有什么建议吗?
非常感谢!
6条答案
按热度按时间kmpatx3s1#
如果你想提取这些坐标,你可以使用UMAP来简单地提取2D表示,如函数本身的代码所示。像这样应该就足够了:
js5cn81o2#
你好,
再次感谢你的及时回复。我尝试了你的建议,但不幸的是,这个解决方案返回了UMAP降维的图像。
在我的案例中,我在运行UMAP(1)和HDBSCAN(2)模型后,通过设置umap_model=1和hdbscan_model=2来运行BERTopic模型。最后,'topic_model.visualize_documents(data_list)'命令返回一个显示每个文档在D1-D2轴系统上的图像,根据BERTopic分配的主题颜色进行着色。这个图像与从UMAP模型派生的图像有很大差异。我想要获取BERTopic可视化中显示的每个点的坐标/嵌入并重新创建它。
如果你需要任何进一步的细节,我很乐意分享。希望我说得足够清楚。
再次感谢你的支持!
tjvv9vkg3#
命令
topic_model.visualize_documents(data_list)
本质上在输入嵌入上运行 UMAP,如下所示:.visualize_documents
的源代码中:| | umap_model=UMAP(n_neighbors=10, n_components=2, min_dist=0.0, metric='cosine').fit(embeddings_to_reduce) |
| | embeddings_2d=umap_model.embedding_ |
在这里,
embeddings_2d
是二维空间中的 X 和 Y 点。由于在这种情况下 UMAP 没有random_state
状态,它每次都会生成不同的图。您可以通过传递自己的降维 UMAP 嵌入来防止这种情况。gpfsuwkq4#
我明白你的意思了!在第一次阅读时,我误解了一些内容。谢谢你的耐心。
最后一个问题:是否有可能使用ParametricUMAP作为降维函数,以便在“压缩”过程中了解丢失的信息?这对你有意义吗?
谢谢你,很抱歉给你带来了任何不便。
gr8qqesn5#
当然,你可以在BERTopic中使用任何符合API规范的降维算法:https://maartengr.github.io/BERTopic/getting_started/dim_reduction/dim_reduction.html
vsnjm48y6#
非常感谢您的帮助!我非常感激!