? 4.3.1模式匹配 。Jdoctor 使用模式匹配将常见短语(例如“是正”,“是负”和“是空”)映射到 Java 表达式片段> 0,<0 和== null 。与以前的工作一致 [41, 51, 55],Jdoctor 采用了一组可扩展的模式,这些模式涵盖了原始类型、字符串和无效性检查的属性 。模式匹配可以有效地转换常见模式,但不能处理特定于域的概念或特定于代码的行话,例如“如果在图中找不到顶点”中的概念“顶点”和“图形” 。
? 4.3.2词法匹配 。Jdoctor 会根据直觉认为 Javadoc 注释中的单词在词法上类似于代码元素,从而尝试将主题或谓词与相应的代码元素进行匹配 。Jdoctor(i)根据驼峰案例惯例将代码候选词标记化为单独的术语,(ii)计算每个词与主题/谓词中每个单词之间的 Levenshtein 距离,(iii)选择 Levenshtein 距离最小的候选词,只要不超过阈值即可(默认阈值非常小(即两个),以尽可能避免错误匹配) 。例如,在处理第 3 节中出现的注释“如果比较器为空”时,Jdoctor 将主题“比较器”与方法类型为距离为 0 的比较器的参数进行匹配 。
Jdoctor 使用词法匹配的方式类似于 Toradocu [24] 。这项技术优于简单的模式匹配(例如@tComment 实现的模式匹配)和简单的自然语言处理(例如 ALICS 中实现的模式) 。它的局限性是基于这样的假设,即 Javadoc 注释中的名词应与代码中的标识符相似,但实际上并不总是如此 。
? 4.3.3语义匹配 。为了说明模式和词法匹配的限制,请考虑谓词“在图中未找到” 。所需的转换为!graph.containsVertex(vertex) 。模式匹配仅在有特定模式可用于处理这种情况时才有效 。词法匹配失败,因为代码元素containsVertex在词法上与注释中出现的“在图中找不到”相近 。Jdoctor 语义匹配方法建立在以下观察的基础上,即语法上不同的术语可能具有紧密的语义 。例如,代码中的方法containsVertex和注释中的“在图形中找不到”的概念在词法上是不同的,尽管它们的语义是相关的 。由于单词之间的语义相似性,Jdoctor 能够处理模式匹配和词法匹配都失败的情况 。Jdoctor 使用单词嵌入,这已被证明是表示语义单词关系的强大方法 。它将单词嵌入到高维向量空间中,以使单词之间的距离与语义相似性紧密相关,而与语法差异无关 。Jdoctor 为此使用了两层神经网络模型 GloVe 。
? Jdoctor 从谓词中删除自定义的停用词列表,并在使用 GloVe 计算语义相似度之前应用词形还原 。词形还原将术语转换为它们的原形,例如,“playing”和“played”变为“play”,以减少域中术语的数量来简化语义匹配 。默认情况下,Jdoctor 使用停用词列表,其中包括属于 Java 语言的冠词和单词,例如“ for”,“ do”和“ null” 。但是,Glove 模型本身只能捕获单个术语的语义相似性 。因此,它将报告语义上相关的术语“顶点”和“图形” 。但是,大多数情况下,谓词和代码标识符由多个单词组成 。例如,在JGraphT中,注释摘录“找到了顶点”应与方法containsVertex相匹配 。为了一次比较多个单词,Jdoctor 使用了单词移动器的距离(WMD)算法 [30] 。
? WMD 测量两个文本片段之间的语义距离,因为注释中的所有单词(在这种情况下为[vertex,is, found])必须与代码元素标识符中的单词(在这种情况下为[contain,vertex])中的单词完全相同 。与 Jdoctor 进行词法匹配时类似,它会选择给定阈值内语义距离最接近的候选词 。
? 尽管提供了不同的匹配策略,但 Jdoctor 仅对主语匹配使用词法相似性 。这种方法迫使 Jdoctor 将主语与具有很高精确度的代码元素进行匹配(尽管它可能会丢失一些匹配项) 。这种保守的决定对于 Jdoctor 的性能至关重要,因为主语匹配为以后匹配谓词提供了范围 。更广泛的(可能是错误的)范围将使谓词匹配的搜索指向完全错误的路径 。
? Jdoctor 生成单个 Java 布尔条件作为@param注释的翻译,并生成一对“预期的异常类型,Java 布尔条件”作为@throws注释的翻译 。 @return注释的翻译不是 Java 的布尔值;取而代之的是,单个转换由对应于 guard、true 和 false 属性的三个 Java 布尔条件组成 。
5 评估:翻译准确性我们通过回答以下研究问题来评估 Jdoctor 的翻译准确性 。
? RQ1 在将 Javadoc 注释转换为过程规范时,Jdoctor 的有效性(准确率和召回率)如何?
? RQ2 Jdoctor 的有效性与最新方法@tComment 和 Toradocu 相比如何?
推荐阅读
- 还没来过峨眉山的青少年朋友,千万不要将遗憾留到成年以后哦!
- 在Python中使用Torchmoji将文本转换为表情符号
- 基于springboot+shiro+freemarker的快速开发框架,代码免费分享
- 北京新增公交、出租、环卫等车辆将基本采用电动车
- 教师|终于等到你,教师行业或将实行“工龄退休”,好消息一波接一波
- 射电望远镜|中国空间站将支持上千项科学研究:明年发射空间巡天望远镜
- 古代将军墓 据考古报告从数十处战国以前的墓葬中发现了铁器实物
- 莞藏老茶抱团进京拓市,莞香生产与制作技艺将申报国家非遗
- 代码封装技巧和原则
- 架构大更新的英特尔Rocket Lake处理器可将频率提升至5.0GHz
