很多同学说,进入计算语言学之前,一定要先学好数学、语言学和编程能力,否则很难,很心虚。按照这种思路的话那你必须得先拿到数学的研究生学历、计算机的本科学历和语言学研究生学历,甚至还要有一个文学或者历史方面的学位。这样算下来如果你的年龄低于30岁,是不可能学会所有这些知识的。
我当年也面临着这样的困惑,陈小荷老师的一句话把我点醒了。他说人类的知识就犹如大海,沧海一粟我取一瓢饮,根据你需要解决的问题。我们希望尽可能的扩大自己的知识工具和技能,但这些能力并不是一定要经过非常系统的学习的。虽然从道理上来讲这样会更好,但是从可行性的角度上来看这样非常耗时,而且即使你学会了,等你三四十岁的时候,可能问题本身都已经变化了,知识陈旧了、落伍了,而且缺乏应用驱动,你可能早就心灰意冷、烦躁不堪了。我就遇到过很多不同学科的研究生抱怨,不知道现在学这么多课,将来有什么用?这世界变化快,况且我们还需要升学,需要写硕士论文和博士论文。我们最需要的能力其实是能够快速的把握各种学科的最新进展,并且将很多新的思路和技术运用到自己的研究中去。即使理论和技术并不到位也可以通过合作的方式来进行研究。况且我们学的是计算语言学,有计算机这样一个非常好的工具,许多学科的知识都已经形成了数据库和各种编程的工具包,不像几10年前很多东西都要自己从头开始写代码。这种便利性可以使我们很快的用起许多学科的最新进展。所以我们并不需要从头去学习各种各样的知识,二是看更重要的是,你对知识的快速学习和把握能,将知识运用要研究对象上的当然还有你的组织能力、动手能力和协作中的表达能力。
那么我们该如何培养自己的能力呢?归结到一句话那就是“自学成才,学以致用”。因为最了解自己的、知道自己的能力,知道自己缺什么的,是自己。在自学的过程中不要贪多不要太快,还是要把握住你们知识和技能的屋里物理意义,看他到底是做什么的,从哪来的,看看它当时是怎么被提出来的创新之处在哪里解决了什么问题,有什么优点和缺点。而不要像应试教育一样动不动就去买本练习册去刷题目,我们人生苦短不可能那么多的时间去刷题我们的目的也不是为了去解那些难题。我知道练习题的目的只是为了让你更好的把握理论和方法而不是反过来。需要我们解决的是生活和科研中真正的难题而不是练习册上那些已经有了标准答案的题目。
有同学就会问了那你说该怎么学吧?其实学习并没有捷径可循,走弯路也是很正常的。只要你把很多书都扫了一遍,你才会发现什么书是好的什么时候是不好的。然后你才会具有辨别力,知道什么是好书该怎么样去读书。在读书的过程当中你也才知道哪些是你自己的兴趣,你愿意为了她去付出你的时间和精力。如果只是停留在阅读教科书的基础上那这种能力将离你而去。这种能力并不是一蹴而就的。记得我在上学的时候读一本小说都要看两三天甚至一个星期,我就非常羡慕那些读书会的同学,为什么他们可以看书这么快而且能够把握住书中的很多内容。于是,我也疯狂的看起小说来,啃了古代文学、现代文学、外国文学的原著,也阅读了很多的通俗文学作品。一些大部头的作品像《静静的顿河》、《战争与和平》都能啃上两三个星期。大概过了一两年的时间以后,再去看这些文学作品速度就看快多了。不过,文学虚构性太强,还是花了不少时间去啃东西方哲学史、世界史。我的记性特别差,根本记不住很多细节,特别是大量的人名,只能从逻辑上去把握这些东西,继而思考它们的前因后果和相互联系。
当我大三打算报考计算语言学研究生之后,并没有像其他人一样整天背英语政治、背专业课,而是留出时间,去报考了计算机3级然后自学了离散数学。语言学方面的本科的课程太少,那时候有没有什么网络课程,所以我就跑去听研究生的语言学课,还有外语系的课,再跑去南京大学听语言学的各种课。蹭课的习惯,一直保持到现在,也是收获满满。也许你会问哪来的这么多时间?其实一门课一次只有两三节,一天就可以听到四门课,路上也并不多花时间,正好可以在不同的地方,交不同的朋友,吃不同的饭。当然自己的功课就会落下很多,所以奖学金啊排名啊,我都非常落后,有得必有失嘛。
跟现在很多人热衷于蹭网课不同,我更喜欢听真人上的课,也就是线下课程。因为上网课总会走神,不做作业,更缺乏了和同学之间的交流,更不会去看指定的一些书目。而很多基础性的知识和技能是必须有一定的强制性手段才能学得会的。所以网课的信息量和强制性远远低于线下课程。虽然我自己也尝试过很多线上课程的学习,但没有一门能够坚持下来,感觉最有用的反而是Ted和各种纪录片。现在,我在线上上课也有这种感觉,虽然我在课上对学生通过大量提问的方式来进行网络教学,但我仍然觉得对于学生能力和反应的把握,远远低于线下课程。所以我只能布置较多的作业让学生们去更多的操练。即使如此,教学效果肯定还是大不如前。
那么,对于网课我的建议是,先自己把一门课的教科书啃一遍或者大致翻2天,把其中看不懂的部分或是有疑问的部分记下来、画下来,然后有针对性的去进行百度谷歌,在线的找一些课程看看这些难点怎么去解决。所以即使是看网课,也需要使用快进的方法去寻找自己的难点去学习。这样的话效率高很多也可以真正解决自己的问题。线下课程更是如此,重复地预习和复习,才能提高上课的学习效果。
那在编程当中遇到问题的时候,第一件事儿当然不是去寻找什么教科书,还是要通过百度和谷歌来解决问题。现在GitHub上也有丰富的文档,用英语去搜索和解决问题,正是从沧海取一瓢饮的利器。搜索能力非常重要,很多同学搜来搜去,就是收不到需要的东西,主要人就是他只用汉语去搜索不用英语。而世界上90%的科技文献都是用英语写成,大量的知识也是用英语来记录的,学会用英语搜索在加上自己的知识和逻辑判断,才能找到你想要的东西。这个能力是需要呃就培养的。
想要编好程序理解算法,那就必须学好数据结构和编译原理两门课。这两门是对计算语言学最重要的编程课程。在数学方面呢,考研三门课很重要,微积分概率论和线性代数。原来这三门的基础,再去看什么时候优化问题、建模问题、深度学习都会简单的多。
人类的知识是海洋,沧海之中取一瓢饮,不只是一种学习方法,也是计算语言学的终极追求之一。我们希望在未来人类的知识可以更好的结构化,让我们在把握知识传承试试和创新的路上更加便利,我们也希望可以给计算机插上智慧的翅膀,让他帮助我们梳理出人类知识的脉络甚至生产新知,服务人类。为了它,先自学起来吧。
PS:本文由微软提供的语音转换功能生成,略加修改。