一个思维误区与百度、腾讯、阿里、字节跳动的NLP方向的社招工作要求分析

马上就要进入工作岗位了,今天看到一个牛人分享说,不要把多学点东西当做目标,这是一个有点学生式的思维误区。

说白了就和写论文一样,你找到了一个方向,会议论文是对这个方向的初步挖掘,期刊论文就是对这个方向的深入探索,最后的毕业大论文就顺理成章是对这个方向的分析研究。反观我的研究生阶段,带我们科研的导师思维方式比较跳跃,总是有一些奇思妙想和想把她所接受到的一切新鲜的、听起来很火很厉害的东西落地到我们的研究中,导致我大四和研一做的是当时老师说很火现在实验室已经完全放弃了的一个点,研二是我自己喜欢的一个点但是老师说和实验室没关系后来被毙了,研三写论文又是和之前积累的完全不同的东西,因为没有相关的成果支撑,写大论文就写得很忐忑。

我偏偏又是个很焦虑的人,因为自己不是计算机科班出生,总是觉得有很多东西要学,比如爬虫、C++、设计模式、框架、Hadoop/Spark等等。今天看了这位牛人说得这段话醍醐灌顶:

多学东西,可以促成自身的成长。如果是新人,因为未来无论走哪条路,基本的能力是必备的,把多学东西当做目标,在初期是可以的。但如果已经工作了一段时间,目标就不是多学东西了,因为成长不是目标,成长是一个过程,是达成目标的手段。

成为技术专家,成为业务专家,进入管理层。。。这些才是目标。

在工作过程中选择的项目,应该是互相递进,升级的关系,而不是平铺的关系。这样项目经验就会是相乘的关系,而不是相加的关系。

因此,一开始就应该具备明确的目标,不是见到好的项目就跳过去,而是根据自己的情况和目标去选择项目,而不是机械式的累加项目经验。

因此,这篇博客将分析一下百度、腾讯、阿里和字节跳动在NLP方向的社招的岗位要求来确定自己在工作中应该积累和自学的能力。

另外一个就是社招的时候因为目标更精确,是瞄准某个部门去的,而不同的部门因为场景不同,做的NLP的事也不一样。有的需要问答、对话,有的需要文本挖掘、知识图谱构建。可以发现自己的兴趣在哪,然后进行某个小方向上的项目积累。


总结一下:

1. 在NLP方面系统和深刻的认识。

2.海量的数据,并行计算。在工作中编程一定要时刻注意效率!!!


总结一下要求如下:

语言:

1.C++,因为腾讯是C++大厂,整个研发都面向C++的较多。

2.Python,这个我目前用的多,但做到精通还需要下很大功夫。提高编程效率,也是最近很有感悟的一件事情。做到精通:数据结构、基本算法都要熟悉。

3.Linux,这个服务器开发上都会用到,且熟悉Linux指令真的可以提高工作效率,除外,还应该掌握vim/awk/sed这些Linux上的文件工具。

4.Scala,分布式中常会用到的,需要熟悉一下。

框架:

1.TensorFlow,因为Keras更简单,之前都是用Keras多一点,但是掌握主流的框架才是王道!

NLP方面:

1.理论基础与实战经验,这个就只有自己不断刷和积累了。尤其注意实战经验的积累,注意分析算法为什么好,哪些tricks

可以使得效果好等。遇到一个问题要能把重点和难点快速抽取并解决。

2.文本处理经验与技巧。数据是问题的核心,需要什么样的数据,如何获取相关数据,如何快速清洗数据,这些都是要积累的东西。

3.主动跟进学术界或业界最新成果。像最近新出来的BERT,这些里程碑式的方法应该尽快掌握。需要有敏锐的嗅觉。


和腾讯的没什么大的差别,阿里用Java用的多一点,Java我之前学过一些,语言这种东西触类旁通,就是要努力做到精通啊!!!

不要太专注于某些类和包里面太细节的东西,而是要对整体的编程思想进行掌握。比如面向对象、继承、一些设计模式等。因为语言更新换代太快了,如果只注重太琐碎的东西,犹如过度钻研某个产品的使用说明书。应该注重对一些经典的、不会淘汰的、适用各种语言的思想和框架进行积累。


字节跳动也是将NLP领域分得很细。

目前我还存在一个问题就是,分词、实体抽取等我调包调得比较多,但如果项目中要遇到的是特定某个领域的分词与命名实体识别,此时调包就不能解决问题了。因此,还需要对NLP基础任务经验进行积累,哪怕调包也去看下库的源码。

不知道头条社招还有没有笔试,一上来4道还是5道编程题是真的有难度啊!!!


看完这几个大厂的岗位要求,总结一下之后要着重积累的点有:

1. NLP方面:

完整和深刻的知识体系,NLP的基本任务和常用的方法,这些方法的原理和使用经验。

工作中遇到的项目的一些经验总结和反思。

文本处理和海量数据方面需要积累经验,提高效率。

有关注NLP前沿方向的习惯,在看论文时能迅速get到重点,最重要的是要想如何落地。

2. 算法方面:

框架方面学习TensorFlow,对训练、调参和可视化的经验进行积累。

强化学习虽然目前没看到相关的岗位要求,但是在文本生成方面,很多都有加入强化学习来提高模型效果的。所以相关的原理和代码实现也应该掌握。

知识图谱和NLP其实挺交织的,可以理解为知识图谱就是给电脑先验知识,这方面的基础知识也应该掌握。

3. 语言方面:

Linux,常用指令和文件系统。

C++,基础的语法掌握之后,重点是要对面向对象、继承、设计模式、数据结构、常用算法等方面进行深刻理解和积累。

Python,重点要掌握的东西其实和C++差不多,注意能提高工作效率的脚本积累,注意代码运行效率提升的技巧积累。

Spark,分布式结构的掌握。上手一遍练练。

猜你喜欢

转载自blog.csdn.net/baidu_33718858/article/details/88818053