利用机器学习识别 API 参考文档中的知识
软件工程
2019-07-24 v1
摘要
使用如 JavaDoc 之类的 API 参考文档是软件开发中不可或缺的一部分。先前的研究引入了一种扎根分类法,将 API 文档知识组织为 12 种类型,包括关于 API 功能性、结构与质量的知识。我们研究现代文本分类方法在自动识别包含特定知识类型的文档方面的表现。我们在手动标注的 Java 与 .NET API 文档(n = 5,574)上比较了常规机器学习(k-NN 与 SVM)与深度学习方法。当逐个分类知识类型时(即多个二分类器),最佳 AUPRC 达 87%。深度学习与 SVM 分类器似具互补性。对于四种知识类型(概念、控制、模式与非信息),SVM 明显优于深度学习,而后者在识别其余类型时更准确。当同时考虑多种知识类型时(即多标签分类),深度学习优于朴素基线与传统机器学习,MacroAUC 达 79%。我们还比较了使用在通用文本语料库与 StackOverflow 上预训练词嵌入的分类器,但未观察到显著改进。最后,为评估分类器泛化能力,我们在不同的、未见的 Python 文档数据集上重新测试。功能性、概念、用途、模式与指令的分类器似可从 Java 与 .NET 泛化至 Python 文档。与其余类型相关的准确率似乎是 API 特定的。我们讨论了结果及其对支持开发者共享与获取 API 知识的工具开发的启示。已发表文章:https://doi.org/10.1145/3338906.3338943
引用
@article{arxiv.1907.09807,
title = {On Using Machine Learning to Identify Knowledge in API Reference Documentation},
author = {Davide Fucci and Alireza Mollaalizadehbahnemiri and Walid Maalej},
journal= {arXiv preprint arXiv:1907.09807},
year = {2019}
}