← 最新论文
💻 computer science

ConcernBERT: Learning Responsibilities Using Class Membership

本文介绍了 ConcernBERT,这是一种基于 BERT 的嵌入模型,通过在超过两百万个 Java 文件的规模化数据集上使用三元组损失(triplet loss)进行训练,以有效地学习软件职责和类成员关系,从而在架构恢复和提取类重构等任务中超越了现有模型。

原作者: J. Lefever, J. Xu, Y. Cai, R. Kazman, E. Pisch

发布于 2026-06-23
📖 1 分钟阅读☕ 轻松阅读

原作者: J. Lefever, J. Xu, Y. Cai, R. Kazman, E. Pisch

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,你走进了一座巨大且混乱的图书馆,书本被毫无秩序地扔在书架上。有些书是关于烹饪的,有些是关于太空旅行的,还有一些只是从不同手册中撕下来的随机页面。你的任务是弄清楚哪些页面属于同一本书,从而重建原有的书籍。

在计算机编程的世界里,这是一个常见的问题。程序员编写的代码被称为“类”(class,可以将其想象成这些书)。一个设计良好的类应该只做一件特定的工作(比如一本食谱书里只应该有菜谱)。但随着时间的推移,类可能会变得混乱,将不相关的任务混杂在一起。这被称为“上帝类”(God Class),它很难修复,因为很难分辨哪些代码行属于哪项任务。

几十年来,软件工程师一直尝试利用计算机来理清这种混乱。旧的方法是观察代码中使用的词汇(token)。如果两段代码都使用了“log”、“error”和“file”这些词,计算机就会假设它们是相关的。

旧方法的缺陷
论文指出,仅仅通过观察词汇来分类书籍,就像是通过看书名的第一个字母来对图书馆进行分类一样。

  • 场景 A: 两本书的书名中都有“Space”(空间/太空)。它们很可能都是关于太空的。(好的匹配)。
  • 场景 B: 一本书是关于“Space Travel”(太空旅行)的,另一本是关于“The Space Between Stars”(星际之间的空间)的。它们共享“Space”这个词,但主题完全不同。(错误的匹配)。
  • 场景 C: 一本关于“Cooking”(烹饪),另一本关于“Chemistry”(化学)。它们没有共同的词汇,但都涉及混合原料。(错失的联系)。

旧的计算机模型会被场景 B 所迷惑,并错过场景 C。它们太过于关注表层的词汇量了。

新的解决方案:ConcernBERT
作者创建了一个名为 ConcernBERT 的新 AI 模型。它不再仅仅阅读单词,而是通过观察**代码在和谁一起“混”**来学习。

这可以想象成高中的食堂场景。

  • 旧模型: 如果你看到两个学生穿着同样的“数学俱乐部”T恤,模型就会假设他们是最好的朋友。
  • ConcernBERT: 它会观察谁实际上坐在同一张餐桌旁。即使两个学生穿着不同的衣服,如果他们经常坐在一起、吃同样的食物、聊同样的话题,模型就会知道他们属于同一个群体。

用软件术语来说,该模型是在数百万个现有的代码库上训练的。它学到了一个简单的规则:“如果一个方法(一行代码)位于与另一个方法相同的类文件中,那么它们很可能承担着相同的职责。”

通过从这些现实世界的组合中学习,该模型学会了理解代码的“意图”或“关注点”(concern),而不仅仅是其词汇。

他们是如何测试的
为了测试这个新模型是否有效,研究人员玩了一个“连连看”的游戏:

  1. 他们从两个(甚至 100 个)不同的类中提取代码,并将它们全部砸进一个巨大的、混乱的堆栈中。
  2. 他们要求 AI 将这一堆乱码重新分类回原始的组别。
  3. 他们将 ConcernBERT 与其他七个著名的 AI 模型(如 CodeBERT、LSI 和 LDA)进行了对比。

结果
ConcernBERT 取得了压倒性的胜利。

  • 在简单的测试中(对 2 个类进行分类),它比排名第二的模型好 31%
  • 在困难的测试中(将 100 个类混合在一起进行分类),它表现得好 55%
  • 即使与它的“堂兄弟”模型(CodeBERT,具有完全相同的脑结构,但训练方式不同)相比,ConcernBERT 的表现也几乎是其 两倍 之多。

论文表明,通过教 AI 去关注“上下文”(即谁在同一个类中),而不是仅仅关注“词汇量”(即使用了哪些词),它可以更准确地判断一段软件实际上在负责什么。

这意味着什么(根据论文)
论文得出结论,ConcernBERT 并不是一个能自动修复所有软件的魔杖。相反,它是一个强大的基础。它提供了一种更智能的方法来衡量代码的“内聚性”(即组织有序程度)。这使得它成为未来执行以下任务时更好的工具:

  • 将混乱的“上帝类”拆分为更小、更易于管理的部分。
  • 更准确地衡量软件质量。
  • 帮助开发者恢复旧软件的原有架构。

简而言之,ConcernBERT 教会了计算机如何通过学习开发者自然分组工作的方式,去理解代码的“工作内容”,而不仅仅是其“词汇”。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →