1.一种面向自然语言形式问题的基于讲义和Stack Overflow的API相关信息检索方法,其特征在于,所述面向自然语言形式问题的基于讲义和Stack Overflow的API相关信息检索方法包括以下步骤:步骤一,构建API与知识项的API-KI库;API-KI库包含API与讲义段的API-段对、API与问答帖的API-Q&A对,并进行提取;
步骤二,对自然语言形式的提问进行分析,获取与问题相应的潜在API;
步骤三,使用相关性鉴别模型TDML对相关的API-KI对进行鉴别;
步骤四,将潜在API与相关的API-KI对匹配生成候选列表,并根据排序策略对候选列表进行降序排列,最后返回排序后的API-KI列表作为问题的解答。
2.如权利要求1所述的面向自然语言形式问题的基于讲义和Stack Overflow的API相关信息检索方法,其特征在于,步骤一中,从API讲义中提取API-段对包括:对API讲义划分为多个段,每段内容紧密相关并集中于某一个主题;采用相同的分段策略,提取
从SO问答帖中提取API-Q&A对包括:根据问题的标签收集与API相关的问答帖;
构造正例时,挑选的问答对中所提问题包括至少三个回答且有一个被接受的回答作为最终结果;被接受的问题包含代码;将回答中的代码进行分词处理,并与该问题标签类的讲义中的各API进行匹配,得到问答帖对应的API;正例API-Q&A对标记为相关。
未被接受的答案中的API由于不能很好地解决该问题,API与问答对组成API-Q&A对的负例;构造负例时,收集含有未接受回答的问题;每个未接受回答的分数小于0;提取未接受回答中的API,并与问答对组成API-Q&A对的负例;随机选取的负例数目和正例相同,负例API-Q&A对标记为不相关。
3.如权利要求1所述的面向自然语言形式问题的基于讲义和Stack Overflow的API相关信息检索方法,其特征在于,步骤二中,先将问题转化为数个潜在的API,再用API检索相关文档;使用Javadoc对自然语言问题进行分析并转化为潜在的API,具体包括:Jsoup从在线文档中提取API相应的Javadoc;提取出的API规范包括API全称和API描述;
Word2Vec对问题、API全称、API描述三种语料进行训练,得到语料库中每个词的词向量;再分别计算各文档中向量的均值,整个文档的向量,vi表示第i个文档向量;
vq作为自然语言形式问题的向量; 和 分别作为第i个API全称和API描述; 表示vq和 之间的余弦相似性, 表示vq和 之间的余弦相似性;
将 和 降序排列,选择API描述和API全称相似性排名前m的API作为初始的API候选,分别用APId和APIn表示;同时出现在这两个集合中的API更有可能成为潜在的API;将API分为子集1、子集2、子集3,然后使用公式(1)为每个候选API打分;子集1为同时出现在APId和APIn中的API,子集2为只出现在的APId中的API,子集3为只出现在APIn中的API;η作为调整因子用来确保子集1的分数要比其他子集高;η为0.1;
公式(1)遵循两个规则:子集1中的API要比其他子集中的API排名高;相似度值高的API要比相似度值低的API排名更靠前;
对三个子集中的所有API的分数进行排序,选择m个最高的分数对应的API作为潜在API列表;m值为20。
4.如权利要求1所述的面向自然语言形式问题的基于讲义和Stack Overflow的API相关信息检索方法,其特征在于,步骤三中,基于迁移的深度度量学习方法TDML对相关的API-KI对进行鉴别包括:为API-讲义段对的训练集,xiT为第i个带标签的API-讲义段对
样本,NT是API-KI库中API-讲义段对的数目;
为API-Q&A对的训练集,包含NS的API-Q&A对,其中xiS为第i个带
标签的API-Q&A对样本;X=[x1,…,xi,…,xN]为API-KI对的总集合,其中X是既包含API-讲义段对又包含API-Q&A对的N个API-KI对集合,xi表示第i个带标签的API-KI对;
将XT和XS映射至共同的特征空间,同时两者的分布也会趋于相似;生成的特征空间使非线性相关系数最大化,非线性相关系数如下:其中cov(·)表示协方差,var(·)表示自方差,(·)T表示矩阵的转置; 和φ(XS)表示两个非线性映射,将XT和XS映射至非线性的特征空间中;WT和WS分别为投影方向;公式(2)使用不完全的Cholesky分解计算求得的投影方向WT和WS使得 和φ(XS)分别投影至相同的特征空间,并且映射后的样例 和WSφ(XS)相关性最大;X′表示X经过映射后的新的训练样本集合,包含新的XT′即 和新的XS′即WSφ(XS);
将新的训练集X′作为TDML的输入,其中TDML为一个三层的深度神经网络,包括输入层、隐藏层和输出层,对应神经节点的数量分别为d,d-1和d-3;对于输入的x′,经过前向传播,在第m层的输出为:其中f(m)(x′)为由第m层的权重矩阵W(m)和偏差b(m)决定; 为激活函数,此处为tanh函数;深度神经网络学习到所有的权重W(m)和偏差b(m);输入层设置h(0)=x′;
基于极小极大原理,TDML将同时最小化类内API-KI对的距离以及最大化类间API-KI对的距离;输出层的目标函数为:其中g(W(m),b(m),X′)为判定项,γ(γ>0)为可调的正归一化参数;||·||F表示Frobenius范数;判定项g(W(m),b(m),X′)如下:其中若xj′为xi′的k1个类内最近邻,Pij为1,否则为0;若xj′为xi′的k2个类间最近邻,Qij为1,否则为0;α(α>0)作为类内耦合和类间分散的重要性平衡参数;
将公式(5)带入,将TDML方法的目标函数(4)整理为:
公式(4)通过梯度下降的方法计算最优权重矩阵W(m)和偏差b(m);此处k1、k2、α和γ经验性的设置为(27,45)、(5,10)、0.1和0.1;
根据学习到的权重矩阵W(m)和偏差b(m),鉴别相关API-KI对首先根据W(m)和b(m),计算公(m)式(3)中f (x′),然后通过公式 计算xi′和xj′之间的距离,并对相关的API-KI对进行鉴别。
5.如权利要求1所述的面向自然语言形式问题的基于讲义和Stack Overflow的API相关信息检索方法,其特征在于,步骤四中,候选列表中API-KI 对与所提与API相关自然语言形式问题越相关,在返回的最终列表中的排名越高;基于三种相似度 和评估相关的API-KI对是否与问题有关,提问与第i个可能的结果之间总相似度Ci计算公式如下:其中 是问题和潜在API之间的相似度, 值由公式(1)计算; 表示潜在
API与API-KI对的语义相似度; 表示问题与API-KI对的语义相似度, 值由Word2Vec和余弦相似度计算;
根据总的相似度Ci对候选列表中的结果进行降序排序,排序后的API-KI列表将作为问题的解答返回给开发者,相似度越高的API-KI对在最终返回的列表中排名也将越高。
6.一种实现权利要求1~5任意一项所述面向自然语言形式问题的基于讲义和Stack Overflow的API相关信息检索方法的计算机程序。
7.一种终端,其特征在于,所述终端搭载实现权利要求1~5任意一项所述基于讲义和Stack Overflow的API相关信息检索方法信息处理器。
8.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1-5任意一项所述的面向自然语言形式问题的基于讲义和Stack Overflow的API相关信息检索方法。
9.一种实现权利要求1~5任意一项所述面向自然语言形式问题的基于讲义和Stack Overflow的API相关信息检索方法的面向自然语言形式问题的基于讲义和Stack Overflow的API相关信息检索系统。
10.一种实现权利要求1~5任意一项所述面向自然语言形式问题的基于讲义和Stack Overflow的API相关信息检索方法的面向自然语言形式问题的基于讲义和Stack Overflow的API相关信息检索网络平台。