CN117827173A - 标题生成模型训练方法及装置 - Google Patents

标题生成模型训练方法及装置 Download PDF

Info

Publication number
CN117827173A
CN117827173A CN202311760461.4A CN202311760461A CN117827173A CN 117827173 A CN117827173 A CN 117827173A CN 202311760461 A CN202311760461 A CN 202311760461A CN 117827173 A CN117827173 A CN 117827173A
Authority
CN
China
Prior art keywords
code
field
data
merging
title
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
Application number
CN202311760461.4A
Other languages
English (en)
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.)
Alipay Hangzhou Information Technology Co Ltd
Original Assignee
Alipay Hangzhou Information Technology Co Ltd
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 Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202311760461.4A priority Critical patent/CN117827173A/zh
Publication of CN117827173A publication Critical patent/CN117827173A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书实施例提供了标题生成模型训练方法及装置,其中,一种标题生成模型训练方法包括:获取代码合并请求的代码合并数据,在代码合并数据的数据长度大于预设数据长度的情况下,按照压缩优先级对代码合并数据包含的代码描述字段、代码分支字段和代码差异字段至少一者进行压缩处理,获得压缩代码数据,基于压缩代码数据构建训练样本,并根据代码合并请求的标题信息构建样本标签,根据训练样本和样本标签对预训练模型进行训练以获得标题生成模型。

Description

