自然语言处理

自然语言处理（Natural Language Processing，缩写作 NLP）是人工智能和语言学领域的交叉学科，研究计算机处理、理解与生成人类语言的技术。此领域探讨如何处理及运用自然语言；自然语言处理包括多方面和步骤，基本有认知、理解、生成等部分。

自然语言认知和理解是让电脑把输入的语言变成结构化符号与语义关系，然后根据目的再处理。自然语言生成系统则是把计算机数据转化为自然语言。

自然语言处理要研制表示语言能力和语言应用的模型, 建立计算框架来实现并完善语言模型，并根据语言模型设计各种实用系统及探讨这些系统的评测技术。

## 历史

自然语言处理大体是从1950年代开始，虽然更早期也有作为。1950年，艾伦·图灵发表论文“计算机器与智能”，提出现在所谓的“图灵测试”作为判断智能的条件。

1954年的乔治城-IBM实验涉及全部自动翻译超过60句俄文成为英文。研究人员声称三到五年之内即可解决机器翻译的问题。不过实际进展远低于预期，1966年的ALPAC报告发现十年研究未达预期目标，机器翻译的研究经费遭到大幅削减。一直到1980年代末期，统计机器翻译系统发展出来，机器翻译的研究才得以更上一层楼。

1960年代发展特别成功的NLP系统包括SHRDLU——一个词汇设限、运作于受限如“积木世界”的一种自然语言系统，以及1964-1966年约瑟夫·维森鲍姆模拟“个人中心治疗”而设计的ELIZA——几乎未运用人类思想和感情的讯息，有时候却能呈现令人讶异地类似人之间的互动。“病人”提出的问题超出ELIZA 极小的知识范围之时，可能会得到空泛的回答。例如问题是“我的头痛”，回答是“为什么说你头痛？”

1970年代，程序员开始设计“概念本体论”（conceptual ontologies）的程式，将现实世界的资讯，架构成电脑能够理解的资料。实例有MARGIE、SAM、PAM、TaleSpin、QUALM、Politics以及Plot Unit。许多聊天机器人在这一时期写成，包括PARRY、Racter 以及Jabberwacky。

一直到1980年代，多数自然语言处理系统是以一套复杂、人工订定的规则为基础。不过从1980年代末期开始，语言处理引进了机器学习的算法，NLP产生革新。成因有两个：运算能力稳定增加（参见摩尔定律）；以及乔姆斯基语言学理论渐渐丧失主导（例如转换-生成文法）。该理论的架构不倾向于语料库——机器学习处理语言所用方法的基础。有些最早期使用的机器学习算法，例如决策树，是硬性的、“如果-则”规则组成的系统，类似当时既有的人工订定的规则。不过词性标记将隐马尔可夫模型引入NLP，并且研究日益聚焦于软性的、以几率做决定的统计模型，基础是将输入资料里每一个特性赋予代表其分量的数值。许多语音识别现今依赖的快取语言模型即是一种统计模型的例子。这种模型通常足以处理非预期的输入数据，尤其是输入有错误（真实世界的数据总免不了），并且在整合到包含多个子任务的较大系统时，结果比较可靠。

许多早期的成功属于机器翻译领域，尤其归功IBM的研究，渐次发展出更复杂的统计模型。这些系统得以利用加拿大和欧盟现有的语料库，因为其法律规定政府的会议必须翻译成所有的官方语言。不过，其他大部分系统必须特别打造自己的语料库，一直到现在这都是限制其成功的一个主要因素，于是大量的研究致力于从有限的数据更有效地学习。

近来的研究更加聚焦于非监督式学习和半监督学习的算法。这种算法，能够从没有人工注解理想答案的资料里学习。大体而言，这种学习比监督学习困难，并且在同量的数据下，通常产生的结果较不准确。不过没有注解的数据量极巨（包含了万维网），弥补了较不准确的缺点。

2011年以来，深度学习技巧纷纷出炉在自然语言处理方面获得最尖端的成果，例如语言模型、语法分析等等。2017年Transformer模型诞生；2018年BERT模型推出，提出了预训练的方法。

2022年底，随着ChatGPT等大型语言模型的推出，自然语言处理的重点从自然语言理解转向了自然语言生成。

### 历史发展（按技术范式划分）

#### 1. 规则驱动时期（1950s-1980s）

