[发明专利]一种基于上下文分析的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 实时 推荐 方法 | ||
1.一种基于上下文分析的Python API实时推荐方法,其特征是对于形如“[Expression.]APIName”的代码,在实时推荐场景条件下,即仅知当前推荐点前的不完整上下文条件下,能在极短时间内提供准确的Python API推荐表,其中,“[Expression.]”是用于限制被调用的API方法的受限表达式,可以是变量名、函数名等,流程需要首先针对API调用点处生成API候选集;接着对语法/语义不完整的Python上下文进行静态数据流分析,提取限定于API推荐的有效数据流信息;接着对当前上下文进行三方面的特征提取,包括数据流序列、token相似性及共现规则,对提取的特征进行编码生成对应向量;最后对提取的特征进行训练,给出一种精确有效的推荐模型。
2.根据权利要求1所描述的一种基于上下文分析的Python API实时推荐方法,其特征包括以下几个步骤:
1)识别上下文调用点,并针对需要被推荐的API位置进行候选集生成;
2)基于启发式方法,对语法/语义不完整的Python上下文进行静态数据流分析,提取限定于API推荐的有效数据流信息;
3)对当前上下文进行有效静态分析,提取三方面特征:数据流序列、token相似性及共现规则,生成对应特征向量;
4)基于随机森林算法,对生成的向量进行学习,给出精确有效的推荐模型。
3.根据权利要求2所述的一种基于上下文分析的Python API实时推荐方法,其特征是步骤1)中识别上下文调用点,并针对需要被推荐的API位置进行候选集生成,其中,调用点为形如“[Expression.]APIName”的位置,“[Expression.]”是用于限制被调用的API方法的受限表达式,可以是变量名、函数名等;接着,对于调用点处调用API的对象进行类型推断,若类型推断成功,则收集推断类型可调用方法作为候选集,否则结合import信息从以下三方面进行候选集生成标准库API、第三方库API及在当前项目已有上下文中被定义的方法。
4.根据权利要求2所述的一种基于上下文分析的Python API实时推荐方法,其特征是步骤2)中针对实时推荐场景下上下文代码语法及语义均不完整的情况,进行动态语言静态数据流分析;由于Python类型动态性、路径敏感性和第三方库复杂性,传统的数据流分析方法并不能对其进行准确的分析,因此使用启发式方式从五方面提取经过约束的仅含真阳性数据的数据流信息:赋值操作、循环结构、属性访问/调用、容器访问以及函数参数传递;此处未提取上下中包含的所有数据流信息,只是经过约束、能够对API推荐提供提示的五类数据流序列。
5.根据权利要求2所述的一种基于上下文分析的Python API实时推荐方法,其特征是步骤3)中从当前不完整上下文提取三方面特征:数据流序列、token相似性及共现规则,生成对应特征向量;首先基于步骤1)的候选集生成方法,对于候选集中的每个候选API,将API代入提取出的数据流序列中组成一个候选数据流序列,并将该数据流序列作为输入发送到预训练好的N-Gram模型中,N-Gram模型输出该候选数据流序列的对数几率得分,并将该得分作为特征向量的第一个元素;接着将步骤2)提取的数据流序列中各token与候选API的相似度得分作为特征向量第二个元素;由于当前上下文中各token与API在语料库中的共现频率可以为推荐提供提示,分别将调用API的对象“[Expression]”与候选API在语料库中的共现频率和上下文中其他token与API的共现频率分别作为特征向量的第三个和第四个元素;最终每一个候选API都能得到一个四维的特征向量。
6.根据权利要求2所述的一种基于上下文分析的Python API实时推荐方法,其特征是步骤4)中基于随机森林算法,对生成的向量进行学习,给出精确有效的推荐模型;首先对于步骤3)中生成每一个特征向量进行标记操作,若该向量是由正确的API生成,则将其标记为1,否则将其标记为0;然后将标记后的向量使用随机森林模型进行训练,尽可能让其学习到更多标记为1的向量的规律;最后基于训练好的推荐模型进行推荐,根据每一个测试用例向量标记为1的可能性进行从大到小排序,将排序后的API表推荐给开发者。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010957757.5/1.html,转载请声明来源钻瓜专利网。





