[发明专利]一种自动给代码打数据结构标签的方法有效
申请号: | 201910304797.7 | 申请日: | 2019-04-16 |
公开(公告)号: | CN110008344B | 公开(公告)日: | 2020-09-29 |
发明(设计)人: | 不公告发明人 | 申请(专利权)人: | 中森云链(成都)科技有限责任公司 |
主分类号: | G06F16/35 | 分类号: | G06F16/35;G06F16/335;G06F40/205 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 610041 四川省成都市高新*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 自动 代码 数据结构 标签 方法 | ||
本发明公开了一种自动给代码打数据结构标签的方法,属于人工智能下自然语言处理领域,该方法包括:使用词法分析器和语法分析器把代码转换成抽象语法树;再对抽象语法树进行建模,在树上使用注意力机制和残差块从下到上对每个结点进行编码,得到整棵树的编码;最后通过模型中分类器给代码打数据结构的标签。根据上述方法可以实现自动给代码打数据结构标签,减轻了人工给代码打数据结构标签的工作量。
技术领域
本发明属于人工智能下自然语言处理领域,具体是一种自动给代码打数据结构标签的方法。
背景技术
随着互联网的普及,互联网上出现了大量高质量的代码,但是很多代码没有数据结构的标签,不方便用户查询和学习,人工给海量代码打数据结构标签是不现实的,所以本发明提出自动给代码打数据结构标签的方法,解决了如何给代码自动打数据结构标签的问题,减轻了人工标注代码的工作量。
发明内容
本发明提出一种自动给代码打数据结构标签的方法。使用词法分析器和语法分析器把代码转为抽象语法树,之后对每个词进行词嵌入,在树上使用残差块和注意力机制等方法从下到上对每个结点依次编码,最终得到根结点的编码,该编码既包括所有子结点的语法和语义表达,也包括自身结点的语义表达,最后使用根结点的表达进行分类,因为一段代码有可能包含多种数据结构,所以使用多个sigmoid分类器来得到多个数据结构标签。
本发明是一种自动给代码打数据结构标签的方法,包括以下步骤:
步骤1:使用爬虫技术从网页上收集大量标注数据结构的代码。
步骤2:由于不同的代码语法不一样,需要针对不同语言使用不同的词法分析器,使用词法分析器把代码中不同类型的变量替换为对应的词,词法分析器把1、1.1等数字替换为Num;词法分析器把所有变量名替换为Name;词法分析器所有字符串替换为Str,其中词法分析器不会把语言对应的关键字替换。
步骤3:针对不同的语言使用对应的语法分析器,使用语法分析器把词法分析后的代码转为抽象语法树。
步骤4:对词法分析和语法分析后产生的词进行词嵌入,把Num、Name、根结点Module和赋值运算Assign等词进行词嵌入。
步骤5:使用同一个残差块Reb对每个结点的嵌入编码进行非线性变换得到新的语义编码。
e′=Rebq(e)=LN(W2·ReLU(W1·e)+e)
其中e为当前结点对应的嵌入编码,e∈Rembedding_size,embedding size为每个结点嵌入的维度,W1∈Rd_i×embedding_size,W2∈Rembedding_size×d_i,d_i为超参数,ReLU是ReLU激活函数,LN是层次归一化,Reb为残差块。
步骤6:在树上从下到上对非叶子结点进行编码,使用注意力机制计算当前结点下所有子结点与当前结点最相关的语义表达。
Vc=A·HT
A=softmax(score(Q,H))
其中Q为n个相同当前结点通过残差块变换后的向量叠加后的矩阵,H为当前结点下n个子结点通过残差块变换后的向量叠加后的矩阵,score函数是计算当前结点表达与每个子结点表达的相似度,相似度越高,softmax后概率越大,score函数可以通过三种方式来计算当前结点与子结点的相似度,Vc为注意力表达。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中森云链(成都)科技有限责任公司,未经中森云链(成都)科技有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910304797.7/2.html,转载请声明来源钻瓜专利网。