CN108491459A - 一种软件代码摘要自动生成模型的优化方法 - Google Patents

一种软件代码摘要自动生成模型的优化方法 Download PDF

Info

Publication number
CN108491459A
CN108491459A CN201810177982.XA CN201810177982A CN108491459A CN 108491459 A CN108491459 A CN 108491459A CN 201810177982 A CN201810177982 A CN 201810177982A CN 108491459 A CN108491459 A CN 108491459A
Authority
CN
China
Prior art keywords
code
abstract
model
generation
optimization
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.)
Granted
Application number
CN201810177982.XA
Other languages
English (en)
Other versions
CN108491459B (zh
Inventor
王涛
曾令斌
余跃
尹刚
王怀民
张迅晖
范强
於杰
李翔
张智雄
王仁敏
张倩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN201810177982.XA priority Critical patent/CN108491459B/zh
Publication of CN108491459A publication Critical patent/CN108491459A/zh
Application granted granted Critical
Publication of CN108491459B publication Critical patent/CN108491459B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Machine Translation (AREA)

Abstract

针对面对海量高质量代码摘要获取的问题,本发明提供一种软件代码摘要自动生成模型的优化方法,流程如下:1、系统利用互联网中和群体智慧所贡献的数据集,对模型训练和优化;2、从数据库中读取代码片段,判断是否已产生代码摘要,如果有,执行步骤4,否则,执行步骤3;3、系统为代码自动生成代码摘要;4、系统将代码片段和生成的代码摘要开放,开放用户对代码摘要进行改正和优化;5、系统存储改正后的代码片段和代码摘要,并从中选择质量较高代码摘要,将代码片段和选出的代码摘要加入到训练数据集中;6、是否终止优化,如果停止优化,则结束,否则转步骤1。本发明可以快速高效地生成质量较高的代码摘要。

Description

一种软件代码摘要自动生成模型的优化方法
技术领域
本发明属于开源软件领域,具体涉及一种软件代码摘要自动生成模型的优化方法,主要包含了软件代码摘要的自动化生成以及优化的方法。
背景技术
开源软件的迅猛发展为软件创新实践提供了海量的可复用资源,但是由于规模庞大、文档缺乏、质量参差不齐等问题使得如何高效定位与复用存在巨大挑战。规范的文档和丰富的语义标注是软件资源定位与复用的基础。当前,大量开源软件存在文档碎片化、质量不高甚至没有文档等问题,极大的影响了开源资源的复用。针对这一问题,如何丰富这些软件资源的标注具有极其重要的意义。
对于广泛分布于互联网的数目巨大的开源代码,如何帮助用户准确、快速的了解代码的含义,并快速便捷地学习高质量的代码成为亟待解决的问题。其中,代码摘要自动化生成方法是解决该问题的一个关键技术。
在代码摘要自动生成方法中,现有的方法可以分为三种:基于自然语言处理技术、信息检索技术和深度学习技术。有较大影响的如下:
特拉华大学的Hill在博士毕业论文中提出从源代码方法定义中抽取自然语言描述的方法,其基于驼峰命名规则,通过词性分析抽取短语摘要。萨尼奥大学的Vassallo等人提出利用社交关联的方法从各大开源社区开发者的讨论中获取代码的摘要信息。华盛顿大学的Iyer等人利用基于关注点的LSTM(Long Short-Term Memory,长短期记忆网络)深度神经网络翻译源代码片段,该方法可以避免特征提取的不准确和不全面性,同时可以生成固定的代码文本信息外的描述信息,具有较高的准确度。目前自然语言处理法生成的摘要描述信息准确度高,但内容简短、信息量小;信息检索法生成的摘要信息准确全面,但依赖其他问答平台,大量代码片段没有检索结果;深度学习方法虽然可以有效解决上述问题,但现有方法在处理长代码片段上效果并不理想。
上述方法不仅由于各有利弊导致实用性不强,而且代码摘要的获取过程异常繁琐、开销巨大。而有限的人力资源显然无法完成对海量的开源代码进行标注的任务。这对于互联网时代高质量软件代码的大规模增长是非常不适合的,无法满足用户快速、方便、准确的了解软件代码摘要信息的需求。
BLEU(Bilingual Evaluation Understudy,双语评估研究)方法是机器翻译评价的主流准则之一,BLEU通过衡量生成语句和参考语句之间的相似性,从而衡量机器翻译的好坏。BLEU方法也是业内衡量代码摘要的主流方法。
BLEU方法的基本度量指标和概念:
a)n单位片段:n单位片段是BLEU方法使用的基本度量指标。所谓n单位片段就是指一个语句里面连续的n个单词组成的片段,如一个18单词的语句有18个1单位片段,每个单词都是一个1单位片段,有17个2单位片段,以此类推;
b)精确度:精确度是指生成语句里面的n单位片段在参考语句里面出现的概率;
c)BLEU-N:BLEU-N(N>0)方法的意思即BLEU在N单位片段下对生成语句精确度进行衡量。
发明内容
针对面对海量高质量代码摘要获取的问题,本发明提供一种软件代码摘要自动生成模型的优化方法,有效地结合深度学习和群体智能,快速高效地生成质量较高的代码摘要。
本发明的技术方案包括以下步骤:
步骤1、数据库初始为空,系统利用互联网中和群体智慧所贡献的数据集,对模型训练和优化,训练数据集存入数据库;
步骤2、从数据库中读取代码片段A,看自动摘要模型对代码片段A是否已产生代码摘要,如果有,执行步骤4,否则,执行步骤3;
步骤3、系统利用步骤1中训练好的模型,给代码自动生成代码摘要;
步骤4、系统将代码片段和生成的代码摘要开放,开放用户对代码摘要进行改正和优化;
步骤5、系统存储改正后的代码片段和代码摘要,放至数据库,并从中选择质量较高代码摘要,将代码片段和选出的代码摘要加入到训练数据集中;
步骤6、是否终止优化,如果停止优化,则结束,否则转步骤1。
作为本发明技术方案的进一步改进,步骤1具体包括以下步骤:
步骤1.1、系统利用已获得的数据,针对不同语言所编写的代码,编写不同的代码解析工具,从而对数据进行预处理,得到训练数据集;
步骤1.2、系统利用训练数据集数据训练深度学习,强化学习,深度强化学习三种模型,简称三种模型;
步骤1.3、系统利用训练数据集和BLEU方法对三种模型的摘要生成能力进行衡量;
步骤1.4、系统从三种模型中选择代码摘要生成效果最好的模型,作为代码摘要生成模型。
所述步骤1.4中,系统根据BLEU评价指标,从三种模型中选择选择代码摘要生成效果最好的模型。
所述步骤4中,系统将代码片段和自动生成的代码摘要开放在互联网以及学生课堂,让互联网用户和广大学生编写代码摘要,或者对模型自动生成的代码摘要进行改正和优化。
所述步骤5中,系统根据BLEU评价指标选择质量较高代码摘要。
上述各步骤中,我们可以利用很多开源成熟的框架,对深度学习,强化学习,深度强化学习三种模型进行训练。
采用本发明可以达到以下技术效果:
本发明适用于采用成熟的开源框架对代码片段生成摘要,针对面对海量高质量代码摘要获取的问题,有效地结合深度学习和群体智能,快速高效地生成质量较高的代码摘要,并利用群体智慧对模型进行持续优化,让更多人员可以通过阅读高质量代码摘要进而学习代码开发;充分考虑并使用了当今最为主流的机器学习方法,优中选优,提高了代码摘要生成的灵活性,并可以充分满足对互联网海量代码片段进行摘要生成的实际需求。
附图说明
图1为本发明软件代码摘要自动生成模型的优化方法流程图;
图2为本发明软件代码摘要自动生成模型的优化方法中步骤1具体流程图;
具体实施方式
图1为本发明软件代码摘要自动生成模型的优化方法流程图,具体执行以下步骤:
步骤1、数据库初始为空,系统利用互联网中和群体智慧所贡献的数据集,对模型训练和优化,训练数据集存入数据库;
步骤2、从数据库中读取代码片段A,看自动摘要模型对代码片段A是否已产生代码摘要,如果有,执行步骤4,否则,执行步骤3;
步骤3、系统利用步骤1中训练好的模型,给代码自动生成代码摘要;
步骤4、系统将代码片段和生成的代码摘要开放,开放用户对代码摘要进行改正和优化;
步骤5、系统存储改正后的代码片段和代码摘要,放至数据库,并从中选择质量较高代码摘要,将代码片段和选出的代码摘要加入到训练数据集中;
步骤6、是否终止优化,如果停止优化,则结束,否则转步骤1。
该方法针对开源社区海量高质代码片段摘要和注释缺乏的问题,简化了繁琐重复手工代码标注问题,充分利用成熟的深度学习框架,极大地减小人工标注的工作量,灵活性和敏捷性比较好,能够充分应对海量高质量代码片段的注释获取需求。
如图2所示,本发明利用群体智慧提供的高质量代码注释,该方法可以快速高效地获取质量较高的代码片段摘要,并利用群体智慧对模型进行持续优化。方法有效地结合了深度学习和群体智能,可以快速高效地生成质量较高的代码摘要。充分考虑并使用了当今最为主流的机器学习,深度学习等方法,优中选优,提高了代码摘要生成的灵活性,具体执行以下步骤:
步骤1.1、系统利用已获得的数据,针对不同语言所编写的代码,编写不同的代码解析工具,从而对数据进行预处理,最后得到训练数据集;
步骤1.2、系统利用训练数据集数据训练深度学习,强化学习,深度强化学习三种模型;
步骤1.3、系统利用测试数据集和BLEU-N(N<=4)方法对三种模型的摘要生成能力进行衡量;
步骤1.4、系统根据BLEU评价指标,从三种模型中选择选择代码摘要生成效果最好的模型,作为代码摘要生成模型。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。

