计算语言学漫游指南 | 语言学午餐

上个月,《你好,机器作诗了解一下》这篇文章发布之后,许多读者留言说希望小编能更全面地介绍下计算语言学的研究内容、相关读物和转专业留学申请等信息。于是,午餐君今天就为大家带来一份干货满满的计算语言学漫游指南!

国际计算语言学协会 ACL

(Association for Computational Linguistics)

本指南约 4000 字,预计阅读时间为 9 分钟。


前言

顾名思义,计算语言学(Computational Linguistics, CL)是一个介于计算机科学(Computer Science)和语言学(Linguistics)之间的交叉学科。它主要研究如何通过建立有效的计算模型(Computational Model)从而使机器能理解并使用人类的自然语言因此,计算语言学也一直是人工智能领域的研究热点之一。

在计算机科学和人工智能领域中,自然语言处理(Natural Language Processing, NLP)是一个更为常见的词汇,它指代的研究领域与计算语言学基本相同。也有一部分学者认为 NLP 是 CL 的一个子领域。 不过,当代的大部分的 NLP 学者和 CL 学者的研究内容、方法和发表论文没有特别显著的差异,是属于同一个学术圈的。所以,小编这里就不特别区分二者啦!

注:这里的 “自然语言” 通常是指人类社会自然产生和使用的语言,如中文、英语、日语等,一般不包括人工设计的语言,如世界语、编程语言等。

应用与前景

看了上面对计算语言学的描述,小伙伴们可能会觉得它有点抽象,没什么用。实际却并非如此!小编认为,相比其他语言学分支,计算语言学的研究成果在我们当今生活中反而是最常用到的!比如:

 

  • 文档编辑器(text editor, 如Word)能自动检测并修正文档的拼写和语法错误;

某语法检查软件的 demo

  • 搜索引擎(search engine, 如 Google)结合知识图谱(knowledge graph)可以理解查询语句,并快速检索到你所需要的信息;

在Goole上利用自然语言查询信息

  • 机器翻译(machine translation)系统大大减轻了公文翻译所需的人力;

Google提供的机器翻译服务

  • 语音助手(voice-controlled personal assistant, 如 Siri)可以理解口语指令并完成很多基础任务(虽然她好像脑子不太灵光);

使用iOS中的Siri完成日程管理任务

  • 对话机器人(chatbot,如微软小冰)可以陪你一起聊天打趣度过孤独的时光;自动客服系统极大地提高了服务客户的效率;

和智能对话系统“微软小冰”闲聊

  • 自动摘要(text summarization)能有效避免信息时代“太长不看”的窘境;
  • 情感分析(sentiment analysis)可以分辨一条影评或微博反应了正面还是负面的情绪,从而实现舆情监控以及其他社会学分析;
  • 机器作诗、机器写新闻稿、图像/视频自动描述(image/video captioning)等等……

这些或者实用、或者新奇的应用,都必然需要强大的 NLP/CL 研究和技术成果作为支撑。相比于视觉智能而言,语言智能更是人类区别于其他动物的核心能力。因此NLP也更为复杂和更为有趣。比尔·盖茨也曾表示 “语言理解是人工智能领域皇冠上的明珠”。

所以,计算语言学这个方向无论是做学术研究,还是在工业界做研发都会是非常不错的选择。

具体研究方向

笼统地介绍了计算语言学的研究与应用之后,小编现在来更详细地介绍下几个当下比较基础和热门的研究方向,希望能帮助大家有一个较为全面的掌握。以下的研究方向均选自 ACL 2018 的征稿启示(Call for Papers)。

1. 词性标注(Part-of-Speech Tagging)是最为基础的 NLP 任务之一,它的目标是对一句话的每个词的词性进行标注。

词性标注

虽然这个任务的要求看似简单,但其实操作起来绝非易事。上图的例句有至少两种理解方式:第一种句意是“水果飞(flies)得像香蕉”,第二种则是“果蝇(fruit flies)喜欢香蕉”。在没有特殊语境的限制时,一个优秀的词性标注模型需要在这种干扰下选用更符合常理的第二种句意进行标注。所以,正确的标注结果如上图, ANVDN,分别表示 fruit 做形容词、 flies 做名词、like 做动词、a 做定冠词、banana 做名词。

