当前位置:网站首页>基于Paragraph-BERT-CRF的科技论文摘要语步功能信息识别方法研究
基于Paragraph-BERT-CRF的科技论文摘要语步功能信息识别方法研究
2022-07-28 19:51:00 【米朵儿技术屋】
摘要
【目的】 致力于自动识别科技论文摘要中的语步功能信息,明确论文的研究目的、研究方法、研究结果和研究结论,有助于快速获取文献主要内容,实现智能化语义检索。【方法】 提出基于Paragraph-BERT-CRF神经网络架构的摘要语步识别模型,能够充分利用摘要文本中的篇章上下文信息,同时考虑了注意力机制和语步标签序列内部的转移关系。【结果】 基于94 456条科技论文摘要数据集进行方法实证,Paragraph-BERT-CRF的加权平均精确率为97.45%、加权平均召回率为97.44%、加权平均F1值为97.44%。通过对比CRF、BiLSTM、BiLSTM-CRF、BERT、BERT-CRF、Paragraph-BERT等模型的消融实验结果,验证了本文方法的有效性。【局限】 Paragraph-BERT-CRF模型仅使用了基础BERT-base预训练语言模型,模型参数有待进一步优化,更多预训练语言模型在语步功能信息识别中的应用有待研究。【结论】 引入注意力机制和篇章上下文信息,能有效提升模型的预测效果,达到摘要语步信息识别的功能。
关键词: 语步; 自注意力机制; 段落上下文; BERT
1 引言
语步是实现完整交际表达功能的一个修辞单位,是具有一致语言定位的切分的语篇片段[1]。在科技论文中,摘要作为对全文内容的概括性描述,提供了整个论文的核心内容。论文摘要通常需要简要说明其研究的“目的”、“方法”、“结果”、“结论”等要素,用这些具有清晰凝练的语步结构内容来反映论文的写作意图。根据是否带有明确的语步结构标签,论文摘要可以分为非结构化摘要和结构化摘要[2]。实际上大多数论文摘要为不带语步标签的非结构化形式,各个语步结构对应的内容隐性地组合在摘要全文中,读者很难快速地识别出各个语步要素。近年来,自动识别摘要或文章中的语步内容的任务得到国内外研究者的关注。对非结构化论文摘要的语步结构进行自动识别,有助于明确论文的研究目的、研究方法、研究结果和研究结论,进而快速获取文献的核心内容,便于智能化语义检索。
已有的摘要语步自动识别研究方法分为规则方法、机器学习方法和深度学习方法。规则方法虽然准确率高,但是人工编写规则的代价比较昂贵,且规则之间易起冲突。机器学习方法采用朴素贝叶斯(Naive Bayesian,NB)、隐马尔可夫(Hidden Markov Model,HMM)、支持向量机(Support Vector Machine,SVM)、条件随机场(Conditional Random Field,CRF)等分类模型,实则为特征工程,需要设计大量的特征。深度学习方法不需要设计特征,极大地改善了语步识别任务的效果。但是目前此类研究比较少,主要是LSTM(Long Short Term Memory)、Bi-LSTM-CRF(Bidirectional Long Short Term Memory Conditional Random Field)、Attention-Bi-LSTM、BERT(Bidirectional Encoder Representations from Transformers)等方法。
本文提出基于Paragraph-BERT-CRF的神经网络架构,充分利用摘要文本中的篇章上下文信息来实现语步结构内容的自动识别。主要贡献有两点:
(1)提出基于Paragraph-BERT-CRF的神经网络模型,将摘要语步功能信息识别问题当作序列标注任务,充分利用句子所处的摘要篇章段落中的上下文信息,结合BERT的注意力机制辅助当前句子的语步功能判断,提高了摘要语步自动识别的准确率;
(2)构建了94 456条高质量的中文论文摘要语料库,该语料库标注了论文的研究目的、研究方法、研究结果和研究结论等语步功能标签,能更准确地训练和测试摘要语步识别模型。
2 相关工作
摘要语步功能信息自动识别是一种有监督的文本分类任务,已有相关研究可以分为规则方法、机器学习方法和深度学习方法三种类型。
基于规则的方法主要是采用一些启发式定义的函数或组合特征,基于词频、位置等信息构建特征模板。Milward等[3]通过分析医学领域文献的摘要,提出了基于本体的科学文摘交互信息提取模型。Cross等[4]选取CABI数据库中原生动物学领域的12篇文献,对摘要的语义组织和主题结构进行分析,探索了摘要的主题、目的、方法、结果、讨论等语步内容的语义特点,其局限性在于仅研究了单一学科的特点,且数据量过小。杜圣梅等[5]利用医学领域知识和摘要内容特征分析医学科技文献的摘要,使用PIBOSO模型给出了摘要中背景、研究对象及临床特点、干预措施、结果、研究设计等特征的提取方法。郑梦悦等[6]基于知识元本体理论,对各个语步结构功能句子中的线索词、句型和位置,建立相关规则库,设计非结构化摘要语步信息抽取算法,最终生成XML文档输出。一般来说,使用基于规则的方法进行语步信息识别的精确度较高,但是这些规则往往依赖于具体语言、所属领域,难以覆盖所有语言现象,规则之间容易发生冲突,规则特征模板的设计过程十分繁琐耗时,代价很高且可移植性很低。
21世纪初,人们开始采用机器学习方法完成信息抽取[7]语步自动识别。Anthony[8]采用朴素贝叶斯算法、利用信息增益特征降维的方式开发出一种名为AntMover的摘要语步自动识别工具。然而,由于学习数据样本个数太少,特征十分稀疏,而且朴素贝叶斯算法在进行模型训练时没有考虑语步标签之间的顺序约束关系,预测准确率不稳定,该方法没有得到广泛应用。Wu等[9]提出了隐马尔可夫语步识别模型,在627个句子测试集上取得了80.54%的准确率。McKnight等[10]对Medline文献摘要构建支持向量机模型,并对摘要句子进行分类;丁良萍等[11]进一步分析了样本量、N-gram中的N取值、是否去停用词、词频加权方式等因素对支持向量机模型预测摘要语步效果的影响。Hirohata等[12]利用条件随机场构建语步识别模型,在句子层级和摘要层级上分别取得了0.955和0.688的准确率。机器学习方法大多为特征工程,需要设计大量的特征。
自2010年之后,深度学习方法开始流行,语步自动识别任务也开始采用神经网络来实施,不需要设计特征,极大地改善了序列标注任务的效果。但是目前采用深度学习进行语步识别的研究较少。沈思等[13]提出了基于Bi-LSTM-CRF模型的全字语义摘要结构功能模型,实现了字粒度上的摘要语步内容的自动识别。张智雄等[14]提出了基于注意力机制的双向LSTM模型,与传统的统计机器学习算法相比,在效果上取得了较大提升。自从Vaswani等[15]提出完全基于自注意力机制的Transformer模型以来,自然语言处理领域的众多研究取得较大进展。Transformer模型已经应用在序列标注任务上,Yan等[16]提出了TENER模型,该模型是对Transformer编码器在命名实体识别任务上的一种改进,取得了比双向LSTM模型更好的预测效果。Yu等[17]提出了一种基于BERT的掩码句子模型,成功应用于医学文献摘要的语步识别。丁龙等[18]基于医疗文献精调的EMR-BERT模型,解决了医疗领域文本实体信息识别中标注数据不足和实体边界模糊的问题。王末等[19]结合句子文中位置改进BERT模型输入,同时在句子表征输出单元之上增加多层感知机分类器,实现了语步分类任务,效果较原始BERT有一定提高。郭晨睿等[20]基于精调的SciBERT模型,给出了从英文文献中提取显性引文句和隐性引文上下文的方法。
已有的摘要语步识别研究建模时都是以单个句子为单位,采用字或词层级的信息进行模型训练,是针对单个句子进行的多分类问题,没有充分利用摘要篇章中的上下文信息。本文基于Paragraph-BERT-CRF深度学习模型,利用BERT[21]神经网络并衔接CRF[22],完成了摘要语步信息的自动识别,以整个摘要段落为单位,在模型训练过程中整合了摘要的全局语篇信息,用于辅助完成语步识别。
3 基于Paragraph-BERT-CRF的语步功能识别模型
本文将科技论文摘要语步结构自动识别问题看作是在摘要级别上按照句子进行语步标签的序列标注任务。
基于Paragraph-BERT-CRF的语步结构识别模型总体框架如图1所示。该模型由输入表示模块、Paragraph-BERT-CRF模块、后处理模块三个部分组成。该模型的输入是摘要文本。输入表示层对科技论文摘要进行分句操作,并为每个Token添加词嵌入和位置嵌入信息,得到序列的多特征融合表示;Paragraph-BERT-CRF模块基于输入表示层得到摘要段落级别的篇章上下文向量,对BERT预训练语言模型进行精调,并利用动态优化后的模型参数进行标签预测,CRF用于优化语步结构标签之间的顺序转移关系。
图1

