1 引言
关键词生成是自然语言处理和双语教学中重要的一个环节。目前我们对词汇的处理有两个不同的方向。一个方向是从段落中按照textrank抽取出关键词 (<关键词提取---PyTextRank和Spacy的工作原理>,<PyTextRank---文本关键字(keywords)的自动取出>), 【PyTextRank更新到最新版V3.2.1】取出的关键词与原文中出现的词汇完全相同; 另一个方向是基于语义相关的关键词获取(语义相似模型(Doc2Vec)在双语教学中的应用, Doc2Vec Model---段落相似性查询)。这种方法通过对语料库的训练,寻找与关键词语义相关的词语,其结果的好坏取决于许多因素,包括算法,预料库的大小和质量,参数设置等。这篇文章探讨了一些因素对结果的影响。
2 数据集
现代自然语言处理都使用了大规模开放的预训练集,如Gensim, Spacy, Transformers, PyTorch, Tensorflow等,而我们为了保持本专业高度的集成性,采用了封闭的GeotechSet数据集,这个数据集只包括岩土工程领域的数据,GeotechSet是一个动态的数据集,由于不断完善数据质量和增加新的数据,因此产生的结果随着时间在不断变化。
3 训练时间
数据量越大,参数设置越精细,模型的训练时间越长。目前GeotechSet的数据集为148M, 与所有其他预训练模型相比,这个数据量还是很小的,但即便如此,训练时间仍然用了42分钟。训练的机器配置CPU Inter(R) Core i7-10700 CPU @2.9GHz,16核,内存32G。
import multiprocessing
cores = multiprocessing.cpu_count()
模型参数如下:
model =
Doc2Vec(
dm=0, dbow_words=1,
vector_size=200,
window=8,
min_count=10,
epochs=20,
workers=cores)
epochs显著地影响了训练时间,大多数的出版物使用10~20, 当设置epochs=20时,训练时间变为25分钟;当设置epochs=10时,训练时间变为16分钟。下面以关键词UDEC为例,比较epochs为20和10时的结果。
从上图可以看出,当epoches=20时,能够产生出一些UDEC的细节,例如cell_space和config_cell (Cell Space Detection---UDEC的单元映射算法), 但代价是训练时间过长,不过epoches=10时的效果也不算太差。如果继续降低epoches的数目,例如epoches=5, 训练时间变为12分钟。现在检查结果,与UDEC语义相关的词汇变为:
universal_distinct_element_code
udec_manual
flac3d
udec_model
joint_generator
solve_fos
itasca_consulting_group
由此可以看出,随着epoches数目的增加,语义相关的词汇逐渐由宏观到微观。设置epoches值在很大程度上取决于我们要达到的目的。
4 矢量尺寸
在过去的训练中一直取vector_size=200。下面检查vector_size=100时的结果,同时取epoches=5,运行时间仍然为12分钟,可见vector_size值不会显著影响训练时间。再检查与UDEC语义相关的词汇:
universal_distinct_element_code
udec_model
itasca_consulting_group_inc
udec_manual
fictitious_joints
phase2
这个结果与上面的结果相比较,发现内容差不多。可见vector_size这个值取100或200对于我们的数据集影响不多。
5 语义相关结果
下面列出vector_size=100,epochs=5 这个最小模型运行后其他词汇语义相关的结果,与<语义相似模型(Doc2Vec)在双语教学中的应用>得出的结果比较,可以发现这些结果非常有趣。
(1) Slope
rock_body / stability_slope / high_steep_rock_slope / slope_angle / rainfall / slope_failure / top_slope / body_improve_slope_stability /
(2) Stability
implications_groundwater_behaviour / geomechanics_rock_slope / instability / evaluating_stability / stability_analysis / global_stability / improve_long_term / long_term_stability / study_stability_problems / slope_stability /
(3) Discrete
discretizing / interconnected / composed_multiple / hexahedral / dfn_epm / intersecting_joint / granular_materials_presented / voronoi_tessellations
(4) fracture
fracture_network / fracture_aperture / fracture_length / fracture_geometry / discontinuity / natural_fractures / fracture_opening
(5) Network
flow_pipe / pipe_network / connectivity / flow_network / introduction_discrete_fracture / joint_networks / stimulated / lattice / shale_gas_flow /
6 结束语
尽管模型算法基于严格的数学定义,但模型训练在很大程度上是一门艺术而不是科学,调参是模型训练时必要步骤,会占用大量时间。通过不断调参来最大化实现我们所期望的目标,用最小的时间达到最优的效果。在目前的训练中,取vector_size=200,epochs=5是比较合适的选择。