我们在上一篇博客中介绍了 “知识图谱是什么”,正如博客中所说,NLP(Natural Language Processing,自然语言处理)是知识图谱的技术上的难点之一。实际上,作为当前人工智能主要的两个研究领域之一,NLP 的难度比 CV (Computer Vision,计算机视觉)大很多。
今天,我们仍然只关注一个问题:自然语言处理能做什么?
推荐一个网站:https://nlpprogress.com/ 。网站收录了几乎所有的 NLP 研究分支,并且跟踪 NLP 在这些任务上的进展(SOTA,state-of-the-art)。网站更新比较及时,至少,当前我们能在部分榜单上看到 XLNET。(北京时间: 20190724)
自然语言处理是当前人工智能领域最重要(也是最难的)的研究方向之一,是计算机如何处理和分析自然语言的科学。实际上,自然语言处理不是一个单独的研究领域,它拥有众多研究分支,从文本输入到图像、音频输入,从词法到语法,再到语义,不同分支之间的差异,可能比 NLP 和其他深度学习方法的差异还大。
简言之,自然语言处理,就是让计算机 ”理解“ 自然语言的研究。关于自然语言处理的研究分支的划分,在阅读大量材料之后,仍然没有找到一个标准和完美的分类方式。这是因为许多 NLP 研究分支,会使用到其他研究分支的技术和方法,层层嵌套,互有重叠。本文尽可能从应用的角度切入,介绍自然语言处理的重要研究分支(我们更多叫自然语言处理任务,NLP Tasks)。
语言模型(Language Model)
语言模型根据前文预测下一个字词(word)是什么。下图就是 N-gram 语言模型的示意图,模型根据前几个词的输入,预测下一个词。
语言模型无疑是自然语言处理中最重要的研究分支。语言模型是一项基准任务,可帮助我们衡量我们理解自然语言的进度。并且,语言模型是很多其他自然语言任务的组成部分,尤其是涉及生成文本或估计文本概率的任务。
实际上我们每天都在使用语言模型。例如,输入法工具会根据你之前输入的内容,自动生成下一个字词或者短语,方便我们的输入。又如,我们使用搜索引擎时,搜索引擎会自动生成常用搜索项。
此外,语言模型可以在手写字符识别,语音识别,语法纠错,甚至自动摘要等多个自然语言处理任务中。我们会在后文涉及部分任务的介绍~
语音识别( Speech Recognition)
以我们天天使用的 IPhone 为例,不论是打字时候的语音输入功能,还是强大的智能助理 SIRI,当我们使用语音和机器进行交互时,背后就有语音识别算法的支持。从语音输入,到手机上识别出来的文字,语音识别完成了从语音数据到文本数据的转换。
语音作为人类最为重要的交流方式,是很多 AI 产品重要的一环,极大关乎用户体验。例如,开车需要导航的时候,我会更倾向于使用百度地图而不是高德地图(百度看到此条请点赞赏,支持点广告费~),因为驾驶员可以仅用语言与导航进行交互,从而完全解放双手,保证行车安全。高德地图则需要点击一下语音输入的按键(2019年04月 9.02.0 版本已加入 “你好小德” 语音助手功能)。(圆回来了,高德也可以点赞赏~)
机器翻译(Machine Translation)
机器翻译我们这些英语没学好的人的福音【笑脸】。我们将一段特定语言(例如英语)的文字输入,输出我们期望的语言(例如中文),输入输出在语义上保持一致。
很久很久以前,机器翻译是一整套算法的集合。例如1954年,第一个机器翻译系统 “Brain”,将俄语翻译为英语。历史好的同学可能已经发现了,那时正值冷战时期,是冷战促成了机器翻译系统的发展【笑脸】。翻译系统首先保存了一份俄语到英语的字典,然后语言模型将翻译好的字词梳理成更合理的语句。
如今,机器翻译基本使用端到端的训练模型,采用 Encoder 和 Decoder 的组合,直接训练整个神经网络模型。我们甚至可以很轻松的识别多种语言(Multi-Language)的输入。
自动问答/对话(Question Answering/ Dialogue)
虽然这里将两个任务放在了一起,自动问答与对话在技术要求上差别很大。一般来说,自动问答有明确的答案,自动对话更多需要人工评估。
阅读理解就是典型的自动问答问题,计算机在阅读一段文字之后,回答一些与文字相关的问题。下图是 BERT 模型在 SQuAD 2.0 数据集上的一个问题可视化结果。SQuAD 是自动问答领域重要的评估数据集。
自动对话则相对复杂,需要计算机能够在对话中表现出人的反应。在这个研究领域,又有很多细分支,有人在研究如何让计算机对说话人的行为进行分类(Dialogue act classification),有人尝试跟踪对话的状态(Dialogue state tracking),也有人在做生成式的对话机器人(Generative-based Chatbot),能够根据对话生成引人入胜的回应。
情绪分析/文本分类/自然语言推理(Sentiment analysis/ Text Classification/ NLI)
情绪分析是当前应用较广的自然语言处理技术。通常,我们将情绪分析当做一个文本分类问题,对文本的情绪进行定性判断。IMDB 评论(IMDB Reviews)是比较常用的数据集之一,拥有 5w 条用户评论及评分,任务需要根据用户评论判断用户情绪是正向的还是负面的,数据集已事先根据用户评分将评论分为正向(Positive)和负面(Negtive)两类。
文本分类问题的范围更大一些,将句子或者文档分配到特定的类别,通常我们将文本划分到特定的主题类别。AG‘s news 是比较常用的文本分类数据集,要求根据新闻标题和简介判断新闻的类别。
自然语言推理(Natural Language Inference,简称 NLI)是自然语言理解一个重要组成,是检验语义理解的重要评价方式,且研究成果具有高迁移性。自然语言推理判断两个句子(前提句 Premise 和假设句 Hypothesis)在语义上是否存在推理蕴含关系。这也是一个分类任务,任务需要最终给出三分类(Entailment,Contradiction,Neutral)中的一个。Entailment 表示句子存在推理蕴含关系,Contradiction 表示句子存在推理矛盾关系,Neutral 表示两者皆否。
信息检索(Information Retrieval)
搜索引擎就是信息检索很好的例子。信息检索任务需要根据输入的信息,返回与之相关的资源,例如网页、论文、图片等等。我们在图算法中介绍的 TF-IDF 算法,就是一个典型的信息检索评分算法。
关于信息检索,推荐一本书《Introduction to Information Retrieval》(https://nlp.stanford.edu/IR-book/information-retrieval-book.html ),作者 Chris Manning。你也可以在这里(https://web.stanford.edu/class/cs276/ )找到在线课程。
信息抽取(Information Extraction)
我们在前序博文中介绍过知识图谱(Knowledge Graph),可以说,是信息抽取技术催生了基于互联网信息的大型知识图谱。
信息抽取任务从大量的网页信息中识别出实体(Entities)和它们之间的关系(Relations),获得这些 fact 之后,还要进行实体和关系的消歧与合并。所以,信息抽取是一系列的任务的集合,包括命名实体识别(Named Entity Recognition),词性标注(Part-Of-Speech tagging),指代消解(Coreference Resolution),关系抽取(Relationship Extraction),时间抽取(Event Extraction)等等。
生成类任务(Generation)
这个名字你可能会很陌生,然而生成类算法离我们并不遥远。自动摘要(Automatic Summarization)是一个典型的任务,根据输入的一段文字,生成一段相对简短的摘要。
此外,其他文本生成类任务例如生成歌曲、诗歌,例如根据图片自动生成描述文字(image caption),例如对输入文本进行风格改写等等。对了,语言模型也是生成类任务的一部分。
句法规则相关(Tagging/ Chunking/ Syntax/ Parsing)
句法规则是语言学较为关注的任务,也是很多其他任务的组成部分。句法规则关注如何把字词和短语组合成句子的规则。上小结提到的词性标注(POS tagging)就是典型的例子。
文本分块(chunking,一般也叫浅语法,Shallow syntax)关注文本的句法结构。
Constituency parsing,从句子中抽取分析树:
Dependency parsing 分析句子中的依赖关系:
总结
今天的总结,没有 Reference 了,推荐一些材料或课程作为 NLP 入门吧~
- 《数学之美》,吴军,2012。本书鲜有公式,更多地从数学趣味的角度讲解计算机技术,篇幅中不少涉及了自然语言处理的内容,对小白是一个很好的入门
- CS224n: Natural Language Processing with Deep Learning,Stanford Winter 2019,http://web.stanford.edu/class/cs224n/ 。斯坦福在自然语言处理的地位是不言而喻的,斯坦福的公开课是一个非常好的系统化的课程
- 《Speech and Language Processing》,Dan Jurafsky & James H. Martin,https://web.stanford.edu/~jurafsky/slp3/ 。最经典的自然语言处理课本,截止2019年7月25日,本书第三版还在草稿中,你可以从这个链接找到最新的章节