[发明专利]一种基于上下文分析的Python API实时推荐方法在审

专利信息
申请号: 202010957757.5 申请日: 2020-09-11
公开(公告)号: CN114254097A 公开(公告)日: 2022-03-29
发明(设计)人: 许蕾;何欣程;徐宝文 申请(专利权)人: 南京大学
主分类号: G06F16/335 分类号: G06F16/335;G06F16/35;G06F40/216;G06K9/62
代理公司: 暂无信息 代理人: 暂无信息
地址: 210023 *** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 上下文 分析 python api 实时 推荐 方法
【说明书】:

发明为一种基于上下文分析的Python API实时推荐方法。其特征是首先提取Python代码上下文中调用点;接着对每个调用点进行类型推断,若推断成功,使用推断类型可调用方法作为API候选集,否则从标准库API、第三方库API以及当前上下文定义API这三方面生成;接着从五方面约束提取仅含真阳性的数据流序列:赋值操作、循环结构、属性访问/调用、容器访问以及函数参数传递;然后通过上下文分析收集三方面特征,即数据流序列、token相似度和共现规则,将特征编码为特征向量;接着对特征向量进行标记,将所有标记后向量放入随机森林模型训练;最后基于训练好的推荐模型,将推荐结果按照概率得分进行排序并呈现给开发者。

技术领域

本发明属于计算机技术领域,尤其是软件技术领域。本发明提出了一种基于上下文分析的Python API实时推荐方法,对于形如“[Expression.]APIName”的位置,在实时推荐场景条件下,即仅知当前推荐点前的不完整上下文条件下,也能在极短时间内提供准确的Python API 推荐表,其中,“[Expression.]”是用于限制被调用的API方法的受限表达式,可以是变量名、函数名等,并保证无论是在项目内还是跨项目开发过程中都能有较好的准确性和较高的效率。

背景技术

在软件开发过程中,API推荐能够帮助开发者迅速在庞大的API库中找到当前开发场景下最适合调用的API,具有提高软件开发效率的作用。在开发过程中根据当前开发文本为开发者实时推荐最可能调用的API,能够极大地帮助开发者提高编程效率。虽然有关API推荐的研究很多,但由于大多数研究均是针对于Java等静态语言开展的,目前针对动态语言如 Python的API推荐相关工作相对较少,其原因在于动态语言特性以及Python本身特点带来的挑战。

首先,Python具有类型动态性。对于API推荐工作“[Expression.]APIName”,通用推荐思路是:首先推断调用点[Expression.]类型,确定API候选集,随后进行API推荐。但是,在 Python中,定义一个变量并不会显式声明其具体类型(除非经过类型标注)。作为一种解释执行的动态语言,Python只有经过运行才能知道一个变量具体的类型是什么。并且,即便已经知道某行某变量的类型,但在运行过程中,该类型仍然有可能变化。其次,Python具有路径敏感性。不同的执行路径可能带来不同的数据类型,而具体走哪条路径也只有执行时才能知道。当一个变量的类型无法确定时,只能选择将所有可能类型的所有方法全部输出来作为API 推荐序列,导致推荐序列非常冗长。再次,Python含有大量使用其他语言实现的第三方库(如 numpy等),难以进行溯源分析。

当前普遍使用的Python开发工具如PyCharm、Jetbrains等使用python-skeletons提供第三方库的API定义文件,为当前代码提供API推荐;Mypy是Python的静态类型检查工具,通过python/typeshed记录Python库相关信息。现有开发工具的推荐序列大多按照字母表顺序排列,并不能为程序员提供最相关的API推荐序列。而且,由于Python第三方库多由其他语言实现,关于Python库定义信息的集合并不完整,所以现有的工具并不能有效为开发人员提供最佳推荐。

此外,实时API推荐也是一项十分困难的工作。对于实时推荐应用场景,当前所在项目代码上下文一般均为语法语义不完整的代码,因此无法对该代码进行传统的程序分析,如从语法上分析生成语法分析树(AST),进行完整的数据流分析、控制流分析、指针分析,动态插桩分析等,无论是对调用点类型推断还是对API推荐(尤其是基于程序分析特征进行训练的推荐方法)都带来了极大的挑战。

同时,项目自身也具有特殊性。实时代码推荐通常用于在开发者开发过程中进行推荐,因此大部分项目并不具备历史代码信息且具有特殊性,对于依靠重复历史代码变更、使用机器学习/深度学习等技术进行推荐的方法带来了挑战和困难。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202010957757.5/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top