目录
1.自然语言处理概念
2.自然语言与编程语言的比较
(1)词汇量:
(2)结构化:
(3)歧义性:
(4)容错性:
(5)易变性:
(6)简略性:
3.自然语言处理的层次
(1)层次图
(2)自然语言处理系统输入源
(3)词法分析
(4)信息抽取
(5)文本分类与文本聚类
(6)句法分析
(7)语义分析
(8)篇章分析
(9)指代消解
(10)其他 NLP 任务
4. 自然语言处理的流派
(1)基于规则的专家系统
(2)基于统计的学习方法(机器学习)
5.自然语言处理方法发展历史
1.自然语言处理概念
- 自然语言处理(Natural Language Processing,NLP)是一门融合了计算机科学、人工智能以及语言学 的交叉学科。
- 自然语言处理是人工智能的一个领域。
- 自然语言处理的终极目标是理解人类语言 。
2.自然语言与编程语言的比较
(1)词汇量:
自然语言的词汇量的丰富程度远远超过编程语言 。C 语言一共有 32 个关键字,Java语言则有 50 个。而汉语至今共收录了 56008 个词条,并且仍在不断增加。
(2)结构化:
编程语言是“ 结构化 ”的,而自然语言是“ 非结构化 ”的
结构化指的是信息具有明确的结构关系,可以通过明确的机制来读写 。编程语言通过极少的词汇量 + 极强的结构化实现了各式各样的程序代码。自然语言通过极多的词汇量 + 极弱的结构化实现了五花八门的表达方式。
例如,Python 用 apple.funder='乔布斯' 可以明确定义苹果公司的创始人,而中文我们可以有很多不同的说法来表达这个意思。
(3)歧义性:
自然语言含有大量“歧义”,而编程语言不允许存在“歧义”。自然语言中可能存在大量的歧义,而这些歧义在不同的语境下可能表现为不同的意思 ,而机器所处理的编程语言则不能具有任何歧义 ,有一点歧义就会导致代码的运行错误、编译错误。举一个经典的笑话:
他说:“她这个人真有意思(funy)。”她说:“他这个人怪有意思的(funy)。”于是人们以为他们有了意思(wish),并让他向她意思意思(express)。他火了:“我根本没有那个意思(thought)!”她也生气了:“你们这么说是什么意思(Intention)?”事后有人说:“真有意思(funny)。”也有人说:“真没意思(nonsense)。”
(4)容错性:
编程语言受到编译器的管理,不存在“错误”,而自然语言存在大量的“不规范”和“错误”,而我们人类基本都可以理解这些有一些小错误的文本的意思。
(5)易变性:
编程语言变化缓慢温和,自然语言则每时每刻都在变化
(6)简略性:
自然语言经常省略大量背景知识和常识。而这些知识是计算机不拥有的。我们经常省略大量背景知识或常识,比如我们会对朋友说“老地方见” ,而不必指出“ 老地方” 在哪里。对于机构名称,我们经常使用简称,比如“工行” “地税局” ,假定对方熟悉该简称。
3.自然语言处理的层次
(1)层次图
(2)自然语言处理系统输入源
自然语言处理系统的输入源一共有 3 个 ,即语音、图像与文本 。其中文本处理是重中之重 ,其他两种数据最后也一般先要转化为文本才能进行后续的处理任务 ,对应的处理分别为语音识别(Speech Recognition)和光学字符识别(Optical Character Recognition,OCR)。
(3)词法分析
中文分词、词性标注和命名实体识别,这 3 个任务都是围绕词语进行分析,统称词法分析 。词法分析的主要任务是将文本分隔为有意义的词语 (中文分词) ,确定每个词语的类别和浅层的歧义消除(词性标注),并且识别出一些较长的专有名词 ( 命名实体识别) 。对中文而言,词法分析常常是后续高级任务的基础。在流水线式的系统中,如果词法分析出错,则会波及后续任务。词法分析可以说是自然语言处理的基础任务,目前中文词法分析已经非常成熟。
(4)信息抽取
词法分析之后,文本已经呈现出部分结构化的趋势 。至少,计算机看到的不再是一个超长的字符串,而是有意义的单词列表(分词结果),并且每个单词还附有自己的词性(词性标注结果)以及一些标签(命名实体识别)。根据这些分词后的单词与标签,通过信息抽取我们可以抽取出一部分有用的信息。例如通过高频词抽取出关键词;根据词语之间的统计学信息抽取出关键短语乃至句子。
(5)文本分类与文本聚类
将文本拆分为一系列词语之后,我们还可以在文章级别做一系列分析。把许多文档分类进行整理称作文本分类,例如判断一段话是褒义还是贬义的,判断一封邮件是否是垃圾邮件。把相似的文本归档到一起,或者排除重复的文档,而不关心具体类别,此时进行的任务称作文本聚类。
(6)句法分析
词法分析只能得到零散的词汇信息,通过句法分析可以得到句子之间的语法关系 。例如,在一些问答系统中,比如我们问智能语音助手“查询刘医生主治的内科病人”,用户真正想要查询的不 是“刘医生” ,也不是“内科” ,而是“病人” 。但这三个词语都是名词,只有通过句法分析清楚他们之间的语法关系才能理清。
(7)语义分析
相较于句法分析,语义分析侧重语义而非语法 。 它包括词义消歧(确定一个词在语境中的含义,而不是简单的词性)、 语义角色标注(标注句子中的谓语与其他成分的关系) 乃至语义依存分析(分析句子中词语之间的语义关系 )。
(8)篇章分析
篇章分析可以自动分析自然语言语篇或者话语的组成结构、句际关系、语句衔接、语义连贯以及交际功能并得到相应内部表示的过程、技术和方法。简单来说就是从更为广的视角—篇章角度进行分析,自然最为复杂也最为困难,目前很不成熟。
(9)指代消解
指代消解指在文本中确定代词指向哪个名词短语的问题,举个例子:
今天晚上 10 点有国足 的比赛,他们 的对手是泰国队 。在过去几年跟泰国队 的较量中他们 处于领先,只有一场惨败 1-5。
指代消解要做的就是分辨文本中的 他们 指的到底是 国足 还是 泰国队。
(10)其他 NLP 任务
上述的这些任务是 NLP 中最为基础也最为重要的基本任务,除此之外还有一些更加偏向应用、与终端产品联系更为紧密的任务:
- 自动问答,例如 Siri。
- 自动摘要,为一篇长文档生成简短的摘要。
- 自动翻译,例如中文自动翻译英文。
注: 信息检索,一般认为信息检索(Information Retrieve, IR)是区别于自然语言处理的独立学科。虽然两者具有密切的联系,但 IR 的目标是查询信息,而 NLP 的目标是理解语言。
4. 自然语言处理的流派
(1)基于规则的专家系统
专家系统是由专家人工制定的确定性流程 ,只是看起来像人工智能而已。本质上仍然是“有多少人工,就有多少智能。”专家系统在 NLP 领域的应用有波特词干算法(Poter stemming algorithm),广泛应用于英文词干提取,部分规则例如:
专家系统要求设计者对所处理的问题具备深入的理解,并且尽量以人力全面考虑所有可能的情况。它最大的弱点是难以拓展。当规则数量增加或者多个专家维护同一个系统时,就容易出现冲突。显然对于复杂的自然语言,尤其是中文,可能只有很小很小的领域才能应用专家系统。这种方法基本已经落伍了。
(2)基于统计的学习方法(机器学习)
现在机器学习的本质实际上就是“统计智能”,机器学习的很多算法都是来源于统计学,自然语言处理同样不例外,统计学习方法其实就是机器学习的别称,目前是自然语音处理中最为重要的一种方法。统计,指的是在语料库上进行统计,让机器自动学习一些自然语言的规律 。语料库指的是人工标注的结构化文本。
5.自然语言处理方法发展历史
既然自然语言处理位于机器学习的应用层,那么自然语言处理的历史如同机器学习的历史一样,经历了从逻辑规则 到统计模型 的发展。