其他分享
首页 > 其他分享> > 自然语言处理(NLP)-2.2 词性标注与隐式马尔科夫模型(Part of Speech Tagging and Hidden Markov Models)

自然语言处理(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)计算各状态对出现次数C(t_{i-1},t_i)

        (2)由t_{i-1}状态转移到t_i状态的概率,即:

                P(t_i|t_{i-1}) = \frac{C(t_{i-1},t_i)}{\sum ^{N}_{j=1}C(t_{i-1},tj)}

       

    计算状态转移矩阵:

        (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矩阵:保存最优中间结果,即由前一状态t_{i-1}经过一步转移到状态t_i,并对应单词w_i的最大概率

            D矩阵:保存了路径,用于回溯找出最优结果

        

4.2 算法流程

    (1)初始化:

        C矩阵:将第一列初始化为,由初始状态经一步转移后,能得到句子中第一个词的概率;即句子中第一个词对应各词性的发射概率

           

        D矩阵:将第一列初始化为0,表示起始状态

           

    (2)正向传递:

        C矩阵:计算由任前一状态出发,经过一步转移后到达当前状态t_i,且能得到当前单词w_j的最大概率;计算所有可能情况,保存最大概率

            计算公式:

               

            优化:因连乘许多小数,可能导致数值下溢,因此可使用对数概率代替

               

            例: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