awesome-machine-learning-on-source-code
awesome-machine-learning-on-source-code 是一个精心整理的开源资源库,专注于“机器学习应用于源代码”(MLonCode)这一前沿领域。它汇集了该方向优质的研究论文、数据集、软件项目、技术会议及相关博客文章,旨在为探索代码智能的从业者提供一站式知识导航。
在软件开发日益复杂的今天,如何利用人工智能理解、生成、优化甚至修复代码成为关键挑战。这份清单系统地梳理了从程序合成、代码补全、缺陷检测,到代码翻译、摘要生成及克隆检测等核心应用场景的最新成果,帮助使用者快速把握技术脉络,避免在海量文献中迷失方向。
该资源特别适合人工智能研究人员、软件工程学者以及致力于开发智能编程辅助工具(如 AI 结对程序员)的开发者使用。虽然原仓库已停止主动维护,但其沉淀的分类体系极具价值,且文中指引了活跃的替代项目(ml4code.github.io),确保用户能持续获取前沿资讯。其独特的亮点在于高度结构化的分类目录,将跨学科的复杂研究清晰拆解,让无论是学术界还是工业界的用户都能高效找到所需的技术灵感与数据支持,是进入代码智能领域的理想起点。
使用场景
某大型金融科技公司的高级架构师正带领团队重构核心交易系统的遗留代码库,急需引入基于机器学习的智能化工具来提升代码质量与开发效率。
没有 awesome-machine-learning-on-source-code 时
- 文献检索如大海捞针:团队需要在海量学术数据库中手动筛选关于“代码克隆检测”或“自动缺陷修复”的论文,耗时数周仍难以找到最新且适用的算法。
- 技术选型缺乏依据:由于不了解业界现有的成熟数据集(Datasets)和基准测试,团队不得不从零开始构建训练数据,导致项目启动严重滞后。
- 重复造轮子现象严重:开发人员不知道已有开源项目实现了类似的“代码补全”或“程序翻译”功能,浪费大量人力重新编写基础模型代码。
- 前沿动态掌握滞后:团队错过了 ICSE、ASE 等顶级会议中关于 MLonCode 的最新研究成果,导致技术方案停留在过时的统计方法上,无法利用深度学习优势。
使用 awesome-machine-learning-on-source-code 后
- 精准定位核心资源:通过分类清晰的论文列表,团队在半天内就锁定了针对 Java 遗留代码的“程序修复”最先进算法及相关实现代码。
- 直接复用高质量数据:利用列表中整理的专用数据集,团队迅速完成了模型预训练,将原本需要一个月的数据准备期缩短至三天。
- 站在巨人肩膀上创新:参考列表中推荐的软件项目(Software),团队直接集成了成熟的代码嵌入(Embeddings)模块,专注于业务逻辑优化而非底层架构。
- 紧跟学术与工业界趋势:借助更新的会议链接和综述(Digests),团队及时采纳了最新的神经网络架构,显著提升了代码建议的准确率。
awesome-machine-learning-on-source-code 将分散的科研宝藏转化为可落地的工程指南,让团队从繁琐的调研中解放出来,专注于解决真正的业务难题。
运行环境要求
未说明
未说明

快速开始
源代码上的优秀机器学习


