CN116225525A - 一种结合用户反馈和深度学习的代码补全方法 - Google Patents
一种结合用户反馈和深度学习的代码补全方法 Download PDFInfo
- Publication number
- CN116225525A CN116225525A CN202310237978.9A CN202310237978A CN116225525A CN 116225525 A CN116225525 A CN 116225525A CN 202310237978 A CN202310237978 A CN 202310237978A CN 116225525 A CN116225525 A CN 116225525A
- Authority
- CN
- China
- Prior art keywords
- code
- model
- list
- feedback
- user
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/72—Code refactoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/049—Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Machine Translation (AREA)
Abstract
本发明属于智能化软件开发领域,公开了一种结合用户反馈和深度学习的代码补全方法。包括步骤如下:使用代码补全模型CodeGRU,生成初始推荐列表;使用通过反馈库中的历史数据实时训练的深度神经网络模型LSTM,生成另一个推荐列表;将两个列表按模型输出的概率降序合并;将待补全代码段和合并列表中的推荐项,分别拼接输入到用反馈库中的历史数据实时微调的预训练模型Bert中;通过模型输出的分类结果对合并列表进行重新排序并返回给用户,实现代码补全,同时将用户的选择记录在反馈库中。本发明从用户反馈的角度,通过深度学习模型LSTM和Bert,将用户反馈信息有效地集成到代码补全任务中,从而构建了一个更加精准的代码补全系统。
Description
技术领域
本发明属于智能化软件开发领域,具体涉及一种结合用户反馈和深度学习的代码补全方法。
背景技术
当今的软件生态正在发生着持续、深刻的变革,软件的规模及数量也在以惊人的速度日益膨胀和扩张,而在软件开发过程中,为了提高开发效率,开发人员往往会使用集成开发环境中的代码补全功能,此时便需要一个精准而高效的代码补全系统。
代码补全通常从代码搜索开始。当面临编程问题时,开发人员通常会向互联网寻求帮助。事实上,谷歌最近进行的一项案例研究证实,开发人员非常频繁地搜索代码。此类别的工作通常利用开源项目的代码,有时会用各种软件工件来提高补全的准确度。例子包括Strathcona,Portfolio,SENSORY以及Aroma。Strathcona通过比较代码存储库中的结构相似性,为开发人员推荐代码示例;Portfol io主要结合NLP、PageRank和扩展激活网络算法,以找到与用户最相关的代码;SENSORY考虑语句序列信息,并使用BurrowsWheelerTransform算法在代码存储库中搜索,然后根据结构信息对结果进行重新排序;Aroma将部分代码片段作为查询,并返回一组代码片段作为建议。上述方法主要依靠代码信息来补全代码。
另一种重要的实现方法主要基于深度学习相关技术。White等人根据实证研究证明,相对简单的RNN模型在某些软件工程任务(如代码补全)中的表现可以优于n-gram模型。Raychev等人结合3-gram和RNN模型来合成代码片段,该片段可以完成方法调用,包括调用参数。Hussain等人提出了一种新的源代码建模方法,该方法可以通过利用token类型信息捕获源代码上下文,除此之外,还提出了一种可以学习源代码可变大小上下文的新方法。
这些基于搜索的代码补全相关研究工作以及基于上下文分析和深度神经网络技术进行生成的代码补全相关研究工作,它们补全结果的精确度和范围皆有限。如果在代码补全中引入人工智能领域中的反馈机制,便可以使用户与补全系统进行交互成为可能。
在代码补全中,反馈信息可以揭示,例如用户的编程习惯。此外,在许多情况下,用户的反馈信息在一定程度上反映了补全的正确答案,并且在将来处理类似的补全和提高代码补全程序的性能方面将发挥重要作用。这突出了用户反馈在代码补全系统中的作用,可能比传统的推荐系统更明显。
所以,在当今信息化、开源化的大数据时代背景下,如何将用户反馈信息有效地集成至代码补全任务中,构建更加精准的代码补全系统,从而进一步提升软件生产力,减少时间开销,成为一个非常具有现实意义的问题。
发明内容
本发明的目的在于提出一种结合用户反馈和深度学习的代码补全方法,通过深度学习模型,将用户反馈信息有效地集成至代码补全任务中,从而构建更加精准的代码补全系统,进一步提升软件生产力,减少时间开销。
本发明为了实现上述目的,采用如下技术方案:
结合用户反馈和深度学习的代码补全方法,包括步骤如下:
步骤1.使用代码补全模型CodeGRU,对待补全代码段生成初始代码推荐列表;同时使用通过反馈库中的历史数据实时训练的深度神经网络模型LSTM对待补全代码段生成另一个代码推荐列表;
步骤2.将两个代码推荐列表按照模型输出的概率值进行降序合并,生成合并列表;
步骤3.将待补全代码段和合并列表中的每个推荐项分别拼接,输入到通过反馈库中的历史数据实时微调的预训练模型Bert;经过微调后的预训练模型,能够根据它的两个输入的相似程度或匹配程度进行分类,根据分类结果对合并列表进行重排序,并将重排序后的列表返回给用户,从而完成代码补全。
步骤4.根据用户的最终选择,将此次代码补全的结果记录在反馈库中。
本发明具有如下优点:
如上所述,本发明述及了一种结合用户反馈和深度学习的代码补全方法,该代码补全方法通过使用深度学习模型,有效地将用户反馈信息集成至代码补全任务中,从而构建了一个更加精准的代码补全系统;此外,本发明方法通过选用预训练模型Bert,使得模型能够在训练数据较少的情况下,也能有很好的效果,并且提高运行效率,进而保证了软件质量以及软件的可追溯性,降低了软件维护成本。本发明使得用户在代码补全任务中与补全系统交互成为可能,大大地提高了补全结果的精确度和范围,提升了软件生产力,减少了时间开销。
附图说明
图1为结合用户反馈和深度学习的代码补全方法框架的原理示意图。
具体实施方式
为了便于本领域技术人员的理解,下面结合实例与附图对本发明作进一步的说明:
参照图1所示,本发明提供一种结合用户反馈和深度学习的代码补全方法,包括步骤如下:
步骤1.使用代码补全模型CodeGRU,对待补全代码段生成初始代码推荐列表;同时使用通过反馈库中的历史数据实时训练的深度神经网络模型LSTM对待补全代码段生成另一个代码推荐列表;
步骤2.将两个代码推荐列表按照模型输出的概率值进行降序合并,生成合并列表;
步骤3.将待补全代码段和合并列表中的每个推荐项分别拼接,输入到通过反馈库中的历史数据实时微调的预训练模型Bert;经过微调后的预训练模型,能够根据它的两个输入的相似程度或匹配程度进行分类,根据分类结果对合并列表进行重排序,并将重排序后的列表返回给用户,从而完成代码补全。
步骤4.根据用户的最终选择,将此次代码补全的结果记录在反馈库中。
所述步骤1具体包括:
步骤1.1.使用代码补全模型CodeGRU,对待补全代码段生成初始代码推荐列表L1,包含15个推荐项,同时也得到了模型输出的对应每个推荐项的概率值;
步骤1.2.选用LSTM模型作为深度神经网络模型;
步骤1.3.使用反馈库中的历史数据实时训练LSTM模型;
步骤1.4.将待补全代码段输入到训练好的LSTM模型中,会得到到多个推荐项以及对应的概率值,按概率从大到小排序,得到同样含有15个推荐项的另一个代码推荐列表L2。
所述步骤2具体包括:
步骤2.1.同时遍历L1、L2两个列表,按各自列表中每个推荐项对应的概率值,进行降序合并;
步骤2.2.当合并列表的推荐项数目达到15个时,合并结束。
所述步骤3具体包括:
步骤3.1.选用目前在自然语言处理(Natural Language Processing,NLP)领域具有出色表现的Bert模型作为预训练模型,该模型使用基于多层Transformer的神经架构构建而成,在大量自然语言上进行训练得到预训练模型,能够有效地捕捉到句子对之间的语义连接;
步骤3.2.使用反馈库中的历史数据对Bert进行实时微调;
步骤3.3.将待补全代码段和合并列表中的每个推荐项,进行两两拼接,作为Bert的输入,经过微调后的Bert能根据两个输入的相似程度或匹配程度得到对应的CLS聚合向量以表征输入之间的关系;
步骤3.4.将合并列表中每个推荐项对应的CLS聚合向量输入到全连接层进行分类,通过Softmax激活函数完成二分类;其中Softmax激活函数的计算公式如下:
其中xi为神经网络中第i个节点的输出值,C为分类类别数量,此处为二分类,C=2;
步骤3.5.根据分类结果,对合并列表进行重排序:将分类结果为1的推荐项在保持相对顺序不变的前提下移到分类结果为0的推荐项之前,并将重排序后的合并列表返回给用户。
所述步骤4具体包括记录下此次代码补全流程中的待补全代码段、中间生成的合并列表、最终返回给用户的重排序列表、用户最终选择的推荐项等等信息,将这些数据存储在反馈库中,为下一次LSTM模型和Bert模型的训练提供更多的信息。
本发明通过深度学习模型,将用户反馈信息有效地集成至代码补全任务中,从而构建了更加精准的代码补全系统,进一步提升了软件生产力,减少了时间开销。
本发明具体应用途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进,这些改进也应视为本发明的保护范围。
Claims (5)
1.结合用户反馈和深度学习的代码补全方法,其特征在于,包括如下步骤:
步骤1.使用代码补全模型CodeGRU,对待补全代码段生成初始代码推荐列表;同时使用通过反馈库中的历史数据实时训练的深度神经网络模型LSTM对待补全代码段生成另一个代码推荐列表;
步骤2.将两个代码推荐列表按照模型输出的概率值进行降序合并,生成合并列表;
步骤3.将待补全代码段和合并列表中的每个推荐项分别拼接,输入到通过反馈库中的历史数据实时微调的预训练模型Bert;经过微调后的预训练模型,能够根据它的两个输入的相似程度或匹配程度进行分类,根据分类结果对合并列表进行重排序,并将重排序后的列表返回给用户,从而完成代码补全。
步骤4.根据用户的最终选择,将此次代码补全的结果记录在反馈库中。
2.根据权利要求1所述的结合用户反馈和深度学习的代码补全方法,其特征在于,所属步骤1具体为:
步骤1.1.使用代码补全模型CodeGRU,对待补全代码段生成初始代码推荐列表L1,包含15个推荐项,同时也得到了模型输出的对应每个推荐项的概率值;
步骤1.2.选用LSTM模型作为深度神经网络模型;
步骤1.3.使用反馈库中的历史数据实时训练LSTM模型;
步骤1.4.将待补全代码段输入到训练好的LSTM模型中,会得到到多个推荐项以及对应的概率值,按概率从大到小排序,得到同样含有15个推荐项的另一个代码推荐列表L2。
3.根据权利要求1所述的结合用户反馈和深度学习的代码补全方法,其特征在于,所属步骤2具体为:
步骤2.1.同时遍历L1、L2两个列表,按各自列表中每个推荐项对应的概率值,进行降序合并;
步骤2.2.当合并列表的推荐项数目达到15个时,合并结束。
4.根据权利要求1所述的结合用户反馈和深度学习的代码补全方法,其特征在于,所属步骤3具体为:
步骤3.1.选用Bert模型作为预训练模型;
步骤3.2.使用反馈库中的历史数据对Bert进行实时微调;
步骤3.3.将待补全代码段和合并列表中的每个推荐项,进行两两拼接,作为Bert的输入,经过微调后的Bert能根据两个输入的相似程度或匹配程度得到对应的CLS聚合向量以表征输入之间的关系;
步骤3.4.将合并列表中每个推荐项对应的CLS聚合向量输入到全连接层进行分类,通过Softmax激活函数完成二分类;其中Softmax激活函数的计算公式如下:
其中xi为神经网络中第i个节点的输出值,C为分类类别数量,此处为二分类,C=2;
步骤3.5.根据分类结果,对合并列表进行重排序:将分类结果为1的推荐项在保持相对顺序不变的前提下移到分类结果为0的推荐项之前,并将重排序后的合并列表返回给用户。
5.根据权利要求1所述的结合用户反馈和深度学习的代码补全方法,其特征在于,所属步骤4具体为:记录下此次代码补全流程中的待补全代码段、中间生成的合并列表、最终返回给用户的重排序列表、用户最终选择的推荐项等等信息,将这些数据存储在反馈库中,为下一次LSTM模型和Bert模型的训练提供更多的信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310237978.9A CN116225525A (zh) | 2023-03-13 | 2023-03-13 | 一种结合用户反馈和深度学习的代码补全方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310237978.9A CN116225525A (zh) | 2023-03-13 | 2023-03-13 | 一种结合用户反馈和深度学习的代码补全方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116225525A true CN116225525A (zh) | 2023-06-06 |
Family
ID=86573059
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310237978.9A Pending CN116225525A (zh) | 2023-03-13 | 2023-03-13 | 一种结合用户反馈和深度学习的代码补全方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116225525A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117573096A (zh) * | 2024-01-17 | 2024-02-20 | 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) | 一种融合抽象语法树结构信息的智能代码补全方法 |
-
2023
- 2023-03-13 CN CN202310237978.9A patent/CN116225525A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117573096A (zh) * | 2024-01-17 | 2024-02-20 | 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) | 一种融合抽象语法树结构信息的智能代码补全方法 |
CN117573096B (zh) * | 2024-01-17 | 2024-04-09 | 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) | 一种融合抽象语法树结构信息的智能代码补全方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111611361B (zh) | 抽取式机器智能阅读理解问答系统 | |
Goldberg | A primer on neural network models for natural language processing | |
CN111209738B (zh) | 一种联合文本分类的多任务命名实体识别方法 | |
CN108932342A (zh) | 一种语义匹配的方法、模型的学习方法及服务器 | |
CN110674252A (zh) | 一种面向司法领域的高精度语义搜索系统 | |
CN108170848B (zh) | 一种面向中国移动智能客服的对话场景分类方法 | |
CN112182154B (zh) | 一种利用个人词向量消除关键词歧义的个性化搜索模型 | |
CN111400461B (zh) | 智能客服问题匹配方法及装置 | |
CN108090231A (zh) | 一种基于信息熵的主题模型优化方法 | |
Wang et al. | A deep reinforcement learning based multi-step coarse to fine question answering (mscqa) system | |
CN113535897A (zh) | 一种基于句法关系和意见词分布的细粒度情感分析方法 | |
CN115203507A (zh) | 一种面向文书领域的基于预训练模型的事件抽取方法 | |
CN116225525A (zh) | 一种结合用户反馈和深度学习的代码补全方法 | |
He et al. | X-SQL: reinforce context into schema representation | |
CN106503066B (zh) | 基于人工智能的处理搜索结果方法和装置 | |
Shen et al. | Tensorized self-attention: Efficiently modeling pairwise and global dependencies together | |
CN117312500B (zh) | 一种基于ann和bert的语义检索模型建立方法 | |
Li et al. | Neural-symbolic recursive machine for systematic generalization | |
Kumar et al. | Deep learning driven natural languages text to sql query conversion: A survey | |
CN112579739A (zh) | 基于ELMo嵌入与门控自注意力机制的阅读理解方法 | |
Xia | An overview of deep learning | |
CN117271558A (zh) | 语言查询模型构建方法、查询语言获取方法及相关装置 | |
CN115828852A (zh) | 一种基于杂志的人名实体链接方法 | |
CN109815323B (zh) | 一种人机交互训练问答生成算法 | |
Shen | Deep latent-variable models for text generation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |