智能软件维护:NLP2API 助力代码搜索与维护
1. Borda 分数计算
Borda 计数是一种广泛使用的选举方法,选民会根据偏好对政治候选人进行排序。在软件工程领域,Holmes 首次将 Borda 计数应用于在集成开发环境(IDE)中为正在开发的代码推荐相关代码示例。他们将该方法应用于使用六种结构启发式方法收集的六个代码示例排名列表,然后将这些列表中最频繁出现的示例推荐为最相关的示例。
同样,我们将此方法应用于四个候选 API 列表。每个 API 类根据其重要性估计(如 TF - IDF、API 类排名)进行排名。我们从这些排名的候选列表 $WRC = {WCQ, WCA, RCQ, RCA}$ 中为每个 API 类($\forall A_i \in A$)计算 Borda 分数 $S_B$,公式如下:
$S_B(A_i \in A) = \sum_{RL_j \in WRC} \frac{1 - rank(A_i, RL_j)}{|RL_j|}$
其中,$A$ 指的是从排名候选列表 $WRC$ 中提取的所有 API 类的集合,$|RL_j|$ 表示每个列表的大小,$rank(A_i, RL_j)$ 返回类 $A_i$ 在排名列表中的排名。因此,在多个候选列表中处于靠前位置的 API 类,对于目标编程任务可能比那些处于靠后位置或未在多个列表中出现的类更重要。
2. 查询 - API 语义接近度分析
伪相关性反馈、PageRank 和 Borda 计数会分析一组暂时相关文档(即问答线程)中查询关键字的局部上下文,然后提取候选 API 类以进行查询重新表述。虽然局部上下文分析很有用,但现有研究报告称,仅进行此类分析可能会导致话题偏离
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