Claims (5)

1.一种软件代码摘要自动生成模型的优化方法,其特征在于,包括以下步骤:
步骤1、数据库初始为空,系统利用互联网中和群体智慧所贡献的数据集,对模型训练和优化,训练数据集存入数据库;
步骤2、从数据库中读取代码片段A,看自动摘要模型对代码片段A是否已产生代码摘要,如果有,执行步骤4,否则,执行步骤3;
步骤3、系统利用步骤1中训练好的模型,给代码自动生成代码摘要;
步骤4、系统将代码片段和生成的代码摘要开放,开放用户对代码摘要进行改正和优化;
步骤5、系统存储改正后的代码片段和代码摘要,放至数据库,并从中选择质量较高代码摘要,将代码片段和选出的代码摘要加入到训练数据集中;
步骤6、是否终止优化,如果停止优化,则结束,否则转步骤1。
2.如权利要求1所述的软件代码摘要自动生成模型的优化方法,其特征在于,步骤1具体包括以下步骤:
步骤1.1、系统利用已获得的数据,针对不同语言所编写的代码,编写不同的代码解析工具,从而对数据进行预处理,得到训练数据集;
步骤1.2、系统利用训练数据集数据训练深度学习,强化学习,深度强化学习三种模型,简称三种模型;
步骤1.3、系统利用训练数据集和双语评估研究方法BLEU对三种模型的摘要生成能力进行衡量;
步骤1.4、系统从三种模型中选择代码摘要生成效果最好的模型,作为代码摘要生成模型。
3.如权利要求1所述的软件代码摘要自动生成模型的优化方法,其特征在于,所述步骤4中,系统将代码片段和自动生成的代码摘要开放在互联网以及学生课堂,让互联网用户和广大学生编写代码摘要,或者对模型自动生成的代码摘要进行改正和优化。
4.如权利要求1所述的软件代码摘要自动生成模型的优化方法,其特征在于,所述步骤5中,系统根据双语评估研究方法BLEU评价指标选择质量较高代码摘要。
5.如权利要求2所述的软件代码摘要自动生成模型的优化方法,其特征在于,所述步骤1.4中,系统根据双语评估研究方法BLEU的评价指标,从三种模型中选择选择代码摘要生成效果最好的模型。
CN201810177982.XA 2018-03-05 2018-03-05 一种软件代码摘要自动生成模型的优化方法 Active CN108491459B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810177982.XA CN108491459B (zh) 2018-03-05 2018-03-05 一种软件代码摘要自动生成模型的优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810177982.XA CN108491459B (zh) 2018-03-05 2018-03-05 一种软件代码摘要自动生成模型的优化方法

