当前位置: 首页 > 专利查询>南京大学专利>正文

一种基于图学习的Python语言代码片段生成方法技术

技术编号:33536100 阅读:18 留言:0更新日期:2022-05-19 02:17
本发明专利技术的主要工作是提出一种基于图学习的Python语言代码片段生成方法,主要包括代码片段语法分析模块、数据流分析模块、代码片段编码神经网络模块、自然语言编码神经网络模块以及语法导向解码模块,其中,代码片段语法分析模块用于将Python语言代码片段转换为结构化中间表示,通过词法、语法分析得到代码片段的抽象语法树;数据流分析模块用于对Python语言代码片段进行数据流依赖分析,得到代码片段实体间的数据流依赖关系,作为边加入抽象语法树结构从而构成程序图;代码片段编码神经网络模块用于将代码片段对应的程序图编码为向量中间表示,通过数值向量描述代码片段程序图的特征;自然语言编码神经网络模块用于将代码片段对应的自然语言功能描述编码为向量中间表示,通过数值向量描述自然语言的特征;语法导向解码模块用于融合自然语言与代码片段程序图两方面的中间表示,通过多层分类神经网络逐个生成代码片段语法单元,得到完整的代码片段生成结果。生成结果。生成结果。

【技术实现步骤摘要】
一种基于图学习的Python语言代码片段生成方法


[0001]本专利技术属于计算机
,尤其是软件
本专利技术提出一种基于图学习的Python语言代码片段生成方法,根据用户输入的自然语言功能描述文本,为其自动推荐具有对应功能的,符合Python语法规则的代码片段,从而提高开发效率,并可以为初学者提供帮助。

技术介绍

[0002]Python语言由于其语法接近自然语言且功能强大,近年来受到各行各业的青睐。对于Python语言初学者,或者需要使用不熟悉的Python库的开发人员来说,写出可以符合需求的代码通常需要较大的搜索和学习成本。最常见的学习Python语言相关用法的方式是借助搜索引擎,搜索相关的需求问题,如“Python的open函数如何使用”,通常搜索引擎会返回一系列链接,指向对应的官方文档,或是一些技术社区的问答帖,从而得到功开发人员参考的示例代码。这些示例代码由于很多原因不能为开发人员直接使用,比如变量名不符合要求,上下文不同等等,因此通常的做法是对示例代码做一定的调整后再予以使用。以上过程在软件开发领域被称为“搜索循环”,本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于图学习的Python语言代码生成方法,其特征在于,所述系统包括:代码语法分析模块、数据流分析模块、代码编码神经网络模块、自然语言编码神经网络模块以及语法导向解码模块:所述代码语法分析模块用于将Python语言代码转换为结构化中间表示,通过词法、语法分析得到代码的抽象语法树;所述数据流分析模块用于对Python语言代码进行数据流依赖分析,得到代码实体间的数据流依赖关系,作为边加入抽象语法树结构从而构成程序图;所述代码编码神经网络模块用于将代码对应的程序图通过深度神经网络编码为向量中间表示,通过数值向量描述代码程序图的特征;所述自然语言编码神经网络模块用于将代码对应的自然语言功能描述通过深度神经网络编码为向量中间表示,通过数值向量描述自然语言的特征;所述语法导向解码模块用于融合自然语言与代码程序图两方面的中间表示,通过多层分类神经网络逐个生成代码语法单元得到完整的代码生成结果。2.如权利要求1描述的基于图学习的Python语言代码生成方法,其特征在于,代码语法分析过程,具体如下:代码语法分析过程将训练集中的Python语言代码样本,通过ast模块的语法分析得到其抽象语法树,接着对抽象语法树做先序遍历,每遍历一层,将当前已遍历过的部分子树和当前遍历点的下一个节点提取出来,作为后续训练模型做预测任务的一条训练数据,同时保留各节点中由语法分析获取的节点类型、节点值以及对应的词法单元等信息。3.如权利要求1描述的基于图学习的Python语言代码生成方法,其特征在于,数据流分析方法,具体如下:数据流分析方法针对代码中局部变量,通过多种规则抽取变量名、方法名和语法结构间的数据流关系,从而保留更多代码上下文信息,其中具体的规则包括赋值规则、循环抽取规则、方法调用规则、元素访问规则、方法参数规则、组合规则、传播规则以及保留规则:赋值规则提取程序中由于赋值语句所造成的数据流动,循环抽取规则提取列表与其迭代器之间的数据流动,方法调用规则提取被调用方法与调用者之间的数据流动,元素访问规则提取容器中元素访问时的数据流动,方法参数规则提取方法参数与调用者之间的数据流动,组合规则规定以上多种规则的复合规则,传播规则规定对以上多种规则序列的处理规则,保留规则...

【专利技术属性】
技术研发人员:许蕾刘笑今
申请(专利权)人:南京大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1