1 引言
BERTopic(最新版本0.9.0,8/7/2021)是一种主题建模技术(BERTopic performs topic Modeling with state-of-the-art transformer models),它利用Transformers和c-TF-IDF来创建密集的集群(clusters),使主题易于解释,同时在主题描述中保留重要的词汇。它甚至支持与LDAvis类似的可视化。
主题模拟的艺术(The Art of Topic Modeling)---以Step-Path Failure为例
GeotechSet数据集主题模拟(Topic Modeling)
LDA Topic Modeling(主题建模): 以Rocscience 2021用户会议为例
2 安装BERTopic
由于BERTopic依赖大量的库,为了避免发生冲突,建立了虚拟环境bertpoic, 使用默认安装方式: pip install bertopic; BERTopic也支持Flair嵌入,包括gensim,spacy, 同时需要安装Tensorflow, 使用pip install bertopic[all]命令可以安装全部的后台库,不过,因为Tensorflow(大约425M)的下 载 速 度太慢,所以目前没有全部安装。在默认的安装状态下,主要依赖的库:transformers(V4.9.2), torch(V1.9.0), sentence-transformers(2.0.0).
3 BERTopic的算法
总的来说,BERTopic使用了三个步骤:
(1) 嵌入文档(Embed documents)
用BERT或任何其他嵌入技术提取文档嵌入。BERTopic默认的嵌入模型是sentence-transformers,也可以使用Spacy, Flair, Gensim, USE等嵌入模型。
(2) 聚类文档(Cluster Documents)
用UMAP来降低嵌入的维度; 用HDBSCAN对减少的嵌入进行聚类,并创建语义相似的文件群。
(3) 创建主题表征(Create topic representation)
用c-TF-IDF提取和减少主题; 提高具有最大边际相关性的词汇的连贯性.
4 产生主题
为了便于比较,使用《主题模拟的艺术(The Art of Topic Modeling)---以Step-Path Failure为例》中的数据集,这是一个基于关键词step-path failure的数据集,在那篇笔记中,采用Top2Vec库进行了主题模拟,结果产生出两个非常近似的主题, 其中最核心的关键词是rockslides和fracture。
BERTopic默认的模型是paraphrase-MiniLM-L6-v2, 以前曾经使用过这个模型. 同样的数据使用BERTopic产生出如下19个主题。
0_bridges_rock_bridge_slope
1_mass_strength_srm_joint
2_steppath_verification_problem_characterisation
3_steppath_sets_park_lake
4_mechanics step path failure discontinuity_egeote...
5_stress_fracture_elfen_coalescence
6_slopes_brittle_simulation_unstable
7_brittle_fractures_fracture_slope
8_flaws_crack_cracks_coalescence
9_bridges_failure_joints_rock
10_jointed_blocks_mechanical_joint
11_strength_tests_anisotropic_dip
12_al_discontinuities_slope_rock
13_steppath_slopes_fig_visualizations
14_slope_shear_failure_structures
15_slope_brittle_displacement_pit
16_professor_modelling_brittle_fracture
17_cement_granular_particles_particle
18_rockslide_terrestrial_photogrammetry_surface
5 代表性段落
对产生的每个主题,默认情况下可以列出该主题的三个对应性文档(即数据集内的段落)。例如,0_bridges_rock_bridge_slope对应的主题词汇:
bridges, rock, bridge, slope, analysis,
stability, failure, fracture, equilibrium, slopes
三个代表性段落如下所示(略)。
6 主题聚类
相似的主题可以聚合在一起,如下图所示。
7 相似词汇
BERTopic能够在数据集内产生类似Word2Vec的相似词汇,下面试验一些例子:
(1) rock joints---rock, failure, fracture, bridge, joint, slopes, analysis
(2) toppling---discontinuities, slope, rock, mechanisms, failure, stability
(3) rockslide---terrestrial, rockfall, photogrammetry, topography,
geometry, rocky, mountains, reconstruction, debris