Publications (2)

Publication Number Publication Date
CN108491459A true CN108491459A (zh) 2018-09-04
CN108491459B CN108491459B (zh) 2021-10-26

Family

ID=63341476

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810177982.XA Active CN108491459B (zh) 2018-03-05 2018-03-05 一种软件代码摘要自动生成模型的优化方法

Country Status (1)

Country Link
CN (1) CN108491459B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109857818A (zh) * 2019-02-03 2019-06-07 北京字节跳动网络技术有限公司 确定生产关系的方法、装置、存储介质及电子设备
CN110018820A (zh) * 2019-04-08 2019-07-16 浙江大学滨海产业技术研究院 一种基于深度强化学习的Graph2Seq自动生成Java代码注释的方法
CN113282336A (zh) * 2021-06-11 2021-08-20 重庆大学 一种基于质量保证框架的代码摘要集成方法
CN113835740A (zh) * 2021-11-29 2021-12-24 山东捷瑞数字科技股份有限公司 一种面向搜索引擎优化的前端代码自动修复方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090077532A1 (en) * 2007-09-13 2009-03-19 Universities Space Research Association Automated annotation inference for safety certification of automatically generated code
US20130326482A1 (en) * 2012-05-31 2013-12-05 International Business Machines Corporation Annotating a generator output stream
CN104750484A (zh) * 2015-03-23 2015-07-01 福建工程学院 一种基于最大熵模型的代码摘要生成方法
CN104881285A (zh) * 2015-05-25 2015-09-02 北京理工大学 基于本体的代码片段标注与重用系统
CN106021410A (zh) * 2016-05-12 2016-10-12 中国科学院软件研究所 一种基于机器学习的源代码注释质量评估方法
CN106681708A (zh) * 2016-11-16 2017-05-17 中国科学院软件研究所 一种基于数据挖掘的源代码注释自动生成方法
CN107133079A (zh) * 2017-05-25 2017-09-05 中国人民解放军国防科学技术大学 一种基于问题报告的软件语义摘要自动生成方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090077532A1 (en) * 2007-09-13 2009-03-19 Universities Space Research Association Automated annotation inference for safety certification of automatically generated code
US20130326482A1 (en) * 2012-05-31 2013-12-05 International Business Machines Corporation Annotating a generator output stream
CN104750484A (zh) * 2015-03-23 2015-07-01 福建工程学院 一种基于最大熵模型的代码摘要生成方法
CN104881285A (zh) * 2015-05-25 2015-09-02 北京理工大学 基于本体的代码片段标注与重用系统
CN106021410A (zh) * 2016-05-12 2016-10-12 中国科学院软件研究所 一种基于机器学习的源代码注释质量评估方法
CN106681708A (zh) * 2016-11-16 2017-05-17 中国科学院软件研究所 一种基于数据挖掘的源代码注释自动生成方法
CN107133079A (zh) * 2017-05-25 2017-09-05 中国人民解放军国防科学技术大学 一种基于问题报告的软件语义摘要自动生成方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
IYER,SRINIVASAN等: "Summarizing Source Code using a Neural Attention Model", 《PROCEEDINGS OF THE 54TH ANNUAL MEETING OF THE ASSOCIATION FOR COMPUTATIONAL LINGUISTICS, VOL 1》 *
李文鹏等: "基于LDA的软件代码主题摘要自动生成方法", 《计算机科学》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109857818A (zh) * 2019-02-03 2019-06-07 北京字节跳动网络技术有限公司 确定生产关系的方法、装置、存储介质及电子设备
CN109857818B (zh) * 2019-02-03 2021-09-14 北京字节跳动网络技术有限公司 确定生产关系的方法、装置、存储介质及电子设备
CN110018820A (zh) * 2019-04-08 2019-07-16 浙江大学滨海产业技术研究院 一种基于深度强化学习的Graph2Seq自动生成Java代码注释的方法
CN110018820B (zh) * 2019-04-08 2022-08-23 浙江大学滨海产业技术研究院 一种基于深度强化学习的Graph2Seq自动生成Java代码注释的方法
CN113282336A (zh) * 2021-06-11 2021-08-20 重庆大学 一种基于质量保证框架的代码摘要集成方法
CN113282336B (zh) * 2021-06-11 2023-11-10 重庆大学 一种基于质量保证框架的代码摘要集成方法
CN113835740A (zh) * 2021-11-29 2021-12-24 山东捷瑞数字科技股份有限公司 一种面向搜索引擎优化的前端代码自动修复方法

