1 引言
尽管基于Transformer的文本生成技术【开放式文本生成(Open-Ended Text Generation);GeotechSet模型的扩展和优化---集成了aitextgen】,特别是通过微调【不得已而为之---CPU下使用gpt2-large模型进行微调训练】,能够产生出高质量的文本,但需要大量的训练时间,一种变化的简单文本生成技术是使用马尔可夫链Markovify:
初始的Markovify安装在base(root)内,后来由于增加了Spacy的分词算法,Markovify改放到Spacy虚拟环境(mwu-spacy)内,上次使用的版本是V0.9.3 [Jul 17, 2021],时隔半年之后,更新到了目前的最新版本V0.9.4 [Mar 3, 2022],相应的代码是geotech-markovify-text-generation.py [\Transformers-projects\markovify]。
2 工作机理
Markovify是一个简单的、可扩展的马尔科夫链生成器,是一种简单生成句子和续写句子的方法,能够根据现有文本生成随机的半可信的句子,产生出新的文档或论文主题。马尔可夫链本质上是一个词汇接龙的游戏,把每一个单词作为key, 然后寻找与其邻接的单词作为items, 如果items中有多个单词,则随机取出一个,于是形成一个链表结构。马尔可夫链在状态空间中可以从一个状态到另一个状态随机转换,下一状态的概率分布只由当前状态决定。为了产生出合理的有意义的句子,最好使用主题突出的小型数据集作为输入文件。
这个代码目前联合使用了三种方法生成句子,除了原始的markovify.Text类外,重载了另外两个类:POSifiedText_Spacy和POSifiedText_NLTK,以此来改进markovify.Text的方法。测试显示POSifiedText_Spacy类产生句子的效果不好。
3 试验例子
产生一个小的数据集bolted rock joints,这个数据集含有3篇论文摘要和三篇参考文献。以"fully grouted"作为引号词,每种方法生成3个句子。在数据集中仅有句子"The mechanical performance of fully grouted rock bolts is essential in the stability of underground excavations in jointed rock masses."包含"fully grouted",在生成的新句子中,出现了与
"fully grouted" 紧密相关的短语,例如:
fully grouted rock bolts
axial loads
axial forces
shear displacement
existing analytical models
interfacial bond stress
bolt inclination angles
the global shear load evolution
normal forces
pretension forces
initial normal stress
stability of underground excavations in jointed rock masses
使用【关键短语和抽取式总结---pytextrank V3.2.3 [Mar 7, 2022]】的算法抽取关键短语和总结,其结果如下:
bolted rock joints
rock bolt support
dowel shear loads
peak shear stress
jointed rock masses
idealised and natural rock joints
the rock joint friction
fully grouted rock bolts
the global shear load evolution
Analytical model
shear displacement curves
constant normal load
the synthetic rock bolting system
available experimental tests
An analytical model for shear behaviour of bolted rock joints. Modelling the mechanical shear behaviors of the bolted rock joints are difficult due to the complex interactions between bolts and rock joints. The shear behaviours of rock joints with and without rock bolt support are numerically studied using the discrete element code PFC2D.