脸书推出代码搜索工具NCS,让开发者用自然语言就能搜索代码

脸书为了让开发者可以快速找到需要功能的代码片段,开发了新的代码搜索工具NCS(Neural Code Search),开发者可以直接使用自然语言进行代码搜索。

NCS使用GitHub储存库当作训练资料库,以热门开发者论坛Stack Overflow上的问题进行搜索,而模型可以正确回答诸如"如何隐藏Android屏幕键盘?"以及"如何删除整个资料夹以及属性?"等问题,回传相关的代码片段。

NCS是一种结合自然语言以及资讯搜索技术的应用,脸书提到,不少开发者的需求,早就已经存在于大型代码储存库当中,因此可以使用自然语言描述问题,直接从代码库中得到答案,将能加快开发工作。NCS还附有扩充套件UNIF,当有足够的监督式资料,便能使用这个扩充套件进行监督式训练,以改进模型的性能。

NCS模型以嵌入(Embedding)的方式撷取程序语意,也就是说,经过适当地计算,语意相似的代码实体在向量空间会相当靠近,像是隐藏或是关闭Android屏幕键盘的问题,即便两个功能程式码不同,但是在向量空间相当靠近。

脸书以这个概念建构NCS模型,在建置模型的阶段,每个代码片段都会被嵌入到向量空间中,而在执行查询的时候,使用者的查询会被映像到同一个向量空间中,向量的距离是估计代码片段和查询相关的程度。

GitHub存储库中的代码,被当作训练NCS模型的资料,在Stack Overflow上评估NCS的性能,脸书把Stack Overflow上的标题作为查询,并把答案中的代码当成是解答,然后评量NCS对查询的回应,出现在Stack Overflow解答前1、前5以及前10的次数。在创建的287个问题中,NCS的回答出现在前10的有175个问题,相当是整个资料集的60%,其中前5的有136个问题,回答就跟问题的最佳解答相同的有83题。

最近脸书在搜索代码研究进行了不少研究,在不久前才刚发表了代码推荐工具Aroma,让开发者以代码搜代码的方式,针对相同问题,探索其他更好的解决方式。

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();