Also Published As

Publication number Publication date
CN108491459B (zh) 2021-10-26

Similar Documents

Publication Publication Date Title
JP6842167B2 (ja) 要約生成装置、要約生成方法及びコンピュータプログラム
CN108491459A (zh) 一种软件代码摘要自动生成模型的优化方法
US10242049B2 (en) Method, system and storage medium for implementing intelligent question answering
CN107506346A (zh) 一种基于机器学习的中文阅读难度分级方法及系统
CN108363704A (zh) 一种基于统计短语表的神经网络机器翻译语料扩展方法
Zaghouani et al. Building an Arabic machine translation post-edited corpus: Guidelines and annotation
CN116821377A (zh) 基于知识图谱和大模型的小学语文自动评测系统
Liu et al. Combining readability formulas and machine learning for reader-oriented evaluation of online health resources
Koudounas et al. Italic: An italian intent classification dataset
CN110309513A (zh) 一种文本依存分析的方法和装置
CN109271647B (zh) 基于TParse的中英文互译方法和装置
CN104331397B (zh) 一种机器翻译方法及系统
CN116611447A (zh) 一种基于深度学习方法的信息抽取和语义匹配系统及方法
Duan et al. Automatically build corpora for chinese spelling check based on the input method
CN114661900A (zh) 一种文本标注推荐方法、装置、设备及存储介质
De la Rosa et al. The Moderniſa Project: Orthographic Modernization of Spanish Golden Age Dramas with Language Models
CN113722421A (zh) 一种合同审计方法和系统,及计算机可读存储介质
Yuan et al. Research on News Text Clustering for International Chinese Education
Yang Study on Chinese-English Translation Quality Assessment Based on Corpora
Ngoc et al. Multi-dimensional data refining strategy for effective fine-tuning LLMs
Negi et al. An artificially intelligent machine for answer scripts evaluation during pandemic to support the online methodology of teaching and evaluation
CN112836047B (zh) 一种基于句子语义替换的电子病历文本数据增强方法
Wu et al. Medical scientific table-to-text generation with human-in-the-loop under the data sparsity constraint
Nofitri et al. LEXICAL DENSITY OF NURSERY RHYMES IN TRANSLATION FROM ENGLISH INTO INDONESIAN
Sulun Japanese Translation Based on Bilingual Bases from Intercultural Communication

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant