【AI4Code】《Pythia: AI-assisted Code Completion System》(KDD 2019)

Pythia是一款基于AST的代码补全系统,利用深度学习技术,如LSTM,从Github热门Python项目中学习1600万个方法调用。它与DeepTabNine和Galois相似,但数据处理方式和模型结构略有不同,Pythia已集成到VSCode作为插件,提供高效智能的代码补全功能。
摘要由CSDN通过智能技术生成

代码补全

补全属性/方法,在一个给定集合内推荐item,最简单的方法就是按字母排序,缺点是用户下拉菜单的时间可能要长于直接打代码的时间。用户可以多打几个前缀帮助补全。

在这里插入图片描述

基于模型的代码补全

  • 基于抽象语法树(AST)——Pythia等
  • 基于代码文本——Deep TabNine 、Galois等

数据:AST和代码文本

AST是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。之所以说语法是“抽象”的,是因为这里的语法并不会表示出真实语法中出现的每个细节。比如,嵌套括号被隐含在树的结构中,并没有以节点的形式呈现;而类似于 if-condition-then 这样的条件跳转语句,可以使用带有三个分支的节点来表示。

在这里插入图片描述

一种是将代码解析为抽象语法树(AST),每个节点包括两个属性:type和value,所以每个节点需要两个embedding。然后使用深度优先遍历把AST的每个节点flatten成序列。

一种是直接将代码处理成文本,包含空格、换行符、缩进符等。

Pythia(KDD’19)

Pythia收集了Github上 Stars 前2700个Python项目的代码,一共包含了1600万个方法调用作为训练数据。

在这里插入图片描述

任务是给定一个长为 T T T的代码片段 C C C ,其中每个token为 c t c_t ct,以及一个特殊token “.”,预测token m ∗ m^{*} m

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值