【技术实现步骤摘要】
一种自动给代码打数据结构标签的方法
本专利技术属于人工智能下自然语言处理领域,具体是一种自动给代码打数据结构标签的方法。
技术介绍
随着互联网的普及,互联网上出现了大量高质量的代码,但是很多代码没有数据结构的标签,不方便用户查询和学习,人工给海量代码打数据结构标签是不现实的,所以本专利技术提出自动给代码打数据结构标签的方法,解决了如何给代码自动打数据结构标签的问题,减轻了人工标注代码的工作量。
技术实现思路
本专利技术提出一种自动给代码打数据结构标签的方法。使用词法分析器和语法分析器把代码转为抽象语法树,之后对每个词进行词嵌入,在树上使用残差块和注意力机制等方法从下到上对每个结点依次编码,最终得到根结点的编码,该编码既包括所有子结点的语法和语义表达,也包括自身结点的语义表达,最后使用根结点的表达进行分类,因为一段代码有可能包含多种数据结构,所以使用多个sigmoid分类器来得到多个数据结构标签。本专利技术是一种自动给代码打数据结构标签的方法,包括以下步骤:步骤1:使用爬虫技术从网页上收集大量标注数据结构的代码。步骤2:由于不同的代码语法不一样,需要针对不同语言使用不同的词法分析器,使用词法分析器把代码中不同类型的变量替换为对应的词,词法分析器把1、1.1等数字替换为Num;词法分析器把所有变量名替换为Name;词法分析器所有字符串替换为Str,其中词法分析器不会把语言对应的关键字替换。步骤3:针对不同的语言使用对应的语法分析器,使用语法分析器把词法分析后的代码转为抽象语法树。步骤4:对词法分析和语法分析后产生的词进行词嵌入,把Num、Name、根结点Modul ...
【技术保护点】
1.一种自动给代码打数据结构标签的方法,其特征在于,所述方法包括:收集大量标注了数据结构的代码;使用词法分析器和语法分析器把代码转为抽象语法树;在树上使用注意力机制和残差块对结点编码,使用编码对代码打标签;训练模型以及使用训练后的模型对新的代码进行预测。
【技术特征摘要】
1.一种自动给代码打数据结构标签的方法,其特征在于,所述方法包括:收集大量标注了数据结构的代码;使用词法分析器和语法分析器把代码转为抽象语法树;在树上使用注意力机制和残差块对结点编码,使用编码对代码打标签;训练模型以及使用训练后的模型对新的代码进行预测。2.根据权利要求1所述的自动给代码打数据结构标签的方法,其特征在于,所述收集大量标注了数据结构的代码包括:从网上通过爬虫技术收集十几万的代码,其中标注了对应的数据结构,数据结构包括树、链表、队列等。3.根据权利要求1所述的自动给代码打数据结构标签的方法,其特征在于,所述使用词法分析器包括:由于不同的代码语法不一样,需要针对不同语言使用不同的词法分析器,使用词法分析器把代码中不同类型的变量替换为对应的词。4.根据权利要求1所述的自动给代码打数据结构标签的方法,其特征在于,所述使用语法分析器包括:针对不同的语言使用对应的语法分析器,使用语法分析器把词法分析后的代码转为抽象语法树。5.根据权利要求1所述的自动给代码打数据结构标签的方法,其特征在于,所述在树上使用注意力机制和残差块对结点编码包括:对词法分析和语法分析后产生的词进行词嵌入转为实值向量。在树上使用注意力机制和残差块对所有结点进行编码。6.根据权利要求1所述的自动给代码打数据结构标签的方法,其特征在于,所述使用编码对代码打标签包括:使用根结点的编码进行分类,因为代码有可能属于多个类别,所以使用多个sigmoid分类器来得到多个数据结构的标签。yi=sigmoid(W2·ReLU(W1·e′r)+b)其中e’r为根结点的语义表达,W1、W2、b为需要学习的参数,ReLU为ReLU激活函数,sigmoid为sigmoid函数。7.根据权利要求1所述的自动给代码打数据结构标签的方法,其特征在于,所述训练模型包括:使用大量标数据结构代码来训练整体模型,首先使用词法分析器对这段代码进行词法分析;使用语法分析器把词法分析后的代码转为抽象语法树;把抽象语法树中每个结点进行嵌入,也就是把结点找到对应的实维向量;使用残差块对每个结点的嵌入编码进行非线性变换得到新的语义编码;如下面公式:e′=Rebq(e)=LN(W2·ReLU(W1·e)+e)其中e为当前结点对应的嵌入编码,e∈Rembedding_size,embeddingsize为每个结点嵌入的维度,W1∈Rd_i×embedding_size,W2∈Rembedding_size×d_i,d_i为超参数,ReLU是ReLU激活函数,LN是层次归一化,Reb为残差块。在树上从下到上对非叶子结点进行编码,使用注意力机制计算当前结点下所有子结点与当前结点最相关的语义表达;Vc=A·HTA=softmax(score(Q,H))Q为n个相同当前结点通过残差块变换后的向量叠加后的矩阵,H为当前结点下n个子结点通过残差块变换后的向量叠加后的矩阵,score函数是计算当前结点表达与每个子结点表达的相似度,相似度越高,softmax后概率越大,score函数可以通过三种方式来计算当前结点与子结点的相似度,Vc为注意力表达;再把注意力向量与当前结点向量融合形成新的当前结点的向量表达,现在当前结点的向量表达既包括自己本身的...
【专利技术属性】
技术研发人员:不公告发明人,
申请(专利权)人:中森云链成都科技有限责任公司,
类型:发明
国别省市:四川,51
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。