CN114879945A - 面向长尾分布特征的多样化api序列推荐方法及装置 - Google Patents

面向长尾分布特征的多样化api序列推荐方法及装置 Download PDF

Info

Publication number
CN114879945A
CN114879945A CN202210458179.XA CN202210458179A CN114879945A CN 114879945 A CN114879945 A CN 114879945A CN 202210458179 A CN202210458179 A CN 202210458179A CN 114879945 A CN114879945 A CN 114879945A
Authority
CN
China
Prior art keywords
api
long
tail
description information
word
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
CN202210458179.XA
Other languages
English (en)
Other versions
CN114879945B (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.)
Wuhan University WHU
Original Assignee
Wuhan University WHU
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 Wuhan University WHU filed Critical Wuhan University WHU
Priority to CN202210458179.XA priority Critical patent/CN114879945B/zh
Publication of CN114879945A publication Critical patent/CN114879945A/zh
Application granted granted Critical
Publication of CN114879945B publication Critical patent/CN114879945B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/37Compiler construction; Parser generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/335Filtering based on additional data, e.g. user or group profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • G06F40/289Phrasal analysis, e.g. finite state techniques or chunking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Biomedical Technology (AREA)
  • Databases & Information Systems (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种面向长尾分布特征的多样化API序列推荐方法及装置。本发明中,分析了API的长尾分布,对长尾API聚类后,利用聚类中心替换长尾API,得到重新标签后的数据集,构建了编码器,逐个读取输入,将自然语言的开发者需求查询编码为基于时间步的编码器隐藏状态,构建了解码器,按时间步生成解码器隐藏状态,融合学习排序技术计算损失函数,使用集束搜索进行API序列的输出。因此本发明能够基于开发者自然语言需求生成API序列,提升API序列推荐结果的准确度,在不显著降低API序列推荐结果准确度的情况下,有效提升多样性。

Description

面向长尾分布特征的多样化API序列推荐方法及装置
技术领域
本发明涉及软件工程服务推荐技术领域,尤其涉及一种面向长尾分布特征的多样化API序列推荐方法及装置。
背景技术
应用编程接口(Application Programming Interface,API)是软件开发的基石,对于提升软件开发的效率和质量具有重要意义。API的合理调用可以帮助开发者高效完成各类编程任务进而缩短整个软件开发周期。然而,随着API数量井喷式发展,开发人员要熟悉大型库中的所有API并不容易。因此,开发者需要经常通过Google、Stack Overflow等搜索引擎来查找解决任务的API使用序列。这些搜索工具是基于关键词检索来寻找与开发者所搜素的query相似的历史query的答案来作为推荐结果,准确度和效率都比较低下。API序列推荐(API Sequence Recommendation)可以根据开发者的需求query,从海量的API中找到开发者适合的API序列从而提高编程效率。
多样化API序列推荐(DiversifiedAPI Recommendation)是一种对于API序列的多样化的推荐,能够基于需求给予开发人员多样化的API序列的选择。多样化的API推荐对于开发者编程尤为重要,可以提高那些目前出现频率低但是总量很大的API的曝光率,进而提高整个行业生态的健康发展。对于部分较为偏僻的软件开发领域,可以领先更加优质的接口调用,大大提高软件制品开发的效率。
近年来,研究人员提出了许多方法对API进行推荐,但现有技术中的API推荐方法主要研究了API推荐的准确性,忽视了API序列的多样性的需求。现有的API推荐方法往往将长尾API从数据集中删除,使其推荐结果区域流行的API,无法推荐出长尾API,影响API推荐结果的多样性。
发明内容
为解决上述技术问题,本发明提供一种面向长尾分布特征的多样化API序列推荐方法及装置。
第一方面,本发明提供一种面向长尾分布特征的多样化API序列推荐方法,所述面向长尾分布特征的多样化API序列推荐方法包括:
S1:获取原始数据集,对原始数据集进行分析及数据预处理,将原始数据集中切分成单词和符号片段的API合成完整的API,统计API的出现频率,得到API的长尾分布,基于长尾API的名字相似度及描述文档相似度,对长尾API进行聚类,使用聚类中心替换原始数据集中的长尾API,形成重新打标签后的数据集;
S2:构建编码器,对于自然语言的开发者需求,逐单词利用词嵌入技术生成词向量后输入到编码器中,编码为基于时间步的编码器隐藏状态;
S3:构建解码器,按基于时间步的编码器隐藏状态基于注意力机制生成解码器隐藏状态,解码器隐藏状态经融合学习排序方法的损失函数评估序列得分后利用集束搜索后处理生成多样化API序列。
可选的,所述将原始数据集中切分成单词和符号片段的API合成完整的API,统计API的出现频率,得到API的长尾分布,基于长尾API的名字相似度及描述文档相似度,对长尾API进行聚类,使用聚类中心替换原始数据集中的长尾API,形成重新打标签后的数据集包括:
S1.1:从获取的原始数据集中提取所有的需求-API序列对,对需求进行去停用词,对API序列使用启发式规则将API单词和符号片段合成为完整的API作为推荐的最小单元;
S1.2:遍历原始数据集中经处理后的所有API,统计其出现的频率,得到API的长尾分布,获取到长尾API的集合;
S1.3:下载Java SE 8文档,使用启发式规则解析每个API的HTML网页提取API及其描述信息,挖掘具有继承关系的API的描述信息互相作为描述信息的补充,形成API的描述信息集合;
S1.4:对于所有的API描述信息,构建描述信息词IDF逆文档频率字典,计算公式为:
Figure BDA0003619488250000021
其中,IDFword表示单词word的IDF值,|D|表示描述信息的数量,Di表示第i条描述信息;
S1.5:根据步骤1.4得到的描述信息的IDF字典,利用BM25算法计算长尾API的两段描述信息之间的相似度,其计算公式为:
Figure BDA0003619488250000031
Figure BDA0003619488250000032
Figure BDA0003619488250000033
其中
Figure BDA0003619488250000034
表示第i条描述信息中单词的数量,Lavg表示所有描述信息中单词的平均长度,k1,b,k3为可调参数,根据经验取值,
Figure BDA0003619488250000035
表示单词w在描述信息Di中的词频,
Figure BDA0003619488250000036
表示单词w在描述信息Di中出现的次数;
S1.6:根据步骤1.3得到的每个长尾API的描述信息集合,第一条为长尾API自身的功能描述信息,其他为具有继承关系的描述信息,设立信号量,将自身的描述信息信号量设为1,由继承关系获取到的描述信息信号量设为0.8,两个长尾API之间的描述信息相似度由两个API之间的所有描述信息相似度最大值得到,计算公式如下:
Figure BDA0003619488250000037
S1.7:两个长尾API之间的名字相似度根据最小编辑距离来计算,其计算公式如下:
Figure BDA0003619488250000038
Figure BDA0003619488250000039
其中
Figure BDA00036194882500000310
表示第i个长尾API的名字长度;
S1.8:将步骤1.6和步骤1.7分别得到的两个长尾API之间的描述信息相似度和名字相似度,经归一化并设定最小阈值后,分为给予不同的权重,求得两个长尾API的相似度分数,其计算公式如下:
Figure BDA00036194882500000311
其中α和β为权重,δ1和δ2为阈值,均根据实际需要进行设置;
S1.9:根据步骤1.8得到的长尾API间的相似度分数,利用谱聚类算法将长尾API进行聚类,并把聚类中心替换掉长尾API,形成重新打标签后的数据集。
可选的,所述对原始数据集进行分析及数据预处理包括:
删除原始数据集中重复的需求-API序列对以及存在错误的需求-API序列对。
可选的,S2包括:
S2.1:给定开发者的自然语言需求查询,将其经数据预处理后划分为单词序列,通过词嵌入技术,将每个单词都转化为词向量xi
S2.2:构建编码器,编码器是一个标准的双向LSTM网络,按照时间步t根据前一个时间步前向隐藏层状态、后一个时间步反向隐藏层状态和当前输入的词向量计算出当前的隐藏层状态ht
Figure BDA0003619488250000041
Figure BDA0003619488250000042
Figure BDA0003619488250000043
其中,
Figure BDA0003619488250000044
表示当前时间步t的前向隐藏层状态,
Figure BDA0003619488250000045
表示当前时间步t的反向隐藏层状态,[:]是向量拼接操作;
S2.3:通过编码器的输出层得到每个时间步t的编码器的隐藏状态,作为解码器的输入。
可选的,所述S3包括:
S3.1:获取解码器的注意力分配:
ct=∑αtjhj
其中权重
Figure BDA0003619488250000047
va、W以及U均为待学习参数;
S3.2:解码器的输入为目标序列上一个词的词向量yt-1、前一个时间步解码器生成的隐藏层状态st-1以及注意力分配向量ct,其中词向量利用概率选择是训练样本词向量和生成词向量;
S3.3:构建解码器,解码器是一个GRU网络,基于步骤3.2中的输入,生成当前时间步生成的序列当前状态:
Figure BDA0003619488250000046
其中
Figure BDA0003619488250000055
S3.4:通过解码器输出的序列当前状态融合学习排序方法,基于生成的序列当前状态的排序损失函数模型,评价生成的预测值和数据集标签中真实值不一样的程度,其计算方式如下:
Figure BDA0003619488250000052
L=-logP(π|f(x))
其中L表示损失函数,f(x)表示解码器生成的序列状态得分,
Figure BDA0003619488250000053
是指数映射即
Figure BDA0003619488250000054
表示πi的序列状态得分。
S3.5:利用集束搜素的后处理技术,得到若干个API序列。
第二方面,本发明还提供一种面向长尾分布特征的多样化API序列推荐装置,所述面向长尾分布特征的多样化API序列推荐装置包括:
重新构建数据集标签模块,用于获取原始数据集,对原始数据集进行分析及数据预处理,将原始数据集中切分成单词和符号片段的API合成完整的API,统计API的出现频率,得到API的长尾分布,基于长尾API的名字相似度及描述文档相似度,对长尾API进行聚类,使用聚类中心替换原始数据集中的长尾API,形成重新打标签后的数据集;
编码器模块,用于构建编码器,对于自然语言的开发者需求,逐单词利用词嵌入技术生成词向量后输入到编码器中,编码为基于时间步的编码器隐藏状态;
解码器模块,用于构建解码器,按基于时间步的编码器隐藏状态基于注意力机制生成解码器隐藏状态,解码器隐藏状态经融合学习排序方法的损失函数评估序列得分后利用集束搜索后处理生成多样化API序列。
可选的,所述重新构建数据集标签模块,用于:
S1.1:从获取的原始数据集中提取所有的需求-API序列对,对需求进行去停用词,对API序列使用启发式规则将API单词和符号片段合成为完整的API作为推荐的最小单元;
S1.2:遍历原始数据集中经处理后的所有API,统计其出现的频率,得到API的长尾分布,获取到长尾API的集合;
S1.3:下载Java SE 8文档,使用启发式规则解析每个API的HTML网页提取API及其描述信息,挖掘具有继承关系的API的描述信息互相作为描述信息的补充,形成API的描述信息集合;
S1.4:对于所有的API描述信息,构建描述信息词IDF逆文档频率字典,计算公式为:
Figure BDA0003619488250000061
其中,IDFword表示单词word的IDF值,|D|表示描述信息的数量,Di表示第i条描述信息;
S1.5:根据步骤1.4得到的描述信息的IDF字典,利用BM25算法计算长尾API的两段描述信息之间的相似度,其计算公式为:
Figure BDA0003619488250000062
Figure BDA0003619488250000063
Figure BDA0003619488250000064
其中
Figure BDA0003619488250000065
表示第i条描述信息中单词的数量,Lavg表示所有描述信息中单词的平均长度,k1,b,k3为可调参数,根据经验取值,
Figure BDA0003619488250000066
表示单词w在描述信息Di中的词频,
Figure BDA0003619488250000067
表示单词w在描述信息Di中出现的次数;
S1.6:根据步骤1.3得到的每个长尾API的描述信息集合,第一条为长尾API自身的功能描述信息,其他为具有继承关系的描述信息,设立信号量,将自身的描述信息信号量设为1,由继承关系获取到的描述信息信号量设为0.8,两个长尾API之间的描述信息相似度由两个API之间的所有描述信息相似度最大值得到,计算公式如下:
Figure BDA0003619488250000068
S1.7:两个长尾API之间的名字相似度根据最小编辑距离来计算,其计算公式如下:
Figure BDA0003619488250000069
Figure BDA0003619488250000071
其中
Figure BDA0003619488250000072
表示第i个长尾API的名字长度;
S1.8:将步骤1.6和步骤1.7分别得到的两个长尾API之间的描述信息相似度和名字相似度,经归一化并设定最小阈值后,分为给予不同的权重,求得两个长尾API的相似度分数,其计算公式如下:
Figure BDA0003619488250000073
其中α和β为权重,δ1和δ2为阈值,均根据实际需要进行设置;
S1.9:根据步骤1.8得到的长尾API间的相似度分数,利用谱聚类算法将长尾API进行聚类,并把聚类中心替换掉长尾API,形成重新打标签后的数据集。
可选的,所述重新构建数据集标签模块,用于:
删除原始数据集中重复的需求-API序列对以及存在错误的需求-API序列对。
可选的,所述编码器模块,用于:
S2.1:给定开发者的自然语言需求查询,将其经数据预处理后划分为单词序列,通过词嵌入技术,将每个单词都转化为词向量xi
S2.2:构建编码器,编码器是一个标准的双向LSTM网络,按照时间步t根据前一个时间步前向隐藏层状态、后一个时间步反向隐藏层状态和当前输入的词向量计算出当前的隐藏层状态ht
Figure BDA0003619488250000074
Figure BDA0003619488250000075
Figure BDA0003619488250000076
其中,
Figure BDA0003619488250000077
表示当前时间步t的前向隐藏层状态,
Figure BDA0003619488250000078
表示当前时间步t的反向隐藏层状态,[:]是向量拼接操作;
S2.3:通过编码器的输出层得到每个时间步t的编码器的隐藏状态,作为解码器的输入。
可选的,所述解码器模块,用于:
S3.1:获取解码器的注意力分配:
ct=∑αtjhj
其中权重
Figure BDA0003619488250000081
va、W以及U均为待学习参数;
S3.2:解码器的输入为目标序列上一个词的词向量yt-1、前一个时间步解码器生成的隐藏层状态st-1以及注意力分配向量ct,其中词向量利用概率选择是训练样本词向量和生成词向量;
S3.3:构建解码器,解码器是一个GRU网络,基于步骤3.2中的输入,生成当前时间步生成的序列当前状态:
Figure BDA0003619488250000082
其中
Figure BDA0003619488250000083
S3.4:通过解码器输出的序列当前状态融合学习排序方法,基于生成的序列当前状态的排序损失函数模型,评价生成的预测值和数据集标签中真实值不一样的程度,其计算方式如下:
Figure BDA0003619488250000084
L=-logP(π|f(x))
其中L表示损失函数,f(x)表示解码器生成的序列状态得分,
Figure BDA0003619488250000085
是指数映射即
Figure BDA0003619488250000086
表示πi的序列状态得分。
S3.5:利用集束搜素的后处理技术,得到若干个API序列。
本发明中,分析了API的长尾分布,对长尾API聚类后,利用聚类中心替换长尾API,得到重新标签后的数据集,构建了编码器,逐个读取输入,将自然语言的开发者需求查询编码为基于时间步的编码器隐藏状态,构建了解码器,按时间步生成解码器隐藏状态,融合学习排序技术计算损失函数,使用集束搜索进行API序列的输出。因此本发明能够基于开发者自然语言需求生成API序列,提升API序列推荐结果的准确度,在不显著降低API序列推荐结果准确度的情况下,有效提升多样性。
附图说明
图1为本发明面向长尾分布特征的多样化API序列推荐方法一实施例的流程示意图;
图2为本发明面向长尾分布特征的多样化API序列推荐方法一实施例中对数据集重新打标签的场景示意图;
图3为编码器内部单层隐藏层网络结构图;
图4为本发明实施例采用的模型的结构图;
图5为本发明面向长尾分布特征的多样化API序列推荐装置一实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
第一方面,本发明实施例提供了一种面向长尾分布特征的多样化API序列推荐方法。
一实施例中,参照图1,图1为本发明面向长尾分布特征的多样化API序列推荐方法一实施例的流程示意图。如图1所示,面向长尾分布特征的多样化API序列推荐方法包括:
S1:获取原始数据集,对原始数据集进行分析及数据预处理,将原始数据集中切分成单词和符号片段的API合成完整的API,统计API的出现频率,得到API的长尾分布,基于长尾API的名字相似度及描述文档相似度,对长尾API进行聚类,使用聚类中心替换原始数据集中的长尾API,形成重新打标签后的数据集;
本实施例中,对于收集到的原始数据集,该数据集挖掘Github中star>1的java项目,提取自然语言的annotation和API序列对,将annotation视为开发者的需求查询。执行步骤S1,对其中重复或者存在错误的查询-API序列对经启发式规则和人工筛选相结合的方式进行清洗。对于API,使用启发式规则,将数据集中的API单词和符号片段合并成完整的API。之后如图2所示,从Java SE 8描述文档中挖掘每个API的描述信息,并分析数据集中的API,得到API的长尾分布,用API的描述信息计算长尾API间的描述信息相似度,使用编辑距离来计算长尾API的名字相似度,经归一化后给予不同权重求和得到长尾API之间的相似度矩阵,经聚类后,利用聚类中心替换数据集中的长尾API,得到重新打标签后的数据集。
S2:构建编码器,对于自然语言的开发者需求,逐单词利用词嵌入技术生成词向量后输入到编码器中,编码为基于时间步的编码器隐藏状态;
本实施例中,搭建编码器模型,将自然语言查询转化为编码器隐藏层状态,后生成上下文向量。从数据集中将开发者需求查询逐个单词经embedding向量化之后传入编码器中,图3为编码器内部单层隐藏层网络结构图,编码器的隐藏层是双向LSTM网络。经如图3中的双向LSTM网络作为隐藏层计算单词的隐藏状态,通过隐藏状态计算上下文向量输入到解码器中的注意力网络。
S3:构建解码器,按基于时间步的编码器隐藏状态基于注意力机制生成解码器隐藏状态,解码器隐藏状态经融合学习排序方法的损失函数评估序列得分后利用集束搜索后处理生成多样化API序列。
本实施例中,参照图4,本实施例采用的模型的结构为基于RNN的编码器-解码器结构,编码器与解码器之间通过注意力机制连接,解码器与正确标签计算损失函数后经集束搜索生成API序列。
进一步地,为了取得最佳的参数来得到模型的最佳效果,需要对本发明模型中的参数进行对比。
BLEU是一种广泛应用于机器翻译任务的准确性度量方法,来评价翻译出的语言序列同参考语言序列的接近程度。在我们的API序列推荐任务中,将通过开发者的查询生成的一系列API序列集合视为候补API序列,将伪ground truth中的API序列视为参考API序列,使用BLEU来评估模型生成的候补API序列同真实生产环境下开发者写的参考API序列的接近程度,它实际上是计算候补序列在参考序列的n-gram命中率。其计算公式如下:
Figure BDA0003619488250000101
MAP(Mean Average Precision)是对于开发者的查询的mean of the averageprecision分数。
Figure BDA0003619488250000102
MRR(Mean Reciprocal Rank)计算了参考API序列的每个API在候补API序列的第一个出现位置的倒数,将其相加后再求平均数。
Figure BDA0003619488250000111
NDCG(Normalized Discounted Cumulative Gain)可以用来评估候选API序列的排序结果。
Figure BDA0003619488250000112
考虑到API出现在候选API序列中顺序的因素,使排名靠前的增益更高,排名靠后的分数有一定的折损。IDCGAPI,@K相当于是max(DCGAPI,@K),对分数来做归一化。
Figure BDA0003619488250000113
Figure BDA0003619488250000114
覆盖度:我们使用覆盖度来评估API序列推荐的多样性,表示所有推荐列表中暴露的项目在总项目中的比例,在我们的评价中将其定义为所有候补API序列列表中暴露在API在词表中API的比例。
Figure BDA0003619488250000115
本实施例使用的原始数据集是DeepAPI开源的数据集,其从Github中挖掘star>1的java项目,将注释视为数据集中的查询语句,将代码经AST解析后生成的API序列作为解决查询语句的答案。但是该原始数据集的验证集和测试集中几乎没有包含长尾API的查询,为验证我们模型的多样性,按训练集、验证集和测试集查询语句数量100:1:1的比例划分构建一个新的数据集,称为多样化数据集,其中按照数据集中的流行API和长尾API的分布情况,进行分层随机取样,保持多样化数据集的训练集、验证集、测试集中流行API和长尾API是同等分布。
对词嵌入维度进行对比,词嵌入维度往往决定了模型对于查询的单词或者API的特征学习能力。由实验得知在原始数据集和多样化数据集中当词嵌入维度为512时,BLUE、MAP、MRR、NDCG指标均取得了最佳效果,在原始数据集分别为78.25%,86.83%,81.80%,73.31%,在多样化数据集中分别为32.21%,44.93%,44.80%,45.26%。因此,本实施例将词嵌入维度设置为512,使得模型可以有很好的特征学习能力。
对隐藏层层数和单元数对比,在原始数据集中,当隐藏层层数为3,隐藏单元个数为1000时,BLEU、MAP、MRR指标取得了最佳效果,分别为78.25%、86.83%、81.80%,NDCG指标在隐藏层层数为2,隐藏单元个数为1500时取得最佳效果,为73.81%;在多样化数据集中,当隐藏层层数为2,隐藏单元个数为1500时,BLEU、MRR、NDCG指标取得了最佳效果,分别为32.52%、44.86%、45.35%,NDCG指标在隐藏层层数为3,隐藏单元个数为1500时取得最佳效果,为44.93%。
表1和表2是本实施例与基准方法在推荐Top-10API序列的性能对比表,基准方法为DeepAPI、BIKER以及CodeTrans,准确度评价指标为BLEU、MAP、MRR和NDCG,多样性评价指标为覆盖度(coverage)。表1是在原始数据集上的对比,主要来评估准确度,表2是在多样化数据集上的对比,主要来评估多样性。由表1可以看出与基线方法相比,本实施例提升了API序列推荐的准确度。由表2可以看出本实施例在显著提升推荐结果多样性时,没有损害准确度指标。
表1原始数据集性能对比表
DeepAPI BIKER CodeTrans 本实施例
BLEU 37.38% 0 50.06% 78.25%
MAP 43.74% 45.13% 65.15% 86.84%
MRR 41.68% 16.86% 57.62% 81.80%
NDCG 35.45% 5.88% 34.20% 73.16%
表2多样化数据集性能对比表
DeepAPI BIKER CodeTrans 本实施例
BLEU 9.43% 0 24.77% 32.21%
MAP 18.15% 5.54% 33.75% 44.93%
MRR 15.85% 1.63% 23.31% 44.80%
NDCG 15.06% 0.39% 13.24% 45.26%
coverage 3.29% 3.19% 7.44% 10.64%
搭建解码器模型,将上下文向量转化为API序列。构建解码器的注意力机制网络部分,注意力机制网络中包含有query、key以及value三个输入部分,分别由编码器最后一个单词的隐藏状态、编码器所有单词的隐藏状态和编码器所有单词的隐藏状态所组成,其中key和value的值相等,注意力机制网络可以为解码器的每个时间步提供一个不同的上下文向量。构建解码器的隐藏层,使用GRU网络作为编码器的隐藏层,根据上下文向量、上一个时间步的输出或是正确的标签词嵌入向量和隐藏状态构建当前时间步的隐藏状态,融合学习排序方法计算损失函数,最后利用集束搜索得出API序列。
本实施例中,分析了API的长尾分布,对长尾API聚类后,利用聚类中心替换长尾API,得到重新标签后的数据集,构建了编码器,逐个读取输入,将自然语言的开发者需求查询编码为基于时间步的编码器隐藏状态,构建了解码器,按时间步生成解码器隐藏状态,融合学习排序技术计算损失函数,使用集束搜索进行API序列的输出。因此本实施例能够基于开发者自然语言需求生成API序列,提升API序列推荐结果的准确度,在不显著降低API序列推荐结果准确度的情况下,有效提升多样性。
进一步地,一实施例中,所述将原始数据集中切分成单词和符号片段的API合成完整的API,统计API的出现频率,得到API的长尾分布,基于长尾API的名字相似度及描述文档相似度,对长尾API进行聚类,使用聚类中心替换原始数据集中的长尾API,形成重新打标签后的数据集包括:
S1.1:从获取的原始数据集中提取所有的需求-API序列对,对需求进行去停用词,对API序列使用启发式规则将API单词和符号片段合成为完整的API作为推荐的最小单元;
S1.2:遍历原始数据集中经处理后的所有API,统计其出现的频率,得到API的长尾分布,获取到长尾API的集合;
S1.3:下载Java SE 8文档,使用启发式规则解析每个API的HTML网页提取API及其描述信息,挖掘具有继承关系的API的描述信息互相作为描述信息的补充,形成API的描述信息集合;
S1.4:对于所有的API描述信息,构建描述信息词IDF逆文档频率字典,计算公式为:
Figure BDA0003619488250000131
其中,IDFword表示单词word的IDF值,|D|表示描述信息的数量,Di表示第i条描述信息;
S1.5:根据步骤1.4得到的描述信息的IDF字典,利用BM25算法计算长尾API的两段描述信息之间的相似度,其计算公式为:
Figure BDA0003619488250000141
Figure BDA0003619488250000142
Figure BDA0003619488250000143
其中
Figure BDA0003619488250000144
表示第i条描述信息中单词的数量,Lavg表示所有描述信息中单词的平均长度,k1,b,k3为可调参数,根据经验取值,
Figure BDA0003619488250000145
表示单词w在描述信息Di中的词频,
Figure BDA0003619488250000146
表示单词w在描述信息Di中出现的次数;
其中,可根据经验取k1=1.25,b=0.75,k3=1.25。
S1.6:根据步骤1.3得到的每个长尾API的描述信息集合,第一条为长尾API自身的功能描述信息,其他为具有继承关系的描述信息,设立信号量,将自身的描述信息信号量设为1,由继承关系获取到的描述信息信号量设为0.8,两个长尾API之间的描述信息相似度由两个API之间的所有描述信息相似度最大值得到,计算公式如下:
Figure BDA0003619488250000147
S1.7:两个长尾API之间的名字相似度根据最小编辑距离来计算,其计算公式如下:
Figure BDA0003619488250000148
Figure BDA0003619488250000149
其中
Figure BDA00036194882500001410
表示第i个长尾API的名字长度;
S1.8:将步骤1.6和步骤1.7分别得到的两个长尾API之间的描述信息相似度和名字相似度,经归一化并设定最小阈值后,分为给予不同的权重,求得两个长尾API的相似度分数,其计算公式如下:
Figure BDA00036194882500001411
其中α和β为权重,δ1和δ2为阈值,均根据实际需要进行设置,例如,α和β可分别设为0.8和0.2,δ1和δ2均设为0.2。
S1.9:根据步骤1.8得到的长尾API间的相似度分数,利用谱聚类算法将长尾API进行聚类,并把聚类中心替换掉长尾API,形成重新打标签后的数据集。
进一步地,一实施例中,所述对原始数据集进行分析及数据预处理包括:
删除原始数据集中重复的需求-API序列对以及存在错误的需求-API序列对。
本实施例中,经启发式规则和人工筛选相结合的方式删除原始数据集中重复的需求-API序列对以及存在错误的需求-API序列对。
进一步地,一实施例中,S2包括:
S2.1:给定开发者的自然语言需求查询Q,将其经数据预处理后划分为单词序列q1,q2,…,qn,通过词嵌入技术,将每个单词都转化为词向量xi,其中,xi=Embedding(qi);
S2.2:构建编码器,编码器是一个标准的双向LSTM网络,按照时间步t根据前一个时间步前向隐藏层状态、后一个时间步反向隐藏层状态和当前输入的词向量计算出当前的隐藏层状态ht
Figure BDA0003619488250000151
Figure BDA0003619488250000152
Figure BDA0003619488250000153
其中,
Figure BDA0003619488250000154
表示当前时间步t的前向隐藏层状态,
Figure BDA0003619488250000155
表示当前时间步t的反向隐藏层状态,[:]是向量拼接操作;
S2.3:通过编码器的输出层得到每个时间步t的编码器的隐藏状态,作为解码器的输入。
进一步地,一实施例中,S3包括:
S3.1:获取解码器的注意力分配:
ct=∑αtjhj
其中权重
Figure BDA0003619488250000156
va、W以及U均为待学习参数;
S3.2:解码器的输入为目标序列上一个词的词向量yt-1、前一个时间步解码器生成的隐藏层状态st-1以及注意力分配向量ct,其中词向量利用概率选择是训练样本词向量和生成词向量;
S3.3:构建解码器,解码器是一个GRU网络,基于步骤3.2中的输入,生成当前时间步生成的序列当前状态:
Figure BDA0003619488250000161
其中
Figure BDA0003619488250000162
S3.4:通过解码器输出的序列当前状态融合学习排序方法,基于生成的序列当前状态的排序损失函数模型,评价生成的预测值和数据集标签中真实值不一样的程度,其计算方式如下:
Figure BDA0003619488250000163
L=-logP(π|f(x))
其中L表示损失函数,f(x)表示解码器生成的序列状态得分,
Figure BDA0003619488250000164
是指数映射即
Figure BDA0003619488250000165
表示πi的序列状态得分。
S3.5:利用集束搜素的后处理技术,得到若干个API序列。
第二方面,本发明实施例还提供一种面向长尾分布特征的多样化API序列推荐装置。
一实施例中,参照图5,图5为本发明面向长尾分布特征的多样化API序列推荐装置一实施例的功能模块示意图。如图5所示,面向长尾分布特征的多样化API序列推荐装置包括:
重新构建数据集标签模块10,用于获取原始数据集,对原始数据集进行分析及数据预处理,将原始数据集中切分成单词和符号片段的API合成完整的API,统计API的出现频率,得到API的长尾分布,基于长尾API的名字相似度及描述文档相似度,对长尾API进行聚类,使用聚类中心替换原始数据集中的长尾API,形成重新打标签后的数据集;
编码器模块20,用于构建编码器,对于自然语言的开发者需求,逐单词利用词嵌入技术生成词向量后输入到编码器中,编码为基于时间步的编码器隐藏状态;
解码器模块30,用于构建解码器,按基于时间步的编码器隐藏状态基于注意力机制生成解码器隐藏状态,解码器隐藏状态经融合学习排序方法的损失函数评估序列得分后利用集束搜索后处理生成多样化API序列。
进一步地,一实施例中,所述重新构建数据集标签模块10,用于:
S1.1:从获取的原始数据集中提取所有的需求-API序列对,对需求进行去停用词,对API序列使用启发式规则将API单词和符号片段合成为完整的API作为推荐的最小单元;
S1.2:遍历原始数据集中经处理后的所有API,统计其出现的频率,得到API的长尾分布,获取到长尾API的集合;
S1.3:下载Java SE 8文档,使用启发式规则解析每个API的HTML网页提取API及其描述信息,挖掘具有继承关系的API的描述信息互相作为描述信息的补充,形成API的描述信息集合;
S1.4:对于所有的API描述信息,构建描述信息词IDF逆文档频率字典,计算公式为:
Figure BDA0003619488250000171
其中,IDFword表示单词word的IDF值,|D|表示描述信息的数量,Di表示第i条描述信息;
S1.5:根据步骤1.4得到的描述信息的IDF字典,利用BM25算法计算长尾API的两段描述信息之间的相似度,其计算公式为:
Figure BDA0003619488250000172
Figure BDA0003619488250000173
Figure BDA0003619488250000174
其中
Figure BDA0003619488250000175
表示第i条描述信息中单词的数量,Lavg表示所有描述信息中单词的平均长度,k1,b,k3为可调参数,根据经验取值,
Figure BDA0003619488250000176
表示单词w在描述信息Di中的词频,
Figure BDA0003619488250000177
表示单词w在描述信息Di中出现的次数;
S1.6:根据步骤1.3得到的每个长尾API的描述信息集合,第一条为长尾API自身的功能描述信息,其他为具有继承关系的描述信息,设立信号量,将自身的描述信息信号量设为1,由继承关系获取到的描述信息信号量设为0.8,两个长尾API之间的描述信息相似度由两个API之间的所有描述信息相似度最大值得到,计算公式如下:
Figure BDA0003619488250000181
S1.7:两个长尾API之间的名字相似度根据最小编辑距离来计算,其计算公式如下:
Figure BDA0003619488250000182
Figure BDA0003619488250000183
其中
Figure BDA0003619488250000184
表示第i个长尾API的名字长度;
S1.8:将步骤1.6和步骤1.7分别得到的两个长尾API之间的描述信息相似度和名字相似度,经归一化并设定最小阈值后,分为给予不同的权重,求得两个长尾API的相似度分数,其计算公式如下:
Figure BDA0003619488250000185
其中α和β为权重,δ1和δ2为阈值,均根据实际需要进行设置;
S1.9:根据步骤1.8得到的长尾API间的相似度分数,利用谱聚类算法将长尾API进行聚类,并把聚类中心替换掉长尾API,形成重新打标签后的数据集。
进一步地,一实施例中,所述重新构建数据集标签模块10,用于:
删除原始数据集中重复的需求-API序列对以及存在错误的需求-API序列对。
进一步地,一实施例中,所述编码器模块20,用于:
S2.1:给定开发者的自然语言需求查询,将其经数据预处理后划分为单词序列,通过词嵌入技术,将每个单词都转化为词向量xi
S2.2:构建编码器,编码器是一个标准的双向LSTM网络,按照时间步t根据前一个时间步前向隐藏层状态、后一个时间步反向隐藏层状态和当前输入的词向量计算出当前的隐藏层状态ht
Figure BDA0003619488250000191
Figure BDA0003619488250000192
Figure BDA0003619488250000193
其中,
Figure BDA0003619488250000194
表示当前时间步t的前向隐藏层状态,
Figure BDA0003619488250000195
表示当前时间步t的反向隐藏层状态,[:]是向量拼接操作;
S2.3:通过编码器的输出层得到每个时间步t的编码器的隐藏状态,作为解码器的输入。
进一步地,一实施例中,所述解码器模块30,用于:
S3.1:获取解码器的注意力分配:
ct=∑αtjhj
其中权重
Figure BDA0003619488250000196
va、W以及U均为待学习参数;
S3.2:解码器的输入为目标序列上一个词的词向量yt-1、前一个时间步解码器生成的隐藏层状态st-1以及注意力分配向量ct,其中词向量利用概率选择是训练样本词向量和生成词向量;
S3.3:构建解码器,解码器是一个GRU网络,基于步骤3.2中的输入,生成当前时间步生成的序列当前状态:
Figure BDA0003619488250000197
其中
Figure BDA0003619488250000198
S3.4:通过解码器输出的序列当前状态融合学习排序方法,基于生成的序列当前状态的排序损失函数模型,评价生成的预测值和数据集标签中真实值不一样的程度,其计算方式如下:
Figure BDA0003619488250000199
L=-logP(π|f(x))
其中L表示损失函数,f(x)表示解码器生成的序列状态得分,
Figure BDA00036194882500001910
是指数映射即
Figure BDA00036194882500001911
表示πi的序列状态得分。
S3.5:利用集束搜素的后处理技术,得到若干个API序列。
其中,上述面向长尾分布特征的多样化API序列推荐装置中各个模块的功能实现与上述面向长尾分布特征的多样化API序列推荐方法实施例中各步骤相对应,其功能和实现过程在此处不再一一赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种面向长尾分布特征的多样化API序列推荐方法,其特征在于,所述面向长尾分布特征的多样化API序列推荐方法包括:
S1:获取原始数据集,对原始数据集进行分析及数据预处理,将原始数据集中切分成单词和符号片段的API合成完整的API,统计API的出现频率,得到API的长尾分布,基于长尾API的名字相似度及描述文档相似度,对长尾API进行聚类,使用聚类中心替换原始数据集中的长尾API,形成重新打标签后的数据集;
S2:构建编码器,对于自然语言的开发者需求,逐单词利用词嵌入技术生成词向量后输入到编码器中,编码为基于时间步的编码器隐藏状态;
S3:构建解码器,按基于时间步的编码器隐藏状态基于注意力机制生成解码器隐藏状态,解码器隐藏状态经融合学习排序方法的损失函数评估序列得分后利用集束搜索后处理生成多样化API序列。
2.如权利要求1所述的面向长尾分布特征的多样化API序列推荐方法,其特征在于,所述将原始数据集中切分成单词和符号片段的API合成完整的API,统计API的出现频率,得到API的长尾分布,基于长尾API的名字相似度及描述文档相似度,对长尾API进行聚类,使用聚类中心替换原始数据集中的长尾API,形成重新打标签后的数据集包括:
S1.1:从获取的原始数据集中提取所有的需求-API序列对,对需求进行去停用词,对API序列使用启发式规则将API单词和符号片段合成为完整的API作为推荐的最小单元;
S1.2:遍历原始数据集中经处理后的所有API,统计其出现的频率,得到API的长尾分布,获取到长尾API的集合;
S1.3:下载Java SE 8文档,使用启发式规则解析每个API的HTML网页提取API及其描述信息,挖掘具有继承关系的API的描述信息互相作为描述信息的补充,形成API的描述信息集合;
S1.4:对于所有的API描述信息,构建描述信息词IDF逆文档频率字典,计算公式为:
Figure FDA0003619488240000021
其中,IDFword表示单词word的IDF值,|D|表示描述信息的数量,Di表示第i条描述信息;
S1.5:根据步骤1.4得到的描述信息的IDF字典,利用BM25算法计算长尾API的两段描述信息之间的相似度,其计算公式为:
Figure FDA0003619488240000022
Figure FDA0003619488240000023
Figure FDA0003619488240000024
其中
Figure FDA0003619488240000025
表示第i条描述信息中单词的数量,Lavg表示所有描述信息中单词的平均长度,k1,b,k3为可调参数,根据经验取值,
Figure FDA0003619488240000026
表示单词w在描述信息Di中的词频,
Figure FDA0003619488240000027
表示单词w在描述信息Di中出现的次数;
S1.6:根据步骤1.3得到的每个长尾API的描述信息集合,第一条为长尾API自身的功能描述信息,其他为具有继承关系的描述信息,设立信号量,将自身的描述信息信号量设为1,由继承关系获取到的描述信息信号量设为0.8,两个长尾API之间的描述信息相似度由两个API之间的所有描述信息相似度最大值得到,计算公式如下:
Figure FDA0003619488240000028
S1.7:两个长尾API之间的名字相似度根据最小编辑距离来计算,其计算公式如下:
Figure FDA0003619488240000029
Figure FDA00036194882400000210
其中
Figure FDA00036194882400000211
表示第i个长尾API的名字长度;
S1.8:将步骤1.6和步骤1.7分别得到的两个长尾API之间的描述信息相似度和名字相似度,经归一化并设定最小阈值后,分为给予不同的权重,求得两个长尾API的相似度分数,其计算公式如下:
Figure FDA0003619488240000031
其中α和β为权重,δ1和δ2为阈值,均根据实际需要进行设置;
S1.9:根据步骤1.8得到的长尾API间的相似度分数,利用谱聚类算法将长尾API进行聚类,并把聚类中心替换掉长尾API,形成重新打标签后的数据集。
3.如权利要求2所述的面向长尾分布特征的多样化API序列推荐方法,其特征在于,所述对原始数据集进行分析及数据预处理包括:
删除原始数据集中重复的需求-API序列对以及存在错误的需求-API序列对。
4.如权利要求1所述的面向长尾分布特征的多样化API序列推荐方法,其特征在于,S2包括:
S2.1:给定开发者的自然语言需求查询,将其经数据预处理后划分为单词序列,通过词嵌入技术,将每个单词都转化为词向量xi
S2.2:构建编码器,编码器是一个标准的双向LSTM网络,按照时间步t根据前一个时间步前向隐藏层状态、后一个时间步反向隐藏层状态和当前输入的词向量计算出当前的隐藏层状态ht
Figure FDA0003619488240000032
Figure FDA0003619488240000033
Figure FDA0003619488240000034
其中,
Figure FDA0003619488240000035
表示当前时间步t的前向隐藏层状态,
Figure FDA0003619488240000036
表示当前时间步t的反向隐藏层状态,[:]是向量拼接操作;
S2.3:通过编码器的输出层得到每个时间步t的编码器的隐藏状态,作为解码器的输入。
5.如权利要求1所述的面向长尾分布特征的多样化API序列推荐方法,其特征在于,所述S3包括:
S3.1:获取解码器的注意力分配:
ct=∑αtjhj
其中权重
Figure FDA0003619488240000041
va、W以及U均为待学习参数;
S3.2:解码器的输入为目标序列上一个词的词向量yt-1、前一个时间步解码器生成的隐藏层状态st-1以及注意力分配向量ct,其中词向量利用概率选择是训练样本词向量和生成词向量;
S3.3:构建解码器,解码器是一个GRU网络,基于步骤3.2中的输入,生成当前时间步生成的序列当前状态:
Figure FDA0003619488240000042
其中
Figure FDA0003619488240000043
S3.4:通过解码器输出的序列当前状态融合学习排序方法,基于生成的序列当前状态的排序损失函数模型,评价生成的预测值和数据集标签中真实值不一样的程度,其计算方式如下:
Figure FDA0003619488240000044
L=-logP(π|f(x))
其中L表示损失函数,f(x)表示解码器生成的序列状态得分,
Figure FDA0003619488240000045
是指数映射即
Figure FDA0003619488240000046
Figure FDA0003619488240000047
表示πi的序列状态得分。
S3.5:利用集束搜素的后处理技术,得到若干个API序列。
6.一种面向长尾分布特征的多样化API序列推荐装置,其特征在于,所述面向长尾分布特征的多样化API序列推荐装置包括:
重新构建数据集标签模块,用于获取原始数据集,对原始数据集进行分析及数据预处理,将原始数据集中切分成单词和符号片段的API合成完整的API,统计API的出现频率,得到API的长尾分布,基于长尾API的名字相似度及描述文档相似度,对长尾API进行聚类,使用聚类中心替换原始数据集中的长尾API,形成重新打标签后的数据集;
编码器模块,用于构建编码器,对于自然语言的开发者需求,逐单词利用词嵌入技术生成词向量后输入到编码器中,编码为基于时间步的编码器隐藏状态;
解码器模块,用于构建解码器,按基于时间步的编码器隐藏状态基于注意力机制生成解码器隐藏状态,解码器隐藏状态经融合学习排序方法的损失函数评估序列得分后利用集束搜索后处理生成多样化API序列。
7.如权利要求6所述的面向长尾分布特征的多样化API序列推荐装置,其特征在于,所述重新构建数据集标签模块,用于:
S1.1:从获取的原始数据集中提取所有的需求-API序列对,对需求进行去停用词,对API序列使用启发式规则将API单词和符号片段合成为完整的API作为推荐的最小单元;
S1.2:遍历原始数据集中经处理后的所有API,统计其出现的频率,得到API的长尾分布,获取到长尾API的集合;
S1.3:下载Java SE 8文档,使用启发式规则解析每个API的HTML网页提取API及其描述信息,挖掘具有继承关系的API的描述信息互相作为描述信息的补充,形成API的描述信息集合;
S1.4:对于所有的API描述信息,构建描述信息词IDF逆文档频率字典,计算公式为:
Figure FDA0003619488240000051
其中,IDFwprd表示单词word的IDF值,|D|表示描述信息的数量,Di表示第i条描述信息;
S1.5:根据步骤1.4得到的描述信息的IDF字典,利用BM25算法计算长尾API的两段描述信息之间的相似度,其计算公式为:
Figure FDA0003619488240000052
Figure FDA0003619488240000053
Figure FDA0003619488240000054
其中
Figure FDA0003619488240000055
表示第i条描述信息中单词的数量,Lavg表示所有描述信息中单词的平均长度,k1,b,k3为可调参数,根据经验取值,
Figure FDA0003619488240000056
表示单词w在描述信息Di中的词频,
Figure FDA0003619488240000066
表示单词w在描述信息Di中出现的次数;
S1.6:根据步骤1.3得到的每个长尾API的描述信息集合,第一条为长尾API自身的功能描述信息,其他为具有继承关系的描述信息,设立信号量,将自身的描述信息信号量设为1,由继承关系获取到的描述信息信号量设为0.8,两个长尾API之间的描述信息相似度由两个API之间的所有描述信息相似度最大值得到,计算公式如下:
Figure FDA0003619488240000061
S1.7:两个长尾API之间的名字相似度根据最小编辑距离来计算,其计算公式如下:
Figure FDA0003619488240000062
Figure FDA0003619488240000063
其中
Figure FDA0003619488240000064
表示第i个长尾API的名字长度;
S1.8:将步骤1.6和步骤1.7分别得到的两个长尾API之间的描述信息相似度和名字相似度,经归一化并设定最小阈值后,分为给予不同的权重,求得两个长尾API的相似度分数,其计算公式如下:
Figure FDA0003619488240000065
其中α和β为权重,δ1和δ2为阈值,均根据实际需要进行设置;
S1.9:根据步骤1.8得到的长尾API间的相似度分数,利用谱聚类算法将长尾API进行聚类,并把聚类中心替换掉长尾API,形成重新打标签后的数据集。
8.如权利要求7所述的面向长尾分布特征的多样化API序列推荐装置,其特征在于,所述重新构建数据集标签模块,用于:
删除原始数据集中重复的需求-API序列对以及存在错误的需求-API序列对。
9.如权利要求6所述的面向长尾分布特征的多样化API序列推荐装置,其特征在于,所述编码器模块,用于:
S2.1:给定开发者的自然语言需求查询,将其经数据预处理后划分为单词序列,通过词嵌入技术,将每个单词都转化为词向量xi
S2.2:构建编码器,编码器是一个标准的双向LSTM网络,按照时间步t根据前一个时间步前向隐藏层状态、后一个时间步反向隐藏层状态和当前输入的词向量计算出当前的隐藏层状态ht
Figure FDA0003619488240000071
Figure FDA0003619488240000072
Figure FDA0003619488240000073
其中,
Figure FDA0003619488240000074
表示当前时间步t的前向隐藏层状态,
Figure FDA0003619488240000075
表示当前时间步t的反向隐藏层状态,[:]是向量拼接操作;
S2.3:通过编码器的输出层得到每个时间步t的编码器的隐藏状态,作为解码器的输入。
10.如权利要求6所述的面向长尾分布特征的多样化API序列推荐装置,其特征在于,所述解码器模块,用于:
S3.1:获取解码器的注意力分配:
ct=∑αtjhj
其中权重
Figure FDA0003619488240000076
va、W以及U均为待学习参数;
S3.2:解码器的输入为目标序列上一个词的词向量yt-1、前一个时间步解码器生成的隐藏层状态st-1以及注意力分配向量ct,其中词向量利用概率选择是训练样本词向量和生成词向量;
S3.3:构建解码器,解码器是一个GRU网络,基于步骤3.2中的输入,生成当前时间步生成的序列当前状态:
Figure FDA0003619488240000077
其中
Figure FDA0003619488240000078
S3.4:通过解码器输出的序列当前状态融合学习排序方法,基于生成的序列当前状态的排序损失函数模型,评价生成的预测值和数据集标签中真实值不一样的程度,其计算方式如下:
Figure FDA0003619488240000081
L=-logP(π|f(x))
其中L表示损失函数,f(x)表示解码器生成的序列状态得分,
Figure FDA0003619488240000082
是指数映射即
Figure FDA0003619488240000083
Figure FDA0003619488240000084
表示πi的序列状态得分。
S3.5:利用集束搜素的后处理技术,得到若干个API序列。
CN202210458179.XA 2022-04-27 2022-04-27 面向长尾分布特征的多样化api序列推荐方法及装置 Active CN114879945B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210458179.XA CN114879945B (zh) 2022-04-27 2022-04-27 面向长尾分布特征的多样化api序列推荐方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210458179.XA CN114879945B (zh) 2022-04-27 2022-04-27 面向长尾分布特征的多样化api序列推荐方法及装置

Publications (2)

Publication Number Publication Date
CN114879945A true CN114879945A (zh) 2022-08-09
CN114879945B CN114879945B (zh) 2024-07-16

Family

ID=82671151

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210458179.XA Active CN114879945B (zh) 2022-04-27 2022-04-27 面向长尾分布特征的多样化api序列推荐方法及装置

Country Status (1)

Country Link
CN (1) CN114879945B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116203929B (zh) * 2023-03-01 2024-01-05 中国矿业大学 一种面向长尾分布数据的工业过程故障诊断方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021159448A1 (zh) * 2020-02-14 2021-08-19 中国科学院深圳先进技术研究院 一种基于序列推荐系统的通用网络压缩框架和压缩方法
WO2021184311A1 (zh) * 2020-03-19 2021-09-23 中山大学 一种自动生成可推理问答的方法和装置
CN114357146A (zh) * 2021-12-13 2022-04-15 武汉大学 一种基于lstm和多样化集束搜索的多样化api推荐方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021159448A1 (zh) * 2020-02-14 2021-08-19 中国科学院深圳先进技术研究院 一种基于序列推荐系统的通用网络压缩框架和压缩方法
WO2021184311A1 (zh) * 2020-03-19 2021-09-23 中山大学 一种自动生成可推理问答的方法和装置
CN114357146A (zh) * 2021-12-13 2022-04-15 武汉大学 一种基于lstm和多样化集束搜索的多样化api推荐方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
印桂生;张亚楠;董红斌;董宇欣;: "一种由长尾分布约束的推荐方法", 计算机研究与发展, no. 09, 15 September 2013 (2013-09-15) *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116203929B (zh) * 2023-03-01 2024-01-05 中国矿业大学 一种面向长尾分布数据的工业过程故障诊断方法

Also Published As

Publication number Publication date
CN114879945B (zh) 2024-07-16

Similar Documents

Publication Publication Date Title
Hulsebos et al. Gittables: A large-scale corpus of relational tables
CN109344250B (zh) 基于医保数据的单病种诊断信息快速结构化方法
CN101430695B (zh) 用于计算单词之间的差相关度的系统和方法
US20220237230A1 (en) System and method for automated file reporting
CN112632228A (zh) 一种基于文本挖掘的辅助评标方法及系统
CN103309886A (zh) 一种基于交易平台的结构化信息搜索方法和装置
CN112051986B (zh) 基于开源知识的代码搜索推荐装置及方法
CN115545671B (zh) 一种法律法规结构化处理的方法、系统
CN113836896A (zh) 一种基于深度学习的专利文本摘要生成方法和装置
CN112131341A (zh) 文本相似度计算方法、装置、电子设备和存储介质
CN112818117A (zh) 标签映射方法、系统、计算机可读存储介质
CN117891939A (zh) 粒子群算法结合cnn卷积神经网络的文本分类方法
CN114879945A (zh) 面向长尾分布特征的多样化api序列推荐方法及装置
CN117574858A (zh) 一种基于大语言模型的类案检索报告自动生成方法
CN114077661A (zh) 信息处理装置、信息处理方法和计算机可读介质
CN111104492B (zh) 一种基于层次化Attention机制的民航领域自动问答方法
CN117236324A (zh) 基于tf-idf的关键词提取方法
CN114783446B (zh) 一种基于对比预测编码的语音识别方法及系统
CN109918495A (zh) 一种面向交通事故责任纠纷案件的法条推荐方法
CN111045716B (zh) 一种基于异构数据的相关补丁推荐方法
Naseria et al. Accelerating Legislation Processes through Semantic Similarity Analysis with BERT-based Deep Learning
CN115374108B (zh) 一种基于知识图谱技术的数据标准生成与自动映射方法
CN114297479B (zh) 一种结合LDA主题模型和GloVe词向量技术的API推荐方法
CN114118085B (zh) 一种文本信息的处理方法、装置及设备
CN109977269B (zh) 一种针对xml文件的数据自适应融合方法

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