GitHub发布CodeSearchNet语料库以及挑战赛

GitHub释出了CodeSearchNet语料库以及CodeSearchNet挑战赛,以推动用自然语言搜索程序代码的技术发展。CodeSearchNet语料库是一个庞大的程序代码和自然语言批注数据集,让研究人员可以用来训练机器学习模型,并在CodeSearchNet挑战排行榜上竞争模型的精准度。

GitHub发布CodeSearchNet语料库以及挑战赛_第1张图片

搜寻程序代码以重复使用、呼叫或是查看其他人撰写程序代码的方式,是开发者的日常之一,但是目前程序代码搜索引擎的表现,与网页搜索引擎还有一大段距离,程序代码搜索引擎还无法良好地理解用户想要搜寻的目标,而GitHub也提到,当他们使用机器学习技术改善程序代码搜寻时,发现目前没有标准来衡量改善结果的进展,不像是自然语言处理有GLUE基准,程序代码搜寻缺乏标准数据集来评估结果。因此GitHub与机器学习新创公司Weights & Biases合作,发布了一个大型的数据集,以帮助数据科学家训练模型,也推出CodeSearchNet挑战赛的评估环境与排行榜,同时还附加了几个用来展示目前技术水准的基准模型。

CodeSearchNet释出的语料库,来自GitHub自家平台的开源项目,他们收集大量以Go、Java、JavaScript、PHP、Python和Ruby程序语言撰写的函式数据集,以及其说明文件,官方使用解析器TreeSitter作为基础架构,并发布了数据预处理工作管线,作为其他研究人员在程序代码中应用机器学习的起点。官方提到,虽然这项数据与程序代码搜寻没有直接相关,但是可用来训练模型,将程序代码与相关的自然语言描述配对起来。完整经过预处理的CodeSearchNet语料库,总共包含600万种方法,其中200万是具有文件字符串或JavaDoc等相关说明文件,另外还有指向数据原始位置,像是储存库或是行数的元数据。GitHub将语义程序代码搜寻上的进展,发布成一系列基准模型,帮助研究人员开始程序代码搜寻研究工作。

而与CodeSearchNet语料库搭配的是CodeSearchNet挑战赛,CodeSearchNet挑战赛的排行榜则使用带有批注的数据集,来评估程序代码搜寻工具的质量,为此,GitHub收集了一组初始的程序代码搜寻查询集,并由专业人员批注结果与查询的相关性。GitHub从Bing搜索引擎收集了一般搜寻查询具较高点击率的程序代码,并与StaQC(Stack Overflow Question-Code)结合,产生99个针对程序代码相关概念的查询,并使用基准模型从CodeSearchNet语料库为每个查询找出10个可能的结果,最后要求开发者、资料科学家和机器学习研究人员,为这些查询的结果的相关性进行评分。

这些数据集和工具都在GitHub平台上对外开放,而GitHub接下来会继续扩展数据集,包括更多的程序语言、查询以及批注,为下一个CodeSearchNet挑战赛做准备。社群在今年7月的时候,也公开了自家自然语言程序代码搜寻工具NCS(Neural Code Search),同样使用了GitHub储存库和热门开发者论坛Stack Overflow上的数据,产生用作训练模型的数据集,让用户可以直接搜寻「如何隐藏Android屏幕键盘?」这样的问题,而模型会回传相符的程序代码。内文来源:中博星命 http://prestonspeed.com/

你可能感兴趣的:(GitHub发布CodeSearchNet语料库以及挑战赛)