面向代码搜索的主动归纳逻辑编程
软件工程
2019-02-26 v2
摘要
现代搜索技术要么无法有效结合人类反馈来精炼搜索结果,要么无法表达所需代码的结构或语义属性。我们的交互式代码搜索技术 ALICE 的关键洞见是,可以主动结合用户反馈,使用户能够轻松表达和精炼搜索查询。我们设计了一种查询语言,将代码的结构和语义建模为逻辑事实。给定带有用户标注的代码样例,ALICE 自动从被标记为重要的特征中提取逻辑查询。用户可以通过将一或多个样例标注为所需(正例)或无关(负例)来精炼搜索查询。ALICE 随后通过主动归纳逻辑编程推断出一个新的逻辑查询,将正例与负例分离。我们全面而系统的模拟实验表明,ALICE 通过主动结合用户反馈快速移除了大量假正例。其搜索算法对噪声和用户标注错误也具有鲁棒性。我们选择同时利用正例和负例以及所选代码的嵌套包含结构,在精炼搜索查询方面是有效的。与现有技术 Critics 相比,ALICE 不需要用户手动构建搜索模式,却能在更少的平均搜索迭代下达到相当的准确率和召回率。一项用户案例研究表明,ALICE 易于使用,并有助于表达复杂的代码模式。
引用
@article{arxiv.1812.05265,
title = {Active Inductive Logic Programming for Code Search},
author = {Aishwarya Sivaraman and Tianyi Zhang and Guy Van den Broeck and Miryung Kim},
journal= {arXiv preprint arXiv:1812.05265},
year = {2019}
}