|
14 | 14 |
|
15 | 15 | 程序员在遇到不会的问题或者不熟悉的语言时,通常会在网上查找相关的代码来参考。但是传统的代码搜索多数是基于关键字匹配的,比如直接在GitHub上进很搜索,通常需要知道要搜索的代码中包含什么,然后进行搜索,而直接使用自然语言进行查询的结果并不理想。再比如StackOverflow,虽然可以使用自然语言进行查询,但问题的相关解答中可能并不包含对应的代码信息,而通常情况下程序员更想直接看到最相关的程序代码。如果我们可以解决这个问题,那就可以极大的优化代码搜索的体验。 |
16 | 16 |
|
17 | | -## 挑战内容 |
| 17 | +## 目标 |
18 | 18 |
|
19 | | -在网上收集数据并进行预处理,搭建模型并实现使用自然语言搜索代码的功能,最终完成一个VSCode扩展可以展示这个功能。 |
| 19 | +本次实习的任务是在网上收集数据并进行预处理,搭建模型并实现使用自然语言搜索代码的功能,最终完成一个VSCode扩展可以展示这个功能。 |
20 | 20 |
|
21 | 21 | 数据可以在GitHub、StackOverflow或其它网站爬取,也可以下载已公开的数据集。比如可以在GH Archive上查询出满足要求的GitHub Repo,然后再爬取对应的数据。注意,爬取数据时一定要注意对应的开源协议。 |
22 | 22 |
|
23 | 23 | 数据的预处理也非常的重要。原始数据通常不直接做为模型的输入,尤其是程序代码,通常情况下一些适当的变换和信息抽取是必需的,可以参考后面列出的一些资料中的处理方式。 |
24 | 24 |
|
25 | | -模型是这个任务最核心的部分,后面的参考资料中分别介绍了几种模型和思路,有几种模型的思路是类似的。[How To Create Natural Language Semantic Search For Arbitrary Objects With Deep Learning](https://towardsdatascience.com/semantic-code-search-3cd6d244a39c)中的示例教程提供了一个步骤非常详细并且可以使用的方案,开始可以尝试下这个模型。在研究了所有资料后,可以提出自己的模型或者对个模型进行改进,并完成新模型的训练。最后可以评估一下新模型能比这个示例教程好多少,后面的参考论文中有几篇提到了评估的方法,可以进行参考。 |
| 25 | +模型是这个任务最核心的部分,后面的参考资料中分别介绍了几种模型和思路,有几种模型的思路是类似的,同学们可以研究一下。[How To Create Natural Language Semantic Search For Arbitrary Objects With Deep Learning](https://towardsdatascience.com/semantic-code-search-3cd6d244a39c)中的示例教程提供了一个步骤非常详细并且可以使用的方案,同学们一开始可以尝试下这个模型。在研究了所有资料后,同学们可以提出自己的模型或者对个模型进行改进,并完成新模型的训练。最后可以评估一下你的模型能比这个示例教程好多少,后面的参考论文中有几篇提到了评估的方法,可以进行参考。 |
26 | 26 |
|
27 | | -VSCode扩展的基本要求是,添加一个command支持搜索,并能显示出最匹配的几条代码片段即可,同时需要记录用户的查询及最终选择的代码片段,辅助进行模型的评估及改进。 |
| 27 | +最终的VSCode扩展不用做的很复杂,添加一个command支持搜索,并能显示出最匹配的几条代码片段即可,同时需要记录用户的查询及最终选择的代码片段,辅助进行模型的评估及改进。 |
28 | 28 |
|
29 | | -可以考虑实现Python语言的代码搜索,也可以考虑实现JavaScript语言的代码搜索。 |
| 29 | +Code Search的同学分成了两个组,建议第一组同学实现Python语言的代码搜索,第二组同学实现JavaScript语言的代码搜索。两组同学之间不是竞争的关系,而且有很多关键技术是重合的,希望两组同学之间多进行交流合作,比如可以交流在哪可以找到更合适的数据集、对于论文中的模型有什么心得等。 |
30 | 30 |
|
31 | | -## 其它要求 |
| 31 | +## 具体安排 |
32 | 32 |
|
33 | | -* 通读下面所有文章,每一个文章列出至少一个你还没能弄懂的问题。把问题写在自己的github 账户中的一个 markdown 文档里面。 请看这个文章: https://www.cnblogs.com/xinz/p/9660404.html 里面的 “提有质量的问题” 部分。 |
34 | | -* 读完文章后, 如果你来做有创新性的 Code Search 实用工具, 你能提出什么想法?请按这里的 NABCD 模板提出想法,其中,请看这里的介绍,用里面提到的方法去采访你们同学中用Python、JavaScript 的用户,了解他们在写程序过程中的痛点。 |
| 33 | +### 第一周 |
| 34 | + |
| 35 | +* 在Github 上注册自己的账号,学会基本操作,学会 Markdown 的文章写作。把账户地址告诉我们。 |
| 36 | +* 通读下面所有文章,每一个文章列出至少一个你还没能弄懂的问题。每一个同学要把问题写在自己的github 账户中的一个 markdown 文档里面。 请看这个文章: https://www.cnblogs.com/xinz/p/9660404.html 里面的 “提有质量的问题” 部分。 把提问的文档地址告诉我们。 |
| 37 | +* 读完文章后, 如果你来做有创新性的 Code Search 实用工具, 你能提出什么想法?请按这里的 NABCD 模板提出想法,其中,请看这里的介绍,用里面提到的方法去采访你们同学中用Python、JavaScript 的用户,了解他们在写程序过程中的痛点。 |
| 38 | +* 阅读敏捷项目的管理(https://www.cnblogs.com/xinz/archive/2012/10/05/2712602.html ),我们会用类似的方法来管理项目,同学们自己先做好准备 |
| 39 | +* 完成以上内容的基础上,尝试将[How To Create Natural Language Semantic Search For Arbitrary Objects With Deep Learning](https://towardsdatascience.com/semantic-code-search-3cd6d244a39c)中的notebook教程跑一遍(原数据集太大,可在不考虑准确率的情况下,用极小的数据集跑通一遍) |
35 | 40 | * 将以上两个文档的链接回复在[Issue #282](https://github.com/microsoft/ai-edu/issues/282)中。 |
36 | 41 | * 有任何问题也可以在[Issue #282](https://github.com/microsoft/ai-edu/issues/282)中提出。 |
37 | 42 |
|
| 43 | +### 第二周 |
| 44 | + |
| 45 | +交流学习并讨论并制定未来几周的计划,明确要做什么,最终产出什么。 |
| 46 | + |
| 47 | +### 第三、四周 |
| 48 | + |
| 49 | +10天sprint,每天scrum,报告进度 |
| 50 | + |
| 51 | +### 第五周 |
| 52 | + |
| 53 | +准备及进行项目审查 |
| 54 | + |
| 55 | +## 实习成果评估 |
| 56 | + |
| 57 | +各组除了完成项目要求外,还需要提供一份报告,报告中应对现有技术做一些总结和综述,然后介绍自己的模型,或者介绍有哪些改进,并说明是如何做的,最后还要对模型进行评估总结,指明新的模型是否更好,或者还有哪些可以改进的地方。 |
38 | 58 |
|
39 | 59 | ## 参考资料 |
40 | 60 |
|
|
0 commit comments