图1 整体架构
Fig.1 The Overall Framework
3.1 输入表示模块
语步结构识别模型的输入表示如图2所示。对给定的输入摘要文本x1,x2,…,xn进行如下处理,得到原始输入X和输入层表示v,如公式(1)至公式(6)所示。
图2

图2 语步结构识别模型的输入表示
Fig.2 Input Representation of Moves Structure Recognition Model
X=[CLS]x1x2…xn[SEP]X=CLSx1x2…xn[SEP]
(1)
v1=TokenEmbedding(X)v1=TokenEmbedding(X)
(2)
v2=PositionEmbedding(X)v2=PositionEmbedding(X)
(3)
v3=SentenceSegEmbedding(X)v3=SentenceSegEmbedding(X)
(4)
v4=ParagraphSegEmbedding(X)v4=ParagraphSegEmbedding(X)
(5)
v=v1+v2+v3+v4v=v1+v2+v3+v4
(6)
其中,n表示摘要词长度,[CLS]是某个摘要文本序列的开始标记,[SEP]是摘要文本中不同句子之间的间隔标记。输入的词向量v由4个部分相加构成:标记嵌入向量v1是字向量,BERT将每个标记(Token,此处指的是“字”)转换成实值向量表示;绝对位置嵌入向量v2用于编码每个字的绝对位置;句子划分嵌入向量v3用于编码当前字属于哪个句子;段落划分嵌入向量v4用于编码当前字属于哪个摘要段落。
3.2 Paragraph-BERT-CRF模块
将经过输入表示模块得到的摘要段落中的每个Token对应的多特征融合向量作为Paragraph-BERT-CRF模块的输入,经过BERT层和CRF层的编码和计算,输出最优的语步标签预测结果,如图3所示。
图3