标题生成模型训练方法及装置
技术领域
本文件涉及软件开发技术领域,尤其涉及一种标题生成模型训练方法及装置。
背景技术
在软件开发和维护项目中,为了提升开发效率,往往通过建立不同的开发分支分配给相应的开发人员或者团队,开发人员或者团队在完成开发分支的开发并提交代码分支后,对提交的开发分支的代码分支进行合并。在代码合并开发场景中,Pull Request(PR)作为一种版本控制工作流程,在团队协作进行代码开发和代码审查过程中得到了广泛应用,Pull Request(PR)工作流的基本思想是将代码变更(例如新功能、Bug修复等)提议给主代码库的维护者,通过提交一个PR来进行审查和合并。
发明内容
本说明书一个或多个实施例提供了一种标题生成模型训练方法,包括:获取代码合并请求的代码合并数据。所述代码合并数据包括代码描述字段、代码分支字段和代码差异字段。若所述代码合并数据的数据长度大于预设数据长度,按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,获得压缩代码数据。基于所述压缩代码数据构建训练样本,并根据所述代码合并请求的标题信息构建样本标签。根据所述训练样本和所述样本标签对预训练模型进行训练,以获得标题生成模型。
本说明书一个或多个实施例提供了一种代码合并标题生成方法,包括:获取代码合并请求的代码合并数据。所述代码合并数据包括代码描述字段、代码分支字段和代码差异字段。若所述代码合并数据的数据长度大于预设数据长度,按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,获得压缩代码数据。将所述压缩代码数据输入标题生成模型进行代码合并标题生成,获得代码合并标题。
本说明书一个或多个实施例提供了一种标题生成模型训练装置,包括:数据获取模块,被配置为获取代码合并请求的代码合并数据。所述代码合并数据包括代码描述字段、代码分支字段和代码差异字段。压缩处理模块,被配置为若所述代码合并数据的数据长度大于预设数据长度,按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,获得压缩代码数据。构建模块,被配置为基于所述压缩代码数据构建训练样本,并根据所述代码合并请求的标题信息构建样本标签。训练模块,被配置为根据所述训练样本和所述样本标签对预训练模型进行训练,以获得标题生成模型。
本说明书一个或多个实施例提供了一种代码合并标题生成装置,包括:代码合并数据获取模块,被配置为获取代码合并请求的代码合并数据。所述代码合并数据包括代码描述字段、代码分支字段和代码差异字段。压缩处理模块,被配置为若所述代码合并数据的数据长度大于预设数据长度,按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,获得压缩代码数据。标题生成模块,被配置为将所述压缩代码数据输入标题生成模型进行代码合并标题生成,获得代码合并标题。
本说明书一个或多个实施例提供了一种标题生成模型训练设备,包括:处理器;以及,被配置为存储计算机可执行指令的存储器,所述计算机可执行指令在被执行时使所述处理器:获取代码合并请求的代码合并数据。所述代码合并数据包括代码描述字段、代码分支字段和代码差异字段。若所述代码合并数据的数据长度大于预设数据长度,按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,获得压缩代码数据。基于所述压缩代码数据构建训练样本,并根据所述代码合并请求的标题信息构建样本标签。根据所述训练样本和所述样本标签对预训练模型进行训练,以获得标题生成模型。
本说明书一个或多个实施例提供了一种代码合并标题生成设备,包括:处理器;以及,被配置为存储计算机可执行指令的存储器,所述计算机可执行指令在被执行时使所述处理器:获取代码合并请求的代码合并数据。所述代码合并数据包括代码描述字段、代码分支字段和代码差异字段。若所述代码合并数据的数据长度大于预设数据长度,按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,获得压缩代码数据。将所述压缩代码数据输入标题生成模型进行代码合并标题生成,获得代码合并标题。
本说明书一个或多个实施例提供了一种存储介质,用于存储计算机可执行指令,所述计算机可执行指令在被处理器执行时实现以下流程:获取代码合并请求的代码合并数据。所述代码合并数据包括代码描述字段、代码分支字段和代码差异字段。若所述代码合并数据的数据长度大于预设数据长度,按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,获得压缩代码数据。基于所述压缩代码数据构建训练样本,并根据所述代码合并请求的标题信息构建样本标签。根据所述训练样本和所述样本标签对预训练模型进行训练,以获得标题生成模型。
本说明书一个或多个实施例提供了另一种存储介质,用于存储计算机可执行指令,所述计算机可执行指令在被处理器执行时实现以下流程:获取代码合并请求的代码合并数据。所述代码合并数据包括代码描述字段、代码分支字段和代码差异字段。若所述代码合并数据的数据长度大于预设数据长度,按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,获得压缩代码数据。将所述压缩代码数据输入标题生成模型进行代码合并标题生成,获得代码合并标题。
附图说明
为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图;
图1为本说明书一个或多个实施例提供的一种标题生成模型训练方法实施环境的示意图;
图2为本说明书一个或多个实施例提供的一种标题生成模型训练方法处理流程图;
图3为本说明书一个或多个实施例提供的一种应用于代码开发项目场景的标题生成模型训练方法流程图;
图4为本说明书一个或多个实施例提供的一种代码合并标题生成方法处理流程图;
图5为本说明书一个或多个实施例提供的一种标题生成模型训练装置实施例的示意图;
图6为本说明书一个或多个实施例提供的一种代码合并标题生成装置实施例的示意图;
图7为本说明书一个或多个实施例提供的一种标题生成模型训练设备的结构示意图;
图8为本说明书一个或多个实施例提供的一种代码合并标题生成设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书一个或多个实施例中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书一个或多个实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本文件的保护范围。
本说明书一个或多个实施例提供的标题生成模型训练方法,可适用于图像生成系统这一实施环境,参照图1,该实施环境至少包括:
进行代码合并的标题生成的预训练模型101,对预训练模型进行训练的训练系统102,此外,该实施环境还可包括存储代码数据的项目仓库/代码仓库103,存储训练样本和样本标签的训练数据库104,和/或,生成代码合并请求的标题信息的生成式模型105;
该实施环境中,训练系统102在训练进行代码合并的标题生成模型的过程中,从代码合并请求携带的代码合并数据出发,在代码合并数据的数据长度大于模型输入的预设数据长度的情况下,按照压缩优先级对代码合并数据中包含的代码描述字段、代码分支字段和代码差异字段三者中至少一者进行压缩处理获得压缩代码数据,一方面基于压缩代码数据构建训练样本,另一方面根据获得的代码合并请求的标题信息构建样本标签,根据训练样本和样本标签对预训练模型进行训练,以此来获得能够针对代码合并请求生成代码合并标题的标题生成模型;
这其中,代码合并请求携带的代码合并数据可由训练系统102从项目仓库/代码仓库103中读取,根据训练样本和样本标签对预训练模型进行训练过程中,训练样本和样本标签可从训练数据库104中读取,代码合并请求的标题信息可通过将代码合并数据输入生成式模型105进行标题生成后获得。
本说明书提供的一种标题生成模型训练方法的一个或者多个实施例如下:
参照图2,本实施例提供的标题生成模型训练方法,具体包括步骤S202至步骤S208。
步骤S202,获取代码合并请求的代码合并数据。
本实施例所述代码合并请求,是指在采用代码分支方式进行代码开发的开发项目中,将代码分支的代码合并至开发项目的主代码/主代码库的请求,即Pull Request(PR)。代码合并请求的代码合并数据,是指在将代码分支的代码与开发项目的主代码/主代码库合并的过程中提交的代码分支相关的代码数据,也即是需要与开发项目的主代码/主代码库进行合并的代码分支相关的代码数据。
可选的,代码合并数据包括代码描述字段、代码分支字段和/或代码差异字段。其中,代码描述字段,是指当前提交的代码合并请求的提交说明的字段;代码分支字段,是指当前提交的代码合并请求的代码合并数据所属的源代码分支的分支名称字段;代码差异字段,是指用于描述当前提交的代码合并请求的代码合并数据与历史版本代码之间差异的字段。
例如,针对提交的代码分支合并至开发项目的主代码库的代码合并请求,读取该代码合并请求的代码合并数据具体如下:
【Commits】
【Commit message】<描述字段1>
【Commit message】<描述字段2>
【Commit message】<描述字段3>
【Commit message】<描述字段4>
【From Branch】<源代码分支名称>
【Code diff】
新增文件<新增文件文件名1>:<新增文件代码1>
新增文件<新增文件文件名2>:<新增文件代码2>
修改文件<修改文件文件名>:<修改文件代码>
删除文件<删除文件文件名1>:<删除文件代码1>
删除文件<删除文件文件名2>:<删除文件代码2>
删除文件<删除文件文件名3>:<删除文件代码3>
移动文件<移动文件原文件名>到<移动文件新文件名>
其中,【Commits】表示代码描述字段,【Commit message】表示代码描述字段的描述字段单元,描述字段1、描述字段2、描述字段3、描述字段4依次为代码描述字段的4个描述字段单元各自的描述字段;
【From Branch】表示代码合并请求的代码合并数据所属的源代码分支的分支名称字段,源代码分支名称为源代码分支的分支名称;
【Code diff】表示代码差异字段,用来表征当前提交的新版本的代码合并数据与历史版本代码的代码差异,当前代码差异字段下共有7条差异字段单元,每条差异字段单元表示当前提交的新版本的代码合并数据与历史版本代码的一处代码差异。
具体执行过程中,在获取代码合并请求的代码合并数据的过程中,可通过在代码合并请求的代码合并任务中提取代码描述字段、代码分支字段和代码差异字段的方式,来获取当前代码分支需要与开发项目的主代码/主代码库进行代码合并的代码合并数据。
实际应用中,在将代码分支的代码合并至数据与开发项目的主代码/主代码库的过程中,不同代码分支提交的代码合并数据的数据长度可能会有所不同,比如针对部分代码分支提交的代码合并数据的数据长度可能会比较长,针对另一部分代码分支提交的代码合并数据的数据长度可能会比较短,针对不同数据长度的代码合并数据生成相应代码合并标题的过程中,难度可能会有所不同,为了降低代码合并标题的生成难度,同时也为了提升代码合并标题的生成效率,本实施例通过计算代码合并数据的数据长度,并将代码合并数据的数据长度与预设数据长度进行比较,对于数据长度大于预设数据长度的代码合并数据,通过下述步骤S204进行压缩处理;
对于数据长度小于或者等于预设数据长度的代码合并数据,可基于代码合并数据构建训练样本,并根据代码合并请求的标题信息构建样本标签,以此在构建获得训练样本和样本标签的基础上预训练模型进行训练,以此来获得能够针对代码合并请求生成代码合并标题的标题生成模型。
此外,对于代码合并数据的数据长度小于或者等于预设数据长度,本实施例提供的一种可选实施方式中,基于代码合并数据构建训练样本,并根据代码合并请求的标题信息构建样本标签,根据构建的训练样本和样本标签对预训练模型进行训练,以获得标题生成模型。
这其中,代码合并标题,是指代码合并请求的标题,即PR标题,通过训练针对代码合并请求生成代码合并标题的标题生成模型,能够在代码合并过程中针对代码合并请求生成相应的代码合并标题,通过代码合并标题能够简要直观的感知当前需要进行代码合并的代码合并请求的摘要信息或者核心信息。
预设数据长度可以是预训练模型的模型输入数据长度,还可根据实际需求将预设数据长度设置为不超过预训练模型的模型输入数据长度的任意一个数据长度。
代码合并请求的标题信息,是指预先针对作为训练数据的代码合并数据生成的训练标签,在代码合并数据的数据长度小于或者等于预设数据长度的情况下,可通过将代码合并数据和生成限制信息输入到生成式模型进行标题生成,将生成式模型输出的标题作为代码合并请求的标题信息,比如将代码合并数据和生成限制信息输入至已完成训练并发布应用的基于对话的生成式模型(比如chatGPT(chat Generative Pre-trainedTransformer,生成式预训练变换模型))进行标题生成。生成限制信息,是指对模型的输出进行限制或者要求的输出限制信息,生成限制信息可包含对输出语种进行限制的语种限制信息,还可包含对输出内容的数据格式和/或数据形式进行限制的内容限制信息。
预训练模型,是指预先经过训练的自然语言模型,预训练模型可采用包含大批量参数的神经网络架构,预训练模型可采用预先训练的大语言模型(Large Language Model,LLM),比如对话交互领域或者代码开发领域的开源大型语言模型。标题生成模型是指在预训练模型的基础上通过对预训练模型进行训练获得的模型,经过训练学习获得的标题生成模型,能够针对代码合并请求生成相应的请求标题(代码合并标题)。
本实施例中,将代码合并请求的代码合并数据这一方的数据作为训练样本,以预先生成的代码合并请求的标题信息作为样本标签,通过将训练样本和样本标签输入预训练模型进行训练,能够使预训练模型在训练过程中学习到代码合并请求的标题信息与代码合并请求的代码合并数据之间的内在数据关系,从而使训练获得的标题生成模型获得针对代码合并请求生成相应的请求标题(代码合并标题)的能力。
步骤S204,若所述代码合并数据的数据长度大于预设数据长度,按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,获得压缩代码数据。
在对代码分支的代码进行代码合并的过程中,不同代码分支提交的代码合并数据的数据长度可能会有所不同,在代码合并数据的基础上生成代码合并标题的过程中,为了降低代码合并标题的生成难度,同时也为了提升代码合并标题的生成效率,通过对代码合并数据进行压缩处理,具体在压缩处理过程中,可将代码合并数据的数据长度压缩至小于预设数据长度的范围内,预设数据长度可以是模型输入的数据长度,即:使压缩处理后的代码合并数据能够满足模型输入的要求。预设数据长度可以是预训练模型的模型输入数据长度,还可根据实际需求将预设数据长度设置为不超过预训练模型的模型输入数据长度的任意一个数据长度。
如上所述,代码合并数据由代码合并数据包括代码描述字段、代码分支字段和代码差异字段组成,基于此,在对代码合并数据进行压缩处理的过程中,可通过删除代码合并数据中代码分支字段和/或代码差异字段的方式,对代码合并数据进行压缩处理。具体在采用删除代码分支字段和/或代码差异字段的方式对代码合并数据进行压缩处理的过程中,可按照代码分支字段各代码差异字段各自的字段压缩优先级,对代码合并数据进行压缩处理。
具体的,本实施例提供的一种可选实施方式中,按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,包括:按照所述代码分支字段和所述代码差异字段的字段压缩优先级,对所述代码合并数据进行字段删除;
其中,压缩优先级排序在先的字段在先从所述代码合并数据中删除,压缩优先级排序在后的字段在后从所述代码合并数据中删除。比如,在代码差异字段的字段压缩优先级高于代码分支字段的字段压缩优先级的情况下,优先从代码合并数据中删除代码差异字段,若删除代码差异字段后的数据长度任大于预设数据长度,则从代码合并数据中删除代码分支字段。
上述采用删除代码分支字段和/或代码差异字段的方式对代码合并数据进行压缩处理后,如果压缩处理后代码合并数据的数据长度小于或者等于预设数据长度,则将压缩处理后代码合并数据作为压缩代码数据即可;如果删除代码分支字段和代码差异字段后的代码合并数据的数据长度仍大于预设数据长度的情况,即代码合并数据中的代码描述字段的数据长度大于预设数据长度,可进一步对代码描述字段进行压缩处理,具体压缩处理过程中,根据代码描述字段包含的描述字段单元的压缩顺序,对代码描述字段包含的描述字段单元进行压缩处理。
本实施例提供的一种可选实施方式中,对代码描述字段包含的描述字段单元进行压缩处理,具体采用如下方式实现:按照所述代码描述字段包含的描述字段单元的压缩顺序,对所述代码描述字段进行字段单元删除;其中,压缩顺序排序在先的描述字段单元在先删除,压缩顺序排序在后的描述字段单元在后删除。
具体的,代码描述字段包含的描述字段单元的压缩顺序,可根据描述字段单元的生成时间/创建时间来确定,生成时间在先的描述字段单元的压缩顺序排序在前,生成时间在后的描述字段单元压缩顺序排序在后,具体在对代码描述字段包含的描述字段单元进行压缩处理的过程中,优先压缩压缩顺序排序在前的描述字段单元,即:按照描述字段单元的生成时间从先到后的顺序对描述字段单元进行排序,在压缩处理过程中,按照从前到后的顺序依次删除描述字段单元,直至删除后的代码合并数据的数据长度小于或者等于预设数据长度。
例如,对于上述获取的由代码描述字段【Commits】、代码分支字段【From Branch】、代码差异字段【Code diff】组成的代码合并数据,代码差异字段【Code diff】的压缩优先级高于代码分支字段【From Branch】的压缩优先级,并且,代码分支字段【From Branch】的压缩优先级高于代码描述字段【Commits】的压缩优先级;
基于此,在对该代码合并数据进行压缩处理过程中,首先,从代码合并数据中删除代码差异字段【Code diff】,若删除后代码合并数据的数据长度大于预设数据长度,则进一步从代码合并数据中删除代码分支字段【From Branch】;
若代码分支字段【From Branch】删除后代码合并数据的数据长度仍大于预设数据长度,则基于代码描述字段【Commits】的各描述字段单元【Commit message】的生成时间,确定各描述字段单元【Commit message】的压缩顺序,确定的压缩顺序依次为:<描述字段4>、<描述字段3>、<描述字段2>、<描述字段1>,按照压缩顺序从前到后的顺序依次对代码描述字段【Commits】中的描述字段单元【Commit message】进行删除,直至某个描述字段单元【Commit message】后代码合并数据的数据长度小于或者等于预设数据长度。
具体执行过程中,本实施例提供的一种可选实施方式中,按照压缩优先级对代码描述字段、代码分支字段和代码差异字段至少一者进行压缩处理,获得压缩代码数据,包括:
按照所述代码差异字段的字段压缩优先级,删除所述代码合并数据中的代码差异字段;
检测删除后的第一代码合并数据的数据长度是否大于所述预设数据长度;
若是,按照所述代码分支字段的字段压缩优先级,删除所述第一代码合并数据中的代码分支字段,若删除后的第二代码合并数据的数据长度小于或者等于所述预设数据长度,将所述第二代码合并数据作为所述压缩代码数据。
另一方面,若删除第一代码合并数据中的代码分支字段后获得的第二代码合并数据的数据长度仍大于预设数据长度,则可进一步对代码合并数据中的代码描述字段进行压缩处理,具体可通过删除代码描述字段中描述字段单元的方式进行压缩处理。
上述按照代码分支字段的字段压缩优先级删除第一代码合并数据中的代码分支字段操作后,若获得的第二代码合并数据的数据长度大于预设数据长度,本实施例提供的一种可选实施方式中,采用如下方式对第二代码合并数据中的代码描述字段进行压缩处理:
按照所述代码描述字段包含的描述字段单元的压缩顺序,对所述描述字段单元进行字段单元删除;
检测字段单元删除后的代码描述字段的数据长度是否大于所述预设数据长度;
若是,对所述字段单元删除后的代码描述字段进行二次字段单元删除,进行二次字段单元删除的实现过程,与此处提供的字段单元删除的过程类似,参照此处提供的字段单元删除的过程实现即可;
若否,将所述字段单元删除后的代码描述字段作为所述压缩代码数据。
具体实施时,在对代码合并数据中代码描述字段、代码分支字段和代码差异字段三者中至少一者进行压缩处理的过程中,除上述提供的采用删除代码分支字段和/或代码差异字段的方式对代码合并数据进行压缩处理的实现方式之外,还可对代码差异字段进行字段压缩的方式对代码合并数据进行压缩处理,使压缩后获得的压缩代码数据能够尽可能的保留当前版本的代码分支与历史版本的代码分支之间的代码差异信息,以此为基础进行标题生成模型训练,能够使预训练模型在训练过程中学习代码差异信息与代码合并标题之间的映射关系,从而使训练获得的标题生成模型能够在代码差异信息的基础上生成更加准确和全面的代码合并标题。
本实施例提供的一种可选实施方式中,对所述代码差异字段进行压缩处理,包括:根据所述代码差异字段包含的差异字段单元的代码变更类型,确定所述差异字段单元中代码变更内容的内容压缩优先级;按照所述内容压缩优先级对所述差异字段单元中代码变更内容进行代码内容压缩。
可选的,对所述差异字段单元中代码变更内容进行代码内容压缩,采用下述至少一种方式实现:对文件删除类型下被删除的代码文件中的被删除代码进行删除,对文件新增类型下新增代码文件中的新增代码进行删除,将文件修改类型下修改代码文件中被修改代码压缩为代码修改行数,对文件修改类型下修改代码文件中的被修改代码进行删除,将文件移动类型下被移动文件的文件名合并为文件移动数目,将文件删除类型下被删除文件的文件名合并为文件删除数目,将文件新增类型下新增文件的文件名合并为文件新增数目,将文件修改类型下被修改文件的文件名合并为文件修改数目。
需要说明的是,按照内容压缩优先级对差异字段单元中代码变更内容进行代码内容压缩的过程中,在对每个代码变更内容进行代码内容压缩后,可检测代码内容压缩后的代码合并数据的数据长度是否大于预设数据长度,若是,则按照内容压缩优先级继续进行代码内容压缩的处理过程;若否,则终止代码内容压缩的处理过程。
其中,代码变更类型包括:删除代码文件的文件删除类型、新增代码文件的文件新增类型、修改代码文件的文件修改类型和/或移动代码文件的文件移动类型;
相应的,对于文件删除类型的差异字段单元,差异字段单元的代码变更内容包括文件删除内容和代码删除内容,其中,文件删除内容具体可由文件删除关键词和被删除的代码文件的文件名组成,代码删除内容可以是被删除的代码文件中的被删除代码;
类似的,对于文件新增类型的差异字段单元,差异字段单元的代码变更内容包括文件新增内容和代码新增内容,其中,文件新增内容具体可由文件新增关键词和新增代码文件的文件名组成,代码新增内容可以是新增代码文件中的新增代码;
对于文件修改类型的差异字段单元,差异字段单元的代码变更内容包括文件修改内容和代码修改内容,其中,文件修改内容具体可由文件修改关键词和修改代码文件的文件名组成,代码修改内容可以是修改代码文件中的被修改代码;
对于文件移动类型的差异字段单元,差异字段单元的代码变更内容可由文件移动关键词和被移动文件的文件名组成。
比如,根据代码差异字段包含的差异字段单元的代码变更类型,确定差异字段单元中代码变更内容的内容压缩优先级从高到低依次为:文件删除类型下被删除的代码文件中的被删除代码->文件新增类型下新增代码文件中的新增代码->文件修改类型下修改代码文件中被修改代码->文件移动类型下被移动文件的文件名->文件删除类型下被删除文件的文件名->文件新增类型下新增文件的文件名->文件修改类型下被修改文件的文件名。
具体执行过程中,还可在对差异字段单元中代码变更内容进行代码内容压缩的过程中,对文件删除关键词、文件新增关键词、文件修改关键词和/或文件移动关键词进行去重或者合并处理。
比如,可在对文件删除类型下被删除的代码文件中的被删除代码进行删除之后,对文件删除关键词进行去重或者合并处理;类似的,在对文件新增类型下新增代码文件中的新增代码进行删除之后,可对文件新增关键词进行去重或者合并处理;在对文件修改类型下修改代码文件中的被修改代码进行删除之后,可对文件修改关键词进行去重或者合并处理。
再比如,可在将文件移动类型下被移动文件的文件名合并为文件移动数目之后,对文件移动关键词进行去重或者合并处理;类似的,可在将文件删除类型下被删除文件的文件名合并为文件删除数目之后,对文件删除关键词进行去重或者合并处理;可在将文件新增类型下新增文件的文件名合并为文件新增数目之后,对文件新增关键词进行去重或者合并处理;可在将文件修改类型下被修改文件的文件名合并为文件修改数目之后,对文件修改关键词进行去重或者合并处理。
下述结合上述提供的由代码描述字段【Commits】、代码分支字段【From Branch】、代码差异字段【Code diff】组成的代码合并数据,对代码差异字段【Code diff】的压缩过程进行说明;
上述提供的代码合并数据中代码差异字段【Code diff】包含下述7条差异字段单元:
新增文件<新增文件文件名1>:<新增文件代码1>
新增文件<新增文件文件名2>:<新增文件代码2>
修改文件<修改文件文件名>:<修改文件代码>
删除文件<删除文件文件名1>:<删除文件代码1>
删除文件<删除文件文件名2>:<删除文件代码2>
删除文件<删除文件文件名3>:<删除文件代码3>
移动文件<移动文件原文件名>到<移动文件新文件名>
针对以上代码差异字段【Code diff】,根据代码差异字段【Code diff】包含的7条差异字段单元的代码变更类型,确定7条差异字段单元中代码变更内容的内容压缩优先级从高到低依次为:文件删除类型下被删除的代码文件中的被删除代码->文件新增类型下新增代码文件中的新增代码->文件修改类型下修改代码文件中被修改代码->文件移动类型下被移动文件的文件名->文件删除类型下被删除文件的文件名->文件新增类型下新增文件的文件名->文件修改类型下被修改文件的文件名;
按照该内容压缩优先级对代码差异字段【Code diff】进行压缩处理的过程包括如下8个步骤:
步骤1)、删除第4至第6条差异字段单元中的被删除代码,并对文件删除关键词(“删除文件”)进行去重,删除以及去重后的代码差异字段【Code diff】为:
新增文件<新增文件文件名1>:<新增文件代码1>
新增文件<新增文件文件名2>:<新增文件代码2>
修改文件<修改文件文件名>:<修改文件代码>
删除文件
<删除文件文件名1>
<删除文件文件名2>
<删除文件文件名3>
移动文件<移动文件原文件名>到<移动文件新文件名>
步骤2)、删除第1至第2条差异字段单元中的新增代码,并对文件新增关键词(“新增文件”)进行去重,删除以及去重后的代码差异字段【Code diff】为:
新增文件
<新增文件文件名1>
<新增文件文件名2>
修改文件<修改文件文件名>:<修改文件代码>
删除文件
<删除文件文件名1>
<删除文件文件名2>
<删除文件文件名3>
移动文件<移动文件原文件名>到<移动文件新文件名>
步骤3)、将第3条差异字段单元中的被修改代码压缩为代码修改行数统计,压缩后的代码差异字段【Code diff】为:
新增文件
<新增文件文件名1>
<新增文件文件名2>
修改文件<修改文件文件名>:新增x1行,修改x2行
删除文件
<删除文件文件名1>
<删除文件文件名2>
<删除文件文件名3>
移动文件<移动文件原文件名>到<移动文件新文件名>
步骤4)、删除第3条差异字段单元中的代码修改行数统计,删除后的代码差异字段【Code diff】为:
新增文件
<新增文件文件名1>
<新增文件文件名2>
修改文件<修改文件文件名>
删除文件
<删除文件文件名1>
<删除文件文件名2>
<删除文件文件名3>
移动文件<移动文件原文件名>到<移动文件新文件名>
步骤5)、将第7条差异字段单元中由文件移动关键词(“移动文件”“到”)和被移动文件的文件名(<移动文件原文件名>、<移动文件新文件名>)合并为文件移动数目,压缩后的代码差异字段【Code diff】为:
新增文件
<新增文件文件名1>
<新增文件文件名2>
修改文件<修改文件文件名>
删除文件
<删除文件文件名1>
<删除文件文件名2>
<删除文件文件名3>
移动m1个文件
类似的,步骤6)将第4至第6条差异字段单元中由文件删除关键词(“删除文件”)和被删除文件的文件名(<删除文件文件名1>、<删除文件文件名2>、<删除文件文件名3>)合并为:删除m2个文件;
步骤7)将第1至第2条差异字段单元中由文件新增关键词(“新增文件”)和新增文件的文件名(<新增文件文件名1>、<新增文件文件名2>)合并为:新增m3个文件;
步骤8)将第3条差异字段单元中由文件修改关键词(“修改文件”)和被修改文件的文件名(<修改文件文件名>)合并为:修改m4个文件;
经过上述8个步骤的压缩处理后获得的代码差异字段【Code diff】为:
移动m1个文件
删除m2个文件
新增m3个文件
修改m4个文件。
步骤S206,基于所述压缩代码数据构建训练样本,并根据所述代码合并请求的标题信息构建样本标签。
本实施例所述代码合并请求的标题信息,是指预先针对作为训练数据的代码合并数据生成的训练标签,在代码合并数据的数据长度大于预设数据长度的情况下,可通过将压缩代码数据和生成限制信息输入到生成式模型进行标题生成,将生成式模型输出的标题作为代码合并请求的标题信息,比如将压缩代码数据和生成限制信息输入至已完成训练并发布应用的基于对话的生成式模型(比如chatGPT(chat Generative Pre-trainedTransformer,生成式预训练变换模型))进行标题生成。生成限制信息,是指对模型的输出进行限制或者要求的输出限制信息,生成限制信息可包含对输出语种进行限制的语种限制信息,还可包含对输出内容的数据格式和/或数据形式进行限制的内容限制信息。
本实施例将代码合并请求的代码合并数据这一方的数据作为训练样本,以预先生成的代码合并请求的标题信息作为样本标签,通过将训练样本和样本标签输入预训练模型进行训练,能够使预训练模型在训练过程中学习到代码合并请求的标题信息与代码合并请求的代码合并数据之前的内在数据关系,从而使训练获得的标题生成模型获得针对代码合并请求生成相应的请求标题(代码合并标题)的能力。
具体实施时,在基于压缩代码数据构建训练样本的过程中,可直接将压缩代码数据作为训练样本,还可根据压缩代码数据与标题生成关键词构建训练样本,比如在压缩代码数据之前加入“请根据如下的代码合并数据生成代码合并标题”这一标题生成关键词,将加入该标题生成关键词的压缩代码数据作为训练样本。
具体的,在压缩处理过程中删除代码差异字段的情况下,可根据代码描述字段、代码分支字段和标题生成关键词构建训练样本;或者,在压缩处理过程中删除代码差异字段和代码分支字段的情况下,可根据代码描述字段、代码分支字段和标题生成关键词构建训练样本;在或者,在压缩处理过程中删除代码差异字段和代码分支字段并对代码描述字段包含的描述字段单元进行字段单元删除的情况下,可根据字段单元删除后的代码描述字段和标题生成关键词构建训练样本。此外,在压缩处理过程中对差异字段单元中代码变更内容进行代码内容压缩的情况下,可根据代码描述字段、代码分支字段、标题生成关键词和代码内容压缩后的代码差异字段构建训练样本。
在根据代码合并请求的标题信息构建样本标签的过程中,将代码合并请求的标题信息作为样本标签。
本实施例提供的一种可选实施方式中,在构建获得训练样本和样本标签之后,还可对训练样本和样本标签进行过滤,以此来提升模型训练的有效性和训练效率,具体可从样本标签携带的标题信息出发进行训练样本和样本标签的过滤,本实施例提供的一种可选实施方式中,采用如下方式对训练样本和样本标签进行过滤:对所述样本标签携带的标题信息进行标题格式检测;若检测通过,执行下述步骤S208;若检测未通过,删除所述训练样本和所述样本标签。
其中,对样本标签携带的标题信息进行标题格式检测,采用下述至少一种方式实现:
检测标题信息是否为空标题,若是,确定检测通过,若否,确定检测为通过;
检测标题信息是否多行标题,若是,确定检测通过,若否,确定检测为通过;
检测标题信息的长度是否大于第一标题长度阈值,若是,确定检测通过,若否,确定检测为通过;
检测标题信息的长度是否小于第二标题长度阈值,若是,确定检测通过,若否,确定检测为通过;
检测标题信息是否包含代码分支字段,若是,确定检测通过,若否,确定检测为通过;
检测标题信息的格式是否满足预设格式要求,若是,确定检测通过,若否,确定检测为通过;标题信息的格式是否满足预设格式要求,可以是标题开头是否包含英文,是否为英文标题,或者,标签是否包含标点符号。
步骤S208,根据所述训练样本和所述样本标签对预训练模型进行训练,以获得标题生成模型。
本实施例中,通过训练针对代码合并请求生成代码合并标题的标题生成模型,能够在代码合并过程中针对代码合并请求生成相应的代码合并标题,通过代码合并标题能够简要直观的感知当前需要进行代码合并的代码合并请求的摘要信息或者核心信息。
预训练模型,是指预先经过训练的自然语言模型,预训练模型可采用包含大批量参数的神经网络架构,预训练模型可采用预先训练的大语言模型(Large Language Model,LLM),比如对话交互领域或者代码开发领域的开源大型语言模型。标题生成模型是指在预训练模型的基础上通过对预训练模型进行训练获得的模型,经过训练学习获得的标题生成模型,能够针对代码合并请求生成相应的请求标题(代码合并标题)。
可选的,所述对预训练模型进行训练通过调用训练接口实现,通过将所述训练样本和样本标签输入所述训练接口进行所述预训练模型的训练。
下述以本实施例提供的一种标题生成模型训练方法在代码开发项目场景的应用为例,结合图3,对本实施例提供的标题生成模型训练方法进行进一步说明,参见图3,应用于代码开发项目场景的标题生成模型训练方法,具体包括下述步骤。
步骤S302,获取代码开发项目中提交的代码合并请求的代码合并数据。
代码合并数据包括代码描述字段、代码分支字段和代码差异字段。
步骤S304,若代码合并数据的数据长度大于预设数据长度,根据代码差异字段包含的差异字段单元的代码变更类型,确定差异字段单元中代码变更内容的内容压缩优先级。
步骤S306,按照内容压缩优先级对差异字段单元中代码变更内容进行代码内容压缩,获得压缩差异字段。
步骤S308,根据代码描述字段、代码分支字段、压缩差异字段和标题生成关键词构建训练样本,并根据代码合并请求的标题信息构建样本标签。
步骤S310,对样本标签携带的标题信息进行标题格式检测;
若检测通过,执行步骤S312;
若检测未通过,删除训练样本和样本标签。
步骤S312,根据训练样本和样本标签对预训练模型进行训练,以获得标题生成模型。
本说明书提供的一种代码合并标题生成方法的一个或者多个实施例如下:
参照图4,本实施例提供的代码合并标题生成方法,具体包括步骤S402至步骤S406。
步骤S402,获取代码合并请求的代码合并数据。
本实施例所述代码合并请求,是指在采用代码分支方式进行代码开发的开发项目中,将代码分支的代码合并至开发项目的主代码/主代码库的请求,即Pull Request(PR)。代码合并请求的代码合并数据,是指在将代码分支的代码与开发项目的主代码/主代码库合并的过程中提交的代码分支相关的代码数据,也即是需要与开发项目的主代码/主代码库进行合并的代码分支相关的代码数据。
可选的,代码合并数据包括代码描述字段、代码分支字段和/或代码差异字段。其中,代码描述字段,是指当前提交的代码合并请求的提交说明的字段;代码分支字段,是指当前提交的代码合并请求的代码合并数据所属的源代码分支的分支名称字段;代码差异字段,是指用于描述当前提交的代码合并请求的代码合并数据与历史版本代码之间差异的字段。
例如,针对提交的代码分支合并至开发项目的主代码库的代码合并请求,读取该代码合并请求的代码合并数据具体如下:
【Commits】
【Commit message】<描述字段1>
【Commit message】<描述字段2>
【Commit message】<描述字段3>
【Commit message】<描述字段4>
【From Branch】<源代码分支名称>
【Code diff】
新增文件<新增文件文件名1>:<新增文件代码1>
新增文件<新增文件文件名2>:<新增文件代码2>
修改文件<修改文件文件名>:<修改文件代码>
删除文件<删除文件文件名1>:<删除文件代码1>
删除文件<删除文件文件名2>:<删除文件代码2>
删除文件<删除文件文件名3>:<删除文件代码3>
移动文件<移动文件原文件名>到<移动文件新文件名>
其中,【Commits】表示代码描述字段,【Commit message】表示代码描述字段的描述字段单元,描述字段1、描述字段2、描述字段3、描述字段4依次为代码描述字段的4个描述字段单元各自的描述字段;
【From Branch】表示代码合并请求的代码合并数据所属的源代码分支的分支名称字段,源代码分支名称为源代码分支的分支名称;
【Code diff】表示代码差异字段,用来表征当前提交的新版本的代码合并数据与历史版本代码的代码差异,当前代码差异字段下共有7条差异字段单元,每条差异字段单元表示当前提交的新版本的代码合并数据与历史版本代码的一处代码差异。
具体执行过程中,在获取代码合并请求的代码合并数据的过程中,可通过在代码合并请求的代码合并任务中提取代码描述字段、代码分支字段和代码差异字段的方式,来获取当前代码分支需要与开发项目的主代码/主代码库进行代码合并的代码合并数据。
实际应用中,在将代码分支的代码合并至数据与开发项目的主代码/主代码库的过程中,不同代码分支提交的代码合并数据的数据长度可能会有所不同,比如针对部分代码分支提交的代码合并数据的数据长度可能会比较长,针对另一部分代码分支提交的代码合并数据的数据长度可能会比较短,针对不同数据长度的代码合并数据生成相应代码合并标题的过程中,难度可能会有所不同,为了降低代码合并标题的生成难度,同时也为了提升代码合并标题的生成效率,本实施例通过计算代码合并数据的数据长度,并将代码合并数据的数据长度与预设数据长度进行比较,对于数据长度大于预设数据长度的代码合并数据,通过下述步骤S204进行压缩处理;对于数据长度小于或者等于预设数据长度的代码合并数据,可将压缩代码数据输入标题生成模型进行代码合并标题生成获得代码合并标题。
步骤S404,若所述代码合并数据的数据长度大于预设数据长度,按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,获得压缩代码数据。
在对代码分支的代码进行代码合并的过程中,不同代码分支提交的代码合并数据的数据长度可能会有所不同,在代码合并数据的基础上生成代码合并标题的过程中,为了降低代码合并标题的生成难度,同时也为了提升代码合并标题的生成效率,通过对代码合并数据进行压缩处理,具体在压缩处理过程中,可将代码合并数据的数据长度压缩至小于预设数据长度的范围内,预设数据长度可以是模型输入的数据长度,即:使压缩处理后的代码合并数据能够满足模型输入的要求。预设数据长度可以是标题生成模型的模型输入数据长度,还可根据实际需求将预设数据长度设置为不超过标题生成模型的模型输入数据长度的任意一个数据长度。
如上所述,代码合并数据由代码合并数据包括代码描述字段、代码分支字段和代码差异字段组成,基于此,在对代码合并数据进行压缩处理的过程中,可通过删除代码合并数据中代码分支字段和/或代码差异字段的方式,对代码合并数据进行压缩处理。具体在采用删除代码分支字段和/或代码差异字段的方式对代码合并数据进行压缩处理的过程中,可按照代码分支字段各代码差异字段各自的字段压缩优先级,对代码合并数据进行压缩处理。
具体的,本实施例提供的一种可选实施方式中,按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,包括:按照所述代码分支字段和所述代码差异字段的字段压缩优先级,对所述代码合并数据进行字段删除;
其中,压缩优先级排序在先的字段在先从所述代码合并数据中删除,压缩优先级排序在后的字段在后从所述代码合并数据中删除。比如,在代码差异字段的字段压缩优先级高于代码分支字段的字段压缩优先级的情况下,优先从代码合并数据中删除代码差异字段,若删除代码差异字段后的数据长度任大于预设数据长度,则从代码合并数据中删除代码分支字段。
上述采用删除代码分支字段和/或代码差异字段的方式对代码合并数据进行压缩处理后,如果压缩处理后代码合并数据的数据长度小于或者等于预设数据长度,则将压缩处理后代码合并数据作为压缩代码数据即可;如果删除代码分支字段和代码差异字段后的代码合并数据的数据长度仍大于预设数据长度的情况,即代码合并数据中的代码描述字段的数据长度大于预设数据长度,可进一步对代码描述字段进行压缩处理,具体压缩处理过程中,根据代码描述字段包含的描述字段单元的压缩顺序,对代码描述字段包含的描述字段单元进行压缩处理。
本实施例提供的一种可选实施方式中,对代码描述字段包含的描述字段单元进行压缩处理,具体采用如下方式实现:按照所述代码描述字段包含的描述字段单元的压缩顺序,对所述代码描述字段进行字段单元删除;其中,压缩顺序排序在先的描述字段单元在先删除,压缩顺序排序在后的描述字段单元在后删除。
具体的,代码描述字段包含的描述字段单元的压缩顺序,可根据描述字段单元的生成时间/创建时间来确定,生成时间在先的描述字段单元的压缩顺序排序在前,生成时间在后的描述字段单元压缩顺序排序在后,具体在对代码描述字段包含的描述字段单元进行压缩处理的过程中,优先压缩压缩顺序排序在前的描述字段单元,即:按照描述字段单元的生成时间从先到后的顺序对描述字段单元进行排序,在压缩处理过程中,按照从前到后的顺序依次删除描述字段单元,直至删除后的代码合并数据的数据长度小于或者等于预设数据长度。
例如,对于上述获取的由代码描述字段【Commits】、代码分支字段【From Branch】、代码差异字段【Code diff】组成的代码合并数据,代码差异字段【Code diff】的压缩优先级高于代码分支字段【From Branch】的压缩优先级,并且,代码分支字段【From Branch】的压缩优先级高于代码描述字段【Commits】的压缩优先级;
基于此,在对该代码合并数据进行压缩处理过程中,首先,从代码合并数据中删除代码差异字段【Code diff】,若删除后代码合并数据的数据长度大于预设数据长度,则进一步从代码合并数据中删除代码分支字段【From Branch】;
若代码分支字段【From Branch】删除后代码合并数据的数据长度仍大于预设数据长度,则基于代码描述字段【Commits】的各描述字段单元【Commit message】的生成时间,确定各描述字段单元【Commit message】的压缩顺序,确定的压缩顺序依次为:<描述字段4>、<描述字段3>、<描述字段2>、<描述字段1>,按照压缩顺序从前到后的顺序依次对代码描述字段【Commits】中的描述字段单元【Commit message】进行删除,直至某个描述字段单元【Commit message】后代码合并数据的数据长度小于或者等于预设数据长度。
具体执行过程中,本实施例提供的一种可选实施方式中,按照压缩优先级对代码描述字段、代码分支字段和代码差异字段至少一者进行压缩处理,获得压缩代码数据,包括:
按照所述代码差异字段的字段压缩优先级,删除所述代码合并数据中的代码差异字段;
检测删除后的第一代码合并数据的数据长度是否大于所述预设数据长度;
若是,按照所述代码分支字段的字段压缩优先级,删除所述第一代码合并数据中的代码分支字段,若删除后的第二代码合并数据的数据长度小于或者等于所述预设数据长度,将所述第二代码合并数据作为所述压缩代码数据。
另一方面,若删除第一代码合并数据中的代码分支字段后获得的第二代码合并数据的数据长度仍大于预设数据长度,则可进一步对代码合并数据中的代码描述字段进行压缩处理,具体可通过删除代码描述字段中描述字段单元的方式进行压缩处理。
上述按照代码分支字段的字段压缩优先级删除第一代码合并数据中的代码分支字段操作后,若获得的第二代码合并数据的数据长度大于预设数据长度,本实施例提供的一种可选实施方式中,采用如下方式对第二代码合并数据中的代码描述字段进行压缩处理:
按照所述代码描述字段包含的描述字段单元的压缩顺序,对所述描述字段单元进行字段单元删除;
检测字段单元删除后的代码描述字段的数据长度是否大于所述预设数据长度;
若是,对所述字段单元删除后的代码描述字段进行二次字段单元删除,进行二次字段单元删除的实现过程,与此处提供的字段单元删除的过程类似,参照此处提供的字段单元删除的过程实现即可;
若否,将所述字段单元删除后的代码描述字段作为所述压缩代码数据。
具体实施时,在对代码合并数据中代码描述字段、代码分支字段和代码差异字段三者中至少一者进行压缩处理的过程中,除上述提供的采用删除代码分支字段和/或代码差异字段的方式对代码合并数据进行压缩处理的实现方式之外,还可对代码差异字段进行字段压缩的方式对代码合并数据进行压缩处理,使压缩后获得的压缩代码数据能够尽可能的保留当前版本的代码分支与历史版本的代码分支之间的代码差异信息,从而使标题生成模型能够在代码差异信息的基础上生成更加准确和全面的代码合并标题。
本实施例提供的一种可选实施方式中,对所述代码差异字段进行压缩处理,包括:根据所述代码差异字段包含的差异字段单元的代码变更类型,确定所述差异字段单元中代码变更内容的内容压缩优先级;按照所述内容压缩优先级对所述差异字段单元中代码变更内容进行代码内容压缩。
可选的,对所述差异字段单元中代码变更内容进行代码内容压缩,采用下述至少一种方式实现:对文件删除类型下被删除的代码文件中的被删除代码进行删除,对文件新增类型下新增代码文件中的新增代码进行删除,将文件修改类型下修改代码文件中被修改代码压缩为代码修改行数,对文件修改类型下修改代码文件中的被修改代码进行删除,将文件移动类型下被移动文件的文件名合并为文件移动数目,将文件删除类型下被删除文件的文件名合并为文件删除数目,将文件新增类型下新增文件的文件名合并为文件新增数目,将文件修改类型下被修改文件的文件名合并为文件修改数目。
需要说明的是,按照内容压缩优先级对差异字段单元中代码变更内容进行代码内容压缩的过程中,在对每个代码变更内容进行代码内容压缩后,可检测代码内容压缩后的代码合并数据的数据长度是否大于预设数据长度,若是,则按照内容压缩优先级继续进行代码内容压缩的处理过程;若否,则终止代码内容压缩的处理过程。
其中,代码变更类型包括:删除代码文件的文件删除类型、新增代码文件的文件新增类型、修改代码文件的文件修改类型和/或移动代码文件的文件移动类型;相应的,对于文件删除类型的差异字段单元,差异字段单元的代码变更内容包括文件删除内容和代码删除内容,其中,文件删除内容具体可由文件删除关键词和被删除的代码文件的文件名组成,代码删除内容可以是被删除的代码文件中的被删除代码;
类似的,对于文件新增类型的差异字段单元,差异字段单元的代码变更内容包括文件新增内容和代码新增内容,其中,文件新增内容具体可由文件新增关键词和新增代码文件的文件名组成,代码新增内容可以是新增代码文件中的新增代码;对于文件修改类型的差异字段单元,差异字段单元的代码变更内容包括文件修改内容和代码修改内容,其中,文件修改内容具体可由文件修改关键词和修改代码文件的文件名组成,代码修改内容可以是修改代码文件中的被修改代码;对于文件移动类型的差异字段单元,差异字段单元的代码变更内容可由文件移动关键词和被移动文件的文件名组成。
比如,根据代码差异字段包含的差异字段单元的代码变更类型,确定差异字段单元中代码变更内容的内容压缩优先级从高到低依次为:文件删除类型下被删除的代码文件中的被删除代码->文件新增类型下新增代码文件中的新增代码->文件修改类型下修改代码文件中被修改代码->文件移动类型下被移动文件的文件名->文件删除类型下被删除文件的文件名->文件新增类型下新增文件的文件名->文件修改类型下被修改文件的文件名。
此外,在对差异字段单元中代码变更内容进行代码内容压缩的过程中,在将文件移动类型下被移动文件的文件名合并为文件移动数目的过程中,还可对文件删除关键词、文件新增关键词、文件修改关键词和/或文件移动关键词进行去重或者合并处理。
步骤S406,将所述压缩代码数据输入标题生成模型进行代码合并标题生成,获得代码合并标题。
可选的,所述标题生成模型,根据训练样本和样本标签对预训练模型进行训练获得;所述训练样本,采用如下方式获得:获取包含代码描述字段、代码分支字段和代码差异字段的训练数据,按照压缩优先级对所述训练数据中代码描述字段、代码分支字段和代码差异字段至少一者进行压缩处理,获得压缩训练数据,并基于所述压缩训练数据构建所述训练样本;所述样本标签通过将所述训练样本和生成限制信息输入生成式模型进行标题生成后获得。关于标题生成模型得训练过程还请参照上述提供的标题生成模型训练方法实施例的相应内容,本实施例在此不再赘述。
具体实施时,将压缩代码数据输入标题生成模型进行代码合并标题生成的过程中,可根据压缩代码数据和标题生成关键词构建模型输入数据,通过将构建好的模型输入数据输入标题生成模型进行代码合并标题生成。比如在压缩代码数据之前加入“请根据如下的代码合并数据生成代码合并标题”这一标题生成关键词,将加入该标题生成关键词的压缩代码数据作为模型输入数据。
具体的,在压缩处理过程中删除代码差异字段的情况下,可根据代码描述字段、代码分支字段和标题生成关键词构建模型输入数据;或者,在压缩处理过程中删除代码差异字段和代码分支字段的情况下,可根据代码描述字段、代码分支字段和标题生成关键词构建模型输入数据;在或者,在压缩处理过程中删除代码差异字段和代码分支字段并对代码描述字段包含的描述字段单元进行字段单元删除的情况下,可根据字段单元删除后的代码描述字段和标题生成关键词构建模型输入数据。此外,在压缩处理过程中对差异字段单元中代码变更内容进行代码内容压缩的情况下,可根据代码描述字段、代码分支字段、标题生成关键词和代码内容压缩后的代码差异字段构建模型输入数据。
具体执行过程中,为了使标题生成模型进行代码合并标题生成后输出的代码合并标题更加准确和更加有效性,本实施例提供的一种可选实施方式中,在将压缩代码数据输入标题生成模型进行代码合并标题生成获得代码合并标题后,对代码合并标题进行标题格式检测,若检测通过,将生成的代码合并标题作为代码合并请求的代码合并标题输出。
其中,对代码合并标题进行标题格式检测,采用下述至少一种方式实现:
检测代码合并标题是否为空标题,若是,确定检测通过,若否,确定检测为通过;
检测代码合并标题是否多行标题,若是,确定检测通过,若否,确定检测为通过;
检测代码合并标题的长度是否大于第一标题长度阈值,若是,确定检测通过,若否,确定检测为通过;
检测代码合并标题的长度是否小于第二标题长度阈值,若是,确定检测通过,若否,确定检测为通过;
检测代码合并标题是否包含代码分支字段,若是,确定检测通过,若否,确定检测为通过;
检测代码合并标题的格式是否满足预设格式要求,若是,确定检测通过,若否,确定检测为通过;代码合并标题的格式是否满足预设格式要求,可以是标题开头是否包含英文,是否为英文标题,或者,标签是否包含标点符号。
此外,对代码合并标题进行标题格式检测的检测未通过的情况下,可采用如下方式进行代码合并标题生成和输出:删除所述代码合并数据中的代码分支字段和/或代码差异字段,并将删除后的代码合并数据输入所述标题生成模型进行代码合并标题生成,获得第二代码合并标题;对所述第二代码合并标题进行标题格式检测,若检测通过,将所述第二代码合并标题作为所述代码合并请求的代码合并标题输出;若检测未通过,将所述代码合并标题作为所述代码合并请求的代码合并标题输出。
本说明书提供的一种标题生成模型训练装置实施例如下:
在上述的实施例中,提供了一种标题生成模型训练方法,与之相对应的,还提供了一种标题生成模型训练装置,下面结合附图进行说明。
参照图5,其示出了本实施例提供的一种标题生成模型训练装置实施例的示意图。
由于装置实施例对应于方法实施例,所以描述得比较简单,相关的部分请参见上述提供的方法实施例的对应说明即可。下述描述的装置实施例仅仅是示意性的。
本实施例提供一种标题生成模型训练装置,所述装置包括:
数据获取模块502,被配置为获取代码合并请求的代码合并数据;所述代码合并数据包括代码描述字段、代码分支字段和代码差异字段;
压缩处理模块504,被配置为若所述代码合并数据的数据长度大于预设数据长度,按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,获得压缩代码数据;
构建模块506,被配置为基于所述压缩代码数据构建训练样本,并根据所述代码合并请求的标题信息构建样本标签;
训练模块508,被配置为根据所述训练样本和所述样本标签对预训练模型进行训练,以获得标题生成模型。
本说明书提供的一种代码合并标题生成装置实施例如下:
在上述的实施例中,提供了一种代码合并标题生成方法,与之相对应的,还提供了一种代码合并标题生成装置,下面结合附图进行说明。
参照图6,其示出了本实施例提供的一种代码合并标题生成装置实施例的示意图。
由于装置实施例对应于方法实施例,所以描述得比较简单,相关的部分请参见上述提供的方法实施例的对应说明即可。下述描述的装置实施例仅仅是示意性的。
本实施例提供一种代码合并标题生成装置,所述装置包括:
代码合并数据获取模块602,被配置为获取代码合并请求的代码合并数据;所述代码合并数据包括代码描述字段、代码分支字段和代码差异字段;
压缩处理模块604,被配置为若所述代码合并数据的数据长度大于预设数据长度,按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,获得压缩代码数据;
标题生成模块606,被配置为将所述压缩代码数据输入标题生成模型进行代码合并标题生成,获得代码合并标题。
本说明书提供的一种标题生成模型训练设备实施例如下:
对应上述描述的一种标题生成模型训练方法,基于相同的技术构思,本说明书一个或多个实施例还提供一种标题生成模型训练设备,该标题生成模型训练设备用于执行上述提供的一种标题生成模型训练方法,图7为本说明书一个或多个实施例提供的一种标题生成模型训练设备的结构示意图。
本实施例提供的一种标题生成模型训练设备,包括:
如图7所示,标题生成模型训练设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器701和存储器702,存储器702中可以存储有一个或一个以上存储应用程序或数据。其中,存储器702可以是短暂存储或持久存储。存储在存储器702的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括标题生成模型训练设备中的一系列计算机可执行指令。更进一步地,处理器701可以设置为与存储器702通信,在标题生成模型训练设备上执行存储器702中的一系列计算机可执行指令。标题生成模型训练设备还可以包括一个或一个以上电源703,一个或一个以上有线或无线网络接口704,一个或一个以上输入/输出接口705,一个或一个以上键盘706等。
在一个具体的实施例中,标题生成模型训练设备包括有存储器,以及一个或一个以上的程序,其中一个或者一个以上程序存储于存储器中,且一个或者一个以上程序可以包括一个或一个以上模块,且每个模块可以包括对标题生成模型训练设备中的一系列计算机可执行指令,且经配置以由一个或者一个以上处理器执行该一个或者一个以上程序包含用于进行以下计算机可执行指令:
获取代码合并请求的代码合并数据;所述代码合并数据包括代码描述字段、代码分支字段和代码差异字段;
若所述代码合并数据的数据长度大于预设数据长度,按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,获得压缩代码数据;
基于所述压缩代码数据构建训练样本,并根据所述代码合并请求的标题信息构建样本标签;
根据所述训练样本和所述样本标签对预训练模型进行训练,以获得标题生成模型。
本说明书提供的一种代码合并标题生成设备实施例如下:
对应上述描述的一种代码合并标题生成方法,基于相同的技术构思,本说明书一个或多个实施例还提供一种代码合并标题生成设备,该代码合并标题生成设备用于执行上述提供的一种代码合并标题生成方法,图8为本说明书一个或多个实施例提供的一种代码合并标题生成设备的结构示意图。
本实施例提供的一种代码合并标题生成设备,包括:
如图8所示,代码合并标题生成设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器801和存储器802,存储器802中可以存储有一个或一个以上存储应用程序或数据。其中,存储器802可以是短暂存储或持久存储。存储在存储器802的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括代码合并标题生成设备中的一系列计算机可执行指令。更进一步地,处理器801可以设置为与存储器802通信,在代码合并标题生成设备上执行存储器802中的一系列计算机可执行指令。代码合并标题生成设备还可以包括一个或一个以上电源803,一个或一个以上有线或无线网络接口804,一个或一个以上输入/输出接口805,一个或一个以上键盘806等。
在一个具体的实施例中,代码合并标题生成设备包括有存储器,以及一个或一个以上的程序,其中一个或者一个以上程序存储于存储器中,且一个或者一个以上程序可以包括一个或一个以上模块,且每个模块可以包括对代码合并标题生成设备中的一系列计算机可执行指令,且经配置以由一个或者一个以上处理器执行该一个或者一个以上程序包含用于进行以下计算机可执行指令:
获取代码合并请求的代码合并数据;所述代码合并数据包括代码描述字段、代码分支字段和代码差异字段;
若所述代码合并数据的数据长度大于预设数据长度,按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,获得压缩代码数据;
将所述压缩代码数据输入标题生成模型进行代码合并标题生成,获得代码合并标题。
本说明书提供的一种存储介质实施例如下:
对应上述描述的一种标题生成模型训练方法,基于相同的技术构思,本说明书一个或多个实施例还提供一种存储介质。
本实施例提供的存储介质,用于存储计算机可执行指令,所述计算机可执行指令在被处理器执行时实现以下流程:
获取代码合并请求的代码合并数据;所述代码合并数据包括代码描述字段、代码分支字段和代码差异字段;
若所述代码合并数据的数据长度大于预设数据长度,按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,获得压缩代码数据;
基于所述压缩代码数据构建训练样本,并根据所述代码合并请求的标题信息构建样本标签;
根据所述训练样本和所述样本标签对预训练模型进行训练,以获得标题生成模型。
需要说明的是,本说明书中关于一种存储介质的实施例与本说明书中一种标题生成模型训练方法的实施例基于同一发明构思,因此该实施例的具体实施可以参见前述对应方法的实施,重复之处不再赘述。
本说明书提供的一种存储介质实施例如下:
对应上述描述的一种代码合并标题生成方法,基于相同的技术构思,本说明书一个或多个实施例还提供一种存储介质。
本实施例提供的存储介质,用于存储计算机可执行指令,所述计算机可执行指令在被处理器执行时实现以下流程:
获取代码合并请求的代码合并数据;所述代码合并数据包括代码描述字段、代码分支字段和代码差异字段;
若所述代码合并数据的数据长度大于预设数据长度,按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,获得压缩代码数据;
将所述压缩代码数据输入标题生成模型进行代码合并标题生成,获得代码合并标题。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或者相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处,比如装置实施例、设备实施例和存储介质实施例,三者均相似于方法实施例,所以描述地比较简单,阅读装置实施例、设备实施例和存储介质实施例中的相关内容请参照方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在20世纪30年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书实施例时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括至少一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书的一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上所述仅为本文件的实施例而已,并不用于限制本文件。对于本领域技术人员来说,本文件可以有各种更改和变化。凡在本文件的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本文件的权利要求范围之内。

