首页/文章/ 详情

Top2Vec (V1.0.26)主题模拟代码的改进

1年前浏览1719

1 引言

在目前的工作中,使用了三种主题模拟技术:(1) LDA(LDA Topic Modeling(主题建模): 以Rocscience 2021用户会议为例); (2) BERTopic(BERTopic(V0.9.0)主题模拟技术); 以及(3)Top2Vec(GeotechSet数据集主题模拟(Topic Modeling)主题模拟的艺术(The Art of Topic Modeling)---以Step-Path Failure为例). 第一种技术由于性能较差逐渐被淘汰,因此着重点主要放在第二种和第三种技术上,这两种技术的共同点是利用了BERT模型。本文讨论了昨天对Top2Vec-Topic-Modeling代码的一些改进以及应用时的注意事项,这些改进增强了程序的移植性,计算结果的精确性和均衡性以及后处理的便利性。


2 改进要点

2.1 自动化CPU的核心数 

尽管Torch提供了GPU的计算能力,但是在目前Top2Vec的训练过程中仍然使用的是CPU。在大规模的数值计算中都使用了多线程运算,包括FLAC3D和3DEC,参看《FLAC3D 7.0 新特性简介(P1)---速度提升》和《确定性模式(model deterministic on)》。workers用来设定训练模型时要使用的工作线程的数量,虽然我们没有定量地测试过workers数量对运行速度的影响,但总的来说,较大的数量将导致更快的训练。使用下面的代码最大化地使用CPU的core,这样在不同机器运行代码时就不必手工改写数字了。目前我的计算机CPU的核心数是16.



import multiprocessingworkers = multiprocessing.cpu_count()

2.2 同时运行多个模型 

Top2Vec(V1.0.26)不像BERTopic一样,可以任意选择预训练模型,目前它只内置了四种模型可供选择,默认的模型是Gensim的Doc2Vec, 参看 (语义相似模型(Doc2Vec)在双语教学中的应用; Doc2Vec Model---段落相似性查询)。另外三种模型是:

universal-sentence-encoder (USE)

universal-sentence-encoder-multilingual (USEM)

distiluse-base-multilingual-cased (DBMC)

USE和USEM依赖于Tensorflow,由于库冲突的原因没有安装Tensorflow;DBMC依赖于sentence-transforers模型, 因此目前只使用Doc2Vec和DBMC两个模型。Top2Vec原作者对各种模型的应用范围给出了如下建议:对于大型数据集和具有非常独特词汇的数据集,Doc2Vec可以产生更好的结果。这将从头开始训练一个Doc2Vec 模型。这种方法是不分语言的。但是多种语言不会对应起来;使用USE运行速度会很快,因为它已经包含了预训练好的高效模型,这个模型建议用于较小的数据集。对于英语或多语言模型的大型数据集,建议使用USEM模型; 对于多语言数据集和USEM未覆盖的语言,建议使用DBMC模型,不过DBMC的运行速度比DBMC的运行速度要慢很多。在目前我们自己数据集的测试中,发现DBMC得出的结果比Doc2Vec的结果好,不过Doc2Vec仍然可以得出一些DBMC没有的结果,因此把这两个模型联合在一起,同时运行。

2.3 产生bigram

默认的Top2Vec只能产生单个词汇,在实际项目中,生成bigram更有意义(使用Trigram获取文档的中心思想)。因此在代码中使用Phraser做了改进。这个改进对Doc2Vec和DBMC都适用, 代码中所有涉及词汇的部分假如有的化都以短语出现。下面的词云显示得出的结果不再是单个词汇而是短语。


from gensim.models.phrases import Phraser

本主题Top 5词汇: 

fracture rock

rock bridges

rock fall

unfractured rock

rock fall

本主题Top 5词汇: 

rock mechanics

fractured rock

unfractured rock

intact rock

jointed rock

本主题Top 5词汇: 

rock mass

fractured rock

rock mechanics

intact rock

jointed rock

2.4 Stopwords

尽管Top2Vec声称不需要进行stemming/lemmatization等分词操作,但在实际应用过程中发现在进行词汇相似性(Similar Keywords)运行时它没有去掉stopwords, 以前使用手动方法处理,这个方法既笨拙又麻烦,因此引入了cleanDoc子程序过滤无意义的stopwords,改进后的代码,例如"rock bridge"的Top 5相似词汇得出的结果如下:

fractured rock

rock bridges

unfractured rock

rock fall

rock slopes

2.5 保存成文件

由于我们同时运行Doc2Vec和DBMC两个模型(以后还要加入USE模型),代码产生出大量结果,事实上,这些结果已经产生出新的文档,因此把这些结果直接保存成文件便于进行后处理分析。

来源:计算岩土力学
后处理分析参数优化FLAC3D3DEC
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2022-11-19
最近编辑:1年前
计算岩土力学
传播岩土工程教育理念、工程分析...
获赞 147粉丝 1054文章 1776课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