[发明专利]一种基于Transformer的代码编程语言分类方法在审
申请号: | 202110430772.9 | 申请日: | 2021-04-21 |
公开(公告)号: | CN113139054A | 公开(公告)日: | 2021-07-20 |
发明(设计)人: | 于池;陈翔;周彦琳;杨光;刘珂 | 申请(专利权)人: | 南通大学 |
主分类号: | G06F16/35 | 分类号: | G06F16/35;G06F40/30;G06F40/289;G06N3/04;G06N3/08 |
代理公司: | 南京经纬专利商标代理有限公司 32200 | 代理人: | 朱小兵 |
地址: | 226019 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 transformer 代码 编程 语言 分类 方法 | ||
1.一种基于Transformer的代码编程语言分类方法,其特征在于,包括以下步骤:
(1)、搜集来自Stack Overflow中问答帖子的内容,从帖子中获取代码片段以及代码的编程语言类型的标记,对收集的数据进行清洗、过滤,得到数据集D,将数据集D中的数据格式设定为代码,编程语言类型标签;
(2)、对数据集D中的代码片段进行分词处理;
(3)、将分词输入嵌入层得到分词的特征向量X;
(4)、基于上述所建的数据集,通过数据集D中划分的训练集数据对基于Transformer的预训练模型进行训练微调,预训练模型使用Transformer的编码器作为语义学习算法的主要框架,可以捕捉真实意义上的双向上下文信息,具体包括如下步骤:
(4-1)、嵌入层中学习到的特征向量X输入到预训练模型中的双向编码器中进行语义学习,具体包括如下步骤:
(4-1-1)、将特征向量输入到多头注意力层中,接着通过残差连接和归一化层,使得矩阵运算维度一致;
(4-1-2)、通过前馈神经网络层,使用残差连接和归一化层生成语义向量Y;
(4-2)、语义学习得到的语义向量Y通过线性层映射到数据集中的编程语言类型标签上,通过softmax函数得到最终分类的编程语言类型。
2.根据权利要求1所述的基于Transformer的代码编程语言分类方法,其特征在于,所述步骤(2)中对代码片段分词使用BPE算法,将数据集的代码片段当作文本进行分词,将代码片段中的单词和符号拆分为字符序列,并在末尾添加后缀“/w”,避免了训练集中出现更多的“[UNK]”符号,BPE算法对代码片段分词可以有效解决在使用测试集测试模型时出现的OOV(Out-Of-Vocabulary)问题。
3.根据权利要求1或2所述的基于Transformer的代码编程语言分类方法,其特征在于,所述步骤(3)中的分词的嵌入得到特征向量,具体内容为以下步骤:
(3-1)通过分词的位置嵌入(PositionEmbedding)将分词的位置信息编码成特征向量,本发明将模型中的位置编码类型设置为“absolute”,即表示为position_embedding_type:absolute,模型根据分词的绝对位置信息作为编码依据,从而使得位置编码会在词向量中加入单词的位置信息;
(3-2)通过分段嵌入(Segment Embedding)来区分两个句子之间的关系;
(3-3)最后通过令牌嵌入(Token Embedding)后将词映射成向量,将三个学习的向量相叠加得到最终代码片段的特征向量X,即表示为:X=Position Embedding+SegmentEmbedding+Token Embedding。
4.根据权利要求1-3任一项所述的基于Transformer的代码编程语言分类方法,其特征在于,所述步骤(4)中的基于Transformer的预训练模型为RoBERTa模型,使用RoBERTa预训练模型作为编码器将分词映射到高维的向量空间。
5.根据权利要求4所述的基于Transformer的代码编程语言分类方法,其特征在于,所述步骤(4)具体包括如下步骤:
(1)特征向量进入多头注意力层中,然后采用残差连接和归一化层,使得矩阵运算的维度一致,并将网络中的隐藏层归一化为标准正态分布,从而加快了模型的训练速度和收敛速度;
(2)所述RoBERTa预训练模型的参数设置如下:
所述RoBERTa预训练模型的词向量维度设置为768;
所述RoBERTa预训练模型的编码器-解码器设置为12层;
所述RoBERTa预训练模型的注意力机制的Dropout设置为为0.1;
所述RoBERTa预训练模型的最大位置编码设置为514;
所述RoBERTa预训练模型的隐藏层激活函数为gelu函数;
所述RoBERTa预训练模型的隐藏层Dropout设置为0.1;
所述RoBERTa预训练模型的隐藏层神经元数设置为768;
所述RoBERTa预训练模型的编码器中间的隐层神经元数设置为3072;
所述RoBERTa预训练模型的词表大小为50265。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南通大学,未经南通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110430772.9/1.html,转载请声明来源钻瓜专利网。
- 基于Transformer+LSTM神经网络模型的商品销量预测方法及装置
- 一种基于Transformer模型自然场景文字识别方法
- 一种深度Transformer级联神经网络模型压缩算法
- 点云分割方法、系统、介质、计算机设备、终端及应用
- 基于Transformer的中文智能对话方法
- 一种基于改进Transformer模型的飞行器故障诊断方法和系统
- 一种基于Transformer模型的机器翻译模型优化方法
- 基于Transformer和增强交互型MPNN神经网络的小分子表示学习方法
- 基于U-Transformer多层次特征重构的异常检测方法及系统
- 基于EfficientDet和Transformer的航空图像中的飞机检测方法