The invention discloses a code segment recommendation method based on deep semantic mining, which takes advantage of the role of deep learning technology in natural language processing and its advantages in natural language semantic mining, and combines the characteristics of query code segment recommendation. According to the input natural language search and the code segment itself and the annotations it contains, we can mine the natural language semantics and the specific functions of the code segment in depth, generate sentence vectors and paragraph vectors, so that the semantically consistent code segments and natural language queries are mapped to similar vector spaces, and recommend the best matching for a given query. The N code segment with high similarity and high order is arranged from high to low. This method not only improves the accuracy of recommendation, but also improves the recall rate of recommendation, and has a good fault-tolerant ability for inputted natural language queries.
【技术实现步骤摘要】
一种基于深度语义挖掘的代码段推荐方法
本专利技术属于有查询的代码推荐的
,具体指代一种基于深度语义挖掘的代码段推荐方法。
技术介绍
在实际的代码编写过程中,开发人员经常会遇到不熟悉的编程任务或者需要实现某些特定的功能,在这样的情况下,开发人员如果能找到已有的类似代码段来学习其使用方法或者是直接复制粘贴然后进行修改完善来进行代码复用,这样一来能够给开发人员节省大量时间、精力以及无意义的重复工作;然而,如何基于开发者实际需求推荐高质量的代码段则是软件复用的重要问题。在实际开发过程中,开发者通常会选择使用搜索引擎来查询需要的代码段。但是由于软件代码具有整体性,代码段中的关键词并不能准确的描述一段代码的功能,所以查询结果通常不能尽如人意。另外,已有的推荐方法通常仅关注代码段本身而忽视其描述信息,而代码段的描述信息最简单直观的用自然语言描述了该代码段的功能。近年来,由于深度学习的广泛应用,语言处理领域也取得了突破性进展,使得对自然语言和编程语言进行深度语义和信息挖掘也能取得很好的效果。所以,将语言处理技术与代码推荐相结合是一种新型有效的推荐方法。
技术实现思路
针对于上述现有技术的不足,本专利技术的目的在于提供一种基于深度语义挖掘的代码段推荐方法,使用深度学习技术支持面向自然语言查询的代码段推荐;本专利技术能够根据用户的自然语言搜索和代码段自身所带的注释及代码段本体,深度挖掘自然语言语义和代码段具体功能,使得语义属性一致的带注释代码段和自然语言查询因此被映射到相似的向量空间,为给定的查询推荐最匹配的代码段。为达到上述目的,本专利技术采用的技术方案如下:本专利技术的 ...
【技术保护点】
1.一种基于深度语义挖掘的代码段推荐方法,其特征在于,包括如下步骤:步骤1):构造大规模的带方法描述信息的代码段集S;步骤2):构造方法描述信息集D1和方法主体集D2,构造注释集合D1’,并利用构造好的数据集训练Encoder‑Decoder自然语言句向量生成器模型M1,训练Encoder‑Decoder编程语言段落向量生成器模型M2;步骤3):抽取代码段集S中每个代码段的方法名称Name,并和该代码段映射后向量表示α’构成键值对形式
【技术特征摘要】
1.一种基于深度语义挖掘的代码段推荐方法,其特征在于,包括如下步骤:步骤1):构造大规模的带方法描述信息的代码段集S;步骤2):构造方法描述信息集D1和方法主体集D2,构造注释集合D1’,并利用构造好的数据集训练Encoder-Decoder自然语言句向量生成器模型M1,训练Encoder-Decoder编程语言段落向量生成器模型M2;步骤3):抽取代码段集S中每个代码段的方法名称Name,并和该代码段映射后向量表示α’构成键值对形式<Name,α’>,作为推荐时所用的索引文件;步骤4):对一个给定的自然语言查询,得到其对应的自然语言句向量,然后在带方法描述信息的代码段集S中对每个查询推荐最匹配的N个排好序的代码段。2.根据权利要求1所述的基于深度语义挖掘的代码段推荐方法,其特征在于,所述步骤1)具体包括:从开源软件平台获取具体项目,对具体项目中源代码文件按方法为单位进行切割,得到带方法描述信息的代码段集S,每个代码段的名称形式为包名&类名&方法名。3.根据权利要求2所述的基于深度语义挖掘的代码段推荐方法,其特征在于,所述步骤1)具体还包括:所述具体项目为Java项目或Android项目。4.根据权利要求1所述的基于深度语义挖掘的代码段推荐方法,其特征在于,所述步骤2)具体包括:21)以方法描述信息集D1...
【专利技术属性】
技术研发人员:陶传奇,包盼盼,黄志球,周宇,王铁鑫,
申请(专利权)人:南京航空航天大学,
类型:发明
国别省市:江苏,32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。