[发明专利]一种基于注释语义信息的代码搜索方法有效
申请号: | 202011296561.2 | 申请日: | 2020-11-18 |
公开(公告)号: | CN112507065B | 公开(公告)日: | 2022-07-12 |
发明(设计)人: | 银正强;周尔强;曹黛;罗纪杰 | 申请(专利权)人: | 电子科技大学 |
主分类号: | G06F16/33 | 分类号: | G06F16/33;G06F16/338;G06F40/126;G06K9/62;G06N3/08 |
代理公司: | 成都东恒知盛知识产权代理事务所(特殊普通合伙) 51304 | 代理人: | 何健雄;廖祥文 |
地址: | 610000 *** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 注释 语义 信息 代码 搜索 方法 | ||
本发明涉及一种基于注释语义信息的代码搜索方法,所述搜索方法包括从收集的代码仓库中得到存储为“自然语言描述,函数代码”形式的代码样本,对代码样本进行数据处理后通过神经网络模型编码器进行编码,并对神经网络模型进行训练;通过神经网络模型编码器将代码仓库中的所有代码函数和用户的输入转化为向量形式并构建代码向量仓库,计算代码向量仓库中与用户输入转化后的向量最接近的多个代码向量,并返回对应的代码作为检索结果。本发明的优点在于:使用代码内部本身带有的注释信息作为自然语言标注,减少的需要人工标注这一工作量,可以实现大规模的数据生成。其次采用了Transformer神经网络等进行语义特征提取,解决了传统的关键词匹配需要一一对应的缺点。
技术领域
本发明涉及代码搜索技术领域,尤其涉及一种基于注释语义信息的代码搜索方法。
背景技术
在软件的开发过程中,开发人员需要花费很多时间去代码仓库中检索代码进行代码复用或者作为参考。改进代码仓库的搜索功能可以提升开发人员的开发效率,以便提升软件开发效率。
早期以及目前的代码搜索技术依旧是基于传统的信息检索技术,例如使用Luence等搜索工具。这些现有工具采用的方法是对搜索句子和代码片段进行关键字匹配,其主要方式利用倒排搜索:首先对代码片段进行分词切块,记录这些词语对应的代码片段,然后对用户输入的查询语句中的词语查询包含这些词语的代码片段,然后作为结果显示给返回给搜索者。
传统的关键词搜索方法依旧将代码视为自然语言的一种,认为代码中的关键词和用户的关键词是一致。但是实际上,代码编写人员在代码的编写上可能包含了连词、缩写或者随机命名等语法改编。因此如果用户的关键词并不能与代码中的关键词直接匹配,其结果会变得非常糟糕。此外用户的搜索语句也会更接近自然语言,往往其中添加了一些语法中的助词或者介词,使其语义的信息与代码片段并不强相关,现有的方案在搜索的时候欠缺一定程度的语义理解。
发明内容
本发明的目的在于克服现有技术的缺点,提供了一种基于注释语义信息的代码搜索方法,使用已有的代码仓库数据构建自然语言描述与代码样本,利用神经网络模型完成具备语义信息的代码搜索任务,解决了现有代码搜索方法存在的不足。
本发明的目的通过以下技术方案来实现:一种基于注释语义信息的代码搜索方法,所述搜索方法包括:
从收集的代码仓库中得到存储为“自然语言描述,函数代码”形式的代码样本,对代码样本进行数据处理后通过神经网络模型编码器进行编码,并对神经网络模型进行训练;
通过神经网络模型编码器将代码仓库中的所有代码函数和用户的输入转化为向量形式并构建代码向量仓库,计算代码向量仓库中与用户输入转化后的向量最接近的多个代码向量,并返回对应的代码作为检索结果。
进一步地,所述从收集的代码仓库中得到存储为“自然语言描述,函数代码”形式的代码样本,对代码样本进行数据处理后通过神经网络模型编码器进行编码,并对神经网络模型进行训练包括:
收集现有的代码仓库提取代码片段,将具备函数注释的函数代码作为一个样本,并存储为“自然语言描述,函数代码”形式;
清理样本数据,将代码样本中的自然语言描述,函数代码部分文本进行清理,使用移除非法字符或拆分令牌或构建新词的方法构建令牌token列表形式;
采用替换“自然语言描述,函数代码”形式中对应部分为其他样本对应部分的方法构造新的代码样本,其中,发生替换的样本为负样本,没有发生替换的样本为正样本;
使用两个Transformer神经网络模型编码器E1和E2分别对“自然语言描述,函数代码”形式的代码样本进行编码,编码为向量形式即自然描述的向量Vq和代码的向量Vc;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011296561.2/2.html,转载请声明来源钻瓜专利网。
- 信息记录介质、信息记录方法、信息记录设备、信息再现方法和信息再现设备
- 信息记录装置、信息记录方法、信息记录介质、信息复制装置和信息复制方法
- 信息记录装置、信息再现装置、信息记录方法、信息再现方法、信息记录程序、信息再现程序、以及信息记录介质
- 信息记录装置、信息再现装置、信息记录方法、信息再现方法、信息记录程序、信息再现程序、以及信息记录介质
- 信息记录设备、信息重放设备、信息记录方法、信息重放方法、以及信息记录介质
- 信息存储介质、信息记录方法、信息重放方法、信息记录设备、以及信息重放设备
- 信息存储介质、信息记录方法、信息回放方法、信息记录设备和信息回放设备
- 信息记录介质、信息记录方法、信息记录装置、信息再现方法和信息再现装置
- 信息终端,信息终端的信息呈现方法和信息呈现程序
- 信息创建、信息发送方法及信息创建、信息发送装置