突击测验!预训练代码模型是否具备正确API名称的知识?
软件工程
2023-09-15 v1 计算与语言
摘要
近期CodeBERT与Codex等预训练代码模型的突破已展现出其在各类下游任务中的优越性能。这些代码模型中API使用的正确性与无歧义性对实现期望的程序功能至关重要,要求它们从结构与语义上学习各种API的完全限定名。近期研究揭示,即便最先进的预训练代码模型在代码生成中也难以给出正确API。然而,此类API使用性能不佳的原因鲜有探究。为应对该挑战,我们提出以知识探测作为解释代码模型的手段,即使用完形填空式测试衡量模型中所存储的知识。我们的综合研究从API调用与API导入两个不同视角考察代码模型理解API完全限定名的能力。具体而言,我们揭示当前代码模型难以理解API名称,且预训练策略显著影响API名称学习的质量。我们证明自然语言上下文可辅助代码模型定位Python API名称,并将Python API名称知识泛化至未见过的数据。我们的发现揭示了当前预训练代码模型的局限与能力,并表明将API结构纳入预训练过程可改进自动化API使用与代码表示。本工作对推进代码智能实践及未来研究指明方向具有重要意义。本工作中使用的所有实验结果、数据与源代码见\url{https://doi.org/10.5281/zenodo.7902072}。
引用
@article{arxiv.2309.07804,
title = {Pop Quiz! Do Pre-trained Code Models Possess Knowledge of Correct API Names?},
author = {Terry Yue Zhuo and Xiaoning Du and Zhenchang Xing and Jiamou Sun and Haowei Quan and Li Li and Liming Zhu},
journal= {arXiv preprint arXiv:2309.07804},
year = {2023}
}