一种结合上下文增强基于查询的API推荐方法

专利2025-11-13  18


本发明属于api推荐,具体涉及一种结合上下文增强基于查询的api推荐方法。


背景技术:

1、在软件开发过程中,api(应用程序编程接口)提供了一种实现特定功能的方法,它允许开发人员利用已有的代码来创建功能更复杂的应用程序。随着现代软件开发环境变得日益复杂,及时且准确地推荐相关api对于提高开发效率至关重要。然而,传统的api推荐方法往往依赖于静态的代码分析或者基于简单的关键词的搜索,这忽略了代码上下文环境,从而导致推荐的结果不够准确。

2、传统的基于查询的方法,考虑从stackoverflow网站上提取标题,计算用户查询与标题语料库的相似性,识别最相似的k个候选查询语句的api,这种方法不能充分理解查询的语义和上下文。针对这一问题,本研究提出了结合上下文信息来增强基于api推荐的方法,更好地理解并使用与当前开发任务相关的环境和语义信息。首先,因开发人员的表述存在差异,通过使用同义词替换查询中的关键词,帮助模型更好的理解不同的表达方式;其次,本研究引入上下文信息,丰富基于查询的api推荐,通过构建一个多维张量来表示查询、api和上下文之间的关系,以进一步提高api推荐的准确性;最后,为了缩小候选api的范围,应用blast算法进行双序列比对来找出当前上下文中与包含api、上下文的矩阵中最匹配的序列,对api进行重新排名。


技术实现思路

1、本发明要解决的技术问题是提供一种结合上下文增强基于查询的api推荐方法,本发明提出的结合上下文增强基于查询的api推荐方法旨在将代码片段的上下文信息建模为张量,并利用它来改进基于查询的api推荐,聚焦于更多的上下文信息,从而提高api推荐的有效性。

2、为解决上述技术问题,本发明的实施例提供一种结合上下文增强基于查询的api推荐方法,包括以下步骤:

3、s1、利用stackoverflow网站中收集查询语句、上下文和与之对应的api,构建三元组语料库;

4、s2、利用查询语句训练词向量模型(word2vec),并构建单词idf词汇表;

5、s3、利用步骤s1中收集的三元组语料库检索给定用户查询的top-k个相似元组;

6、s4、将检索到的查询语句、以及相关的上下文和api组合成一个张量;

7、s5、根据非负张量分解(nntf)完成张量中的缺失值;

8、s6、利用基本局部相似性比对搜索工具(blast)算法匹配张量中最相似的上下文,根据张量中条目的值对api进行重排序,将得到的api推荐列表返回给用户。

9、优选的,步骤s1中,采用滤波方法从stackoverflow中进行数据收集和处理,构造一个包含查询、上下文信息和api的三元组语料库,包括以下步骤:

10、s1.1、对于stackoverflow网站的帖子中的每一个答案,提取一个元组<query,api,上下文>,且只保留得分为正或被接受的答案;

11、s1.2、提取帖子的标题作为查询;

12、s1.3、提取答案中每个html标记中包含的超链接和纯文本;

13、s1.4、对于上下文信息,关注用于实例化类的语句和用于方法调用的语句利用程序分析;

14、s1.5、检查答案中的每个超链接,并使用正则表达式识别相应api方法的全称;

15、s1.6、将提取的查询、上下文和api构建一个三元组语料库。

16、优选的,步骤s2中,度量两个查询的相似性,构建一个特定于领域的语言模型,包括以下步骤:

17、s2.1、从stackoverflow中提取的查询进行同义词替换,使用同义词或相关词替换查询中的关键词;

18、s2.2、对重构的查询语句进行标记,并执行词干提取,将每个单词转换为其根形式;

19、s2.3、使用word2vec训练一个词嵌入模型,并构建词idf(逆文档频率)词汇表。

20、优选的,步骤s3中,从步骤s1构建的三元组语料库中,利用步骤s2中训练的词嵌入模型,检索与用户查询相似的top-k个查询,包括以下步骤:

21、s3.1、接受用户输入的查询,并进行同样的预处理,包括分词和标准化;

22、s3.2、利用步骤s2训练得到的词嵌入模型将处理后的查询转换为向量;

23、s3.3、利用相似度度量方法,计算用户查询向量与语料库中所有查询向量之间的相似度,公式如下:

24、