图3 Paragraph-BERT-CRF模块
Fig.3 Paragraph-BERT-CRF Module
在BERT层,输入表示向量v经过多层Transformer块的编码,借助自注意力机制充分学习文本内部的语义关联,并得到每个Token的上下文语义表示h,如公式(7)所示。
h=BERT(v)h=BERT(v)
(7)
其中, h∈RN×dh∈RN×d,d为BERT的隐含层维度。BERT模型参数基于预训练语言模型bert-base-chinese中训练好的参数和训练集进行精调。
针对摘要中每个Token对应的上下文语义表示h,取摘要分句中每个Token的向量表示的平均值[23],得到摘要中每个句子的特征表示Hi,每个句子的向量表示拼接后得到摘要段落级别的Paragraph融合向量表示H,如公式(8)和公式(9)所示。
Hi=Sentence([E前句语步标签;h1,h2,…,hn;E后句语步标签]),i=1,2,…,MHi=Sentence([E前句语步标签;h1,h2,…,hn;E后句语步标签]),i=1,2,…,M
(8)
H=Concat([H1,H2,…,HM])H=Concat([H1,H2,…,HM])
(9)
其中, H∈RM×dH∈RM×d,M表示摘要中的句子个数。E前句语步标签表示论文摘要中当前句子的前一个句子所对应语步标签的编码,对于摘要首句,该值是零向量;E后句语步标签表示论文摘要中当前句子的后一个句子所对应语步标签的编码,对于摘要末句,该值是零向量。
在CRF层,得到摘要段落级别的Paragraph融合向量表示H之后,针对每个时刻t,设计转移矩阵,使得约束摘要语步标签之间满足“purpose”、“method”、“result”、“conclusion”顺序依赖信息。经过发射矩阵和转移矩阵的计算修正后,获得摘要语步的概率分布Pt,如公式(10)所示。
Pt=CRF(HtWO+bo),∀t∈{ 1,2,…,N}Pt=CRF(HtWO+bo),∀t∈{1,2,…,N}
(10)
其中, WO∈Rd×KWO∈Rd×K表示全连接层的权重,为输出神经元个数, bo∈RKbo∈RK表示全连接层的偏置, Ht∈RdHt∈Rd表示H在时刻t的分量。
在得到摘要段落中每个句子对应的语步结构概率分布Pt后,通过交叉熵损失函数对模型参数进行学习,得到优化后概率最大的每个句子对应的语步功能标签,这里采用维特比(Viterbi)算法对输出进行解码。
3.3 后处理模块
基于以上模块所预测得到摘要段落中每个句子对应的Token及其上下文的语步序列标签后,在后处理模块,基于规则的方法,利用B、I、O和标点符号等得到每个摘要句子对应的语步功能结构标签,汇总后即可得到摘要段落整体的语步功能结构标签序列。
4 实验
为了验证摘要语步功能识别预测的有效性,本文采用精确率P(Precision)、召回率R(Recall)和F1值[24]进行评价,如公式(11)至公式(13)所示。
P=TPTP+FPP=TPTP+FP
(11)
R=TPTP+FNR=TPTP+FN
(12)
F1=2×P×RP+RF1=2×P×RP+R
(13)
其中,TP表示真正例,是正确识别摘要语步结构的个数;FP表示假正例,是错误识别摘要语步结构的个数;FN表示假反例,是未识别出摘要语步结构的个数。
4.1 实验数据
本文数据主要来自中国知网获取的中文期刊论文,来源期刊包括《中国医药指南》、《中国组织工程研究》、《当代医学》、《数据分析与知识发现》、《情报理论与实践》等,这些论文具备结构化摘要,包含语步要素标签,如图4所示。
图4

