自然语言处理复习汇总(南京大学)

自然语言处理复习汇总(南京大学)

标签(空格分隔): 自然语言处理
参考书籍:统计自然语言处理–宗成庆
该文档用markdown编写,github地址为https://github.com/lyfadvance/nlp/blob/master/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86%E5%A4%8D%E4%B9%A0%E6%96%87%E6%A1%A3.md
如果想继续编写,可以fork


统计语言模型

N-Gram

N-1阶马尔可夫链我们称之为N元语言模型

P(wi|wi1)=P(wi1wi)P(wi1)=Count(wi1wi)wCount(wi1w)

Count(wi1wi) 由于稀疏性,值可能等于0.从而导致整个句子的概率都等于0

进行平滑处理:

线性平滑:

P(wi|wi1)=P(wi1wi)P(wi1)=Count(wi1wi)+αw(Count(wi1w)+α)

laplace 平滑:

P(wi|wi1)=P(wi1wi)P(wi1)=Count(wi1wi)+kP(w)(wCount(wi1w))+k

简单线性插值平滑:

Neural language model

word2vector

文本分类

朴素贝叶斯模型

D为待分类的文档,ck 指第k个类别

argmaxckP(ck|D)=argmaxckP(D|ck)P(ck)P(D)=argmaxckP(D|ck)P(ck)

1. Bernoulli document model(伯努利文档模型)

一个文档被表示成01向量.向量中每一个元素表示相应的单词是否在文档中出现了
Di 表示第i个文档的01向量

Dit 表示第i个文档的01向量中第t个元素的值,即单词wt 是否在文档i中出现了
P(wt|ck) 表示单词wt 在类别ck 中出现的文档数的占比.

P(wt|ck)=ckwtck

P(Dit|ck)=DitP(wt|ck)+(1Dit)(1P(wt|ck))

P(Di|Ck)=|V|t=1P(Dit|ck)

2. Multinomial document model

一个文档被表示成整数向量.向量中每一个元素表示相应的单词在文档中出现了多少次

Di 表示第i个文档的向量

Dit 表示第i个文档的向量中第t个元素的值

P(wt|ck) 表示单词wt 在类别ck 中出现的文档数的占比.

训练句向量

一般来讲每一个类别ck 也可以看成一个向量,记为f(ck)

文本Di 也表示成向量w

训练句向量也就是训练打分模型score(w,f(ck))

可以根据这个设计各种loss函数。用SVM的loss函数训练

文本或句子向量化

词袋模型

0-1向量

N-Gram Bag-of-Words

Vocab = set of all n-grams in corpus

Document = n-grams in document w.r.t vocab with multiplicity

For bigram:

Sentence 1: “The cat sat on the hat”

Sentence 2: “The dog ate the cat and the hat”

Vocab = { the cat, cat sat, sat on, on the, the hat, the dog, dog ate, ate the, cat and, and the}

Sentence 1: { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0}

Sentence 2 : { 1, 0, 0, 0, 0, 1, 1, 1, 1, 1}

TF-IDF

TF(词频)

(TF)=

IDF(逆文档频率)

(IDF)=log+1

特征过滤

  • 停用词
  • 基于文档频率(DF)的特征提取法
    从训练预料中统计出包含某个特征的文档的频率(个数),然后根据设定的阈值,当该特征项的DF值小于某个阈值时,从特征空间中去掉该特征项,因为该特征项使文档出现的频率太低,没有代表性;当该特征项的DF值大于另外一个阈值时,从特征空间中也去掉该特征项,因为该特征项使文档出现的频率太高,没有区分度
  • 信息增益法
    信息增益(IG)法依据某特征项ti 为整个分类所能提供的信息量多少来衡量该特征项的重要程度,从而决定对该特征项的取舍。某个特征项ti 的信息增益是指有该特征或没有该特征时,为整个分类所能提供的信息量的差别,其中,信息量的多少由熵来衡量。因此,信息增益即不考虑任何特征时文档的熵和考虑该特征后文档的熵的差值:
    Gain(ti)=Entropy(S)Expected Entropy(Sti)={j=1MP(Cj)logP(Cj)}{P(ti)[j=1MP(Cj|ti)logP(Cj|ti)]   +P(ti¯)[j=1MP(Cj|ti¯)logP(Cj|ti¯)]}

    其中P(Cj) 表示Cj 类文档在预料中出现的概率,P(ti) 表示语料中包含特征项ti 的文档的概率,P(Cj|ti) 表示文档包含特征项ti 时属于Cj 类的条件概率,P(ti¯) 表示语料中不包含特征项ti 的文档的概率,P(Cj|ti¯) 表示文档不包含特征项ti 时属于Cj 的条件概率,M 表示类别数
  • mutual information(互信息法)
  • χ2 统计量