注意:此仓库已不再积极维护,将不会进行任何进一步的更新,也不会回复或处理任何问题和拉取请求。 一个替代的、仍在积极维护的版本可以在 ml4code.github.io 仓库 中找到。
一份精心整理的优秀研究论文、数据集和软件项目的列表,专注于机器学习与源代码的研究。#MLonCode
目录
摘要
- 从“大数据”中学习 - 关于“大数据”的技术、挑战、工具和数据集。
- 机器学习在大数据与自然性方面的综述 - 关于源代码上机器学习的综述与文献回顾。
会议
ACM 国际软件工程大会,ICSE
ACM 国际自动化软件工程大会,ASE
ACM 欧洲联合软件工程大会及软件工程基础研讨会 (FSE)
2018 IEEE 第25届软件分析、演化与重构国际会议 (SANER)
编程中的机器学习
面向软件工程的自然语言处理研讨会
SysML
软件资源挖掘
AIFORSE
source{d} 技术讲座
NIPS 神经抽象机与程序归纳研讨会
CamAIML
- 学习编程:用于程序归纳的机器学习 - 亚历山大·高恩特。
MASES 2018
竞赛
- CodRep - 自动程序修复竞赛:给定一行源代码,找出插入点。
论文
程序合成与归纳
基于学习的代码习语的程序合成与语义解析 - Richard Shin、Miltiadis Allamanis、Marc Brockschmidt、Oleksandr Polozov,2019年。
用于神经程序合成的合成数据集 - Richard Shin、Neel Kant、Kavi Gupta、Chris Bender、Brandon Trabucco、Rishabh Singh、Dawn Song,ICLR 2019。
执行引导的神经程序合成 - Xinyun Chen、Chang Liu、Dawn Song,ICLR 2019。
DeepFuzz:用于模糊测试的语法有效的C程序自动生成 - Xiao Liu、Xiaoting Li、Rupesh Prajapati、Dinghao Wu,AAAI 2019。
NL2Bash:面向Linux操作系统的自然语言接口语料库及语义解析器 - Xi Victoria Lin、Chenglong Wang、Luke Zettlemoyer、Michael D. Ernst,LREC 2018。
神经程序合成的最新进展 - Neel Kant,2018年。
用于条件程序生成的神经草图学习 - Vijayaraghavan Murali、Letao Qi、Swarat Chaudhuri、Chris Jermaine,ICLR 2018。
神经程序搜索:从描述和示例中解决编程任务 - Illia Polosukhin、Alexander Skidanov,ICLR 2018。
基于优先队列训练的神经程序合成 - Daniel A. Abolafia、Mohammad Norouzi、Quoc V. Le,2018年。
迈向从输入-输出示例中合成复杂程序 - Xinyun Chen、Chang Liu、Dawn Song,ICLR 2018。
玻璃盒程序合成:一种机器学习方法 - Konstantina Christakopoulou、Adam Tauman Kalai,AAAI 2018。
为预测建模合成基准数据 - Chris Cummins、Pavlos Petoumenos、Zheng Wang、Hugh Leather,CGO 2017。
用于字符级语言建模的程序合成 - Pavol Bielik、Veselin Raychev、Martin Vechev,ICLR 2017。
SQLNet:无需强化学习即可从自然语言生成结构化查询 - Xiaojun Xu、Chang Liu、Dawn Song,2017年。
学习如何为程序合成选择示例 - Yewen Pu、Zachery Miranda、Armando Solar-Lezama、Leslie Pack Kaelbling,2017年。
神经程序元归纳 - Jacob Devlin、Rudy Bunel、Rishabh Singh、Matthew Hausknecht、Pushmeet Kohli,NIPS 2017。
学习从手绘图像推断图形程序 - Kevin Ellis、Daniel Ritchie、Armando Solar-Lezama、Joshua B. Tenenbaum,2017年。
用于程序生成的神经属性机器 - Matthew Amodio、Swarat Chaudhuri、Thomas Reps,2017年。
用于代码生成和语义解析的抽象语法网络 - Maxim Rabinovich、Mitchell Stern、Dan Klein,ACL 2017。
通过递归使神经编程架构具备泛化能力 - Jonathon Cai、Richard Shin、Dawn Song,ICLR 2017。
一种用于通用代码生成的句法神经模型 - Pengcheng Yin、Graham Neubig,ACL 2017。
利用循环神经网络从自然语言进行程序合成 - Xi Victoria Lin、Chenglong Wang、Deric Pang、Kevin Vu、Luke Zettlemoyer、Michael Ernst,2017年。
RobustFill:在噪声输入输出条件下进行神经程序学习 - Jacob Devlin、Jonathan Uesato、Surya Bhupatiraju、Rishabh Singh、Abdel-rahman Mohamed、Pushmeet Kohli,ICML 2017。
基于示例的终身感知式编程 - Gaunt、Alexander L.、Marc Brockschmidt、Nate Kushman和Daniel Tarlow,2017年。
基于示例的神经程序编程 - Chengxun Shu、Hongyu Zhang,AAAI 2017。
DeepCoder:学习编写程序 - Balog Matej、Alexander L. Gaunt、Marc Brockschmidt、Sebastian Nowozin和Daniel Tarlow,ICLR 2017。
一种可微分的归纳逻辑编程方法 - Yang Fan、Zhilin Yang和William W. Cohen,2017年。
用于如果-那么型程序合成的潜在注意力机制 - Xinyun Chen、Chang Liu、Richard Shin、Dawn Song、Mingcheng Chen,NIPS 2016。
用于代码生成的潜在预测网络 - Wang Ling、Edward Grefenstette、Karl Moritz Hermann、Tomáš Kočiský、Andrew Senior、Fumin Wang、Phil Blunsom,ACL 2016。
神经符号机器:在弱监督下于Freebase上学习语义解析器(简版) - Liang Chen、Jonathan Berant、Quoc Le、Kenneth D. Forbus和Ni Lao,NIPS 2016。
程序作为黑箱解释 - Singh、Sameer、Marco Tulio Ribeiro和Carlos Guestrin,NIPS 2016。
基于搜索的代码模板泛化与精炼 - Tim Molderez、Coen De Roover,SSBSE 2016。
自然源代码的结构化生成模型 - Chris J. Maddison、Daniel Tarlow,ICML 2014。
源代码分析与语言建模
面向大型代码集的机器学习词汇建模 - Hlib Babii、Andrea Janes、Romain Robbes,2019年。
基于图的生成式代码建模 - Marc Brockschmidt、Miltiadis Allamanis、Alexander L. Gaunt、Oleksandr Polozov,ICLR 2019。
NL2Type:从自然语言信息中推断 JavaScript 函数类型 - Rabee Sohail Malik、Jibesh Patra、Michael Pradel,ICSE 2019。
基于抽象语法树的新型神经网络源代码表示 - Jian Zhang、Xu Wang、Hongyu Zhang、Hailong Sun、Kaixuan Wang、Xudong Liu,ICSE 2019。
深度学习类型推断 - Vincent J. Hellendoorn、Christian Bird、Earl T. Barr 和 Miltiadis Allamanis,FSE 2018。代码。
用于学习源代码变更的 Tree2Tree 神经翻译模型 - Saikat Chakraborty、Miltiadis Allamanis、Baishakhi Ray,2018年。
code2seq:从代码的结构化表示中生成序列 - Uri Alon、Omer Levy、Eran Yahav,2018年。
语法与理性:利用语言模型检测并修复语法错误 - Eddie Antonio Santos、Joshua Charles Campbell、Dhvani Patel、Abram Hindle 和 José Nelson Amaral,SANER 2018。
code2vec:学习代码的分布式表示 - Uri Alon、Meital Zilberstein、Omer Levy、Eran Yahav,2018年。
使用图来表示程序的学习方法 - Miltiadis Allamanis、Marc Brockschmidt、Mahmoud Khademi,ICLR 2018。
面向大型代码和自然性的机器学习综述 - Miltiadis Allamanis、Earl T. Barr、Premkumar Devanbu、Charles Sutton,2017年。
深度神经网络是建模源代码的最佳选择吗? - Vincent J. Hellendoorn、Premkumar Devanbu,FSE 2017。
用于软件代码的深度语言模型 - Hoa Khanh Dam、Truyen Tran、Trang Pham,2016年。
用于编程语言处理的树结构卷积神经网络 - Lili Mou、Ge Li、Lu Zhang、Tao Wang、Zhi Jin,AAAI-16。代码。
建议准确的方法名和类名 - Miltiadis Allamanis、Earl T. Barr、Christian Bird、Charles Sutton,FSE 2015。
利用语言建模在大规模上挖掘源代码仓库 - Miltiadis Allamanis、Charles Sutton,MSR 2013。
神经网络架构与算法
利用递归树搜索与规划学习组合式神经程序 - 托马斯·皮埃罗、纪尧姆·利涅尔、斯科特·里德、奥利维耶·西戈、尼古拉·佩兰、亚历山大·拉泰尔、大卫·卡斯、卡里姆·贝吉尔、南多·德弗雷塔斯,2019年。
从程序到可解释的深度模型再返回 - 埃兰·亚哈夫,ICCAV 2018。
神经代码理解:代码语义的可学习表示 - 塔尔·本努恩、爱丽丝·肖莎娜·雅各博维茨、托斯滕·霍夫勒,NIPS 2018。
用于预测程序属性的通用路径表示法 - 乌里·阿隆、梅塔尔·齐尔伯斯坦、奥默·列维、埃兰·亚哈夫,PLDI 2018。
使用双边基于树的卷积神经网络进行跨语言程序分类学习 - Nghi D. Q. Bui、江凌霄、于一军,AAAI 2018。
用于跨语言算法分类的双边依存神经网络 - Nghi D. Q. Bui、于一军、江凌霄,SANER 2018。
面向结构化数据的语法导向变分自编码器 - 韩俊戴、应涛田、博戴、史蒂文·斯基纳、乐松,ICLR 2018。
用神经网络进行分而治之 - 诺瓦克、亚历克斯和琼·布鲁纳,ICLR 2018。
层次化的多尺度循环神经网络 - 钟俊英、成镇安和约书亚·本吉奥,ICLR 2017。
利用层次化注意力记忆学习高效算法 - 安德里乔维奇、马尔钦和卡罗尔·库拉赫,2016年。
用神经图灵机学习栈上的操作 - 德勒、特里斯坦和约瑟夫·杜罗,NIPS 2016。
概率神经程序 - 穆雷、肯顿·W. 和贾扬特·克里希纳穆提,NIPS 2016。
神经程序员-解释器 - 里德、斯科特和南多·德弗雷塔斯,ICLR 2016。
神经GPU学习算法 - 凯泽、卢卡什和伊利亚·苏茨克维尔,ICLR 2016。
神经随机存取机器 - 卡罗尔·库拉赫、马尔钦·安德里乔维奇、伊利亚·苏茨克维尔,ERCIM News 2016。
神经程序员:通过梯度下降诱导潜在程序 - 尼拉坎坦、阿尔温德、Quoc V. Le和伊利亚·苏茨克维尔,ICLR 2015。
学习执行 - 沃伊切赫·扎伦巴、伊利亚·苏茨克维尔,2015年。
利用栈增强型循环网络推断算法模式 - 朱林、阿曼德和托马斯·米科洛夫,NIPS 2015。
神经图灵机 - 格雷夫斯、亚历克斯、格雷格·韦恩和伊沃·丹尼赫尔卡,2014年。
从机器学习到机器推理 - 博图·莱昂,《机器学习杂志》2011年。
软件工程中的嵌入技术
源代码嵌入技术的文献综述 - 陈子敏和马丁·蒙佩鲁斯,2019年。
基于AST的深度学习用于检测恶意PowerShell脚本 - 吉莉·鲁萨克、阿卜杜拉·阿尔-杜贾伊利、乌娜-梅·奥赖利,2018年。
深度代码搜索 - 谢晓东、张宏宇、金圣勋,ICSE 2018。
软件工程领域的词嵌入 - 瓦西利基·埃夫斯塔修、克里斯托斯·哈兹利纳斯、迪奥米迪斯·斯皮内利斯,MSR 2018。
代码向量:通过嵌入的抽象符号轨迹理解程序 - 乔丹·亨克尔、舒文杜·K·拉希里、本·利布利特、托马斯·雷普斯,FSE 2018。
通过代码图嵌入估计文档距离 - 林泽奇、赵俊峰、邹延振、谢兵,Internetware 2017。
将Word2Vec与改进的向量空间模型结合以提升代码检索效果 - 阮清云、阮英团、潘洪登、阮仲德、阮天宁,ICSE 2017。
从词嵌入到文档相似性,以改善软件工程中的信息检索 - 叶欣、沈慧、马晓、拉兹万·布内斯库、刘畅,ICSE 2016。
利用向量表示映射API元素以支持代码迁移 - 阮仲德、阮英团、阮天宁,ICSE 2016。
程序翻译
迈向神经网络反编译 - 奥默·卡茨、尤瓦尔·奥尔沙克、约阿夫·戈德堡、埃兰·亚哈夫,2019年。
用于程序翻译的树到树神经网络 - 陈鑫云、刘畅、宋晓东,ICLR 2018。
代码注意力机制:利用领域特征将代码翻译为注释 - 郑文浩、周洪宇、李明、吴建新,2017年。
基于神经机器翻译自动从代码差异中生成提交信息 - 蒋思远、阿米尔·阿马利、科林·麦克米伦,ASE 2017。
用于自动化代码文档生成与代码自动生成的 Python 函数及文档字符串平行语料库 - 安东尼奥·瓦莱里奥·米切利·巴罗内、里科·森尼希,ICNLP 2017。
一种从源代码变更中生成自然语言描述的神经架构 - 巴勃罗·洛约拉、爱迪生·马雷塞-泰勒、松尾丰、ACL 2017。
代码建议与补全
Aroma:通过结构化代码搜索进行代码推荐 - 卢思飞、杨迪、库希克·森和萨蒂什·钱德拉,2019年。
利用深度学习实现智能代码评审 - 安舒尔·古普塔、尼尔·桑达雷桑,KDD 深度学习日 2018。
基于神经注意力机制与指针网络的代码补全 - 李健、王悦、Irwin King、Michael R. Lyu,2017年。
使用稀疏指针网络学习 Python 代码建议 - 阿维什卡尔·布普昌德、蒂姆·罗克特谢尔、厄尔·巴尔、塞巴斯蒂安·里德尔,2016年。
基于统计语言模型的代码补全 - 维塞林·雷切夫、马丁·韦切夫、埃兰·亚哈夫,PLDI 2014。
程序修复与缺陷检测
SampleFix:通过采样多样化的修复方案来学习程序修复 - Hossein Hajipour、Apratim Bhattacharya、Mario Fritz,2019年。
用于二进制软件漏洞检测的最大化差异序列自编码器 - Tue Le、Tuan Nguyen、Trung Le、Dinh Phung、Paul Montague、Olivier De Vel、Lizhen Qu,ICLR 2019。
通过联合学习定位与修复进行神经网络程序修复 - Marko Vasic、Aditya Kanade、Petros Maniatis、David Bieber、Rishabh Singh,ICLR 2019。
基于深度学习的编译器模糊测试 - Chris Cummins、Pavlos Petoumenos、Alastair Murray、Hugh Leather,ISSTA 2018。
自动评估组合式分析发现的漏洞 - Saahil Ognawala、Ricardo Nales Amato、Alexander Pretschner 和 Pooja Kulkarni,MASES 2018。
利用神经机器翻译在真实环境中学习修复补丁的实证研究 - Michele Tufano、Cody Watson、Gabriele Bavota、Massimiliano Di Penta、Martin White、Denys Poshyvanyk,ASE 2018。
DeepBugs:一种基于名称的漏洞检测学习方法 - Michael Pradel、Koushik Sen,2018年。
从漏洞修复中学习如何变异源代码 - Michele Tufano、Cody Watson、Gabriele Bavota、Massimiliano Di Penta、Martin White、Denys Poshyvanyk,2018年。
用于软件缺陷预测的深度树模型 - HK Dam、T Pham、SW Ng、T Tran、J Grundy、A Ghose、T Kim、CJ Kim,2018年。
利用深度表示学习实现源代码中的自动化漏洞检测 - Rebecca L. Russell、Louis Kim、Lei H. Hamilton、Tomo Lazovich、Jacob A. Harer、Onur Ozdemir、Paul M. Ellingwood、Marc W. McConley,2018年。
利用现有补丁和相似代码塑造程序修复空间 - Jiajun Jiang、Yingfei Xiong、Hongyu Zhang、Qing Gao、Xiangqun Chen,2018年。(代码)。
利用生成对抗网络学习修复软件漏洞 - Jacob A. Harer、Onur Ozdemir、Tomo Lazovich、Christopher P. Reale、Rebecca L. Russell、Louis Y. Kim、Peter Chin,2018年。
用于程序修复的动态神经程序嵌入 - Ke Wang、Rishabh Singh、Zhendong Su,ICLR 2018。
估计源代码的缺陷性:基于GitHub内容的预测模型 - Ritu Kapur、Balwinder Sodhi,2018年。
利用机器学习进行自动化软件漏洞检测 - Jacob A. Harer、Louis Y. Kim、Rebecca L. Russell、Onur Ozdemir、Leonard R. Kosta、Akshay Rangamani、Lei H. Hamilton、Gabriel I. Centeno、Jonathan R. Key、Paul M. Ellingwood、Marc W. McConley、Jeffrey M. Opper、Peter Chin、Tomo Lazovich,IWSPA 2018。
从数据中学习静态分析工具 - Pavol Bielik、Veselin Raychev、Martin Vechev,CAV 2017。视频。
类型化还是非类型化:量化JavaScript中的可检测缺陷 - Zheng Gao、Christian Bird、Earl Barr,ICSE 2017。
通过深度学习代码相似性对程序修复要素进行排序与转换 - Martin White、Michele Tufano、Matías Martínez、Martin Monperrus、Denys Poshyvanyk,2017年。
使用神经符号转换网络进行语义代码修复 - Jacob Devlin、Jonathan Uesato、Rishabh Singh、Pushmeet Kohli,2017年。
从提交信息和缺陷报告中自动识别安全问题 - Yaqin Zhou 和 Asankhaya Sharma,FSE 2017。
SmartPaste:学习适应源代码 - Miltiadis Allamanis、Marc Brockschmidt,2017年。
通过神经记忆网络从原始源代码端到端预测缓冲区溢出 - Min-je Choi、Sehun Jeong、Hakjoo Oh、Jaegul Choo,IJCAI 2017。
定制突变体更适合修复缺陷 - Miltiadis Allamanis、Earl T. Barr、René Just、Charles Sutton,2016年。
API与代码挖掘
SAR: 用少量知识学习跨语言API映射 - Nghi D. Q. Bui、Yijun Yu、Lingxiao Jiang,FSE 2019。
通过代码的分布式向量表示进行跨语言映射的层次化学习 - Nghi D. Q. Bui、Lingxiao Jiang,ICSE 2018。
DeepAM:利用多模态序列到序列学习迁移API - Xiaodong Gu、Hongyu Zhang、Dongmei Zhang、Sunghun Kim,IJCAI 2017。
挖掘变更历史以发现未知的系统性编辑 - Tim Molderez、Reinout Stevens、Coen De Roover,MSR 2017。
深度API学习 - Xiaodong Gu、Hongyu Zhang、Dongmei Zhang、Sunghun Kim,FSE 2016。
探索API嵌入用于API使用与应用 - Nguyen、Nguyen、Phan和Nguyen,系统与软件期刊2017年。
面向软件开发的API使用模式推荐 - Haoran Niu、Iman Keivanloo、Ying Zou,2017年。
无参数的概率论GitHub跨API挖掘 - Jaroslav Fowkes、Charles Sutton,FSE 2016。
用于序列模式挖掘的子序列交错模型 - Jaroslav Fowkes、Charles Sutton,KDD 2016。
精简版GHTorrent:按需获取GitHub数据 - Georgios Gousios、Bogdan Vasilescu、Alexander Serebrenik、Andy Zaidman,MSR 2014。
从源代码中挖掘惯用语 - Miltiadis Allamanis、Charles Sutton,FSE 2014。
GHTorrent数据集及工具套件 - Georgios Gousios,MSR 2013。
代码优化
学习型索引结构的理由 - Tim Kraska、Alex Beutel、Ed H. Chi、Jeffrey Dean、Neoklis Polyzotis,SIGMOD 2018。
端到端深度学习优化启发式算法 - Chris Cummins、Pavlos Petoumenos、Zheng Wang、Hugh Leather,PACT 2017。
学习如何超优化程序 - Rudy Bunel、Alban Desmaison、M. Pawan Kumar、Philip H.S. Torr、Pushmeet Kohli,ICLR 2017。
神经网络可从二进制文件中学习函数类型签名 - Zheng Leong Chua、Shiqi Shen、Prateek Saxena和Zhenkai Liang,USENIX安全研讨会2017年。
适应性神经编译 - Rudy Bunel、Alban Desmaison、Pushmeet Kohli、Philip H.S. Torr、M. Pawan Kumar,NIPS 2016。
学习超优化程序——研讨会版本 - Bunel、Rudy、Alban Desmaison、M. Pawan Kumar、Philip H. S. Torr和Pushmeet Kohli,NIPS 2016。
主题建模
一种与语言无关的语义源代码标注模型 - Ben Gelman、Bryan Hoyle、Jessica Moore、Joshua Saxe和David Slater,MASES 2018。
利用源代码中的名称对公共仓库进行大规模主题建模 - Vadim Markovtsev、Eiso Kant,2017年。
为什么、何时、什么:按主题、类型和代码分析Stack Overflow问题 - Miltiadis Allamanis、Charles Sutton,MSR 2013。
语义聚类:识别源代码中的主题 - Adrian Kuhn、Stéphane Ducasse、Tudor Girba,信息与软件技术2007年。
情感分析
面向软件工程研究的情感分析基准研究 - Nicole Novielli、Daniela Girardi、Filippo Lanubile,MSR 2018。
软件工程中的情感分析:我们能做到哪一步? - Bin Lin、Fiorella Zampetti、Gabriele Bavota、Massimiliano Di Penta、Michele Lanza、Rocco Oliveto,ICSE 2018。
在软件工程中利用自动化情感分析 - Md Rakibul Islam、Minhaz F. Zibran,MSR 2017。
面向软件开发的情感极性检测 - Fabio Calefato、Filippo Lanubile、Federico Maiorano、Nicole Novielli,经验软件工程2017年。
SentiCR:用于代码评审交互的定制情感分析工具 - Toufique Ahmed、Amiangshu Bosu、Anindya Iqbal、Shahram Rahimi,ASE 2017。
代码摘要
利用迁移的API知识总结源代码 - 胡星、李革、夏鑫、戴维·洛、陆帅、金志,IJCAI 2018。
深度代码注释生成 - 胡星、李革、夏鑫、戴维·洛、金志,ICPC 2018。
用于检索和总结源代码的神经框架 - 陈青莹、周明辉,ASE 2018。
通过深度强化学习改进自动源代码摘要 - 万瑶、赵舟、杨敏、徐冠东、应浩超、吴健和Philip S. Yu,ASE 2018。
用于源代码极端摘要的卷积注意力网络 - 米尔蒂阿迪斯·阿拉马尼斯、彭浩、查尔斯·萨顿,ICML 2016。
TASSAL:用于源代码摘要的自动折叠 - 约瑟夫·福克斯、潘卡詹·钱提拉塞加兰、拉兹万·兰卡、米尔蒂阿迪斯·阿拉马尼斯、米雷拉·拉帕塔、查尔斯·萨顿,ICSE 2016。
使用神经注意力模型总结源代码 - 斯里尼瓦桑·艾耶尔、伊万尼斯·康斯塔斯、阿尔文·张、卢克·泽特勒莫耶,ACL 2016。
拉取请求描述的自动生成 - 刘忠信、夏鑫、克里斯托夫·特罗德、戴维·洛、李善平,ASE 2019。
克隆检测
基于学习的递归聚合抽象语法树用于代码克隆检测 - 卢茨·布赫和阿图尔·安德热亚克,SANER 2019。
Oreo:在临界区域检测克隆 - 维巴夫·赛尼、法里玛·法尔马希尼法拉哈尼、吕亚东、皮埃尔·巴尔迪和克里斯蒂娜·V·洛佩斯,FSE 2018。
程序相似度的深度学习方法 - 尼科洛·马拉斯托尼、罗伯托·贾科巴齐和米拉·达拉普雷达,MASES 2018。
用于代码克隆检测的循环神经网络 - 阿尔谢尼·佐林和弗拉基米尔·伊茨克森,SEIM 2018。
代码复制对机器学习模型中代码的影响 - 米尔蒂阿迪斯·阿拉马尼斯,2018年。
DéjàVu:GitHub上的代码重复地图 - 克里斯蒂娜·V·洛佩斯、彼得·马伊、佩德罗·马丁斯、维巴夫·赛尼、迪扬、雅库布·齐特尼、希特什·萨杰纳尼、扬·维泰克,编程语言OOPSLA 2017。
有的来自这里,有的来自那里:GitHub中的跨项目代码重用 - 穆罕默德·加雷海亚齐、贝莎基·雷、弗拉基米尔·菲尔科夫,MSR 2017。
用于代码克隆检测的深度学习代码片段 - 马丁·怀特、米歇尔·图法诺、克里斯托弗·文多姆和丹尼斯·波希瓦尼克,ASE 2016。
软件演化中代码变更重复性的研究 - HA Nguyen、AT Nguyen、TT Nguyen、TN Nguyen、H Rajan,ASE 2013。
可微分解释器
DDRprog:一个CLEVR可微分动态推理程序员 - 约瑟夫·苏亚雷斯、贾斯汀·约翰逊、李飞飞,2018年。
通过组合抽象提升神经程序员-解释器的通用性和可学习性 - 大晓、廖若宇、袁兴元,ICLR 2018。
带有神经库的可微分程序 - 亚历山大·L·高恩特、马克·布罗克施密特、内特·库什曼、丹尼尔·塔洛,ICML 2017。
可微分函数式程序解释器 - 约翰·K·费瑟、马克·布罗克施密特、亚历山大·L·高恩特、丹尼尔·塔洛,2017年。
使用可微分Forth解释器编程 - 博什尼亚克、马特科、蒂姆·罗克特舍尔、杰森·纳拉多夫斯基和塞巴斯蒂安·里德尔,ICML 2017。
神经函数式编程 - 费瑟·约翰·K、布罗克施密特·马克、高恩特·亚历山大·L、塔洛·丹尼尔,ICLR 2017。
TerpreT:一种用于程序归纳的概率编程语言 - 高恩特·亚历山大·L、布罗克施密特·马克、里沙布·辛格、库什曼·内特、科利·普什米特、泰勒·乔纳森和塔洛·丹尼尔,NIPS 2016。
相关研究
AST差异分析
ClDiff:生成简洁的关联代码差异 - 黄凯峰、陈碧欢、彭欣、周代红、王颖、刘洋、赵文云,ASE 2018。代码。
使用树形差异算法生成准确且紧凑的编辑脚本 - 维特·弗里克、托马斯·格拉绍尔、法比安·贝克、马丁·平茨格,ICSME 2018。
细粒度且精确的源代码差异比较 - 让-雷米·法莱里、弗洛雷尔·莫兰达、哈维埃·布朗克、马蒂亚斯·马丁内斯、马丁·蒙佩鲁斯,ASE 2014。
二值数据建模
- 利用伯努利混合模型对二值数据进行聚类 - 尼尔·S·格兰瑟姆。
- 一类分块单因子分布用于高维二值数据建模 - 马蒂厄·马尔巴克和穆罕默德·塞德基,计算统计与数据分析,2017年。
- BayesBinMix:一个用于多变量二值数据模型化聚类的R包 - 帕纳吉奥蒂斯·帕帕斯塔穆利斯和马格努斯·拉特雷,R期刊,2016年。
使用t混合模型的软聚类
- 利用t分布进行稳健的混合建模 - D.皮尔和G. J.麦克拉克兰,统计与计算,2000年。
- 利用偏t分布进行稳健的混合建模 - 林宗义、杰克·李和谢万钧,统计与计算,2010年。
自然语言解析与理解
一种快速统一的句法解析与句子理解模型 - 塞缪尔·R·鲍曼、乔恩·戈蒂耶、阿比纳夫·拉斯托吉、拉加夫·古普塔、克里斯托弗·D·曼宁、克里斯托弗·波茨,ACL 2016。
文章
- 语义代码搜索
- 从源代码中学习
- 训练模型以总结GitHub问题
- 使用层次注意力网络进行序列意图分类
- 面向结构化数据的语法导向变分自编码器
- GPU上的加权MinHash有助于查找重复的GitHub仓库。
- 源代码标识符嵌入
- 使用循环神经网络预测Java解决方案中的下一个标记
- 代码的半衰期与忒修斯之船
- “我们为何从语言X迁移到语言Y”的特征向量
- 分析GitHub:开发者如何随时间改变编程语言
- GitHub仓库的主题建模
- Aroma:利用机器学习进行代码推荐
演讲
- 源代码上的机器学习
- 基于源代码标识符的GitHub仓库相似性
- 使用深度RNN建模源代码
- 使用CNN对源代码摘要进行分类(1)
- 使用CNN对源代码摘要进行分类(2)
- 使用CNN对源代码摘要进行分类(3)
- 嵌入GitHub贡献图
- 在Git仓库中测量代码情感
软件
机器学习
- 可微神经计算机(DNC) - 可微神经计算机的 TensorFlow 实现。
- sourced.ml - 从源代码语法树中提取特征,并用于处理机器学习模型。
- vecino - 查找相似的 Git 仓库。
- apollo - 大规模的源代码去重研究项目。
- gemini - 大规模的源代码去重生产工具。
- enry - 极其快速的基于文件内容的编程语言检测器。
- hercules - 基于 go-git 的电池级 Git 仓库挖掘框架。
- DeepCS - DeepCS(深度代码搜索)的 Keras 和 PyTorch 实现。
- Code Neuron - 用于在自然语言文本中检测代码块的循环神经网络。
- Naturalize - 与语言无关的框架,可以从代码库中学习编码规范,并利用这些信息为代码建议更好的标识符名称和格式化更改。
- 极端源代码摘要 - 卷积注意力神经网络,仅通过查看源代码标记即可学习将源代码总结为类似短方法名的摘要。
- 使用神经注意力模型总结源代码 - CODE-NN 使用带有注意力机制的 LSTM 网络,生成描述 StackOverflow 上 C# 代码片段和 SQL 查询的句子。基于 Torch 的 C#/SQL 模型。
- 概率 API 挖掘器 - 几乎无需参数的概率算法,用于从一系列 API 调用序列中挖掘最有意思的 API 模式。
- 有趣序列挖掘器 - 基于概率模型的新颖算法,能够高效地直接从数据库中推断出有趣的序列。
- TASSAL - 使用自动折叠功能对源代码进行自动摘要的工具。自动折叠会通过折叠非关键代码和注释块来创建源代码文件的摘要。
- JNice2Predict - 高效且可扩展的开源结构化预测框架,使开发者能够更快地构建新的统计引擎。
- Clone Digger - 用于 Python 和 Java 的代码克隆检测工具。
- Sensibility - 使用 LSTM 检测并修复 Java 源代码中的语法错误。
- DeepBugs - 从现有代码语料库中学习缺陷检测器的框架。
- DeepSim - 基于深度学习的方法,用于衡量代码的功能相似性。
- rnn-autocomplete - 使用 RNN 的神经网络代码补全(本科毕业论文)。
- MindsDB - MindsDB 是面向开发者的可解释 AutoML 框架。借助 MindsDB,只需一行代码即可构建、训练和使用最先进的机器学习模型。
工具
- go-git - 高度可扩展的纯 Go 实现的 Git 库,非常适合数据挖掘。
- bblfsh - 自托管的源代码解析服务器。
- engine - 可扩展且分布式的源代码数据检索管道。
- minhashcuda - 在 CUDA 上实现的加权 MinHash,用于高效查找重复项。
- kmcuda - 在 CUDA 上实现的 k-means 算法,用于聚类并在密集空间中搜索最近邻。
- wmd-relax - 一个 Python 包,用于以 Word Mover's Distance 寻找最近邻。
- Tregex、Tsurgeon 和 Semgrex - Tregex 是一种基于树状关系和节点上的正则表达式匹配来匹配树中模式的工具(该名称是“tree regular expressions”的缩写)。
- source{d} models - 使用 source{d} 技术栈训练的 MLonCode 机器学习模型。
数据集
- 神经代码搜索评估数据集 - 该数据集包含来自24,000多个仓库的470万个方法链接,以及287个StackOverflow问题和对应的代码片段答案。
- CodeSearchNet - 一个用于自然语言代码检索的数据集和基准测试集合。包含200万个(
注释,代码)对。 - 公共Git档案 - 来自GitHub的6 TB大小的Git仓库数据。
- StackOverflow问题-代码数据集 - 从StackOverflow挖掘出的约14.8万条Python问题及代码对,以及约12万条SQL问题与代码对。
- GitHub Issue标题和描述用于NLP分析 - 2017年收集的约800万个GitHub Issue标题和描述。
- GitHub仓库语言分布 - GitHub上1400万个仓库中编程语言的分布情况(2016年10月)。
- GitHub上的4.52亿次提交 - 来自GitHub上1600万个仓库的约4.52亿次提交元数据(2016年10月)。
- GitHub README文件 - 所有GitHub仓库(1600万个)的README文件(2016年10月)。
- 从X语言到Y语言 - Erik Bernhardsson为他精彩的博客文章收集的缓存文件。
- GitHub word2vec 12万 - 从GitHub上最受星标关注的12万个仓库中提取的标识符序列。
- GitHub源代码名称 - 从1300万个GitHub仓库中提取的源代码中的名称,而非人名。
- GitHub重复仓库 - 虽未标记为分支但彼此非常相似的GitHub仓库。
- GitHub编程语言关键字频率 - 从1600万个GitHub仓库中提取的编程语言关键字频率。
- GitHub Java语料库 - GitHub Java语料库是从GitHub收集的一组Java项目,我们已在多项出版物中使用过。该语料库包含14,785个项目和352,312,696行代码。
- 15万Python数据集 - 由15万个Python AST组成的数据集。
- 15万JavaScript数据集 - 由15万个JavaScript文件及其解析后的AST组成的数据集。
- card2code - 该数据集包含论文用于代码生成的潜在预测网络中描述的语言到代码数据集。
- NL2Bash - 该数据集包含约1万个从StackOverflow等网站收集的Bash单行命令及其由Bash程序员撰写的英文描述,如论文所述。
- GitHub JavaScript转储2016年10月 - 该数据集包含494,352个语法有效的JavaScript文件,这些文件来自GitHub上排名前10,000的受星标关注的JavaScript仓库,附带许可证信息,并已解析为AST。
- BigCloneBench - IJaDataset中包含800万个函数克隆对的克隆检测基准测试。
致谢
- 许多参考文献和文章均摘自mast-group。
- 受Awesome Machine Learning启发。
贡献
请参阅CONTRIBUTING.md。简而言之:创建一个拉取请求,并按照贡献说明签署确认。
许可证
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。