接触自然语言处理（NLP）后能为外语学习带来哪些启发？
谢 @Cici Zhang 邀。（拖延癌拖了一年多的邀请……） 利益相关：做了三年 NLP，主要做过词向量、语言模型和机器翻译；学过两个月阿拉伯语（实在太难，弃疗）、半年西班牙语、半年日语、大半年希伯来语、一年俄语、一年拉丁语，以及一点现代汉语、音韵学、音系学、语言类型学。 简单地说，没啥帮助。NLP 主要靠编程和数学，学外语主要靠积累和练习、多读多写多听多背，技能树并不相关。 然而在学希伯来语的时候，有了迷一般的感受。希伯来语是相当小的小语种，属于闪含语系，和大家通常学的日语韩语或者印欧语系的语言相比，感受颇为不同。简单介绍一下，闪语有一种基于三辅音字母的构词系统，书写的时候只写辅音不写元音（教材上教新词的时候会标元音的发音点，就好像小学语文课文给汉字标拼音一样，之后就不标了），所以如果你对一个词不熟悉的话，就要尝试一下到底应该给辅音中间加什么元音，然后才能读出来这个词，然后会觉得这个读音好熟悉（或者没听过），然后才懂它是什么意思（或者换一种元音的添加方法接着猜这到底是啥词）…… 刚才那段话有点抽象，我用英语举个例子：就好像有一个词被写成了 bk，遇到的时候先尝试一下，是不是 baka？好像没听过这个词。再试一下，boku？好像也没见过……试了好几次，发现 book 这个读音好像很熟悉！哦哦，原来是 book 的意思呀。但是，坑爹的是，还有可能有别的加元音的方法，比如说 bake 或者 bike 也都是对的，那到底是哪一个呢？没办法，看上下文吧…… 这种奇葩语言给我的阅读带来了极大的挑战。在学习别的语言（尤其是印欧语系的语言）的时候，我阅读的感受野是一次一个单词，因此读得比较快；但是我读希伯来语课文的时候，感受野只有一次一个字母，你能感受到那种绝望么……而阿拉伯语则更加丧心病狂，因为它神奇的连笔书写以及 alif 的千变万化，把单词划分成一个个字母的时候都让我遇到了困难（大概感觉就像看草书？），要费牛鼻子劲儿才能把一个单词拼读出来。 学这两门闪语给我最大的感受就是，听说比读写简单……这对我来说简直是一件不可想象的事情，就好像大多数人学了十几年英语，都是阅读还行听力捉急，然而竟然有些语言听说会比读写简单？在读希伯来语课文的时候，如果我自己读，就会速度超慢，好多词都看不懂（很大一部分是元音加的不对，真正的生词反而没多少）；然而听老师读一遍课文，几乎全部都能听懂……我跟小伙伴分享我学习的感受，他说，只能听说不能读写，你这不就是文盲么……呃，他说的好像毫无破绽= = 然而，从机器学习的角度讲，听力比阅读简单可以找到一些很简单的解释： 1、学习一种新语言的时候，如果它用的是一种新的字母体系（比如希伯来语）而不是一种你已知的字母体系（比如说学拉丁语的时候，跟英语字母是一样的），那么识别文字的那一部分网络权重就要从头学起，而不能把之前学别的语言的时候已经训练好的 OCR 模块 transfer 过来； 2、在自己读课文的时候，我的感受野仅仅限于当前单词（甚至字母）；但是在听老师读的时候，我的感受野会包含更长的上文甚至下文的信息，更长的上文使得我可以更好地利用我头脑里的语言模型来预测当前词是什么（我自己读的时候因为不熟练，读到某个词就把前面的忘得差不多了……），而下文也有助于做一些简单的 NER（比如说某个生词是人名，我自己读的时候加各种元音都不知道它是啥于是就卡住了，而老师读的时候虽然这个词没听懂，但是一读后面的动词就能猜到当前词是人名），从而促进理解； 3、更不用说老师读的时候已经把元音加好了，这可是 magic feature，显然有助于提升文本理解的效果…… 更加神奇的是，大概学了半年之后，我终于感觉到我脑袋里的语言模型开始收敛了……在读到某个上文的时候，有一定的概率可以猜出下一个词（word-level language model）；或者是读到上文 + 当前词的前几个字母的时候（word-level & char-level hybrid language model），能更准确地猜测当前词，以前那种一个字母一个字母读课文的痛苦慢慢消失了Orz…… 以前学语言就是瞎学，然而学希伯来语的时候，我感觉我脑袋里有一个进度条，指示我学到了什么程度！学语言的一大难点就是周期长反馈慢，学了一个月也感觉不到自己的进步；然而假如你训过语言模型，同时又在学一门特别难的外语的初期，竟然能起到迷之 gamification 的效果！学希伯来语同期我也在学俄语，但是对于俄语就没有这种效果，心痛。。。。可能是俄语不够难吧。可惜后来因为实习、找工作什么的，希伯来语没继续学下去了= = 以后如果有机会，我要再捡起来希伯来语，再好好感受感受脑袋里的语言模型是怎么收敛的…… 题外话就是，后来校招面试微软 speech 组，面试官讲了一下他们现在做希伯来语语音合成的一些问题，我问是啥问题，面试官自己也举不出来具体例子，就描述了一下那个现象；我回答说：“我明白是什么情况了。虽然你举不出来例子，但是我可以给你举一个 balabala。我知道我是怎么从一个字母一个字母地读希伯来语课文变到最后能比较顺畅地阅读整个句子的。这个问题应该在语言模型的层面解决，而不是用语音模型来解决。所以我建议你们再好好调一下语言模型的参数。”再后来就拿了 offer，科科科科…… 这里也可以讲一点学外语对做 NLP 的启示。在学日语之前，我真的没想过分词对于非母语者来说是一个很大的难点。还好日语有三套书写系统（汉字、平假、片假，算上罗马音有四种），这几套不同的书写系统混在同一句话里，对于阅读简直非常有帮助啊！这告诉我们，factor 还是很有用的，假如做日语相关研究，不要光给模型输入词向量，用一些额外的维度来标记当前字符是汉字、平假名还是片假名，可以让模型学起来容易很多……爱丁堡的机器翻译系统 Nematus 里搞的那个 factor，有时候确实是有效果的啊~ 最后是私货时间：安利两本书，一本是 The Writing Revolution: Cuneiform to the Internet，介绍了世界上各种书写系统的演变史，以及一些失传的古代文字被破译的经过，非常精彩；另一本是 Introduction to Typology: The Unity and Diversity of Language，中文名叫《类型学导论：语言的差异与共性》，里面介绍了语言里奇奇怪怪的现象，比如说什么 Hausa 语中形容词是闭类词，只有 12 个。我觉得读这两本书的话对语言学背景没啥要求，但是它们都是英文的（后一本有刘丹青的导读，但是正文是没有中文翻译的），有一些术语得边读边查字典（比如在介绍日语文字起源的那部分里，有一个术语叫 on reading，是“音读”的意思，即某些日语汉字的读音是从汉语借过去的。不要理解成“论读书”或者什么乱七八糟的……）。但是写得真的超棒啊，enjoy your reading~