(19)国家知识产权局
(12)发明 专利申请
(10)申请公布号
(43)申请公布日
(21)申请 号 202211083423.5
(22)申请日 2022.09.06
(71)申请人 大连理工大 学
地址 116024 辽宁省大连市甘井 子区凌工
路2号
(72)发明人 林鸿飞 汶东震
(74)专利代理 机构 大连星河彩舟专利代理事务
所(普通合伙) 2126 3
专利代理师 陈玲玉 杨阳
(51)Int.Cl.
G06F 8/20(2018.01)
G06F 8/30(2018.01)
G06F 40/279(2020.01)
G06F 40/30(2020.01)
G06N 3/04(2006.01)G06N 3/08(2006.01)
(54)发明名称
基于双模态联合建模的软件设计模式推荐
方法
(57)摘要
本发明公开了基于双模态联合建模的软件
设计模式推荐方法, 充分利用深度语 言模型对自
然语言和程序语言联合建模来解决向用户推荐
软件设计模式的任务。 首先构建用于软件设计模
式推荐的语料库, 其次将用户需求文本和软件源
代码转化为实数特征向量, 然后构建双模态联合
建模的软件设计模式推荐模型并将两种不同模
态的特征向量输入进行交互匹配, 最后面向用户
需求实现软件设计模式推荐。 本发 明能够向用户
提供符合其需求的软件设计模式候选列表, 且相
较于其他模 型具有更加精准的推荐效果, 证明了
基于双模态联合建模的软件设计模式推荐方法
的实用性。
权利要求书3页 说明书11页 附图4页
CN 115390806 A
2022.11.25
CN 115390806 A
1.基于双模态联合建模的软件设计模式推荐方法, 其特 征在于, 包括 步骤如下:
步骤1, 构建用于软件设计模式推荐的语料库, 所述语料库包括不同设计模式的软件源
代码、 软件设计需求文本以及所述软件 源代码、 软件设计需求文本共享的设计模式标签;
步骤2, 应用双模态联合建模的软件设计模式推荐模型, 以步骤1构建的语料库为基础,
实现面向用户需求的软件设计模式推荐, 向用户提供满足用户需求的推荐候选列表, 具体
步骤如下:
步骤2.1, 对用户需求文本进行软件设计 需求特征抽取, 再输入到软件设计 需求理解模
块中, 转化为用户需求特 征向量, 实现用户需求理解;
步骤2.2, 对语料库中的软件源代码进行软件源代码多源特征抽取, 再输入到软件设计
模式理解模块中, 最终转 化为软件设计模式实数 特征向量;
步骤2.3, 将步骤2.1输出的用户需求特征向量与步骤2.2中输出的软件设计模式实数
特征向量输入所述双模态联合建模的软件设计模式推荐模型中进 行向量交互, 实现软件设
计模式匹配, 得到二者的相关性分数, 并以此为依据, 将 语料库中的软件源代码按照相关性
分数进行降序排列, 得到设计模式推荐语料 的候选列表, 并面向用户输出设计模式推荐结
果。
2.根据权利要求1所述基于双模态联合建模的软件设计模式推荐方法, 其特征在于, 所
述步骤1中构建用于软件设计模式推荐的语料库的过程包括所述软件源代码、 软件设计需
求文本的采集、 清洗、 存 储、 标注与合并对齐:
软件源代码以及软件设计需求文本共享相同的数据采集、 清洗和存储流程: 首先通过
网络爬虫实现软件源代码以及软件设计需求文本的采集, 其次通过数据清洗管线, 将无用
的数据清除, 仅保留所需数据, 最后将数据保存在服 务器中, 便 于后续使用;
所述数据标注具体包括: 针对软件源代码所使用的设计模式进行标注, 软件源代码标
注时仅保留三个设计模式作为其标注标签; 针对软件设计需求文本涉及到的设计模式进 行
标注, 根据软件设计需求文本所描述的具体设计问题、 设计功能以及相关指标, 选择合适的
设计模式作为标签进行 标注, 每个软件设计需求文本最多对应三个设计模式标签;
数据合并对齐具体包括: 当软件源代码和软件设计需求文本共享至少一个设计模式标
签时, 将二者配对作为一个数据对, 每个共享的设计模式标签和数据对作为一条语料; 其中
语料库的基本数据形式为软件源代码对应方法级别或者文件级别的代码文本, 软件设计需
求文本为纯自然语言文本描述内容, 设计模式标签对应标注的设计模式的标准名称。
3.根据权利要求1所述基于双模态联合建模的软件设计模式推荐方法, 其特征在于, 构
建所述步骤2中的双 模态联合建模的软件设计模式推荐模型具体包括: 首先对步骤1语料库
中的软件设计需求文本进 行软件设计需求文本特征抽取, 再利用软件设计需求理解模块转
化为软件设计需求实数特征向量; 对步骤1语料库中的软件源代码进行软件源代码多源特
征抽取, 再利用软件设计模式理解模块转化为软件设计模式实数特征向量, 其次将所述两
个实数特征向量输入双 模态联合建模的软件设计模式推荐模型中进行模型训练, 最 终完成
推荐模型的构建。
4.根据权利要求3所述基于双模态联合建模的软件设计模式推荐方法, 其特征在于, 所
述软件设计需求文本特征抽取具体为: 首先在建成的语料库基础上, 进一步对自然语言描
述的软件设计需求文本进行清洗处理, 针对其中包含的非自然语言部分进行正规化处理,权 利 要 求 书 1/3 页
2
CN 115390806 A
2得到满足自然语言表 述规范的软件设计需求文本, 然后抽取软件设计需求文本中提及的当
前软件设计所涉及的编程语言特征, 该特征与 清洗后的软件设计需求文本构成软件设计需
求文本特 征数据。
5.根据权利要求3所述基于双模态联合建模的软件设计模式推荐方法, 其特征在于, 所
述软件设计需求理解模块包括第一自然语言预训练子模块、 项目开 发编程语言特征嵌入子
模块和第一特征融合子模块; 在软件设计需求文本特征抽取 的基础上, 将软件设计需求文
本特征数据通过第一自然语言预训练子模块转换为软件设计需求文本的表示特征向量; 编
程语言类型特征数据通过项目开发编程语言特征嵌入子模块转换为编程语言视角特征向
量, 两种特征向量同时输入到第一特征融合子模块中融合构成软件设计需求实数特征向
量。
6.根据权利要求3所述基于双模态联合建模的软件设计模式推荐方法, 其特征在于, 所
述软件源代码多源特征抽取具体为: 首先针对收集得到的原始数据进行抽取划分, 将与软
件源代码无关的文件去除, 其次针对不同编程语言的软件源代码或文件结合编译器对代码
片段进行编译验证, 确保代码正确性, 并转换为对应的抽象语法树形式, 之后从 中抽取软件
源代码中的三项关键特征, 包括软件源代码方法名、 软件源代码API名以及软件源代码抽象
语法树, 其中软件源代码中方法名称以及API名相应以字 符串序列形式进 行保存, 软件源代
码对应的抽象语法树数据结合 随机游走算法, 对语法树的各条路径进行采样, 得到相 应的
字符串序列作为抽样 语法树采样路径, 最后三种关键特征与软件源代码构成多源软件源代
码特征数据。
7.根据权利要求3所述基于双模态联合建模的软件设计模式推荐方法, 其特征在于, 所
述软件设计模式理解模块包括软件源代码预训练子模块、 第二自然语言预训练子模块、 软
件源代码结构特征抽取子模块和 第二特征融合子模块; 首先在多源软件源代码特征数据基
础上, 将软件源代码输入到软件源代码预训练子模块中获得软件源代码的表示特征向量,
其次将软件源代码方法名与API名按照其在软件源代码 中的原始顺序依 次进行拼接, 并输
入到第二自然语言预训练子模块中, 以获得软件源代码的深度语义特征向量, 然后将抽象
语法树采样路径输入软件源代码结构特征抽取子模块中构建软件源代码的结构特征向量,
最终将三种特 征向量同时输入第二特 征融合模块中 融合构成软件设计模式实数 特征向量。
8.根据权利要求3所述基于双模态联合建模的软件设计模式推荐方法, 其特征在于, 所
述双模态联合建模的软件设计模式推荐模型训练的过程如下:
所述模型基于Bert的Siamese网络, 首先将通过所述理解模块输出的自然语言模态的
软件设计需求实数特征向量与编程语言模态的软件设计模式实数特征向量输入特征交互
融合模块的特征融合神经网络中进行交互融合, 得到双模态设计模式表示向量, 并构建软
件设计模式推荐深度模型, 其次将语料库中的设计模式标签作为训练目标, 并设计用于多
标签分类的设计模式预测分类头, 然后使用文本分类损失函数作为模型训练的损失函数,
将设计模式预测分类头预测得到的设计模式标签与正确标签以及负例样本标签之间组成
三元组, 使用文本分类损失函数对正例与负例之间的样本差距进行学习, 模型训练过程中
使用梯度反向传播算法, 最后使用神经网络常用的优化方法寻找双 模态联合建模的软件设
计模式推荐模型收敛状态。
9.根据权利要求1所述基于双模态联合建模的软件设计模式推荐方法, 其特征在于, 所权 利 要 求 书 2/3 页
3
CN 115390806 A
3
专利 基于双模态联合建模的软件设计模式推荐方法
文档预览
中文文档
19 页
50 下载
1000 浏览
0 评论
0 收藏
3.0分
温馨提示:本文档共19页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 SC 于 2024-03-03 12:13:53上传分享