Claims (24)

1.一种标题生成模型训练方法,包括:
获取代码合并请求的代码合并数据;所述代码合并数据包括代码描述字段、代码分支字段和代码差异字段;
若所述代码合并数据的数据长度大于预设数据长度,按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,获得压缩代码数据;
基于所述压缩代码数据构建训练样本,并根据所述代码合并请求的标题信息构建样本标签;
根据所述训练样本和所述样本标签对预训练模型进行训练,以获得标题生成模型。
2.根据权利要求1所述的标题生成模型训练方法,所述获取代码合并请求的代码合并数据步骤执行之后,还包括:
若所述数据长度小于或者等于所述预设数据长度,基于所述代码合并数据构建训练样本,并根据所述标题信息和所述生成限制信息构建样本标签;
根据构建的训练样本和样本标签对所述预训练模型进行训练,以获得所述标题生成模型。
3.根据权利要求1所述的标题生成模型训练方法,所述按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,包括:
按照所述代码分支字段和所述代码差异字段的字段压缩优先级,对所述代码合并数据进行字段删除;
其中,压缩优先级排序在先的字段在先从所述代码合并数据中删除,压缩优先级排序在后的字段在后从所述代码合并数据中删除。
4.根据权利要求3所述的标题生成模型训练方法,所述按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,还包括:
按照所述代码描述字段包含的描述字段单元的压缩顺序,对所述代码描述字段进行字段单元删除;
其中,压缩顺序排序在先的描述字段单元在先删除,压缩顺序排序在后的描述字段单元在后删除。
5.根据权利要求1所述的标题生成模型训练方法,所述按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,获得压缩代码数据,包括:
按照所述代码差异字段的字段压缩优先级,删除所述代码合并数据中的代码差异字段;
检测删除后的第一代码合并数据的数据长度是否大于所述预设数据长度;
若是,按照所述代码分支字段的字段压缩优先级,删除所述第一代码合并数据中的代码分支字段,若删除后的第二代码合并数据的数据长度小于或者等于所述预设数据长度,将所述第二代码合并数据作为所述压缩代码数据。
6.根据权利要求5所述的标题生成模型训练方法,所述按照所述代码分支字段的字段压缩优先级,删除所述第一代码合并数据中的代码分支字段操作执行之后,还包括:
若所述第二代码合并数据的数据长度大于所述预设数据长度,按照所述代码描述字段包含的描述字段单元的压缩顺序,对所述描述字段单元进行字段单元删除;
检测字段单元删除后的代码描述字段的数据长度是否大于所述预设数据长度;
若是,对所述字段单元删除后的代码描述字段进行二次字段单元删除;
若否,将所述字段单元删除后的代码描述字段作为所述压缩代码数据。
7.根据权利要求1所述的标题生成模型训练方法,所述对所述代码差异字段进行压缩处理,包括:
根据所述代码差异字段包含的差异字段单元的代码变更类型,确定所述差异字段单元中代码变更内容的内容压缩优先级;
按照所述内容压缩优先级对所述差异字段单元中代码变更内容进行代码内容压缩。
8.根据权利要求7所述的标题生成模型训练方法,所述对所述差异字段单元中代码变更内容进行代码内容压缩,采用下述至少一种方式实现:
对文件删除类型下被删除的代码文件中的被删除代码进行删除,对文件新增类型下新增代码文件中的新增代码进行删除,将文件修改类型下修改代码文件中被修改代码压缩为代码修改行数,对文件修改类型下修改代码文件中的被修改代码进行删除,将文件移动类型下被移动文件的文件名合并为文件移动数目,将文件删除类型下被删除文件的文件名合并为文件删除数目,将文件新增类型下新增文件的文件名合并为文件新增数目,将文件修改类型下被修改文件的文件名合并为文件修改数目。
9.根据权利要求1所述的标题生成模型训练方法,所述获取代码合并请求的代码合并数据,包括:在所述代码合并请求的代码合并任务中提取所述代码描述字段、所述代码分支字段和所述代码差异字段;
所述代码合并请求的标题信息,通过将所述压缩代码数据和生成限制信息输入生成式模型进行标题生成后获得。
10.根据权利要求1所述的标题生成模型训练方法,所述基于所述压缩代码数据构建训练样本,并根据所述代码合并请求的标题信息构建样本标签步骤执行之后,且所述根据所述训练样本和所述样本标签对预训练模型进行训练,以获得标题生成模型步骤执行之前,还包括:
对所述样本标签携带的标题信息进行标题格式检测;
若检测通过,执行所述根据所述训练样本和所述样本标签对预训练模型进行训练,以获得标题生成模型步骤;
若检测未通过,删除所述训练样本和所述样本标签。
11.根据权利要求1所述的标题生成模型训练方法,所述对预训练模型进行训练通过调用训练接口实现,通过将所述训练样本和样本标签输入所述训练接口进行所述预训练模型的训练。
12.一种代码合并标题生成方法,包括:
获取代码合并请求的代码合并数据;所述代码合并数据包括代码描述字段、代码分支字段和代码差异字段;
若所述代码合并数据的数据长度大于预设数据长度,按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,获得压缩代码数据;
将所述压缩代码数据输入标题生成模型进行代码合并标题生成,获得代码合并标题。
13.根据权利要求12所述的代码合并标题生成方法,所述将所述压缩代码数据输入标题生成模型进行代码合并标题生成,获得代码合并标题步骤执行之后,还包括:
对所述代码合并标题进行标题格式检测;
若检测通过,将所述代码合并标题作为所述代码合并请求的代码合并标题输出。
14.根据权利要求13所述的代码合并标题生成方法,所述对所述代码合并标题进行标题格式检测步骤执行之后,还包括:
若检测未通过,删除所述代码合并数据中的代码分支字段和/或代码差异字段,并将删除后的代码合并数据输入所述标题生成模型进行代码合并标题生成,获得第二代码合并标题;
对所述第二代码合并标题进行标题格式检测,若检测通过,将所述第二代码合并标题作为所述代码合并请求的代码合并标题输出;若检测未通过,将所述代码合并标题作为所述代码合并请求的代码合并标题输出。
15.根据权利要求12所述的代码合并标题生成方法,所述标题生成模型,根据训练样本和样本标签对预训练模型进行训练获得;
所述训练样本,采用如下方式获得:获取包含代码描述字段、代码分支字段和代码差异字段的训练数据,按照压缩优先级对所述训练数据中代码描述字段、代码分支字段和代码差异字段至少一者进行压缩处理,获得压缩训练数据,并基于所述压缩训练数据构建所述训练样本;
所述样本标签通过将所述训练样本和生成限制信息输入生成式模型进行标题生成后获得。
16.根据权利要求12所述的代码合并标题生成方法,所述按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,获得压缩代码数据,包括:
按照所述代码分支字段和所述代码差异字段的字段压缩优先级,对所述代码合并数据进行字段删除;
其中,压缩优先级排序在先的字段在先从所述代码合并数据中删除,压缩优先级排序在后的字段在后从所述代码合并数据中删除。
17.根据权利要求16所述的代码合并标题生成方法,所述按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,还包括:
按照所述代码描述字段包含的描述字段单元的压缩顺序,对所述代码描述字段进行字段单元删除;
其中,压缩顺序排序在先的描述字段单元在先删除,压缩顺序排序在后的描述字段单元在后删除。
18.根据权利要求12所述的代码合并标题生成方法,所述对所述代码差异字段进行压缩处理,包括:
根据所述代码差异字段包含的差异字段单元的代码变更类型,确定所述差异字段单元中代码变更内容的内容压缩优先级;
按照所述内容压缩优先级对所述差异字段单元中代码变更内容进行代码内容压缩。
19.一种标题生成模型训练装置,包括:
数据获取模块,被配置为获取代码合并请求的代码合并数据;所述代码合并数据包括代码描述字段、代码分支字段和代码差异字段;
压缩处理模块,被配置为若所述代码合并数据的数据长度大于预设数据长度,按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,获得压缩代码数据;
构建模块,被配置为基于所述压缩代码数据构建训练样本,并根据所述代码合并请求的标题信息构建样本标签;
训练模块,被配置为根据所述训练样本和所述样本标签对预训练模型进行训练,以获得标题生成模型。
20.一种代码合并标题生成装置,包括:
代码合并数据获取模块,被配置为获取代码合并请求的代码合并数据;所述代码合并数据包括代码描述字段、代码分支字段和代码差异字段;
压缩处理模块,被配置为若所述代码合并数据的数据长度大于预设数据长度,按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,获得压缩代码数据;
标题生成模块,被配置为将所述压缩代码数据输入标题生成模型进行代码合并标题生成,获得代码合并标题。
21.一种标题生成模型训练设备,包括:
处理器;以及,被配置为存储计算机可执行指令的存储器,所述计算机可执行指令在被执行时使所述处理器:
获取代码合并请求的代码合并数据;所述代码合并数据包括代码描述字段、代码分支字段和代码差异字段;
若所述代码合并数据的数据长度大于预设数据长度,按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,获得压缩代码数据;
基于所述压缩代码数据构建训练样本,并根据所述代码合并请求的标题信息构建样本标签;
根据所述训练样本和所述样本标签对预训练模型进行训练,以获得标题生成模型。
22.一种标题生成模型训练设备,包括:
处理器;以及,被配置为存储计算机可执行指令的存储器,所述计算机可执行指令在被执行时使所述处理器:
获取代码合并请求的代码合并数据;所述代码合并数据包括代码描述字段、代码分支字段和代码差异字段;
若所述代码合并数据的数据长度大于预设数据长度,按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,获得压缩代码数据;
将所述压缩代码数据输入标题生成模型进行代码合并标题生成,获得代码合并标题。
23.一种存储介质,用于存储计算机可执行指令,所述计算机可执行指令在被处理器执行时实现以下流程:
获取代码合并请求的代码合并数据;所述代码合并数据包括代码描述字段、代码分支字段和代码差异字段;
若所述代码合并数据的数据长度大于预设数据长度,按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,获得压缩代码数据;
基于所述压缩代码数据构建训练样本,并根据所述代码合并请求的标题信息构建样本标签;
根据所述训练样本和所述样本标签对预训练模型进行训练,以获得标题生成模型。
24.一种存储介质,用于存储计算机可执行指令,所述计算机可执行指令在被处理器执行时实现以下流程:
获取代码合并请求的代码合并数据;所述代码合并数据包括代码描述字段、代码分支字段和代码差异字段;
若所述代码合并数据的数据长度大于预设数据长度,按照压缩优先级对所述代码描述字段、所述代码分支字段和所述代码差异字段至少一者进行压缩处理,获得压缩代码数据;
将所述压缩代码数据输入标题生成模型进行代码合并标题生成,获得代码合并标题。
CN202311760461.4A 2023-12-20 2023-12-20 标题生成模型训练方法及装置 Pending CN117827173A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311760461.4A CN117827173A (zh) 2023-12-20 2023-12-20 标题生成模型训练方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311760461.4A CN117827173A (zh) 2023-12-20 2023-12-20 标题生成模型训练方法及装置