- 1950年：艾伦·图灵提出“图灵测试”，奠定NLP理论基础。
- 1954年：乔治城-IBM实验首次实现俄英机器翻译，但过度乐观的预期导致1966年ALPAC报告后经费削减。（修改说明：补充技术挫折背景）
- SHRDLU（受限积木世界对话）
- ELIZA（模拟心理治疗的聊天机器人），其模式匹配应答机制暴露早期NLP的局限性。

#### 2. 统计方法兴起（1980s-2010s）

- 关键转折：摩尔定律提升算力 + 乔姆斯基理论式微 → 机器学习成为主流。
- 技术突破：隐马尔可夫模型（词性标注）、统计机器翻译（IBM主导）。（修改说明：明确技术关联性）

#### 3. 深度学习时代（2011年至今）

- 2017年：Transformer架构诞生8，解决长距离依赖问题。（修改说明：补充架构意义）
- 2018年：BERT提出预训练范式9，推动迁移学习在NLP的应用。

## 用途

在许多情况下，学者们需要通过许多不同的数据库来确定新的研究方向，以识别研究差距并确定迄今为止尚未研究的领域。检查所有电子数据库很麻烦，而且经常会遗漏重要的部分。通过使用网络抓取和自然语言处理来缩短识别研究差距所需的时间。在Google学术搜索上索引的出版物的标题, 自然语言处理标记化(Tokenization)从最高频率到最低频率对搭配进行排序。因此，自然语言处理标记化(Tokenization)确定了标题中未提及的关键字集，并将最初的想法确定为研究空白。

## 任务和限制

理论上，NLP是一种很吸引人的人机交互方式。早期的语言处理系统如SHRDLU，当它们处于一个有限的“积木世界”，运用有限的词汇表会话时，工作得相当好。这使得研究员们对此系统相当乐观，然而，当把这个系统拓展到充满了现实世界的含糊与不确定性的环境中时，他们很快丧失了信心。

由于理解（understanding）自然语言，需要关于外在世界的广泛知识以及运用操作这些知识的能力，自然语言认知，同时也被视为一个人工智能完备（AI-complete）的问题。同时，在自然语言处理中，“理解”的定义也变成一个主要的问题。

## 实际问题

一些NLP面临的问题实例：

- 句子“我们把香蕉给猴子，因为（它们）饿了”和“我们把香蕉给猴子，因为（它们）熟透了”有同样的结构。但是代词“它们”在第一句中指的是“猴子”，在第二句中指的是“香蕉”。如果不了解猴子和香蕉的属性，无法区分。（简体中文和英文的它/it没有区分，但在繁体中文里“它”和“它”是有区别的，只是代词在中文里常常被省略，因此需区别属性并且标示出来）

不少的中文相关笑话即是利用类似结构的中文造句而成，此类笑话通常带有“中文博大精深”之类的词汇，叙述多以老外参加考试为背景。例子如下：

某老外苦学汉语10年，到东方参加汉语考试。试题为“请解释下列句子”：阿呆给长官送红包时，两个人的对话颇有意思。长官：“你这是什么意思？” 阿呆：“没什么意思，意思意思。” 长官：“你这就不够意思了。” 阿呆：“小意思，小意思。” 长官：“你这人真有意思。” 阿呆：“其实也没有别的意思。” 长官：“那我就不好意思了。” 阿呆：“是我不好意思。”

老外泪流满面，交白卷回国了。

## 自然语言处理研究的难点

### 单词的边界界定

在口语中，词与词之间通常是连贯的，而界定字词边界通常使用的办法是取用能让给定的上下文最为通顺且在文法上无误的一种最佳组合。在书写上，汉语也没有词与词之间的边界。

### 词义的消歧

许多字词不单只有一个意思，因而我们必须选出使句意最为通顺的解释。

### 句法的模糊性

自然语言的文法通常是模棱两可的，针对一个句子通常可能会剖析（Parse）出多棵分析树（Parse Tree），而我们必须要仰赖语意及前后文的资讯才能在其中选择一棵最为适合的剖析树。

### 有瑕疵的或不规范的输入

例如语音处理时遇到外国口音或地方口音，或者在文本的处理中处理拼写，语法或者光学字元识别（OCR）的错误。

### 语言行为与计划

句子常常并不只是字面上的意思；例如，“你能把盐递过来吗”，一个好的回答应当是动手把盐递过去；在大多数上下文环境中，“能”将是糟糕的回答，虽说回答“不”或者“太远了我拿不到”也是可以接受的。再者，如果一门课程去年没开设，对于提问“这门课程去年有多少学生没通过？”回答“去年没开这门课”要比回答“没人没通过”好。