25、其中,sim(w,q)为每个单词w'∈q的sim(w,w')的最大值,sim(w,w')为w与w'的单词嵌入向量的余弦相似度;

26、s3.4、根据步骤s3.3计算得到的相似度对所有查询进行排序,选取相似度最高的前k个查询作为结果返回给用户。

27、优选的,步骤s4中,根据三元查询<query-api-context>关系表示张量,包括以下步骤:

28、s4.1、定义张量结构,确定张量的维度和结构;

29、s4.2、加载步骤s1中的三元组语料库,为第一个上下文创建矩阵;

30、s4.3、根据步骤s3中得到的top-k个相似的上下文,遍历上下文维度来创建矩阵;

31、s4.4、构造张量,所述张量的切片为步骤s4.3中得到的矩阵。

32、优选的,步骤s5中,通过处理多维数据,发现潜在模式,处理数据中的缺失值,包括以下步骤:

33、s5.1、根据步骤s4.4构建一个包含已知数据点的张量,利用0表示缺失的数据点;

34、s5.2、在构建张量后,采用交替最小二乘(als)算法来计算分解,通过逐步优化每个因子矩阵来逼近原始张量,使张量的每个元素在分解和重构过程中获得一个估计值;

35、s5.3、引入正则化项,并通过非负约束分解后的各因子矩阵元素为非负值。

36、优选的,步骤s6中,采用blast算法来增强api推荐的相关性和精确性,理解和匹配用户当前的编程上下文,得到重排序的api推荐列表,包括以下步骤:

37、s6.1、从当前的查询query和部分完成的代码片段出发,按照步骤s1步骤中描述的方法获取上下文context;

38、s6.2、将查询语句标记化和词根化;

39、s6.3、创建一个api-context矩阵m,其中每个元素表示从张量中索引得到的与api和上下文相关的数据;

40、s6.4、利用blast算法,比较当前上下文context与api-context矩阵m中的上下文;

41、s6.5、将步骤s6.4中两个上下文视为序列,快速识别出潜在的匹配区域,选取当前上下文序列中的短片段,称为scode;

42、s6.6、识别和步骤s6.5中的scode完全匹配的序列片段,确定scode在各个上下文中出现的确切位置;

43、s6.7、从初步匹配的scode位置开始,向两端扩展以找到更长的相似序列;

44、s6.8、记录每次比较的相似性得分和匹配信息,选择得分最高的几个上下文作为最相关的匹配结果;

45、s6.9、根据与当前上下文最相似的api-context矩阵中的上下文,选取相关api,并根据匹配得分对这些api进行重新排序,生成推荐api列表,提供给用户作为编程时的参考。

46、本发明上述技术方案的有益效果如下:

47、(1)本发明在api推荐中考虑利用上下文信息的重要性,并提出了使用张量和词嵌入来完成对上下文信息的建模的方法,从而表示查询、api、上下文的关系,应用双序列比对的blast算法来识别最匹配的上下文,从而改进api推荐;

48、(2)本发明对查询语句进行同义词替换去训练词嵌入模型,捕捉开发人员查询意图背后的深层语义,引入上下文信息来构建一个张量,并利用blast算法进行双序列对比寻找最匹配的上下文,提高了api推荐的准确性;

49、(3)本发明为了弥补查询之间的词汇差距,使用基于词嵌入的文本相似度度量,利用非负张量分解来完成张量中的缺失值,并利用blast算法来识别最匹配的上下文,从而更好的实现api推荐。


技术特征:

1.一种结合上下文增强基于查询的api推荐方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的一种结合上下文增强基于查询的api推荐方法,其特征在于,步骤s1中,采用滤波方法从stackoverflow中进行数据收集和处理,构造一个包含查询、上下文信息和api的三元组语料库,包括以下步骤:

3.根据权利要求1所述的一种结合上下文增强基于查询的api推荐方法,其特征在于,步骤s2中,度量两个查询的相似性,构建一个特定于领域的语言模型,包括以下步骤:

4.根据权利要求1所述的一种结合上下文增强基于查询的api推荐方法,其特征在于,步骤s3中,从步骤s1构建的三元组语料库中,利用步骤s2中训练的词嵌入模型,检索与用户查询相似的top-k个查询,包括以下步骤:

5.根据权利要求1所述的一种结合上下文增强基于查询的api推荐方法,其特征在于,步骤s4中,根据三元查询<query-api-context>关系表示张量,包括以下步骤:

6.根据权利要求1所述的一种结合上下文增强基于查询的api推荐方法,其特征在于,步骤s5中,通过处理多维数据,发现潜在模式,处理数据中的缺失值,包括以下步骤:

7.根据权利要求1所述的一种结合上下文增强基于查询的api推荐方法,其特征在于,步骤s6中,采用blast算法来增强api推荐的相关性和精确性,理解和匹配用户当前的编程上下文,得到重排序的api推荐列表,包括以下步骤:


技术总结
本发明提供一种结合上下文增强基于查询的API推荐方法,包括以下步骤:S1、利用StackOverflow网站中收集查询语句、上下文和与之对应的API,构建三元组语料库;S2、利用查询语句训练词向量模型,并构建单词IDF词汇表;S3、利用三元组语料库检索给定用户查询的top‑k个相似元组;S4、将检索到的查询语句、以及相关的上下文和API构建张量;S5、根据非负张量分解完成张量中的缺失值;S6、利用基本局部相似性比对搜索工具算法匹配张量中的上下文,将得到的API推荐列表返回给用户。本发明将代码片段的上下文信息建模为张量,改进基于查询的API推荐,聚焦于更多的上下文信息,提高API推荐的有效性。

技术研发人员:陈希希,程实,文万志
受保护的技术使用者:南通大学
技术研发日:
技术公布日:2024/11/11
转载请注明原文地址: https://tieba.8miu.com/read-17540.html

最新回复(0)