假设我们在处理一个20个词的句子,每个词平均可以拥有2种可能的词性,那么就有 2^20=1,048,576 种标注的方案,而其中往往只有一种是最正确的。如果没有一个优秀的模型,这种搜索无异于海底捞针。同时,词性标注又是其他很多 NLP 任务的基础,因此,一旦某个词的词性标注出错,造成的后患也不容小视。

2. 句法解析(Syntax Parsing) 是希望将一个句子自动映射到一棵符合标准的句法树上。根据不同规范,我们有 Constituency Parsing 和 Dependency Parsing。

Constituency Parsing 关注句子中的语法成分的组成结构。它通常预设了一个上下文无关的语法(Context-Free Grammar, CFG),这个语法系统一般会规定许多规则:比如 A 和 N 可以组成 NP,V 和 NP 可以组成 VP,NP 和 VP 可以组成 S 等等。(NP 表示 Noun Phrase 名词短语,VP 表示 Verb Phrase 动词短语,S 表示整句)这部分内容和形式语言学(Formal Linguistics)的关系非常紧密。

A Constituency Parse Tree

Dependency Parsing 则更关注与句子中词与词之间的关系是如何依赖的,比如 dobj (like->banana) 表示 banana 是 like 的直接宾语,amod(flies->Fruit) 表示 Fruit 是用来修饰限定 flies 的形容词,等等。

A Dependency Parse Tree

3. 词级别语义(Word-level Semantics)主要研究如何在数学上找到更好的方法对词语的语义进行表征(semantic representation),从而在语言学和计算机科学之间建立桥梁。

目前主流的方法是词嵌入表示法(word embedding)。这种方法构建了一个低维稠密空间(通常在100~300维左右),并将不同的词语映射到这个空间的不同的点上。每个点都可以被看作是一个向量,代表了一个词的语义,所以可以也被称为词向量(word vector)。

如果我们把这个空间压缩成二维平面,我们会发现一些有趣的现象:比如具有不同性别但是语义相似的两个词的词向量之间地相对位置非常相似。 如果我们用 w(x) 表示 x 的词向量,则有 w(man) – w(woman) ~= w(king) – w(queen)。

压缩至二维的词向量空间(word embedding space)

4. 信息抽取(Information Extraction)是一个非常宽泛的方向,包含很多子任务,也是每年投稿占比最多的方向。总的来说,信息抽取的目的是从一段文本中抽出有价值的结构化信息。 如果我们关心的是某段话涉及到了哪些人、机构、地点这类命名实体(named entity),那就是命名实体识别(Named Entity Recognition)问题。

命名实体识别 NER

如果更近一步,还想知道这些实体对应的维基词条具体是什么(因为我们有时会有重名的实体),那么我们就需要进行实体链接(entity linking);我们也可以抽取这些实体在这段话之间的关系(关系抽取,relation rxtraction)或者抽取这段话描述了什么事件(事件抽取,event extraction)。

5. 情感分析 (Sentiment Analysis) 的任务最简单地形式就是对一段文本的情感极性进行文本分类(text classification),比如判断一条电影或商品的评论是是正面还是负面。

6. 机器翻译(Machine Translation)可谓是计算语言学领域的瑰宝。NLP 最初发展的动力就是为了解决自动翻译俄语文献这一难题。机器翻译是一个非常复杂的过程,既涉及到自然语言理解(Natural Language Understanding, NLU)也涉及到自然语言生成(Natural Language Generation, NLG)。因此,也在某种程度上被认为是 NLP 领域的核心难题之一。

尽管今天 Google,Microsoft 等公司都在机器翻译领域取得了长足的进步,然而投入实际使用时还是会偶尔尴尬地令人心情复杂。

搞笑的机器翻译:小心地滑???

