自然语言处理(NLP)-2.2 词性标注与隐式马尔科夫模型(Part of Speech Tagging and Hidden Markov Models)
作者:互联网
1.词性标注(Part of Speech Tagging,POS)
1.1 基本概念
定义:标注出句子中各单词的词性,如名词、动词、形容词等
例子:
1.2 相关应用
应用:
命名实体识别
指代消歧
语音识别
2.马尔可夫链(Markov Chains)
2.1 基本概念
定义:离散时间的马尔可夫过程即马尔可夫链;其假设未来状态只与当前状态有关,而与时间无关
表示:可由有向图进行表示,同时可用邻近矩阵这种数据结构进行存储
例子:
若当前单词为动词,则下一个词有0.2的概率是动词、0.6的概率是名词
状态表示:
Q={q1,q2,q3},表示各状态,即事件
箭头及权重表示各状态间的转移概率,即在当前状态下,下一个事件发生的条件概率
状态转移矩阵:
定义:对上述图形的结构化表述,相当于邻接矩阵;
横纵坐标表示各状态,值表示状态间的转移概率
2.2 马尔可夫链与词性标注
状态表示:
定义:在词性标注任务中,各状态表示当前词的词性,而箭头则表示下一个词是某种词性的概率
例:当前词为"learn",对应词性VB,而下一个词"something",对应词性为NN;
已知当前词为"learn"(VB)的情况下,下一个词为NN的概率为0.4
转移矩阵:
定义:在词性标注任务中,转移矩阵即各词性间转移的概率,是存储马尔可夫链的数据结构
例:
3.隐式马尔可夫模型(Hidden Markov Models)
3.1 基本概念
定义:模型中有状态是隐藏的即无法直接观察到
表示:用虚线圈表示隐藏状态,其他同马尔可夫链
例:在词性标注任务中,各单词的词性就是隐藏的,因为无法直接观察到
3.2 状态转移概率
定义:由当前状态转移到另一状态的概率
例:已知蓝块+紫块的组合有2个,蓝块+任意颜色块的组合有3个
因此已知当前为蓝块,下一个出现的是紫块的概率为2/3,即从蓝块转移到紫块的状态转移概率
计算方法:
(1)计算各状态对出现次数
(2)由状态转移到状态的概率,即:
计算状态转移矩阵:
(1)统计各状态对出现次数:
(2)平滑处理:避免出现除0错误
(3)计算状态转移概率,构成矩阵:
3.3 发射概率(emission probabilities)
定义:从隐藏状态到可观察状态的状态转移概率
例:在词性标注任务中,则表示该词性对应到具体单词的概率
如下图,若当前状态为动词VB,则有0.3的概率对应单词"going"、有0.1的概率对应单词"to"...
计算方法:
例:已知蓝块有3个,其中有2个对应单词"You",一个对应单词"The"
因此,已知当前是蓝块,其对应单词为"You"的概率为2/3,即由蓝块到"You"的发射概率
计算发射矩阵:
(1)统计各状态对出现次数:
注:此处状态对为(词性,单词)状态对,与概率转移矩阵中不同
(2)平滑处理:略,同概率转移矩阵
(3)计算发射概率,构成矩阵:
3.4 总结
状态表示:对应词性
状态转移矩阵A:一个词性转移到另一词性的概率
发射矩阵B:一个词性对应某个特定单词的概率
4.维特比算法(The Viterbi Algorithm)
4.1 基本概念
定义:一种图算法,能够找到概率最高的隐藏单元序列,即各单词最准确的词性标注
例:给定句子"I love to learn",通过该算法能找出其概率最高的隐藏序列为"O->VB->O->VB",即各单词对应的词性标注
方法:
三大步骤:初始化、前向传递、反向传递
两个辅助矩阵:
C矩阵:保存最优中间结果,即由前一状态经过一步转移到状态,并对应单词的最大概率
D矩阵:保存了路径,用于回溯找出最优结果
4.2 算法流程
(1)初始化:
C矩阵:将第一列初始化为,由初始状态经一步转移后,能得到句子中第一个词的概率;即句子中第一个词对应各词性的发射概率
D矩阵:将第一列初始化为0,表示起始状态
(2)正向传递:
C矩阵:计算由任前一状态出发,经过一步转移后到达当前状态,且能得到当前单词的最大概率;计算所有可能情况,保存最大概率
计算公式:
优化:因连乘许多小数,可能导致数值下溢,因此可使用对数概率代替
例:C(1,2)即由任前一状态出发,经过一步转移到达当前状态t1,且能得到句子中第2个单词的最大概率
D矩阵:存储前一状态的索引;即由哪一状态转移到当前状态,能有最大概率得到当前单词
计算公式:
例:
(3)反向传递:
功能:提取出概率最高的隐藏序列
步骤:
(1)计算C矩阵中最后一列中概率最高(最大值)项对应的索引s;
(2)通过该索引s在D矩阵中回溯,直到回到起始状态,通过路径还原得到最优序列
项目代码:https://github.com/Ogmx/Natural-Language-Processing-Specialization
可将代码与数据下载至本地,使用jupyter notebook打开
标签:NLP,词性,概率,状态,矩阵,单词,Markov,转移 来源: https://blog.csdn.net/weixin_43093481/article/details/115253958