一、什么是自然语言处理
自然语言处理(Natural Language Processing,NLP)
是人工智能领域的主要内容,研究用电子计算机模拟人的语言交际过程,使计算机能理解和运用人类社会的自然语言,实现人机之间的自然语言通信,以代替人的部分脑力劳动,包括查询资料、解答问题、摘录文献、汇编资料以及一切有关自然语言信息的加工处理。
1.1 自然语言处理的过程
目录
9.1.1 短语结构( Phrase structure / Constituency )
9.1.2 依存结构( Dependency structure )
自然语言处理的基础:词法分析,语法分析,语义分析
第一步:分析源语言(文本理解)
通过词法分析,语法分析,语义分析来对源语言进行分析理解
获得句子的语义
第二步:生成目标语言(文本生成)
任何一个NLP系统都离不开文本理解和文本生成。
通过应用到不同方面,形成了不同的领域。
1.2 自然语言处理遇到的困难
1.2.1 歧义
词法层面:
例1: I made her duck.
her:宾格 or 所有格?
例2:“打”的词性是什么?
动词:打电话
介词:打今天起
量词:一打铅笔
句法层面:
Put the block in the box on the table. 把盒子里的积木放到桌子上
Put the block in the box on the table. 把积木放到桌子上的盒子里
语义方面:
她这个人真有意思。 有趣
我根本没有那个意思。 想法
语用层面(程度):
女孩给男朋友打电话:如果你到了,我还没到,你就等着吧;
如果我到了,你还没到,你就等着吧。
语音层面:
I:eye 相同发音。
1.2.2 未知语言现象
(1)意想不到的情况:如未知词汇、未知结构等
(2)语言也是不断发展变化的
新的词汇
新的词义
新的词汇用法
1.3 自然语言处理系统vs. 程序设计语言的编译系统
程序设计语言 |
自然语言 |
通常采用CFG描述(上下文无关文法) |
远远超出CFG的表达能力 |
语言中不存在歧义 |
语言中存在复杂的歧义 |
人服从机器 |
机器服从人 |
无限集→有限集 映射过程 |
有限集→无限集 推演过程 |
1.4 NLP的基本方法及其发展
1.4.1 理性主义方法(基于规则的方法、符号派)
建立符号处理系统:知识表示体系(规则)+推理程序
希望通过手工编码大量的先验知识和推理机制,得以复制人类大脑中的语言能力
理论基础:乔姆斯基(Chomsky)的语言理论
1.4.2 经验主义方法(基于统计的方法、随机派)
建立数学模型
利用统计学、模式识别和机器学习等方法训练模型参数
语料库:收集一些文本作为统计模型建立的基础
理论基础:香农(Shannon)的信息论
二、语料库
2.1 基本概念
语料库(Corpus):
存放语言材料的数据库(文本集合)。库中的文本通常经过整理,具有既定的格式与标记,特指计算机存储的数字化语料库
Corpora: 语料库集合
关于语料库的三点基本认识:
(1)语料库中存放的是在语言的实际使用中真实出现过的语言材料
(2)语料库是以电子计算机为载体、承载语言知识的基础资源
(3)真实语料需要经过加工(分析和处理),才能成为有用的资源
2.2 语料库类型
(1)专用语料库&通用语料库
专用语料库:
是为了某种专门的目的,只采集某一特定的领域,特定的地区,特定的时间,特定的语体类型的语料构成的语料库。
通用语料库:
抽样时从各个角度考虑了平衡问题的语料库。
按照事先确定好的某种标准,把每个子类的文本按照一定比例收集到一起的语料库。
(2)单语语料库&多语语料库
单语语料库:只含有单一语言文本的语料库
多语语料库:不只有一种语言的语料库
平行语料库
比较语料库
(3)共时语料库&历时语料库
共时语料库:为了对语言进行共时研究而建立的语料库。
历时语料库:对语言文字的使用进行动态追踪、对语言的发展变化进行监测的语料库。
特点: 语料的动态性:语料是不断动态补充的
具有量化属性“流通度”
(4)生语料库&熟语料库
生语料库:没有经过任何加工处理的原始语料数据
熟语料库:经过了加工处理、标注了特定信息的语料库
2.3 语料库加工的三种主要方式
人工:非常昂贵,需要大量的人力资源
自动:不完全准确
半自动(人机结合): 兼顾两者的优点
先由计算机对待加工的语料进行自动加工,然后由人工校对
由计算机自动选择语料库中需要人干预的自动加工不能解决的部分,从而减少人的工作
三、语言模型
3.1 n元语法模型
马尔可夫假设:
直觉上讲,下一个词的出现仅依赖于它前面的一个或几个词。 受离它较近的词的影响较大。
二元语法模型(Bigram model):
假设下一个词的出现只依赖它前面的一个词。
由此我们可以推广
三元语法模型(Trigram model):
假设下一个词的出现依赖它前面的两个词。
n元语法模型(n-gram model):
假设下一个词的出现依赖它前面的n-1个词。
n的选择:
更大的n:对下一个词出现的约束信息更多,具有更大的辨别力
更小的n:在训练语料库中出现的次数更多,具有更可靠的统计信息,具有更高的可靠性
理论上,n越大越好
实践中,由于n的增加,计算量大量增加,bigram和trigram用的较多
二元语法模型下的最大似然估计计算:
假设训练语料由下面3个句子构成
Mother reads S C
Father reads a text book
She reads a book by friends
问题1:用最大似然估计的方法计算概率 p (Father reads a book)
解题思路:把每个词出现的概率相乘。
p(Father|)=1/3
p(reads|Father)=1
p(a|reads)=2/3
p(book|a)=1/2
p(|book)=1/2
在nlp中BOS表示开始符号,EOS表示结束符号。
p (Father reads a book)
=p(Father|)*p(reads|Father)*p(a|reads)*p(book|a)*p(|book)
=1/3*1*2/3*1/2*1/2
问题2:用最大似然估计的方法计算概率 p (He reads a book)
在已有的语料库中没有出现过He reads,所以
p(reads|He)=0
出现了0概率问题。
零概率产生的原因:
映了语言的规律性,即本来就不该出现
数据稀疏(Data Sparseness) :
由于语言模型的训练文本T的规模及其分布存在着一定的局限性和片面性,许多合理的语言搭配现象没有出现在T中。
仅靠增大语料库的规模,不能从根本上解决数据稀疏问题
解决办法:
数据平滑技术
为了产生更准确的概率来调整最大似然估计的技术
基本思想:“劫富济贫”
3.2 数据平滑技术
3.2.1 Laplace法则、Lidstone法则
最简单的平滑技术—Laplace法则
首先我们要获得词汇表的容量。
在上题中:算上BOS EOS ,一共有13个词,所以容量V = 13
在最大似然计算中,分子+1,分母+v
问题一:
=p(Father|)*p(reads|Father)*p(a|reads)*p(book|a)*p(|book)
=1/3 *1