Publications (1)

Publication Number Publication Date
CN117827173A true CN117827173A (zh) 2024-04-05

Family

ID=90522176

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311760461.4A Pending CN117827173A (zh) 2023-12-20 2023-12-20 标题生成模型训练方法及装置

Country Status (1)

Country Link
CN (1) CN117827173A (zh)

Similar Documents

Publication Publication Date Title
CN117235226A (zh) 一种基于大语言模型的问题应答方法及装置
CN109214193B (zh) 数据加密、机器学习模型训练方法、装置以及电子设备
CN110569428A (zh) 一种推荐模型的构建方法、装置及设备
CN112417093B (zh) 一种模型训练的方法及装置
CN116502633A (zh) 一种业务执行的方法、装置、存储介质及电子设备
CN117591661B (zh) 一种基于大语言模型的问答数据构建方法及装置
CN110245137B (zh) 一种索引的处理方法、装置及设备
CN117828360A (zh) 一种模型训练、代码生成方法、装置、存储介质及设备
CN117371532A (zh) 一种知识库管理方法、系统、设备及介质
CN117707948A (zh) 测试用例生成模型的训练方法及装置
CN116186330B (zh) 一种基于多模态学习的视频去重方法及装置
CN111209277A (zh) 一种数据处理方法、装置、设备及介质
CN117827173A (zh) 标题生成模型训练方法及装置
CN115017915B (zh) 一种模型训练、任务执行的方法及装置
CN114817469B (zh) 文本增强方法、文本增强模型的训练方法及装置
CN117035695B (zh) 一种信息预警的方法、装置、可读存储介质以及电子设备
CN117271611B (zh) 一种基于大模型的信息检索方法、装置及设备
CN117992600B (zh) 一种业务执行方法、装置、存储介质以及电子设备
CN117931672A (zh) 应用于代码变更的查询处理方法及装置
CN117743824A (zh) 一种模型训练、业务执行方法、装置、存储介质及设备
CN117593003A (zh) 一种模型训练的方法、装置、存储介质及电子设备
CN117591217A (zh) 一种信息展示方法、装置、设备及存储介质
CN117743189A (zh) 代码分析方法及装置
CN118035274A (zh) Sql语句的处理方法及装置
CN117494697A (zh) 日志解析处理方法及装置

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