Distributional similarity-based representations

  • LSI
  • First Propose
  • Word2vec
  • Doc2Vec

词性标注与隐马尔科夫模型

维特比算法和算法

A 是状态转移概率矩阵

B 是观测概率矩阵

π 是初始状态概率向量

隐马尔科夫模型的三个基本问题

  • 概率计算问题。给定模型λ=(A,B,π) 和观测序列O=(o1,o2,...,oT) ,计算在模型λ 下观测序列O 出现的概率P(O|λ)
  • 学习问题.已知观测序列O=(o1,o2,...,oT) .估计模型λ=(A,B,π) 参数,使得在该模型下观测序列概率P(O|λ) 最大.即用极大似然估计的方法估计参数.
  • 预测问题,也称为解码(decoding)问题。已知模型λ=(A,B,π) 和观测序列O=(o1,o2,...,oT) ,求对给定观测序列条件概率P(I|O) 最大的状态序列I=(i1,i2,...,iT) .即给定观测序列,求最有可能的对应的状态序列.

问题1:

前向算法.

定义前向概率:

给定隐马尔科夫模型λ ,定义到时刻t 部分观测序列为o1,o2,...,ot 且状态为qi 的概率为前向概率,记作

αt(i)=P(o1,o2,...,ot,it=qi|λ)

输入:隐马尔科夫模型λ ,观测序列O

输出:观测序列概率P(O|λ)

(1) 初值

α1(i)=πibi(o1),i=1,2,...,N

(2) 递推 对t=1,2,…,T-1

αt+1(i)=j=1Nαt(j)ajibi(ot+1),i=1,2,...N

(3) 终止

P(O|λ)=i=1NαT(i)

(4)最优路径回溯

后向算法:

定义后向概率:

给定隐马尔科夫模型λ ,定义在时刻t 状态为qi 的条件下,从t+1T 的部分观测序列为ot+1,ot+2,...,oT 的概率为后向概率,记作

βt(i)=P(ot+1,ot+2,...,oT|it=qi,λ)

输入:隐马尔可夫模型λ ,观测序列O :

输出:观测序列概率P(O|λ)

(1)

βT(i)=1,i=1,2,...,N

(2)对t=T1,T2,...,1

βt(i)=j=1Naijbj(ot+1)βt+1(j),i=1,2...N

(3)

P(O|λ)=i=1Nπibi(o1)β1(i)

问题2

Baum-Welch算法(无监督学习方法)

假设给定训练数据只包含S 个长度为T 的观测序列O1,O2,...,OS 而没有对应的状态序列,目标是学习隐马尔科夫模型λ=(A,B,π) 的参数。我们将观测序列数据看做观测数据O ,状态序列数据看做不可观测的隐数据I ,那么隐马尔科夫模型事实上是一个含有隐变量的概率模型

P(O|λ)=IP(O|I,λ)P(I|λ)

它的参数学习可以由EM 算法实现

参数估计问题是HMM面临的第三个问题,即给定一个观察序列O=O1O2...OT ,如何调节模型u=(A,B,π) 的参数,使得P(O|u) 最大化:

argmaxuP(Otraining|u)

