RPG:基于BERTopic模型的主题演化分析工具
RPG是一款基于BERTopic模型的主题演化分析工具,可自动化处理多格式文档(PDF/DOCX/Markdown),提取语义主题并追踪其演化路径。通过BERTopic深度语义建模和Word2Vec相似度计算,克服传统LDA方法的局限性,支持主题强度追踪与桑基图/折线图可视化。适用于学术研究、行业趋势分析等场景,实现从文档处理到结果展示的全流程自动化,但需优化中文支持与处理速度。开源地址:http

此时此刻:
你手头有一个研究任务,需要分析某个领域在过去20年中的主题演化。导师给了你一堆压缩包,里面是数百份PDF、DOCX文档,按年份分布在不同的文件夹中。
你开始思考:如何从这些文档中提取主题?如何追踪主题的演化路径?如何可视化展示结果?
传统的做法是什么?手动提取文本、统计关键词、计算相似度、绘制图表…
整个过程耗时耗力,而且容易出错。更关键的是,当你想要分析主题之间的语义关联时,简单的关键词匹配往往不够准确。
我相信很多人也有同样的经历。关键的问题是:如何从大量文档中自动提取主题,并追踪这些主题随时间的变化?
RPG(Research Pathways of Growth)尝试解决这个问题。
产品定位
RPG是一个基于BERTopic模型的主题演化分析工具。它通过自然语言处理和机器学习技术,实现从多源文档中提取主题、分析主题演化关系,并生成可视化图谱。
总结为一句话就是:自动化完成从文档到主题演化可视化的全流程。
为什么使用Bertopic
Bertopic基于Transformer模型(如BERT)嵌入文本,能深度理解语义和上下文,生成的主题连贯性更高,且无需预设主题数量;而LDA等传统算法依赖词袋模型和统计共现,忽略语序与深层语义,需手动调参且对短文本效果较差。
核心功能
1. 多格式文档支持
RPG支持自动解析PDF、DOCX和Markdown文档。你只需要将文档按年份命名(如2001_xxx.pdf)放入指定文件夹,它会自动识别和处理。
老实说,这个功能看起来简单,但实际上很实用。因为在实际工作中,文档格式往往不统一,能够自动处理多种格式确实能省不少事。
2. 基于BERTopic的主题建模
RPG使用BERTopic进行主题提取。相比传统的LDA模型,BERTopic能够更好地理解语义相似性,自动确定主题数量,生成更高质量的主题词。
这里涉及到一些技术细节:
from bertopic import BERTopic
from sentence_transformers import SentenceTransformer
from umap import UMAP
from hdbscan import HDBSCAN
# 文档嵌入
embedding_model = SentenceTransformer('all-MiniLM-L6-v2')
embeddings = embedding_model.encode(documents)
# 主题建模
topic_model = BERTopic(
embedding_model=embedding_model,
umap_model=UMAP(n_neighbors=15, n_components=5, min_dist=0.0),
hdbscan_model=HDBSCAN(min_cluster_size=5),
top_n_words=10,
diversity=0.7
)
# 提取主题
topics, probs = topic_model.fit_transform(documents, embeddings)
RPG在此基础上还支持种子词引导,可以更精准地提取你关注的主题。这个功能在实际使用中很有用,特别是当你对某个领域有一定了解,想要引导模型关注特定方向时。
3. Word2Vec语义相似度计算
RPG会为你的文档集训练专门的Word2Vec模型,然后计算不同阶段主题之间的语义相似度。
from gensim.models import Word2Vec
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
# 训练Word2Vec模型
model = Word2Vec(
vector_size=100,
window=5,
min_count=5,
workers=4
)
model.build_vocab(sentences)
model.train(sentences, total_examples=len(sentences), epochs=10)
# 计算主题相似度
topic1_vector = np.mean([model.wv[word] for word in topic1_words], axis=0)
topic2_vector = np.mean([model.wv[word] for word in topic2_words], axis=0)
similarity = cosine_similarity([topic1_vector], [topic2_vector])[0][0]
这种方法比简单的词汇重叠更准确,能够捕捉语义层面的关联。不过,训练Word2Vec模型需要一定的时间,特别是文档数量较多时。
4. 主题强度演化追踪
RPG不仅识别主题,还能追踪主题的强度变化。通过计算主题在不同阶段的出现频率,生成折线图展示主题强度随时间的变化。
这个功能对于理解研究热点的转移很有帮助。你可以直观地看到哪些主题在上升,哪些在下降。
5. 可视化呈现
RPG提供了两种主要的可视化方式:
-
桑基图:展示主题在不同阶段之间的流向关系,直观呈现主题的演化路径

-
主题强度演化图:折线图展示核心主题在不同时间阶段的强度变化

桑基图的效果还不错,但节点和连线较多时可能会显得复杂。主题强度图则比较清晰,容易理解。
优点与不足
优点
- 全流程自动化:从文档读取到结果可视化,全程自动化处理,无需人工干预
- 基于先进技术:采用BERTopic和Word2Vec等NLP技术,分析结果相对准确
- 高度可配置:通过
.env文件可以灵活配置各种参数 - 结果可复用:训练好的模型可以保存和复用,避免重复训练
不足
- 处理速度:处理大量文档时,等待时间较长,特别是Word2Vec模型训练阶段
- 中文支持:当前版本主要针对英文文档优化,中文支持需要调整分词和停用词配置
适用场景
- 学术研究领域追踪:分析某个研究领域在过去多年的主题演化
- 行业趋势分析:分析某个行业的技术发展趋势
- 政策文档演化分析:分析政策文档的主题变化
小结
RPG是一个不错的主题演化分析工具,它能够自动化完成从文档到可视化的全流程。虽然在某些方面还有改进空间,但对于需要分析大量文档主题演化的场景,它确实能节省不少时间。
如果你也在做类似的主题分析工作,不妨试试RPG。当然,使用前建议先准备一些测试数据,熟悉一下整个流程。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)