[发明专利]一种树序列化嵌入的软件代码推荐方法在审
申请号: | 202210336803.9 | 申请日: | 2022-03-31 |
公开(公告)号: | CN114647418A | 公开(公告)日: | 2022-06-21 |
发明(设计)人: | 文万志;陆晓虹;梁文栋;陈志强;宋梦婷;赵甜;支宝;胡彬 | 申请(专利权)人: | 南通大学 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F8/30;G06F8/73;G06F16/33;G06K9/62 |
代理公司: | 南通一恒专利商标代理事务所(普通合伙) 32553 | 代理人: | 梁金娟 |
地址: | 226019 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 种树 序列 嵌入 软件 代码 推荐 方法 | ||
1.一种树序列化嵌入的软件代码推荐方法,其特征在于,包括如下步骤:
S1、通过解析抽象语法树AST分别将向量化的代码和注释嵌入到向量空间中并计算相似度,建立TCDEnn模型;
S2、收集java代码,通过AST节点提取进行预处理构建训练集和测试集,用来训练和测试TCDEnn模型;
S3、收集高质量的java代码,建立代码搜索库,开发人员输入描述查询代码搜素库,对搜索代码库中的AST向量与功能描述向量计算相似度,将相似度值最高的k个代码向量返回给开发人员。
2.根据权利要求1所述的树序列化嵌入的软件代码推荐方法,其特征在于,步骤S1中的TCDEnn模型包括三部分:AST嵌入、自然语言嵌入和相似度计算,其中,
S1.1、AST嵌入:将java代码解析成AST,并遍历节点,将AST嵌入到向量空间中;
S1.2、自然语言嵌入:将代码注释中用自然语言描述的代码功能内容嵌入到向量空间中;
S1.3、相似度计算:组合使用余弦相似度和曼哈顿距离来计算AST向量和功能描述向量在表达语义上的相似性。
3.根据权利要求2所述的树序列化嵌入的软件代码推荐方法,其特征在于,步骤S1.1包括如下步骤:
S1.1.1、使用Eclipse的JDT编译器将java代码解析成可视化的AST,提取代码和注释;
S1.1.2、通过观察AST结构特征,递归遍历AST节点,将AST转化成节点序列ASTseq,假设输入序列ASTseq={b1,b2,b3,…,bn},使用GRU网络将ASTseq嵌入向量:
ht=G(ht-1,bt),t∈{1,2,...,n};
其中,G是GRU网络,bt是APIseq的词嵌入向量,ht是隐藏层状态值,最终的隐藏层状态hn代表ASTseq的模态表示,n表示输入词个数;
步骤1.1.3、通过对ASTseq各隐藏层输出做加权平均运算弥补因为将ASTseq长序列作为GRU的输入所造成的必要信息丢失的问题,权重α计算方法为:
at=softmax(hn·ht),t∈{1,2,…,n};
其中,hn是ASTseq的模态表示,ht是隐藏层状态值,αt是ht对应权重,最终得到AST的向量表示ast_repr:
4.根据权利要求3所述的树序列化嵌入的软件代码推荐方法,其特征在于,步骤S1.1.2包括如下步骤:
S1.1.2.1、将java代码解析成AST,观察节点特点;
S1.1.2.2、终端结点表示成一个二元组Ta,Va,而非终端节点表示为Ta;其中,Ta表示AST节点类型,Va表示AST节点值;
S1.1.2.3、从根节点开始,用一对括号表示树形结构,把树的根节点表示在右括号后面,递归遍历每一个子树,直到遍历完所有结点,得到含括号的节点序列,将括号去掉,根据AST序列的词汇表将这些节结点转换成数字得到ASTseq,并嵌入向量。
5.根据权利要求2所述的树序列化嵌入的软件代码推荐方法,其特征在于,步骤S1.2包括如下步骤:
S1.2.1、使用pycharm编译器对步骤S1.1得到的注释做字符串处理,提取每条注释中第一个@符号之前的、且不包括行首符号*和/的功能描述内容;
S1.2.2、将功能描述输入GRU中并求加权平均值,得到功能描述的向量表示desc_repr。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南通大学,未经南通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210336803.9/1.html,转载请声明来源钻瓜专利网。
- 上一篇:应对个性化服务定制的大数据分析方法及系统
- 下一篇:一种注液装置及注液生产线