一种基于深度学习的软件众包任务推荐方法技术

技术编号:32916032 阅读:12 留言:0更新日期:2022-04-07 12:06
本发明专利技术公开了一种基于深度学习的软件众包任务推荐方法。目前已有很多相关研究提出使用深度学习的方法对众包任务文本信息来进行众包任务推荐,但在现有的方法中,众包任务文本信息的提取方法缺乏通用性,且由于众包数据分布不平衡的特点,在推荐结果的指标上,命中率与多样性无法兼顾。本发明专利技术方法包含三部分的内容:基于预训练模型Bert提取众包文本特征、基于CNN+LSTM对众包文本特征进行进一步的特征学习和基于上述两个模型作用下的输出,能够自适应克服众包数据分布不平衡的损失函数。通过本发明专利技术可以在简单高效地针对特定软件众包平台实现开发者的推荐,同时也提高了推荐结果的命中率与多样性。的命中率与多样性。的命中率与多样性。

【技术实现步骤摘要】
一种基于深度学习的软件众包任务推荐方法


[0001]本专利技术属于众包领域,涉及一种针对多类型软件众包任务的自适应推荐方法。

技术介绍

[0002]近年来,随着软件复杂性的增加,将一个大的软件开发任务分成几个小的任务是一种常规方法。分离步骤可能包括:(1)将一个大型项目划分为一系列小模块,这些模块具有简单的需求、清晰的接口、明确的目标和全面的测试;(2)将所有这些模块组合成最终的工件。这一趋势为众包软件开发的出现奠定了坚实的基础。
[0003]与传统的外包相比,众包强调的是以自由自愿的形式外包给非特定的大众志愿者的做法,他们被分配到特定项目的小部分。近年来,市场繁荣,出现了许多众包平台,如国内的码市、程序员客栈,国外的TopCoder等。
[0004]在典型的软件众包过程中,首先,请求者将软件开发任务发布到平台上。任何开发人员都可以根据其个人兴趣和熟练程度注册为该特定开发任务的“注册人”。这一过程可能会持续一段时间。接着,如果所需的需求、规格等都清楚,“注册人”再被请求者或平台确认后就可开始工作。最后,在截止日期之前,开发人员应在完成其开发工作后将其最终作品上载到平台,然后等待审阅者或请求者根据几个评价指标确定采纳一个或几个注册者的作品。
[0005]然而,请求者不得不浪费大量时间等待足够的开发人员注册并从他们中间挑选合适的开发人员。即使如此,被选定的开发人员也可能不是特定任务的最合适开发人员,因为“合适的开发人员”可能会因为大量可用任务而错过此任务。当大量开发人员对发布的任务进行注册时,注册者过滤的效率将更差,最终任务作品的质量将更不稳定。因此,为软件众包平台中的任务推荐目标开发人员是非常重要的。但考虑到软件众包平台的特殊性,传统的基于内容的推荐无法获得良好的效果,原因有很多:首先,软件众包历史任务数据集满足二八定律,且极度不平衡。其次,软件众包潜在开发人员数量太大,传统的方法无法有效学习。上述原因会使得“活跃”开发者更容易被推荐,而相对“不活跃”的开发者则容易被“雪藏”,这显然违背了众包的初衷。
[0006]目前的研究中已提出很多推荐方案设计,这些方案主要通过提取相关的文本特征进行适当的推荐,它通常分为基于众包任务的文本特征和基于众包任务与开发者的混合文本特征;基于众包任务文本的特征,往往强依赖于一些关键字或针对某个任务类型进行优化,缺乏一定的通用性;基于任务文本与开发者的混合文本特征加入了有关开发者信息,但目前大部分软件众包平台除了在任务完成后提供满意度评分外,并没有为请求者提供更进一步的反馈内容,只能利用开发人员自己定义的文本信息进行建模,但这种信息并不总是可信的。同时大部分方法往往在模型训练过程中只考虑单个开发者,而在实际应用中往往一个软件众包任务需要多个开发者协同完成或有多个候选开发人员,且只使用单个开发者进行训练并不能很好地实现推荐结果的多样性。之所以考虑多样性,其目的是鼓励更多的开发者迁移到任务中,因为众包的本质是利用“群体智慧”。如果专注于优化命中率,那么推
荐系统在统计上是准确的,但是如果它的多样性较差,那么它在实际应用中可能不是很有用。

技术实现思路

