Modern programming frameworks come with large libraries, with diverse applications such as for matching regular expressions, parsing XML files and sending email. Programmers often use search engines such as Google and Bing to learn about existing APIs. In this paper, we describe SWIM, a tool which suggests code snippets given API-related natural language queries such as "generate md5 hash code". We translate user queries into the APIs of interest using clickthrough data from the Bing search engine. Then, based on patterns learned from open-source code repositories, we synthesize idiomatic code describing the use of these APIs. We introduce \emph{structured call sequences} to capture API-usage patterns. Structured call sequences are a generalized form of method call sequences, with if-branches and while-loops to represent conditional and repeated API usage patterns, and are simple to extract and amenable to synthesis. We evaluated SWIM with 30 common C# API-related queries received by Bing. For 70% of the queries, the first suggested snippet was a relevant solution, and a relevant solution was present in the top 10 results for all benchmarked queries. The online portion of the workflow is also very responsive, at an average of 1.5 seconds per snippet.


翻译:现代编程框架包含大型图书馆, 包括匹配常规表达式、 剖析 XML 文档和发送电子邮件等多种应用程序。 程序员经常使用 Google 和 Bing 等搜索引擎来了解已有的 API 。 在本文中, 我们描述SWIM, 这个工具在与 API 有关的自然语言查询中建议代码片断, 例如“ generate md5 hash code ” 。 我们使用 Bing 搜索引擎的点击数据将用户查询转换为感兴趣的 API 。 然后, 我们根据从开放源代码存储处学到的规律, 合成了描述这些 API 的使用的自然代码。 我们引入了\ emph{ 结构调序 来捕捉 API 使用模式。 结构调用序列是一种通用的方法调用序列, 包括“ 如果- branches ” 和 “ 同时-loople” 。 我们用 Bing 接收的 30 个常见 C# API 查询结果来评估 Swed 。 对于70%的查询来说, 第一个建议的缩略图是相关的一个相关的解决方案, 一个相关的解决方案在目前平均10 的15 级查询中有一个最符合要求的版本。

0
下载
关闭预览

相关内容

Bing(中文名:必应)是微软公司于 2009 年 5 月 28 日推出,用以取代 Live Search 的全新搜索引擎服务。
100+篇《自监督学习(Self-Supervised Learning)》论文最新合集
专知会员服务
164+阅读 · 2020年3月18日
开源书:PyTorch深度学习起步
专知会员服务
50+阅读 · 2019年10月11日
机器学习入门的经验与建议
专知会员服务
92+阅读 · 2019年10月10日
【哈佛大学商学院课程Fall 2019】机器学习可解释性
专知会员服务
103+阅读 · 2019年10月9日
Call for Participation: Shared Tasks in NLPCC 2019
中国计算机学会
5+阅读 · 2019年3月22日
人工智能 | CCF推荐期刊专刊约稿信息6条
Call4Papers
5+阅读 · 2019年2月18日
计算机类 | ISCC 2019等国际会议信息9条
Call4Papers
5+阅读 · 2018年12月25日
disentangled-representation-papers
CreateAMind
26+阅读 · 2018年9月12日
计算机视觉近一年进展综述
机器学习研究会
9+阅读 · 2017年11月25日
【论文】变分推断(Variational inference)的总结
机器学习研究会
39+阅读 · 2017年11月16日
Adversarial Variational Bayes: Unifying VAE and GAN 代码
CreateAMind
7+阅读 · 2017年10月4日
【推荐】用Tensorflow理解LSTM
机器学习研究会
36+阅读 · 2017年9月11日
【推荐】GAN架构入门综述(资源汇总)
机器学习研究会
10+阅读 · 2017年9月3日
Auto-Encoding GAN
CreateAMind
7+阅读 · 2017年8月4日
Arxiv
8+阅读 · 2019年3月21日
VIP会员
相关资讯
Call for Participation: Shared Tasks in NLPCC 2019
中国计算机学会
5+阅读 · 2019年3月22日
人工智能 | CCF推荐期刊专刊约稿信息6条
Call4Papers
5+阅读 · 2019年2月18日
计算机类 | ISCC 2019等国际会议信息9条
Call4Papers
5+阅读 · 2018年12月25日
disentangled-representation-papers
CreateAMind
26+阅读 · 2018年9月12日
计算机视觉近一年进展综述
机器学习研究会
9+阅读 · 2017年11月25日
【论文】变分推断(Variational inference)的总结
机器学习研究会
39+阅读 · 2017年11月16日
Adversarial Variational Bayes: Unifying VAE and GAN 代码
CreateAMind
7+阅读 · 2017年10月4日
【推荐】用Tensorflow理解LSTM
机器学习研究会
36+阅读 · 2017年9月11日
【推荐】GAN架构入门综述(资源汇总)
机器学习研究会
10+阅读 · 2017年9月3日
Auto-Encoding GAN
CreateAMind
7+阅读 · 2017年8月4日
Top
微信扫码咨询专知VIP会员