【技术实现步骤摘要】
一种基于查询语句的情境感知API推荐方法及终端
本专利技术属于代码推荐
,具体涉及一种基于查询语句的情境感知API推荐方法及终端。
技术介绍
应用程序编程接口(API)是构建大规模软件系统的基本构建块。由于API库中含有大量的API,开发人员往往并不能全部掌握,当面对一个不熟悉的编程任务时,通常会通过查询的方式寻找需要使用的API。现有研究提出各种各样的API推荐方法来实现高效的开发。这些API推荐方法通常根据输入可以分为两类:有显示查询和无显示查询。有显示查询的方法通常需要良好的设计的查询语句来捕获用户的编程意图,这种方法被定义为一个信息检索方法,它将查询语句转化为一个词向量,然后使用文本匹配的方法来寻找最匹配的API。由于自然语言和代码之间的词法差异,通常会使用额外的构件包括API文档,API调用图,问答网站中的帖子等辅助API推荐。无显示查询由于没有显示查询作为输入,因此必须利用情境信息来推断用户需要使用哪些API,情境信息一般包括周围的代码片段,API调用图等。现实中一个很常见的现象是开发人员在已经完成了一个编程任务的部分代码后,由于不知道如何编写下面的代码,通过查询语句寻找正确的API继续编程。现有的API推荐方法要么依赖于查询语句,要么依赖于已经编写的代码片段。然而这些方法有时不能推荐出用户真正想要的API。比如下述查询语句:Copyafileinjava,该查询语句在编程情境已经明确使用高效字符缓冲流(java.io.BufferedReader,java.io.BufferedWrite ...
【技术保护点】
1.一种基于查询语句的情境感知API推荐方法,其特征在于,步骤如下:/n(1)从Github收集Java项目并进行筛选;针对Java文件构建抽象语法树提取方法注释、方法名、API以及情境信息;/n(2)根据查询语句数据集构建语言模型,根据用户输入的查询语句检索历史相似的查询;/n(3)利用检索到的历史相似的查询与用户输入的查询语句构建张量,并采用非负张量分解对缺失值进行填补;/n(4)针对用户当前编程环境采用步骤(1)提取情境信息的方法提取用户当前编程代码信息,即情境元组,利用Smith-Waterman算法进行情境匹配,选择出与用户当前情境最相似的情境,然后根据张量里的元素值的大小排序API推荐给用户。/n
【技术特征摘要】
1.一种基于查询语句的情境感知API推荐方法,其特征在于,步骤如下:
(1)从Github收集Java项目并进行筛选;针对Java文件构建抽象语法树提取方法注释、方法名、API以及情境信息;
(2)根据查询语句数据集构建语言模型,根据用户输入的查询语句检索历史相似的查询;
(3)利用检索到的历史相似的查询与用户输入的查询语句构建张量,并采用非负张量分解对缺失值进行填补;
(4)针对用户当前编程环境采用步骤(1)提取情境信息的方法提取用户当前编程代码信息,即情境元组,利用Smith-Waterman算法进行情境匹配,选择出与用户当前情境最相似的情境,然后根据张量里的元素值的大小排序API推荐给用户。
2.根据权利要求1所述的基于查询语句的情境感知API推荐方法,其特征在于,所述步骤(1)具体包括:对从Github收集到的Java项目去除低质量的项目,提取java项目中的java文件,针对每一个Java文件利用EclipseJDT构建抽象语法树,从中提取方法注释,方法名,API以及情境信息。
3.根据权利要求2所述的基于查询语句的情境感知API推荐方法,其特征在于,所述步骤(1)具体还包括:
方法注释:提取方法注释的第一句话作为用户的查询语句;
方法名:将其按照Java方法名命名规则驼峰命名法对其进行分解;
API:针对Java方法调用API进行推荐,提取Java方法调用的API;
情境信息:通过遍历方法体的抽象语法树,用Java包名.类名的形式表示提取Java类的实例化,用Java包名.类名.方法名的形式表示提取到的Java方法调用,以及用自定义的映射控制结点与字符的编码表来表示提取到的控制API调用的结点来对情境信息编码。
4.根据权利要求1所述的基于查询语句的情境感知API推荐方法,其特征在于,所述步骤(2)中根据查询语句构建语言模型,具体包括:对步骤(1)提取到的查询语句分词和提取词干后采用word2vec训练词向量并计算每个词idf值,从而构建一个语言模型。
5.根据权利要求1所述的基于查询语句的情境感知API推荐方法,其特征在于,所述步骤(2)中根据用户当前查询语句检索历史相似的查询,具体包括:将方法名加入到查询语句后,检索历史相似的查询;对历史查询语句进行遍历,计算当前查询语句与历史查询语句的相似度,计算公式如下:<...
【专利技术属性】
技术研发人员:周宇,陈晨,王永超,黄志球,
申请(专利权)人:南京航空航天大学,
类型:发明
国别省市:江苏;32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。