7. 文本摘要(Text Summarization)很好理解,就是把一段长文本,总结成短文本,尽量保留重要的信息。一般分为抽取式摘要(extractive summarization) 和抽象式摘要(abstractive summarization)。简单来说,抽取式摘要的结果是原文本的子集,也就是说我们只要判断保留哪些句子即可;抽象式的摘要需要重新组织语言,然后生成一段新的文本。

原文:2017年4月1日中共中央、国务院决定设立河北雄安新区。因为涉及集中承接北京非首都功能,雄安新区的筹备工作备受关注。近日,央视记者对雄安新区筹备委员会进行了探访。

抽取式自动摘要:2017年4月1日中共中央、国务院决定设立河北雄安新区,雄安新区的筹备工作备受关注,央视记者对雄安新区筹备委员会进行了探访。(保留了原文划线的 重点部分)

抽象式自动摘要:2017年4月1日中共中央、国务院设立河北雄安新区,因其涉及非首都功能,筹备工作备受关注。近日,记者对筹备委员会进行了探访。(重新组织原文并进行压缩)

8. 阅读理解和自动问答(Reading Comprehension & Question Answering)均涉及到对用户提出的问句进行回答。阅读理解往往让模型先读一段文字作为信息源然后进行问答,就像我们的英语考试一样;而问答系统除了可以读文章,也可以是查询已有的数据库(database)或知识库(knowledge base),甚至可以是看一个照片或一段视频来进行问答。

因此,问答系统分别有自然语言数据库接口(natural language interface to databases, NLI2DB)、知识库问答(knowledge-base question answering, KBQA)、视觉问答(visual question answering, VQA)等分支任务。

阅读理解任务非常直观地体现了一个模型对语言的理解和使用程度,因此也经常被人工智能领域当做比赛的热门任务。斯坦福大学、百度、科大讯飞都在举办自己的阅读理解大赛。

斯坦福主办的机器阅读理解大赛例题(SQuAD)

相关读物推荐

Python 编程语言

对于非计算机专业出身的同学来说,最大的障碍非编程莫属了,它是一道迟早需要迈过去的门槛。目前最流行的编程语言 Python 是最易学的语言之一。无论是任何方向,学习 Python 都是很有益处的。 小编这里重点推荐廖雪峰的 Python3 教程,它是中文免费入门教程中最好的之一。(在廖雪峰官方网站 www.liaoxuefeng.com 中点击 Python 教程即可找到。)其他类似的资源也可以在知乎的相关回答中轻易找到。

至于实体书,可以看看《用Python进行自然语言处理》(ISBN: 9787564122614)。这本书以工具包 NLTK 为主线,覆盖了非常多的 NLP 话题。不过在实际的研究过程中,NLTK 和这本书的很多知识都并不是很常用。所以,不是很建议精读,有困难的地方略过即可。

课程视频

斯坦福的 cs224n 是一门非常好的课程,每年都有新的内容,课件和视频都很容易在网上找到。墙内的同学也可以去B站里可以找到 cs224n 2017年的课程视频(av13383754)。类似的课程还有CMU的 CS11-747 (B站ID:av18945871),注意这两个课程都是英文的。

因为 NLP 现在主流的方法都是基于神经网络(Neural Networks)的,所以这两门课也都是以神经网络为基础的。课程中会涉及一些编程作业,需要利用 TensorFlow、PyTorch 或 DyNet 这些深度学习框架,每一种的学习成本都不低。

总之,坦率来说,这些课对于语言学专业出身的同学都会有非常大的压力。如果身边没有可以随时交流的人的话,也很难走下去。所以,最好的方案还是看看自己学校是否有相关的课程可以去选修或旁听,这样能更好地起步。当然,如果周围没有条件,午餐君也非常鼓励有志向的同学敢于尝试自学,突破自己。

专业书籍

NLP 领域,中文书籍实在是乏善可陈,大多内容过时或编排混乱。考虑到未来的无论是学术研究还是做开发都需要阅读大量英文资料,小编建议最好还是直接阅读英文书籍。

