美文网首页
机器学习算法在软件生态建设中的应用(1)

机器学习算法在软件生态建设中的应用(1)

作者: Jtag特工 | 来源:发表于2019-03-22 20:13 被阅读0次

机器学习算法在软件生态建设中的应用(1)

首先定义一下本文中所述的软件生态的定义。一个新的操作系统,提供一套全新的API,以此为核心所构建的所有软件系统,我们定义为软件生态。比如iOS及AppStore上的各种软件是软件生态,Android及Android应用也是软件生态。
软件生态具有网络效应,新的软件生态的建设,有非常大的困难。但是,一旦软件生态形成,护城河效应也很强。
但是,构建生态的困难,在于用户的学习曲线较高。一方面,通过商业的力量分享利益让用户加入到生态中来;另一方面,在API的易用性和降低学习曲线方面,也是需要大力改进的一个课题。

代码推荐系统

随着推荐系统的发展,软件工程推荐系统于2010年被Martin P. Robillard, Robert J. Walker和Thomas Zimmermann提出。在参考文献1《Recommendation systems for software engineering》中,作者提到了三种推荐系统的用法:

  • eRose系统:通过挖掘历史提交信息,推荐如何修改
  • Strathcona系统:推荐API在真实场景中的使用情况
  • Suade系统:代码浏览系统

样例推荐

下面是Strathcona中推荐API用法的一个示意图:


Strathcona

Strathcona是2006年的技术,我们选择更新一点的2015年的《How Can I Use This Method?》为例,介绍API sample推荐系统的实现方法。

样例推荐三步法

如上图所示,API样例推荐主要有三个步骤:搜索、去重和排序。
搜索就是去整个代码库中去查找相关API使用的代码段。
但是,代码段可能会有重复,大量的重复会给用户带来不良体验,所以去重工作也很重要。
最后,要根据相关度进行排序。

搜索部分,其实还包含了有技术含量的如何切片的过程。这是通过参考文献4的切片方法来实现的。
代码去重,本身仍然是一门热门的话题。比如参考文献5和6的技术。
最后是根据热度排序,我们可以使用参考文献7的技术。

基于句法的补全

不同于词法补全,句法补全是高一层的推荐算法。我们可以采用基于图的代码统计语言模型来实现。
我们来看下基于抽象语法树的句法补全的示意图:


AST

共享浏览数据

来自微软研究院的一项研究,采用通过将程序员编程过程录像,然后将对某模块熟悉的程序员的浏览记录分享给新手的方式进行推荐。


Sharing Navigation Data

编程网站挖掘

除了以上基于代码和程序员操作的方法,另外一个非常有效的方法就是搜索stackoverflow这样的编程问答网站。

我们来看个示意图。程序员只要正常写代码,根据预先设好的敏感度,系统就会随着程序员的编程来推荐相关的样例:


mining stackoverflow 1

程序员在左边写代码,右边就提示stackoverflow网站上的结果。


mining stackoverflow 2

其系统架构,以eclipse ide为例,如下所示:


mso arch

参考文献

  1. Robillard, Martin, Robert Walker, and Thomas Zimmermann. "Recommendation systems for software engineering." IEEE software 27.4 (2010): 80-86.
  2. Holmes, Reid, Robert J. Walker, and Gail C. Murphy. "Approximate structural context matching: An approach to recommend relevant examples." IEEE Transactions on Software Engineering 32.12 (2006): 952-970.
  3. Moreno, Laura, et al. "How can I use this method?." Proceedings of the 37th International Conference on Software Engineering-Volume 1. IEEE Press, 2015.
  4. Tsantalis, Nikolaos, and Alexander Chatzigeorgiou. "Identification of extract method refactoring opportunities for the decomposition of methods." Journal of Systems and Software 84.10 (2011): 1757-1782.
  5. Roy, Chanchal K., James R. Cordy, and Rainer Koschke. "Comparison and evaluation of code clone detection techniques and tools: A qualitative approach." Science of computer programming 74.7 (2009): 470-495.
  6. Kamiya, Toshihiro, Shinji Kusumoto, and Katsuro Inoue. "CCFinder: a multilinguistic token-based code clone detection system for large scale source code." IEEE Transactions on Software Engineering 28.7 (2002): 654-670.
  7. Keivanloo, Iman, Juergen Rilling, and Ying Zou. "Spotting working code examples." Proceedings of the 36th International Conference on Software Engineering. ACM, 2014.
  8. Nguyen, Anh Tuan, and Tien N. Nguyen. "Graph-based statistical language model for code." 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering. Vol. 1. IEEE, 2015.
  9. Ponzanelli, Luca, et al. "Mining StackOverflow to turn the IDE into a self-confident programming prompter." Proceedings of the 11th Working Conference on Mining Software Repositories. ACM, 2014.
  10. Proksch, Sebastian, Johannes Lerch, and Mira Mezini. "Intelligent code completion with Bayesian networks." ACM Transactions on Software Engineering and Methodology (TOSEM) 25.1 (2015): 3.

相关文章

  • 机器学习算法在软件生态建设中的应用(1)

    机器学习算法在软件生态建设中的应用(1) 首先定义一下本文中所述的软件生态的定义。一个新的操作系统,提供一套全新的...

  • 机器学习

    1.机器学习算法 2.机器学习框架 3.机器学习应用案例

  • 机器学习应用的实现步骤一:构建问题

    从算法到应用 在文章《机器学习算法的构成要素》中我们用数学语言定义了机器学习算法的五个要素,分别是:输入训练数据集...

  • RDD

    1.RDD设计背景 在实际应用中,存在许多迭代式算法(比如机器学习、图算法等)和交互式数据挖掘工具,这些应用场景的...

  • python数据分析与机器学习(Numpy,Pandas,Mat

    机器学习怎么学? 机器学习包含数学原理推导和实际应用技巧,所以需要清楚算法的推导过程和如何应用。 深度学习是机器学...

  • 基于深度学习的安卓恶意软件检测(二)

    在上一节中介绍了安卓恶意应用检测的背景知识,本节将介绍项目用到的传统机器学习算法和深度学习算法. 1 随机森林算法...

  • 机器学习路径

    1. 机器学习入门课程实操: imooc 上《python3入门机器学习,经典算法与应用》——刘宇波 附带该项目G...

  • 【ML】机器学习算法应用场景实例六十则

    本文整理了60个机器学习算法应用场景实例,含分类算法应用场景20个、回归算法应用场景20个、聚类算法应用场景10个...

  • 最流行的4个机器学习数据集

    机器学习算法需要作用于数据,而数据的本质则决定了应用的机器学习算法是否合适,而数据的质量也会决定算法表现的好坏程度...

  • 机器学习的发展史

    关于机器学习的详细内容:机器学习入门:概念原理及常用算法 (本课程主要讲解机器学习的概念、原理和应用场景,以及机器...

网友评论

      本文标题:机器学习算法在软件生态建设中的应用(1)

      本文链接:https://www.haomeiwen.com/subject/apvrvqtx.html