You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取BERTopic中model.visualize_topics()的文档坐标及源码?

解决BERTopic可视化中文档坐标获取与保存问题

1. 定位真正生成坐标的源码

你贴出的model.visualize_topics()只是外层封装函数,实际可视化逻辑和坐标计算都在plotting.visualize_topics()中。可以通过两种方式查看完整源码:

  • 本地安装环境中,找到BERTopic安装目录下的plotting/_topics.py文件,打开即可看到visualize_topics的完整实现,包含坐标生成、数据组装的全部代码。
  • 在Python中直接打印函数源码:
    from bertopic import plotting
    import inspect
    print(inspect.getsource(plotting.visualize_topics))
    

2. 获取并保存文档坐标的两种方法

方式一:从生成的Plotly Figure中提取

生成可视化图表后,直接从返回的Figure对象里提取文档坐标数据:

fig = model.visualize_topics()
# 提取文档散点的原始数据(图表中的文档点对应fig.data[0])
doc_scatter_data = fig.data[0]
# 获取x、y坐标
doc_x = doc_scatter_data.x
doc_y = doc_scatter_data.y
# 获取每个点对应的主题标签
doc_topic_labels = doc_scatter_data.customdata[:, 0]
# 保存坐标到CSV用于后续分析
import pandas as pd
pd.DataFrame({
    "x": doc_x,
    "y": doc_y,
    "topic": doc_topic_labels
}).to_csv("document_coordinates.csv", index=False)

方式二:直接调用底层降维逻辑获取

可视化中的坐标来自UMAP(或你指定的其他降维模型)对文档嵌入的转换,可直接跳过可视化步骤获取原始坐标:

# 获取文档的嵌入向量
doc_embeddings = model.embeddings_
# 获取训练好的降维模型(默认是UMAP)
dim_reduction_model = model.umap_model
# 计算文档坐标
doc_coordinates = dim_reduction_model.transform(doc_embeddings)
# 保存坐标,doc_coordinates是(n_docs, 2)的数组,第一列x、第二列y
pd.DataFrame(doc_coordinates, columns=["x", "y"]).to_csv("doc_coordinates_raw.csv", index=False)

注意:如果可视化时指定了topics或top_n_topics过滤主题,需要对应过滤坐标数据,确保和可视化展示的文档一致

内容的提问来源于stack exchange,提问作者selen arslan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 18:31:11