小编最推荐的是Speech and Language Processing》作者是 Dan Jurafsky 和 James H. Martin,目前第三版的草稿在网络上可以免费阅读:https://web.stanford.edu/~jurafsky/slp3/ ;

另外,也推荐有一定基础的同学阅读 Neural Network Methods in Natural Language Processing》作者为Yoav Goldberg。这本书的 pdf 版在一部分学校可以通过校园网免费下载。

科普读物

吴军博士的《数学之美》一书中涉及到了非常丰富的自然语言处理的内容,行文也是深入浅出。这本书同时也科普了很多其他领域有趣的计算机知识,并且将所需的数学背景单独分离了出来,所以即使是非专业的读者也可以很好地掌握核心概念。

另外,午餐君也非常推荐史蒂芬·平克(Steven Pinker)的三部曲:《语言本能》、《思想本质》和《心智探奇》。虽然这三本书只是稍稍涉及一些些计算语言学,但其中关于语言智能和人类思维的讨论对于建立宏观的对人工智能的理解是非常有帮助的。

转专业留学申请

对于语言学专业或其他非计算机专业的同学,选择 CL/NLP 方向几乎都相当于转专业申请。由于小编本身是计算机专业的,申请的主要是北美 CS PhD 项目,在转专业申请方面给不出太多建议。

因此,午餐君特地咨询了一位从某小语种本科,转专业申请到爱丁堡大学 NLP 方向硕士的朋友。午餐君将Ta的申请经验稍加改动,引用至此,希望能带来帮助:

我的本科是某小语种,目前就读于爱丁堡读大学 MSc in Speech and Language Processing 专业。今年一共四十余人,至少三分之一的同学来自文科背景(多为语言学),课程涵盖speech和natural language的方方面面,比如语音合成、语音识别、机器翻译、自然语言处理等等。编程语言用的是Python,另外还会学习统计的基础知识。

我个人感觉英国院校对跨度如此之大的转专业更加tolerant。不会过度地关注你的本科背景,所以在没有一个计算机或者数学等相关专业的Bachelor degree的情况下,建议首先考虑英国的授课硕士。想转专业的话,我非常推荐这个专业。

因为课程设置很合理(如前言),导师对文科生比较友好,可以和人工智能以及计算机科学专业的同学选一样的课,共享他们的物理资源教学资源等等。另外录取率比较可观。所以请特别关注这个专业,或英国其他院校的类似专业(应该有,但别的我还真的没了解过,因为我得知这个专业的第二天就申了这个)。

关于我so far的经历,分两块讲,一个是数学一个是计算机方面。本科小语种,只上过文科高数,加上后来有意识地自学和旁听,基本也只能达到微积分熟练、概统明白、线代了解的水平。但是远远不到能够hold住这个学科的程度,因此现在入学后看到很多数学的东西还是会懵,需要花很多时间坚定信念地去补习。

计算机方面,大四时很晚才意识到自己对这块的喜好,开始自学和上网课,然后瑟瑟发抖地用自己三脚猫的编程水平,搞定了一个计算语言学方向的毕业论文,从而信心增长。

所以,我建议要做准备的话尽早行动,it’s never too early to start and too late to start。看看计算机专业的同学学什么数学,基本就是今后需要用到的数学;看看自然语言处理方向的教科书、tutorial、YouTube videos,先有个整体感觉,看看自己是不是真的喜欢,然后再找到并确定理由坚持or放弃。

现在一个学期过去,一方面感到课程难度的确十分大(有的同学甚至都彻底放弃第二学期选相关的课了……),另一方面也感到相应地在这个学科领域的知识增长。所以总体来说这个专业读得很值,希望顺利毕业哈哈哈。也祝你们好运!

结语

希望本期午餐能解决读者朋友们对计算语言学的一些困惑!(午餐君会很欣慰的!)若有新的问题,也欢迎大家在留言区提出,与小编和其他读者讨论。在未来的文章里,小编会继续介绍计算语言学的顶级会议和期刊、世界范围内值得关注的实验室等学术科研向的信息。

发表评论

电子邮件地址不会被公开。 必填项已用*标注