自然语言处理笔记总目录
HMM:隐含马尔科夫模型
一般以文本序列数据为输入, 以该序列对应的隐含序列为输出
什么是隐含序列?
- 序列数据中每个单元包含的隐性信息,这些隐性信息之间也存在一定关联
例如:
给定一段文本: "人生该如何起头"
我们看到的这句话可以叫做: 观测序列
我们可以将这句话以词为单位进行划分得到:
["人生", "该", "如何", "起头"]
那么每个词对应的词性就是它的隐含序列, 如:
["n", "r", "r", "v"]
HMM的作用:
- 在NLP中,HMM用来解决文本序列标注问题。如分词,词性标注,命名实体识别都可以看作是序列标注问题
HMM过程简述:
- 首先, HMM模型表示为: l a m b d a = H M M ( A , B , p i ) lambda = HMM(A, B, pi) lambda=HMM(A,B,pi),其中 A , B , p i A, B, pi A,B,pi 都是模型的参数,分别称作:状态转移概率矩阵,观测状态概率矩阵和隐藏状态初始概率矩阵
- 接着,我们开始训练HMM模型,语料就是事先准备好的一定数量的观测序列及其对应的隐含序列,通过极大似然估计求得一组参数,使由观测序列到对应隐含序列的概率最大
- 在训练过程中,为了简化计算,马尔可夫提出一种假设:隐含序列中每个单元的可能性只与上一个单元有关。这个假设就是著名的隐含假设
- 训练后,我们就得到了具备预测能力的新模型: l a m b d a = H M M ( A , B , p i ) lambda = HMM(A, B, pi) lambda=HMM(A,B,pi),其中的模型参数已经改变
- 之后给定输入序列 ( x 1 , x 2 , … , x n ) (x1, x2, …, xn) (x1,x2,…,xn),经过模型计算 l a m b d a ( x 1 , x 2 , … , x n ) lambda(x1, x2, …, xn) lambda(x1,x2,…,xn)得到对应隐含序列的条件概率分布
- 最后,使用维特比算法从隐含序列的条件概率分布中找出概率最大的一条序列路径就是我们需要的隐含序列: ( y 1 , y 2 , … , y n ) (y1, y2, …, yn) (y1,y2,…,yn)
CRF:条件随机场
CRF模型的作用:
- 同HMM一样,在NLP领域,CRF用来解决文本序列标注问题。如分词,词性标注,命名实体识别
CRF过程简述:
- 首先,CRF模型表示为: l a m b d a = C R F ( w 1 , w 2 , . . . , w n ) lambda = CRF(w1, w2, ..., wn) lambda=CRF(w1,w2,...,wn),其中 w 1 w1 w1到 w n wn wn是模型参数.
- 接着,我们开始训练CRF模型,语料同样是事先准备好的一定数量的观测序列及其对应的隐含序列
- 与此同时我们还需要做人工特征工程,然后通过不断训练求得一组参数,使由观测序列到对应隐含序列的概率最大
- 训练后,我们就得到了具备预测能力的新模型: l a m b d a = C R F ( w 1 , w 2 , . . . , w n ) lambda = CRF(w1, w2, ..., wn) lambda=CRF(w1,w2,...,wn),其中的模型参数已经改变
- 之后给定输入序列 ( x 1 , x 2 , . . . , x n ) (x1, x2, ..., xn) (x1,x2,...,xn),经过模型计算 l a m b d a ( x 1 , x 2 , . . . , x n ) lambda(x1, x2, ..., xn) lambda(x1,x2,...,xn)得到对应隐含序列的条件概率分布
- 最后,还是使用维特比算法从隐含序列的条件概率分布中找出概率最大的一条序列路径就是我们需要的隐含序列: ( y 1 , y 2 , . . . , y n ) (y1, y2, ..., yn) (y1,y2,...,yn)
HMM与CRF差异:
- HMM模型存在隐马假设,而CRF不存在,因此HMM的计算速度要比CRF模型快很多,适用于对预测性能要求较高的场合
- 同样因为隐马假设,当预测问题中隐含序列单元并不是只与上一个单元有关时,HMM的准确率会大大降低,而CRF不受这样限制,准确率明显高于HMM
HMM和CRF的发展现状:
- HMM和CRF模型曾在多种序列任务中表现出色,伴随NLP度过了一段漫长的时期
- 但由于近年来深度学习发展迅速,经典序列模型如HMM和CRF,已经开始慢慢淡出人们的视野
- 因此,我们只需对其简单的了解,有兴趣的伙伴可以阅读一些文献,但对其有基本的认识就可以了