模型的参数是指构成uπi,aij,bj(k) .最大似然估计方法可以作为HMM参数估计的一种选择。如果产生观察序列O 的状态序列Q=q1q2...qT 已知,根据最大似然估计,HMM的参数可以通过如下公式计算:
π¯i=δ(q1,si)

a¯ij=QqiqjQqi(qi)=T1t=1δ(qt,si)δ(qt+1,sj)T1t=1δ(qt,si)

b¯j(k)=QqjvkQqj

但实际上,由于HMM中的状态序列Q是观察不到的(隐变量),因此,这种最大似然估计的方法不可行。所幸的是,期望最大化(expectation maximization,EM)算法可以用于含有隐变量的统计模型的参数最大似然估计。其基本思想是,初始时随机地给模型的参数赋值,该复制遵循模型对参数的限制,例如,从某一状态出发的所有转移概率的和为1。给模型参数赋初值以后,得到模型u0 ,然后,根据u0 可以得到模型中隐变量的期望值。例如,从u_0得到从某一状态转移到另一状态的期望次数,用期望次数来替代上式中的实际次数,这样可以得到模型参数的新估计值,由此得到新的模型u1 .从u1 又可以得到模型中隐变量的期望值,然后,重新估计模型的参数,执行这个迭代过程,知道参数收敛于最大似然估计值.

问题3

维特比算法:

其实就是前向算法的变种形式

输入:隐马尔科夫模型λ ,观测序列O

输出:最优路径I=(i1,i2,...,iT)

(1) 初值

α1(i)=πibi(o1),i=1,2,...,N

ψ1(i)=0

(2) 递推 对t=1,2,…,T-1

αt+1(i)=max1jNj=1Nαt(j)ajibi(ot+1),i=1,2,...N

ψt+1(i)=argmax1jNj=1Nαt(j)aji,i=1,2,...N

(3) 终止

P=max1iNαT(i)

iT=argmaxiiNαT(i)

统计语义分析

PCFG,概率上下文无关文法

三个基本问题
- 给定一个句子W=w1w2...wn 和文法G ,如何快速计算概率P(W|G)
- 给定一个句子W=w1w2...wn 和文法G ,如何选择该句子的最佳结构?即选择句法结构树t 使其具有最大概率:argmaxtP(t|W,G)
- 给定PCFG G和句子W=w1w2...wn ,如何调节G的概率参数,使句子的概率最大?即求解argmaxGP(W|G)

问题1:

内向算法和外向算法:

内向算法的基本思想是:利用动态规划算法计算非终结符A 推导出W 中子串wiwi+1...wj 的概率aij(A)

有递推公式如下:

aii(A)=P(A>wi)

aij(A)=B,Cikj1P(A>BC)aik(B)a(k+1)j(C)

算法如下:

输入:PCFG G(S)和句子W=w1w2...wn

输出:aij(A),1ijn

步1 初始化:aii(A)=P(Awi),1in

步2 归纳计算:j=1...n,i=1...nj ,重复下列计算:

ai(i+j)(A)=B,Ciki+j1P(ABC)aik(B)a(k+1)(i+j)(C)

步3 终结:P(Sw1w2...wn)=a1n(S)

外向算法的基本思想是:

定义外向变量βij(A) 为初始非终结符S 在推导出语句W=w1w2...wn 的过程中,产生符号串w1...wi1Awj+1...wn 的概率

有如下递推公式:

β1n(A)={10A=SAS

βij(A)=B,Ck>jP(BAC)α(j+1)k(C)βik(B)   +B,Ck<iP(BCA)αk(i1)(C)βkj(B)

问题2:
就是将内向算法的递推式取最大
aii(A)=P(Awi)

aij(A)=argmaxB,CN;iki+jP(ABC)aik(B)a(k+1)j(C)

然后用变量βij 记忆子串wi...wj 的维特比句法分析树

βij(A)=argmaxB,CN;iki+jP(ABC)aik(B)a(k+1)j(C)

Treebank

Chomsky Normal Form

统计机器翻译

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章