[0007]本专利技术的目的在于为进一步提升软件众包推荐方法在推荐命中率与多样性的能力,且具有一定的泛用性,而提出一种基于深度学习的软件众包任务推荐方法。
[0008]本专利技术在深度学习理论的基础上,先对众包任务的文本进行分词,通过Bert预训练模型为下游任务提供词向量,从而为每个众包任务创建一个二维特征,将其输入由CNN+LSTM组合的深度学习模型,输出结果为对应众包任务对应平台每个开发者(标签)的置信分数,再将其交给能够自适应平衡标签样本分布的损失函数进行训练。该方法能够克服众包任务历史数据不平衡的特点,且能够取得较好的推荐命中率与多样性。
[0009]本专利技术方法的步骤是:
[0010]步骤1.针对特定的众包平台,收集众包任务的文本信息(类别,描述等)及其对应完成的开发者id(一个或多个)。对于开发者,需过滤掉完成任务数量少于q的开发者。
[0011]步骤2.对收集和过滤过的数据进行训练集与测试集的划分,划分的原则是以开发者(标签)为中心,优先保证每个开发者(标签)都有相应的样本在训练集中。
[0012]步骤3.对众包任务的文本信息利用nltk等工具进行分词,因不同任务文本信息分词后长度不同,而模型的输入需要长度一致,需从训练集中得出一个最大长度sequence_length。训练集中分词长度小于sequence_length的样本将其填充,测试集若出现分词长度大于sequence_length的样本将其截断。
[0013]步骤4.将经过分词且填充的训练集样本先输入Bert预训练模型,生成下游任务需要的词向量。生成的词向量再交给由CNN+LSTM的深度学习模型进行进一步的特征学习,最后输出的结果为众包平台每个开发者的置信分数。
[0014]步骤5.将每个开发者置信分数与其任务相对应的真实结果输入至损失函数计算损失并反向传播梯度。
[0015]步骤6.循环步骤4到步骤5,直至模型收敛。
[0016]本专利技术的有益效果:本专利技术只需针对需要应用的众包平台收集一定的众包历史任务数据并经过适当的预处理便可稳定实现其性能。本专利技术的损失函数能够有效自适应平衡众包数据集中开发者(标签)样本分布不平衡的现象,且在训练过程中实行多开发者(标签)训练,可以有效提高推荐的命中率与多样性。
附图说明
[0017]图1是模型CNN+LSTM的架构图。
[0018]图2是LSTM内部架构图。
具体实施方式
[0019]以下结合附图对本专利技术作进一步说明,具体实施步骤如下。
[0020]步骤1.针对特定的众包平台,收集众包任务的文本信息(类别,描述等)及其对应完成的开发者id(一个或多个)。对于开发者,需过滤掉完成任务数量少于q的开发者。
[0021]其中,过滤掉任务完成数量少于q的开发者目的在于要保证待推荐开发者的质量,而根据任务完成数这一指标进行筛选是较为简单可靠的方式。q的大小设定依据具体情况而定。对于收集的众包任务文本信息,因不同平台任务的格式化描述不一致,需将其拼接成一个整体便于统一处理
[0022]步骤2.对收集和过滤过的数据进行训练集与测试集的划分,划分的原则是以开发者(标签)为中心,优先保证每个开发者(标签)都有相应的样本在训练集中。
[0023]步骤3.当对众包任务的文本信息利用nltk等工具进行分词,因不同任务文本信息分词后长度不同,而模型的输入需要长度一致,需从训练集中得出一个最大长度sequence_length。训练集中分词长度小于sequence_length的样本将其填充,测试集若出现分词长度大于sequence_length的样本将其截断。
[0024]其中,分词的结果可以根据分词的长度及正则表达式等手段排除一些常用词及标点符号(如:中文中的“的”、“我们”等;英文中的“am”,“is本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于深度学习的软件众包任务推荐方法,其特征在于该方法包括以下步骤:步骤1. 针对特定的众包平台,收集众包任务的文本信息及其对应完成的开发者id,并进行过滤;步骤2. 对收集和过滤过的数据进行训练集与测试集的划分;步骤3. 对众包任务的文本信息进行分词,从训练集中得出一个最大长度sequence_length;训练集中分词长度小于sequence_length的样本将其填充,测试集若出现分词长度大于sequence_length的样本将其截断;步骤4. 将经过分词且填充的训练集样本先输入Bert预训练模型,生成下游任务需要的词向量;生成的词向量再交给由CNN+LSTM的深度学习模型进行进一步的特征学习,最后...

【专利技术属性】
技术研发人员:李尤慧子袁宇宸殷昱煜周丽李玉梁婷婷
申请(专利权)人:杭州电子科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1