豆瓣中看到许多朋友都在问,中文、外语背景的想学计算语言学有无可能?这个问题的答案其实是很矛盾的:能和不能。能,是说任何人只要经过努力掌握计算语言学不是不可能的;不能,是说如果你的目标是以市场为导向,以为学几门‘计算语言学’课程就可以找到相应的工作,那是不能的事情。老板雇的不是学富五车的‘文士‘,而是干活的能手。在国内的大环境下,除了搞研究,任何公司首先考察的不是你的语言学水平,而是你的技能是否可以为公司创造价值。什么技能?使用’计算语言学‘的公司(大部分叫做自然语言处理)第一考察的,是你计算机的编程能力。这就是严酷的现实。当然,有些大专院校、研究机构如果有国家资助的计算语言学项目,编程的要求也许不是第一位的。
从理想状态来看,一个不懂编程的但精通计算语言学的专家比一个普通程序员有价值多了,因为前者从事的工作从系统开发的角度,是做分析和设计工作,相当于系统分析员或系统工程师的工作。但在计算机编程这个行当中,会编程是最基本的技能,系统工程师/分析员都会编程,而且是编程高手。这虽然不能说是正常的,但这就是国内的现实。所以,中文、外语出身的朋友,如果没有十足毅力和决心,最好不要以身试险。
但如果你认定’计算语言学‘是你职业的发展方向,不惜代价要转型,也不是不可能。也有许多成功的例子。例如Steven Abeney,英语专业,但从事的NLP。本人现在从事的也是NLP,背景也是外语出身。
这个转型过程一般比较痛苦,特别是对数学、抽象符号有过敏反应的。如果你属于这类人,到此可以休息了,不必往下看了,还是搞一些’二语习得‘、语言心理、应用语言学等更合适。
如果你不属于这类人,恭喜你,你很可能有希望。第一步是回去补习数学,两大类数学:离散数学和统计概率。离散数学通常是为学计算机科学的学生编写。但如果你英文过得去,《语言学中的数学方法》是第一本必读的书。如果仍然有困难,则可能需要从高中的数学,特别是集合、函数、排列组合这部分。
第二步,可以进一步学习形式语言学,理想的教科书是《自动机理论、语言和计算导论》的第二版或第三版。
第三步,《自然语言处理综论》,可以学习全面的NLP理论。作为第二读物,姚天顺的《自然语言理解》可以帮助你扩大知识面,对于计算语言学的各个方面有一俯瞰式的了解。
第四步,《统计自然语言处理基础》。这本书一定要在学完了统计概率等数学基础课之后再去研读。
贯穿整个学习过程,要同时学习一门计算机编程语言。我推荐Python。如果对编程一点感觉都没有,可以从做网页的HTML、CSS入手,同时学一点JavaScript。如果你能做一个简单的活动的网页了(能够在网页上添加文字、图片和视频;知道如何对网页排版,如何让你的网页对按钮等做出反应),就可以了。这时应该对编程有一些体会了。再回过头来学习Python,应当就不是困难无比的事情了。
最后,细细研读《Python自然语言处理》,并且要手脑并用,对书中的编程和练习最好都做一遍。
至此,你基本上符合做’计算语言学‘或NLP的工作的条件了。
如果想继续深研,有几个方向:
1. parsing,对文本的自动解析;这需要有较深厚的形式语言学基础和parsing算法的理解。如果有条件,《编译原理》是必读的;parsing算法,可以从Tomita算法研究。
2. 中文分词技术:国内已经很成熟,有许多专著和论文,本人无法推荐。不过,凭着前面所说的技术实力,找一家公司干上一年也能学。
3. 大规模语料的自动标注。
在理论方面,如果想在语法理论方面发展(本人的路子)可以有以下几个方向:
1. 主流生成语法理论,亦即,Chomsky的理论,包括通时和共时的学习;
2. 基于特征结构的语法理论和特征结构的数学基础。语法理论基本上可以三选一,最好精通一个,粗通两个:LFG(Lexical Functional Grammar)、HPSG (Head-driven Phrase Structure Grammar)和TAG(Tree Adjoining Grammar)。
3. 范畴语法:是新近比较受关注的语言学理论;这个理论和数理逻辑很有渊源,与生成语法学派诞生于同一个时代。最近由于词汇主义语言学的兴起(相对于短语结构语法理论),这个理论重新受到重视。也是本人目前最为关心的语法理论。
4. 模态逻辑,类型理论,和蒙太古语法;是命题逻辑和谓词逻辑的后续课程和提高。
如果想在算法上提高,就要系统学习计算理论,计算机编程方法学。在这方面,有很多非常好的资源,在豆瓣就可以找到,就不一一列举了。另外,如果想看懂别人的算法,就得多学几门计算机语言,C和C++,Java和C#都可以是选择的对象,这些都是通用的计算机语言。在Python之前,语言学家通常偏好Perl,因为它有强大的正则语言处理功能,特别适合语言学研究。缺点是可读性差。
5. 在语言学方面,Franz Bopp(印欧比较语言学的始祖之一), Edward Sapir, Otto Jespersen的著作值得关注。特别是Jespersen的理论,许多现代语言学家仍然从中汲取灵感。
6. 在数理逻辑方面,弗雷格, 维特根斯坦, 罗素、塔尔斯基和卡尔纳普的数理逻辑著作的介绍性读物应当关注,在豆瓣可以找到很好的资源。另外,《古今数学思想》《哥德尔、艾舍尔、巴赫:集异璧之大成》对于理解数理逻辑学、可计算理论、人工智能学、语言学很有帮助。
如果对概率统计在语言学的应用感兴趣,可以试着涉猎机器学习领域,这是一个新兴的很有发展前途的领域 (号称是21世纪的人工智能)。和语言学相关的最有意思的领域之一,叫做grammar extraction,从语料库中自动抽取语法规则,是一个很有“钱途”的职业。
如果你觉得自己真是精力充沛,有比较好的数学、计算语言学背景,可以走的更远一些,甚至可以考虑挑战一下生物信息学(bioinformatics),一门横跨计算机科学、生物学和数学的新兴的跨学科领域,听一两门课,会让你以全新的视角来观察语言学。不要忘了,生物学有关基因结构的研究许多是参照的语言学关于语言结构的思想(这方面,本人只有科普水平,不敢再往前说了)。
从文科‘中文/外语’走向具有理科性质的语言学的第一步,或者说你自己不清楚你是否有转型的资质,想测试一下,我想应当是从学习‘正则表达式’开始。为什么?因为它太普及了,非常有用。任何像样点的搜索引擎或网站大概都有’高级搜索‘一项。其中就有一项’正则表达式‘搜索。它是’高级搜索‘中’最高级的搜索‘方式。不过什么事都因人而异。
如果学了30分钟后你昏头涨脑,头都大了:这是什么鬼东东?那就不要勉强自己了。毕竟人生苦短,生活中有着许多比这更精彩的事情等着你去做。
如果学着有兴趣,那我再多说几句。正则表达式(regular expression,简称是regex)又称正则语言。它即能帮你理解什么是形式语言,同时又是一种非常强大的查询工具。
从理论意义上,它是Chomsky范式中生成能力最弱的语法,对应的是有限状态自动机。是计算机科学研究最深入应用范围最广的语法范式。
从实用意义上,最直接的应用是你在使用搜索引擎时,使你的搜索更精准。如果你使用过任何文本编辑器或Word或者主要搜索引擎,你就会发现大部分都支持'正则表达式'。
本人无意在这里做’正则表达式‘的tutorial。网上搜索一下,太多了。有些在线教程甚至让你边看边练,手脑并用。
最后说一句,正则表达式不适用于中文,只适用于拉丁字母语言的搜索。道理你学了之后就明白了。
一年前一位朋友曾发帖询问如何使用LKB做句法分析,当时因为没有时间,也就没有对帖子作回应。其实,LKB是一个非常好的语法建构器。但前提是你必须熟悉类型化特征结构理论(Typed Feature Structure, TFS),特别是HPSG。如果有时间,小可不才,将在日记部分谈谈如何学习TFS。由于TFS只是语法理论的形式化描述工具,只有和一个特定的语法理论结合才有意义。而HPSG正是使用TFS最典型的语法理论。有兴趣的朋友可参照我的《Information-based Syntax and Semantics》(简称PS-1987)读书笔记。最近有点时间,可能更新会频繁一些。
忘了说了,LKB 是 Linguistic Knowledge Building的缩写。
如果是在校生,恰好又能跨系选修课程,除了语言学的必修课外,尽可能选修或旁听计算机系的下列课程:
1. 计算机科学入门(introduction to computer science),从中学习一门计算机语言
2. 离散数学(discrete mathematics)
3. 数据结构与算法(data structure and algorithms)
4. 计算理论入门(introduction to computation)。有的学校不这么叫。反正学习内容是形式语言、自动机。国内有些学校只有在【编译理论】课中才包含这个内容。你可以旁听其中一部分,就是形式语言那部分。
自学的人,可以下载MIT公开课的《introduction to computing》英语授课,中文字幕,相当于上面罗列的1. 其它的2.3.4也可以下载国内大学的视频。
如果目标是找工作,除了上述课程外,还要选修至少两门数学:线性代数和概率统计。
当然如果你的学校有计算语言学系/专业,那你就不用绕弯子了直接转系吧。转不了的也尽可能把课都听了。
不过不建议你直接学习范畴语法,除非你有一定的逻辑学背景,特别是模态逻辑和类型理论的背景。国内对范畴语法的研究似乎也只是在小范围内展开。有一些学术论文,入门书很少。贸然进去会打击你的学习积极性。如果你有比较强的数理逻辑背景,那下列两本书比较适合:
1 Categorial Grammar: Logical Syntax, Semantics and Processing - by Glyn Morrill
2 The Logic of Categorial Grammar: A Deductive Account of Natural Language Syntax and Semantics - by Richard Moot & Christian Retoré。
在我以后的笔记中,会简单介绍范畴语法以及它和短语结构语法之间的关系。敬请关注。
不过不建议你直接学习范畴语法,除非你有一定的逻辑学背景,特别是模态逻辑和类型理论的背景。国
不过不建议你直接学习范畴语法,除非你有一定的逻辑学背景,特别是模态逻辑和类型理论的背景。国内对范畴语法的研究似乎也只是在小范围内展开。有一些学术论文,入门书很少。贸然进去会打击你的学习积极性。如果你有比较强的数理逻辑背景,那下列两本书比较适合:
1 Categorial Grammar: Logical Syntax, Semantics and Processing - by Glyn Morrill
2 The Logic of Categorial Grammar: A Deductive Account of Natural Language Syntax and Semantics - by Richard Moot & Christian Retoré。
在我以后的笔记中,会简单介绍范畴语法以及它和短语结构语法之间的关系。敬请关注。
一个理想的计算语言学家应当是恰好同时对语言学、计算机科学和数学感兴趣的人。其中,语言是他的
一个理想的计算语言学家应当是恰好同时对语言学、计算机科学和数学感兴趣的人。其中,语言是他的研究对象,数学是他使用的工具,最后的成果体现在计算科学的应用上。
语言学背景的学习范畴语法有两本书可以作为入门:
Logic, Language, and Meaning, Volume 1................
http://book.douban.com/subject/2295180/
Logic, Language, and Meaning, Volume 2................
http://book.douban.com/subject/3036418/
本人上学时的教科书。虽然旧了点,但是从语言学经逻辑到范畴语法这两本书无出其右。
今天去蹭数学课的时候和他们代课老师聊了一会,那个老师知道我想学NLP,说这个前些年很流行,暗
今天去蹭数学课的时候和他们代课老师聊了一会,那个老师知道我想学NLP,说这个前些年很流行,暗指现在过时了。我很奇怪,一个学科怎么会有流行不流行一说啊?而且计算机界是怎么回事,跟时尚界一样赶风潮吗?大家都爱说流行啊过时之类的话。前段时间院里的老师知道我学·Python还跟我说同样的话,这个现在已经不流行了。
Dinsdale Alley
从文科‘中文/外语’走向具有理科性质的语言学的第一步,或者说你自己不清楚你是否有转型的资质
从文科‘中文/外语’走向具有理科性质的语言学的第一步,或者说你自己不清楚你是否有转型的资质,想测试一下,我想应当是从学习‘正则表达式’开始。为什么?因为它太普及了,非常有用。任何像样点的搜索引擎或网站大概都有’高级搜索‘一项。其中就有一项’正则表达式‘搜索。它是’高级搜索‘中’最高级的搜索‘方式。不过什么事都因人而异。
如果学了30分钟后你昏头涨脑,头都大了:这是什么鬼东东?那就不要勉强自己了。毕竟人生苦短,生活中有着许多比这更精彩的事情等着你去做。
如果学着有兴趣,那我再多说几句。正则表达式(regular expression,简称是regex)又称正则语言。它即能帮你理解什么是形式语言,同时又是一种非常强大的查询工具。
从理论意义上,它是Chomsky范式中生成能力最弱的语法,对应的是有限状态自动机。是计算机科学研究最深入应用范围最广的语法范式。
从实用意义上,最直接的应用是你在使用搜索引擎时,使你的搜索更精准。如果你使用过任何文本编辑器或Word或者主要搜索引擎,你就会发现大部分都支持'正则表达式'。
本人无意在这里做’正则表达式‘的tutorial。网上搜索一下,太多了。有些在线教程甚至让你边看边练,手脑并用。
最后说一句,正则表达式不适用于中文,只适用于拉丁字母语言的搜索。道理你学了之后就明白了。
正则表达式不适用于中文,只适用于拉丁字母语言的搜索。
------------------------------------------------------------------------------
这句话不完全正确:正则表达式理论上适合任何Unicode编码的字符集。但如果你的计算环境不支持Unicode,上面的话则是对的。
在amazon.com看到的一部分计算语言学/自然语言处理的教科书:
1. Language Processing with Perl and Prolog: Theories, Implementation, and Application, second condition
最新最全面的教科书,适合有编程经验的程序员阅读,书中有许多可运行的代码实例。不过作者的英语水平不太敢恭维。
2. Natural Language Processing with Python
最大好处是本书可以免费下载,作者群中既有计算机科学家,也有语言学家。其中Ewan Klein是GPSG的创始人之一。另外NLTK(Natural Language Toolkit)是一个非常强大的开源的NLP库,也可以免费下载。本书在普通程序员(无语言学背景)中最为流行。
3. Language Processing with Perl and Prolog: Theories, Implementation, and Application
中文译本《自然语言处理综论》
非常容易入手,对于没有形式语言学或计算理论的人来说能够较轻松地学习。
4. Foundations of Statistical Natural Language Processing
中文译本《统计自然语言处理基础》,需要一定的概率统计知识。
5. Taming Text: how to find,organize and manipulate it
从实用的角度学习文本处理的教科书,没有理论,强调编程实践。因此不太适合没有编程经验的人阅读。编程语言用的是java,开源库包括lucene和OpenNLP。学完本书,会获得第一手的NLP实践经验。和2可以配合使用。
6. A Computational Introduction to Linguistics: Describing Language in Plain Prolog
适合学过一些Prolog的语言学僧。内容涵盖了理论语言学的基本内容,音位、词法、句法、语义、语用和篇章。
7. Essential Programming for Linguistics
本书并不是计算语言学或NLP的教科书,而是面向语言学家的Perl编程入门书,内容平实易懂。如果你的专业是语言学并打算学习Perl,本书是不二之选。
赛老师,现在读的是计算机专业,如果想对计算语言学有进一步了解,是否需要对于语言的掌握和敏感
赛老师,现在读的是计算机专业,如果想对计算语言学有进一步了解,是否需要对于语言的掌握和敏感度培训。相反而说,文科语言学的学生需要补计算机编程能力而计算机专业的学生是否需要要去补一点语言学的内容?
谢谢你的提问。如果是计算机专业的在校生,那么还是应当把本专业的基础特别是数据结构、算法夯实,特别是在各种算法上多下些功夫。在夯实基础后,应当多关注模式识别、神经网络、数据挖掘以及各种机器学习算法,特别是要学好“贝叶斯算法”,它是所有统计算法的基础。
在编程语言方面,三类语言是必不可少的:1 文本处理:Perl或Python,加上对正则表达式的精通;2 类lisp或函数式语言:Common Lisp、Clojure或Haskell,加上对lambda演算(lambda calculus)(理论上)和函数式编程方法(实践上)的掌握;3 逻辑编程语言:Prolog,加上对一阶谓词逻辑的理解。
另外就是计算理论:形式语言和自动机、计算复杂性和可计算性;
当然,既然是计算机专业的,英语一定要过关,我的意思当然不是所谓英语四、六级过关,而是能够自由阅读任何专业文献和一些知名的英语blog。
最后,如果有精力,在数理逻辑方面多下些功夫会让你受益无穷,特别是对逻辑形式语言的句法和语义的深入学习,将会使你将来从事任何与计算语言学有关的职业中立于不败之地。要知道,数理逻辑在20世纪初的主要应用是在数学,而在20世纪下半叶的最主要应用是在自然语言,称之为自然语言逻辑。如果有兴趣,邹崇理的《自然语言逻辑研究》(
http://book.douban.com/subject/1197311/
)可作为阅读参考。
至于语言学本身的内容,现在并不是必须的,有时间的话,《Instroduction to the Grammar of English》(
http://book.douban.com/subject/3827201/
)通读一遍已经足够了。
以上仅供参考。
在《语言》小站,开辟了【面向语言学僧的Python入门 】栏目,链接如下
https://site.douban.com/
在《语言》小站,开辟了【面向语言学僧的Python入门 】栏目,链接如下
https://site.douban.com/249553/room/39736600/
希望对各位转换跑到的语言学僧们有用。
我在本站发的「再谈《文科背景的语言学僧能否学习计算语言学》 」因未知原因被豆瓣封禁了。我正在建立自己的博客,下面是这篇文章的链接
https://saif4lingua.github.io/test-dev/html/douban-group-20200310080227-post.html
因为博客刚刚开始建,许多功能还没完备,故阅读体验较差,另外,尚没有手机版,用手机查看,几乎没有可读性。平板虽然效果也不太如意,但仍具有相当的可读性。最理想的仍是电脑。
我在本站发的「再谈《文科背景的语言学僧能否学习计算语言学》 」因未知原因被豆瓣封禁了。我正
我在本站发的「再谈《文科背景的语言学僧能否学习计算语言学》 」因未知原因被豆瓣封禁了。我正在建立自己的博客,下面是这篇文章的链接
https://saif4lingua.github.io/test-dev/html/douban-group-20200310080227-post.html
因为博客刚刚开始建,许多功能还没完备,故阅读体验较差,另外,尚没有手机版,用手机查看,几乎没有可读性。平板虽然效果也不太如意,但仍具有相当的可读性。最理想的仍是电脑。
我在本站发的「再谈《文科背景的语言学僧能否学习计算语言学》 」因未知原因被豆瓣封禁了。我正
我在本站发的「再谈《文科背景的语言学僧能否学习计算语言学》 」因未知原因被豆瓣封禁了。我正在建立自己的博客,下面是这篇文章的链接
https://saif4lingua.github.io/test-dev/html/douban-group-20200310080227-post.html
因为博客刚刚开始建,许多功能还没完备,故阅读体验较差,另外,尚没有手机版,用手机查看,几乎没有可读性。平板虽然效果也不太如意,但仍具有相当的可读性。最理想的仍是电脑。
我在本站发的「再谈《文科背景的语言学僧能否学习计算语言学》 」因未知原因被豆瓣封禁了。我正
我在本站发的「再谈《文科背景的语言学僧能否学习计算语言学》 」因未知原因被豆瓣封禁了。我正在建立自己的博客,下面是这篇文章的链接
https://saif4lingua.github.io/test-dev/html/douban-group-20200310080227-post.html
因为博客刚刚开始建,许多功能还没完备,故阅读体验较差,另外,尚没有手机版,用手机查看,几乎没有可读性。平板虽然效果也不太如意,但仍具有相当的可读性。最理想的仍是电脑。