Skip to content

Commit 2aebe5c

Browse files
authored
update code search challenge (microsoft#284)
1 parent 27d3f3d commit 2aebe5c

File tree

1 file changed

+28
-8
lines changed

1 file changed

+28
-8
lines changed

E-Challenge/CodeSearch/README.md

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,27 +14,47 @@
1414

1515
程序员在遇到不会的问题或者不熟悉的语言时,通常会在网上查找相关的代码来参考。但是传统的代码搜索多数是基于关键字匹配的,比如直接在GitHub上进很搜索,通常需要知道要搜索的代码中包含什么,然后进行搜索,而直接使用自然语言进行查询的结果并不理想。再比如StackOverflow,虽然可以使用自然语言进行查询,但问题的相关解答中可能并不包含对应的代码信息,而通常情况下程序员更想直接看到最相关的程序代码。如果我们可以解决这个问题,那就可以极大的优化代码搜索的体验。
1616

17-
## 挑战内容
17+
## 目标
1818

19-
在网上收集数据并进行预处理,搭建模型并实现使用自然语言搜索代码的功能,最终完成一个VSCode扩展可以展示这个功能。
19+
本次实习的任务是在网上收集数据并进行预处理,搭建模型并实现使用自然语言搜索代码的功能,最终完成一个VSCode扩展可以展示这个功能。
2020

2121
数据可以在GitHub、StackOverflow或其它网站爬取,也可以下载已公开的数据集。比如可以在GH Archive上查询出满足要求的GitHub Repo,然后再爬取对应的数据。注意,爬取数据时一定要注意对应的开源协议。
2222

2323
数据的预处理也非常的重要。原始数据通常不直接做为模型的输入,尤其是程序代码,通常情况下一些适当的变换和信息抽取是必需的,可以参考后面列出的一些资料中的处理方式。
2424

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)中的示例教程提供了一个步骤非常详细并且可以使用的方案,同学们一开始可以尝试下这个模型。在研究了所有资料后,同学们可以提出自己的模型或者对个模型进行改进,并完成新模型的训练。最后可以评估一下你的模型能比这个示例教程好多少,后面的参考论文中有几篇提到了评估的方法,可以进行参考。
2626

27-
VSCode扩展的基本要求是,添加一个command支持搜索,并能显示出最匹配的几条代码片段即可,同时需要记录用户的查询及最终选择的代码片段,辅助进行模型的评估及改进。
27+
最终的VSCode扩展不用做的很复杂,添加一个command支持搜索,并能显示出最匹配的几条代码片段即可,同时需要记录用户的查询及最终选择的代码片段,辅助进行模型的评估及改进。
2828

29-
可以考虑实现Python语言的代码搜索,也可以考虑实现JavaScript语言的代码搜索
29+
Code Search的同学分成了两个组,建议第一组同学实现Python语言的代码搜索,第二组同学实现JavaScript语言的代码搜索。两组同学之间不是竞争的关系,而且有很多关键技术是重合的,希望两组同学之间多进行交流合作,比如可以交流在哪可以找到更合适的数据集、对于论文中的模型有什么心得等
3030

31-
## 其它要求
31+
## 具体安排
3232

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教程跑一遍(原数据集太大,可在不考虑准确率的情况下,用极小的数据集跑通一遍)
3540
* 将以上两个文档的链接回复在[Issue #282](https://github.com/microsoft/ai-edu/issues/282)中。
3641
* 有任何问题也可以在[Issue #282](https://github.com/microsoft/ai-edu/issues/282)中提出。
3742

43+
### 第二周
44+
45+
交流学习并讨论并制定未来几周的计划,明确要做什么,最终产出什么。
46+
47+
### 第三、四周
48+
49+
10天sprint,每天scrum,报告进度
50+
51+
### 第五周
52+
53+
准备及进行项目审查
54+
55+
## 实习成果评估
56+
57+
各组除了完成项目要求外,还需要提供一份报告,报告中应对现有技术做一些总结和综述,然后介绍自己的模型,或者介绍有哪些改进,并说明是如何做的,最后还要对模型进行评估总结,指明新的模型是否更好,或者还有哪些可以改进的地方。
3858

3959
## 参考资料
4060

0 commit comments

Comments
 (0)