## 当前自然语言处理研究的发展趋势

第一，传统的基于句法-语义规则的理性主义方法过于复杂，随着语料库建设和语料库语言学的崛起，大规模真实文本的机器学习处理成为自然语言处理的主要选择。

第二，统计数学方法越来越受到重视，自然语言处理中越来越多地使用机器自动学习的方法来获取语言知识。

第三，浅层处理与深层处理并重，统计与规则方法并重，形成混合式的系统。

第四，自然语言处理中越来越重视词汇的作用，出现了强烈的“词汇主义”的倾向。词汇知识库的建造成为了普遍关注的问题。

## 统计自然语言处理

统计自然语言处理运用了推测学、几率、统计的方法来解决上述，尤其是针对容易高度模糊的长串句子，当套用实际文法进行分析产生出成千上万笔可能性时所引发之难题。处理这些高度模糊句子所采用消歧的方法通常运用到语料库（Corpus）以及马可夫模型（Markov models）。统计自然语言处理的技术主要由同样自人工智能下与学习行为相关的子领域：机器学习及资料采掘所演进而成。

## 主要范畴

- 文本朗读（Text to speech）
- 语音合成（Speech synthesis）
- 语音识别（Speech recognition）
- 断词／分词（Text segmentation/Word tokenization）
- 中文自动分词（Chinese word segmentation）
- 语法分析／剖析（Syntactic analysis/Parsing）
- 汉语自动句法分析
- 词汇标示框架（Lexical Markup Framework）
- n元语法（n-gram）
- 词嵌入（Word2vec）
- 词性标注（Part-of-speech tagging）
- 文档分类（Document classification）
- 自然语言生成（Natural language generation）
- 文本分类（Text categorization）
- 信息检索（Information retrieval）
- 信息抽取（Information extraction）
- 文字校对（Text-proofing）
- 问答系统（Question answering）

给一句人类语言的问句，决定其答案。典型问题有特定答案（像是加拿大的首都叫什么？），但也考虑些开放式问句（像是人生的意义是是什么？）

- 聊天机器人（ChatBot）
- 对话系统（Dialogue system）
- 机器翻译（Machine translation）

将某种人类语言自动翻译至另一种语言

- 自动摘要（Automatic summarization）

产生一段文字的大意，通常用于提供已知领域的文章摘要，例如产生报纸上某篇文章之摘要

- 文字蕴涵（Textual entailment）
- 命名实体识别（Named entity recognition, NER）
- 主题模型（Topic Model）
- 文本情感分析（Sentiment analysis）
- 语意分析（Semantic analysis）
- 潜在语义学（Latent Semantic Analysis）
- 词袋模型（Bag-of-words model）
- 标签云（Tag Cloud）
- 自然语言理解（Natural Language Understanding）
- 形态分析

## 延伸阅读

- Steven Bird, Ewan Klein, and Edward Loper (2009). Natural Language Processing with Python. O'Reilly Media. ISBN 978-0-596-51649-9.
- Daniel Jurafsky and James H. Martin (2008). Speech and Language Processing, 2nd edition. Pearson Prentice Hall. ISBN 978-0-13-187321-6.
- Christopher D. Manning, Prabhakar Raghavan, and Hinrich Schütze (2008). Introduction to Information Retrieval. Cambridge University Press. ISBN 978-0-521-86571-5. Official html and pdf versions available without charge.
- Christopher D. Manning and Hinrich Schütze (1999). Foundations of Statistical Natural Language Processing. The MIT Press. ISBN 978-0-262-13360-9.
- David M. W. Powers and Christopher C. R. Turk (1989). Machine Learning of Natural Language. Springer-Verlag. ISBN 978-0-387-19557-5.

## 外部链接

- 人类语言技术当前发展情况概览
- 哥伦比亚大学自然语言处理研究组
- 卡内基梅隆大学语言技术研究院
- 斯坦福大学自然语言处理研究小组
- 中文自然语言处理开放平台
- ACL（美国电脑语言学协会）提供的相关杂志以及研讨会的论文
- GATE: a Java Library for Text Engineering
- LTP:语言技术平台（简体中文）
- Python编程语言的自然语言处理工具包教程
- fastNLP