1 引言
从文本中抽取出关键字和总结是自然语言处理NLP的一个重要应用领域。在过去,我们使用的其中一种方法是使用pytextrank库【关键词提取---PyTextRank和Spacy的工作原理;PyTextRank---文本关键字(keywords)的自动取出】。pytextrank是建立在Spacy(虚拟环境mwu-spacy)基础的库,上次使用的版本是3.2.1 [Jul 25, 2021],时隔半年之后,更新到了最新版本3.2.3 [Mar 7, 2022]。伴随着这次更新,Scipy库已经由原来的1.6.3升级到现在的1.8.0。
2 PyTextRank原理
PyTextRank是TextRank的一个Python实现,而TextRank是一种基于图的关键词和句子的提取算法, 它类似于谷歌的页面排名算法。这个库的主要用途有:(1) 关键短语提取,即从文本文件中获取排名靠前的短语; (2) 对文本文件进行提取总结(Extractive Summary), 即产生摘要; (3) 从非结构化的文本中推断出概念,使之成为更多的结构化表述, 生成有意义的核心句子。
3 代码改进
目前的计算环境为:
pytextrank V3.2.3
Spacy V3.1.1
en_core_web_trf V3.1.0
en_core_web_lg V3.1.0
程序为geotech-PyTextRank-keywords-summarization.py[\Transformers-projects\pytextranks],其工作原理是:首先聚合目录下的所有文本文件,产生出一个新的文件,然后对这个新文件进行综合分析,完成两件任务:取出关键短语以及提取总结。作为比较,目前这个代码使用了两个Spacy数据集进行分词:en_core_web_trf和en_core_web_lg,【Spacy(V3.1.1)---lg模型和trf模型的比较】因而能够产生出两个不同的结果。Spacy nlp默认的字符数是100万个,为了突破这个限制,可根据文本长度动态调整字符长度:
nlp.max_length = len(text) + 100
不过,从实际角度来看,100万字符已经是非常大的文本,太大的文本不仅运行速度慢,而且会导致其它意想不到的错误。尽可能把大的数据集分割成小的主题相似的小数据集运行。
4 实例运行
随机从GeotechSet数据集中取出一小部分数据:
bench face angle
Causes of slope failure
Caving Behaviour
Effects of sample size
joint spacing
Kimberley
open pit failure
Reliability Assessment of an Open Pit Slope on Bong Iron Ore Mine
rock bolts
secondary rock joints
slope monitoring systems
strength anisotropy
这些数据共有76127个字符,运行后产生的Top 10关键短语如下:
bedding rock slopes
rock slope physical models
sliding rock slopes
weathered rock slope
rock mass strength
secondary rock joints
rock mass conditions
reverse bedding rock slopes
actual slope failures
yielded rock mass
一个稍加改进的抽取式总结如下:
Stead and Eberhardt (2013) discussed different parameters that change the kinematics of rock slopes including the scale of rock slope, block shape, joint spacing and persistence, release surfaces, confinement,etc. Two types of toppling rock slope physical models with intermittent rock planes alone and with both rock planes and secondary rock joints are built of synthetic material, and tested in the centrifuge machine under seismic load. Figure 3 shows the influence of excavation size versus joint spacing on stability and scanlines through a set of persistent and parallel joints. Differences in joint spacing can produce large differences in the RQD value. Rock bolts are usually employed to reinforce bedding rock slopes as they are low-cost and efficient.