arrow
返回

OpCodeBERT: A Method for Python Code Representation Learning by BERT With Opcode

delete2025-09-18
delete0
PRE
AI
C
Canyu Qiu
刘
刘建勋 (Jianxun Liu)
X
Xiaocong Xiao
Y
Yong Xiao
DOI:10.1109/TSE.2025.3610244delete
delete原文链接
delete原文求助
delete分享
delete收藏
摘要

摘要

En 中文
编程语言预训练模型近年来在代码表示学习方面取得了显著进展。尽管各种方法,如数据流和抽象语法树(AST),已被广泛应用于增强代码表示,但截至目前,尚无研究文献专门探讨使用源代码的中间代码进行代码表示。例如,Python的中间代码,即opcode,不仅包括程序执行期间的数据输入和输出栈过程,还描述了具体的执行顺序和控制流信息。这些特征在源代码、数据流、AST等结构中不存在或难以直接反映。在本文中,我们提出了OpCodeBERT (https://github.com/qcy321/OpCodeBERT) 方法,首次利用Python opcode进行代码表示学习,并通过编码底层执行逻辑、注释和源代码来改进代码表示。为了支持opcode的训练,我们筛选公开数据集以排除不可解析的数据,并创新性地提出了一种opcode到序列的映射方法,将其转换为适合模型输入的形式。此外,我们使用两阶段的掩码语言模型(MLM)和多模态对比学习对OpCodeBERT进行预训练。为了评估OpCodeBERT的有效性,我们在多个下游任务上进行了实验。实验结果表明,OpCodeBERT在这些任务上表现出色,验证了引入opcode的有效性,并进一步证明了该方法在代码表示学习中的可行性。
Keyword:
Python opcode
underlying execution logic
MLM
contrastive learning

期刊

IEEE Transactions on Software Engineering 封面图
IEEE Transactions on Software Engineering
IF:
5.6
论文数:
2.9K
被引数:
1.1W

机构

引用论文

引用论文

暂无论文信息