图4 结构式摘要文本原始数据示例
Fig.4 Example of Raw Text of Structured Abstracts
本文以94 456条论文摘要文本数据为研究对象,经统计,收集的结构化摘要文本中含有“目的”“意义”“目标”“方法”“过程”“结果”“局限”“结论”“讨论”等多个标签,其中某些标签语义相近。为方便处理,将“研究目的”“目的”“目的/意义”“目标”统一映射为“purpose”,将“研究方法”“方法”“过程”统一映射为“method”,将“研究结果”“结果”映射为“result”,将“研究结论”“结论”“结论与意义”“讨论”统一映射为“conclusion”。由于摘要中包含“背景”“局限”语步标签的论文篇数太少,因此不将“背景”“局限”这两种语步纳入识别训练范围。最终,将语步标签体系定义为集合{purpose,method,result,conclusion}。清洗后的数据集按照8:1:1的比例划分为75 564条训练集摘要段落数据、9 446条验证集摘要段落数据和9 446条测试集摘要段落数据。
利用LTP工具①(①http://ltp.ai.)对摘要文本进行句子切分,得到301 973个训练集摘要句子数据、37 751个验证集摘要句子数据和37 749个测试集摘要句子数据。
利用正则表达式提取摘要文本中每个语步所对应的内容,为每个句子添加语步标签。本文基于BIO标注体系法,将4个语步结构标签映射为9个语步结构标签,如表1所示。其中,B表示Begin,用于标记一个语步的开始;I表示Inside,用于标记这个字符在某类语步的内部;O表示Outside,意为不属于任何类型语步。对摘要文本进行中文分字处理后,在每个字符之后添加对应的语步结构标签。
表1 标签体系
Table 1 Label Systems
标签 | 含义 |
B-purpose | 目的语步开始标签 |
I-purpose | 目的语步内部标签 |
B-method | 方法语步开始标签 |
I-method | 方法语步内部标签 |
B-result | 结果语步开始标签 |
I-result | 结果语步内部标签 |
B-conclusion | 结论语步开始标签 |
I-conclusion | 结论语步内部标签 |
O | 外部标签 |
将训练集文本作为字符串加载到内存中,将字符串拆分为词元,以字为单位创建一个词汇表,从而将字符串类型的词元映射到数字索引。首先将训练集中的所有文本合并在一起,对它们的唯一词元进行统计,得到的统计结果称之为语料。然后根据每个唯一词元的出现频率,为其分配一个数字索引。很少出现的词元通常被移除,以降低词汇表的复杂性。语料库中不存在或已删除的任何词元都将映射到一个特定的未知词元“[UNK]”。为保证序列长度的一致性,为长度少于指定大小的摘要序列添加填充词元“[PAD]”,将长度过大的序列截断至指定大小。在摘要文本的开头添加序列开始词元“[CLS]”,在摘要文本中不同句子之间添加序列间隔词元“[SEP]”。
模型输入的特征融合词向量v由令牌嵌入向量、位置嵌入向量、句子切分嵌入向量和段落切分嵌入向量相加构成:BERT模型将每个字令牌转换成768维的令牌嵌入向量v1;位置嵌入向量v2用于确定输入序列中每个字令牌的绝对位置;句子切分嵌入向量v3用于判断当前字令牌所属句子,不同句子的v3表示不同;段落切分嵌入向量v4用于确定当前字令牌所属摘要段落,不同论文摘要具有不同的v4。
4.2 实验设置
实验所采用的操作系统为Ubuntu 18.04.5 LTS,GPU的CUDA版本为11.3,Python版本为3.7.4,PyTorch版本为1.8.1,TorchVision版本为0.9.1。
为实现Paragraph-BERT-CRF模型,基于PyTorch和Hugging Face Transformers①(①https://huggingface.co/bert-base-chinese.)框架进行程序设计,其中,BERT预训练语言模型使用bert-base-chinese,CRF基于pytorch-crf②(② https://pytorch-crf.readthedocs.io/en/stable.)工具。
为了更好地对比不同模型的语步功能信息识别效果,分别使用CRF、BiLSTM、BiLSTM-CRF、BERT、BERT-CRF、Paragraph-BERT作为对比模型,不含CRF的模型与包含CRF的模型除了CRF设置外,其他超参数设置相同。各个模型的超参数设置如表2-表5所示。
表2 CRF模型的超参数设置
Table 2 Hyperparameter Settings of CRF
参数 | 值 | 参数 | 值 |
algorithm | 'lbfgs' | c1 | 0.1 |
all_possible_states | False | c2 | 0.05 |
all_possible_transitions | True | max_iterations | 50 |
averaging | True | verbose | True |
表3 BiLSTM-CRF模型的超参数设置
Table 3 Hyperparameter Settings of BiLSTM-CRF
参数 | 值 | 参数 | 值 |
word_emb_dim | 300 | learning_rate | 0.0003 |
char_emb_dim | 300 | lr_decay | 0.05 |
word_seq_feature | LSTM | l2 regularization | 1e-8 |
bilstm | True | optimizer | SGD |
use_crf | True | iteration | 30 |
ave_batch_loss | True | batch_size | 50 |
表4 BERT-CRF模型的超参数设置
Table 4 Hyperparameter Settings of BERT-CRF
参数 | 值 | 参数 | 值 |
require_improvement | 1 000 | batch_size | 8 |
num_epochs | 5 | pad_size | 512 |
learning_rate | 5e-5 | use_crf | True |
表5 Paragraph-BERT-CRF模型的超参数设置
Table 5 Hyperparameter Settings of Paragraph-BERT-CRF
参数 | 值 | 参数 | 值 |
train_max_seq_length | 512 | learning_rate | 3e-5 |
eval_max_seq_length | 512 | crf_learning_rate | 1e-3 |
per_gpu_train_batch_size | 16 | num_train_epochs | 3 |
per_gpu_eval_batch_size | 16 | overwrite_output_dir | True |
4.3 实验结果
基于75 564条科技论文摘要段落训练集(301 973个句子)进行模型训练,然后使用9 446条摘要段落测试集(37 749个句子)进行测试。其中,Paragraph-BERT-CRF在测试集上的实验结果如表6所示。在不同模型上进行消融实验,分别评估各个模型在同一验证集和测试集上识别科技论文摘要语步功能信息的效果,结果如表7所示。
表6 Paragraph-BERT-CRF模型的实验结果
Table 6 Experimental Results of Paragraph-BERT-CRF
精确率P | 召回率R | F1值 | 样本数support | |
“目的”语步 | 0.982 9 | 0.982 1 | 0.982 5 | 9 446 |
“方法”语步 | 0.991 1 | 0.973 1 | 0.982 0 | 9 445 |
“结果”语步 | 0.963 9 | 0.970 1 | 0.967 0 | 9 430 |
“结论”语步 | 0.960 1 | 0.972 1 | 0.966 1 | 9 428 |
加权平均值 | 0.974 5 | 0.974 4 | 0.974 4 | 37 749 |
表7 不同模型的实验结果
Table 7 Experimental Results of Different Models
模型 | 验证集 | 测试集 | ||||
精确率P | 召回率R | F1值 | 精确率P | 召回率R | F1值 | |
CRF | 0.686 0 | 0.717 1 | 0.701 0 | 0.683 0 | 0.709 0 | 0.695 1 |
BiLSTM | 0.732 0 | 0.763 1 | 0.747 0 | 0.711 0 | 0.688 0 | 0.699 1 |
BiLSTM-CRF | 0.747 0 | 0.774 1 | 0.760 0 | 0.724 0 | 0.701 0 | 0.712 1 |
BERT | 0.960 5 | 0.960 4 | 0.960 1 | 0.959 8 | 0.960 3 | 0.960 1 |
BERT-CRF | 0.967 6 | 0.967 4 | 0.967 4 | 0.965 6 | 0.966 2 | 0.966 2 |
Paragraph-BERT | 0.973 1 | 0.972 5 | 0.972 5 | 0.971 4 | 0.971 9 | 0.971 9 |
Paragraph-BERT-CRF | 0.975 2 | 0.973 1 | 0.973 1 | 0.974 5 | 0.974 4 | 0.974 4 |
4.4 实验分析
从消融实验结果可以看出:
(1)各个模型在验证集上的表现均优于测试集,说明训练数据有噪声,存在过拟合现象,分析原因主要包括:训练数据和测试数据的所属领域有所差异;训练数据中存在大量噪音干扰;不同摘要的文本长度差异较大。
(2)与基线系统CRF模型相比,BiLSTM-CRF模型在测试集上的精确率、召回率、F1值分别提升了4.1%、-0.8%、1.7%,说明增加捕捉了双向语义依赖的BiLSTM模型可以提升预测效果。
(3)与BiLSTM-CRF模型相比,BERT-CRF模型在测试集上的精确率、召回率、F1值分别提升了24.16%、26.52%、25.41%,说明使用位置编码、自注意力机制和预训练模型可以更好地进行语步识别。
(4)与BERT-CRF模型相比,Paragraph-BERT-CRF模型在测试集上的精确率、召回率、F1值分别提升了0.89%、0.82%、0.82%,说明进一步加入摘要段落的篇章上下文语步功能结构信息可以有效提升模型预测效果。
(5)与Paragraph-BERT模型相比,Paragraph-BERT-CRF模型在测试集上的精确率、召回率、F1值分别提升了0.31%、0.25%、0.25%,说明在相同模型训练之下,加入CRF层可以得到更好的打分结果。
5 结论
本文结合BERT预训练语言模型的强大表示学习能力和CRF在序列标注上的优势,利用科技论文摘要文本中的篇章信息,实现了摘要语步功能信息识别任务,经实验验证了所提方法显著优于基线模型CRF,也优于不加段落上下文语步信息的BERT-CRF模型。和基线模型CRF相比,Paragraph-BERT-CRF模型在测试集上的精确率、召回率、F1值分别提升了29.15%、26.54%、27.93%。实验表明,基于Paragraph-BERT-CRF模型的神经网络能较好地刻画摘要文本的语步信息。
由于实验环境条件限制,本文只使用了BERT-base-chinese预训练语言模型,BERT-large、BERT-wwm、RoBERT等预训练语言模型在语步功能信息识别中的应用有待研究。本文使用平均法构建段落融合向量,未来可以尝试使用CLS法、最大值法、门控机制等其他方法来构建摘要段落上下文信息。
边栏推荐
- Adventures of little mouse: behind the scenes gags of moss 2
- 怎么理解数据网格(Data Mesh)
- ABB电磁流量计维修信号变送器维修41F/E4技术参数
- 蚂蚁集团境外站点 Seata 实践与探索
- Priced at 1.15 billion yuan, 1206 pieces of equipment were injected into the joint venture! Sk Hynix grabs the mainland wafer foundry market!
- 分页功能(板子)
- Vimtutor编辑
- Apple M1 processor details: performance and energy efficiency have doubled, and Intel Core i9 is no match!
- Kubeadm搭建kubernetes集群
- SSM use @async and create threadpooltaskexecutor thread pool
猜你喜欢

探讨:想要落地DevOps的话,只考虑好的PaaS容器平台就够了么?

怎样巧用断言+异常处理类,使代码更简洁!(荣耀典藏版)

openEuler Embedded SIG | 分布式软总线

8、 QoS queue scheduling and message discarding

quii cordova-plugin-telerik-imagepicker插件多图上传乱序

Icml2022 | timing self-monitoring video transformer

基于复杂网络的大群体应急决策专家意见与信任信息融合方法及应用

Ctfshow network lost track record (1)

中国农业工程学会农业水土工程专业委员会-第十二届-笔记

实现瀑布流效果
随机推荐
Kubedm builds kubernetes cluster
关于一些小需求,用案例方式记录
(PMIC)全、半桥驱动器CSD95481RWJ PDF 规格
LeetCode链表问题——面试题02.07.链表相交(一题一文学会链表)
Quii Cordova plugin telerik imagepicker plug-in multi image upload out of sequence
What is the purpose of database read-write separation [easy to understand]
Explain C language 12 in detail (C language series)
MySQL
基于复杂网络的大群体应急决策专家意见与信任信息融合方法及应用
顶级“Redis 笔记”, 缓存雪崩 + 击穿 + 穿透 + 集群 + 分布式锁,NB 了
LeetCode链表问题——142.环形链表II(一题一文学会链表)
酷派主动终止针对小米公司的专利侵权诉讼
Baidu search is in line with expectations, but it involves the black hat strategy of the external chain. What is the reason?
Assign a string pointer to an array [easy to understand]
移动端空余部位自动填充
Kubeadm搭建kubernetes集群
openEuler Embedded SIG | 分布式软总线
The framing efficiency of setpreviewcallbackwithbuffer will become lower
Uniapp progress bar customization
职场高薪 |「中高级测试」面试题