赞
踩
观看了哥伦比亚大学的自然语言处理公开课视频后,做出的学习与总结。
这是week one 和week two 的总结
-------------------------------------------------------------------------------------------------------
一、自然语言处理基本可以分为:
自然语言理解:将自然语言文本输入计算机,计算机自己进行处理,获取有利信息。
自然语言生成:计算机生成一种与人类交流的语言。
二、在自然语言处理中的一些关键应用:
1、 机器翻译:将一种语言的句子映射到另一种语言上。
2、 信息抽取:将一些文本作为输入,将文本核心内容以结构化的,数据库形式表示的方式作为输出。
3、 文本摘要:输入一个或多个文档,将它们融合为一个显示这些文档主要内容的摘要。
4、 对话系统:人类可以和计算机使用自然语言进行交流。(既有自然语言理解,又有自然语言生成)
三、自然语言处理的一些基础问题:
1、 标注问题(将词语映射到标注序列,使每个词语都有自己的标注):词性标注和命名实体识别。
2、 句法分析:输入一些句子,输出一个解析树(依照其语法知识对句子进行基本的层次分解)。
四、自然语言处理困难的一个重要问题:歧义问题
Eg. “at last,a computer that understandsyou like your mother”
1.它就像你妈妈一样了解你
2.它了解你像你妈妈
2.它就像了解你妈妈一样了解你
在声音层次上歧义:likeyour ===lie cured
在句法层次上歧义:understand/you/likeyour mother or understand/you like your mother
在语义层次上歧义:一词多义
在篇章层次上歧义:人称代词歧义
五、语言模型问题:
假设V是有限集合,包含语言中所有单词。V+是所有可能存在的句子或字符串集合。已经存在一个由示例句子组成的训练样本。
任务:通过训练样本,学习到这种语言的分布p,同时p满足p(x)>=0(xV+),且=1。
注意:一个好的语言模型会赋予较高的概率值给更合理的句子,赋予较低的概率值给不合理的句子。
六、为什么要建立语言模型:
1、 语言模型在很多自然语言处理应用中有着作用:语音识别、光学字符识别、手写识别和机器翻译等。
语音识别:把语音记录作为输入,任务是把这些声波映射成单词,实际处理中会遇到发音相似的句子,导致真正的句子和相似句子混淆。如果存在一个语言模型,就可以评估每个句子的可能性p,有利于摆脱混淆问题。
2、 语言模型估计方法在处理其他自然语言处理问题中很有帮助:词性标注、句法分析和机器翻译等。
七、一个朴素方法建立语言模型:
假设有N个训练句子,每个句子用x1…xn表示,c(x1…xn)表示句子在训练语料中出现的次数,
定义:p(x1…xn)=c(x1…xn)/N
问题:对很多在训练语料中没有出现的新句子赋予0,(没有能力生成新句子)
八、马尔科夫过程(三元语言模型基础)
假设V是有限集合,包含语言中所有单词。存在一系列随机变量X1…Xn,X iV。先假设长度n是固定的。
建立模型:P(X1= x1 , X2 = x2 ,…,Xn = xn)
九、一阶马尔科夫过程
P(X1 = x1 , X2 =x2 ,…,Xn = xn)
=P(X1 = x1)P(Xi = xi | X1 = x1 ,…,Xi-1= xi-1) 根据链式规则
= P(X1 = x1)P(Xi = xi | Xi-1 = xi-1) 根据马尔科夫预测(无后效性)
十、二阶马尔科夫过程(利用更多信息)
P(X1 = x1 , X2 =x2 ,…,Xn = xn)
==P(X1 = x1)P(X2= x2 |X1 = x1)P(Xi = xi | Xi-2 = xi-2,Xi-1= xi-1)
=P(Xi = xi | Xi-2 = xi-2,Xi-1= xi-1)
假设:x-1 =x0 =*(开始标记)
问题:如果长度n是变化的
解决:定义Xn=STOP(语句结束标志)
十一、三元语言模型:
组成:1、有穷单词集合V 2、对每个三元组u,v,w 有一个参数q(w|u,v),其中w, u,v
定义:对于任意句子x1…xn,xi (i=1…n-1)且xn =STOP, x-1 = x0 =*,则三元语言模型下的语句概率为p(x1…xn)=q(xi | xi-2 , xi-1)
问题:q(wi |wi-2 , wi-1)的估计问题
解决:利用最大似然估计q(wi| wi-2 , wi-1)=count(wi-2 , wi-1 ,wi)/count(wi-2 , wi-1)
问题:单词集V很大,求解q很多,count(w)为w在训练集中出现的次数,分子或分母很可能为0,导致q为0或无意义。
十二、评估不同语言模型的好坏:perplexity
假设一个训练集,m个测试语句(s1, s2, s3,…sm),语言模型的参数是通过训练集学习到的,测试语句是一些没有使用过的语句。
测试语句的概率
Perplexity = 2-l 其中l=,M是测试语句中单词总数。
因此,perplexity越小,语言模型对于测试数据的适合度越好。
十三、语言模型方面的估计方法:差值法
三元最大似然估计qML(wi | wi-2 , wi-1)= count(wi-2 ,wi-1 , wi)/count(wi-2 , wi-1)
优点:利用了很多语境信息,缺点:需要非常大的训练集
二元最大似然估计qML(wi | wi-1)= count(wi-1 , wi)/count(wi-1)
一元最大似然估计qML(wi)= count(wi)/count()
优点:可以快速收敛到期望值,缺点:忽视了语境信息
差值法:q(wi| wi-2 , wi-1)=1 qML (wi | wi-2 ,wi-1)+2 qML (wi | wi-1)+3 qML (wi),其中1+2+3=1,i>=0
十四、语言模型方面的估计方法:折扣法
定义一个折扣数:Count*(x)=Count(x)-0.5
丢失的概率:(wi-1)=1-Count*( wi-1 , w)/ Count(wi-1)
Katz 回归模型(二元)
定义两个结合:A(wi-1)={w:Count(wi-1 ,w)>0} B(wi-1)={w:Count(wi-1,w)=0}
二元模型:qBO(wi|wi-1 )=
其中(wi-1)=1-
Katz回归模型(三元)
定义两个结合:A(wi-2,wi-1)={w:Count(wi-2,wi-1 ,w)>0} B(wi-2,wi-1)={w: Count(wi-2,wi-1,w)=0}
三元模型: qBO(wi| wi-2,wi-1 )
=
其中(wi-1)=1-
十五、标注问题:词性标注
将某个句子作为输入,词性标注序列作为输出。需要解决的问题:一词多词性问题
十六、标注问题:命名实体标注
某个句子作为输入,句子的命名实体标注序列作为输出。十七、监督学习:从日常使用中获得很多标注好了的训练语句,通过这些语句,学习一个函数或者算法,把新语句映射到对应的标注序列。
假设有两个训练集x(i),y(i) ,(i=1…m)每个x(i)代表一个句子输入,每个y(i)表示句子对应的标注。
监督学习任务:学习一个函数f,使得每个输入语句x可以映射到对应的标注f(x)
十八、监督学习模型:
条件模型(判别模型)
通过训练数据学习一个分布p(y|x),对于每个测试语句x,定义f(x)=arg maxyp(y|x)
生成模型(产生式模型)
通过训练数据学习一个联合分布p(x,y)。
由贝叶斯规则可知p(x,y)=p(y)p(x|y)和p(y|x)= p(y)p(x|y)/p(x),其中p(x)= 。由此可知条件模型和生成模型之间可以转换。
输出f(x)= argmaxyp(y|x)= arg maxy p(y)p(x|y)/p(x)= arg maxyp(y)p(x|y)
十九、生成模型方法的一个实例:隐藏马尔科夫模型(HMM)
假设有一个输入语句x=x1,x2,…,xn。有一个标注序列y=y1,y2,…,yn。对于每个句子和标注序列,定义一个联合分布p(x1,x2,…,xn, y1,y2,…,yn)。则对于句子x的最大可能标注序列为f(x)=arg maxy1,y2,…,ynp(x1,x2,…,xn , y1,y2,…,yn)。
二十、三元HMMs
对于每个句子x1x2…xn(xi ,i=1…n),每个标注序列y1y2…yn+1(yi ,i=1…n, yn +1=STOP),联合分布p(x1x2…xn, y1y2…yn+1)= ,其中x0 =x-1 =*,参数q(s|u,v)对于任意s,u,v,参数e(x|s)对于任意s,x。
二十一、参数q(s|u,v)和e(x|s)的估计:平滑估计
q(s|u,v)= 1 qML (s|u,v)+2 qML (s|v)+ 3 qML (s),其中1+2+3=1,i>=0
e(x|s)= qML (x|s)
问题:对于所有的y,如果x从未在训练数据中出现过,则e(x|y)=0,意味着没有关于这个单词的任何有用信息。
解决方法:将V集合分为两个集合:普通词语(在训练数据中出现次数大于等于5)和低频率词语。把低频率词语按照他们的特征映射到较小的有穷集合中。
二十二、将HMMs应用到新句子中:Viterbi算法
输入一个句子x1x2…xn,输出arg maxy1,y2,…,ynp(x1,x2,…,xn , y1,y2,…,yn+1)。
定义r(y-1 ,y0,y1 ,…,yk)=
定义表示在k位置标注为u,v的最大可能性标注。
=max(y-1,y0,…,yk):yk-1=u,yk=v r(y-1 ,y0,y1 ,…,yk)。
使用递归算法:=maxw (q(v|w,u)e(xk|v))
算法:for k=1…n
For u,v
=maxw (q(v|w,u)e(xk|v))
Return max (q(STOP|u,v))
带有后指针的Viterbi算法:
for k=1…n
For u,v
=maxw (q(v|w,u)e(xk|v))
bp(k,u,v)=arg maxw (q(v|w,u)e(xk|v))
令(yn-1,yn)=arg max(u,v)(q(STOP|u,v))
For k=(n-2)…1
yk =bp(k+2,yk+1 , yk+2)
return 标注序列y 1,y 2,…,y nCopyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。