1.一种结合LDA主题模型和GloVe词向量技术的API推荐方法,其特征在于包括如下步骤:步骤(1)从开源软件仓库中筛选出其中的Java文件,这些文件都以“.java”结尾;
步骤(2)从Java文件中抽取出所有的方法和对应的方法注释,并将每一个方法和对应的方法注释组成一个配对pair=
步骤(3)使用JDT工具将每一个配对pairi(i=1,2,…,n)中的方法method转化为AST,然后遍历AST得到其中method类型为实例创建和方法调用的API组成的API调用序列APISequence;
步骤(4)对每一个配对pairi中的方法注释comment进行预处理:步骤(5)对于每一个配对pairi,将其中所包含的词项随机打乱,生成s个新的副本,随机
1 2 s 1
打乱后生成的所有副本表示为集合RSpairi=(pairi ,pairi ,…,pairi),其中pairi ,
2 s
pairi ,…,pairi均作为一个独立样本且互相为不重复的全排列;
步骤(6)将所有集合RSpariri合并组成一个语料库Q=(RSpair1,RSpair2,…,RSpairn),集合RSpairi中的所有副本均作为语料库中的文档,其数量为n*s;
步骤(7)训练LDA模型,将LDA的主题数设置为K;
步骤(8)计算任意两个词项tx和ty之间的主题相似度simtopic:步骤(9)使用GloVe词嵌入技术对语料库Q中的所有的词项进行训练,得到每个词项tj的词向量步骤(10)计算任意两个词项tx和ty之间的词向量相似度simvector:根据GloVe模型,得到词项tx和ty对应的词向量 和 计算 和 之间的余弦相似度得到词向量相似度simvector:步骤(11)计算任意两个词项tx和ty之间的最终相似度simfinal:将主题相似度simtopic和词向量相似度simvector相乘得到最终相似度simfinal;
步骤(12)输入一个查询词,计算查询词和语料库中的每一个词项tj的最终相似度simfinal,并将所有词项按simfinal从大到小进行排序,最后将其中的单词去除,仅保留API作为最终的API推荐列表。
2.根据权利要求1所述的一种结合LDA主题模型和GloVe词向量技术的API推荐方法,其特征在于步骤(4)对每一个配对pairi中的方法注释comment进行预处理,具体实现如下:
4‑1.删除方法注释中包含的历史版本记录,该历史版本记录通常表示为“xx‑xx‑xx:text”,其中“xx‑xx‑xx”表示日期,“text”表示历史记录;
4‑2.删除方法注释中包含的数字、标点、URL、源代码噪音信息,并把所有单词转换为小写字母形式;
4‑3.根据通用停用词表删除方法注释中含有的停用词;
4‑4.将屈折词和派生词还原到基本形式。
3.根据权利要求2所述的一种结合LDA主题模型和GloVe词向量技术的API推荐方法,其特征在于步骤(4)将经过预处理后的comment表示为precomment;经过对method和comment的处理后,每一个配对表示为pairi=
4.根据权利要求2所述的一种结合LDA主题模型和GloVe词向量技术的API推荐方法,其特征在于步骤(7)训练LDA模型,将LDA的主题数K设置为300,具体训练步骤如下:
7‑1.为每个词项tj随机赋予一个主题编号topick,将语料库Q作为LDA模型的输入;j=
1,2,…,l;k=1,2,…,K;
7‑2.重新扫描语料库Q;对每个词项tj和每篇文档mμ,μ=1,2,…,n*s;使用Gibbs Sampling对 和θ(mμ,topick)采样预估,计算tj属于topick的概率以及topick属于mμ的概率,并在语料库中更新:其中 表示主题topick包含词项tj的概率,θ(mμ,topick)表示文档mμ包含主题topick的概率, 表示topick主题中出现词项tj的次数, 是词项tj的Dirichlet先验, 表示文档mμ中出现主题topicy的次数, 是主题topick的Dirichlet先验;
7‑3.重复步骤7‑2,直到 和θ(mμ,topick)收敛;
通过训练LDA模型,最终得到主题‑单词的概率矩阵,每一个词项tj对应的主题概率分布表示为 p()表示条件概率。
5.根据权利要求4所述的一种结合LDA主题模型和GloVe词向量技术的API推荐方法,其特征在于步骤(8)计算任意两个词项tx和ty之间的主题相似度simtopic,具体实现如下:
8‑1.从LDA模型获取词项tx和ty主题概率分布 和
8‑2.计算概率分布 和 之间的距离度量指标Jensen‑Shannon散度
8‑3.将Jensen‑Shannon散度转化为相似度度量指标得到词项tx和ty之间的主题相似度simtopic:
6.根据权利要求5所述的一种结合LDA主题模型和GloVe词向量技术的API推荐方法,其特征在于步骤(11)计算任意两个词项tx和ty之间的最终相似度simfinal:将主题相似度simtopic和词向量相似度simvector相乘得到最终相似度simfinal:simfinal=simtopic*simvector(7)。