标识符拆分能否改进代码的开词汇语言模型?
软件工程
2022-01-07 v1
摘要
源代码上的统计语言模型已成功辅助软件工程任务。然而,开发者在编写源代码时可创建或选择任意标识符。自由选择的标识符导致臭名昭著的词汇表外(OOV)问题,对模型性能产生负面影响。最近,Karampatsis 等人表明使用字节对编码(BPE)算法解决 OOV 问题可改进语言模型在源代码上的预测性能。但 BPE 的一个缺陷是它不能以保留有意义语义的方式拆分标识符。先前研究者也表明将复合标识符拆分为反映语义的子词可有益于软件开发工具。这两点事实促使我们探索是否可利用标识符拆分技术来增强 BPE 算法并提升 Karampatsis 等人工作中所考虑的开词汇语言模型的性能。本文提出在构建词汇表和处理模型输入流程中均拆分标识符,从而利用三种不同的将标识符拆分应用于语言模型以完成代码补全任务的设置。我们对比这些设置下的模型性能,发现仅将标识符拆分插入流水线会损害模型性能,而结合标识符拆分与 BPE 算法的混合策略在预测标识符上以 3.68% 的召回率和 6.32% 的平均倒数排名(Mean Reciprocal Rank)优于原始开词汇模型。结果还显示混合策略可将语言模型的熵改进 2.02%。
引用
@article{arxiv.2201.01988,
title = {Can Identifier Splitting Improve Open-Vocabulary Language Model of Code?},
author = {Jieke Shi and Zhou Yang and Junda He and Bowen Xu and David Lo},
journal= {arXiv preprint arXiv:2201.01988},
year = {2022}
}
备注
Accepted by ERA Track in SANER 2022