[Day7] 词性标注(二)-方法介绍

一. 马可夫模型(Markov Model)

以下会简称为MM。MM是一种具有状态的随机过程,从目前状态转移到下一个状态 的机率由 P(下一个状态|前一个状态) 来决定(在 ‘前一个状态’ 的前提下 ‘下一个状态’ 发生的机率),这些状态的改变会变成一个稳态。上述的例子因为只看前一个状态而已,故又称为一阶MM,可以以此类推至N阶MM(在 ‘前N个状态’ 的前提下 ‘下一个状态’ 发生的机率)。

MM主要会有2个阵列组成:

  • 状态转移阵列:当由一个状态要转移到下一个状态时,会有相对应的转移机率,这些机率会构成状态转移矩阵,通常假如有M个状态会产生MxM的阵列,因此堂课主要是藉由昨天的天气状态与今天的天气状态为例,如下图所示,此图片为Coupy'NLP 100天马拉松'里的图片。
    https://ithelp.ithome.com.tw/upload/images/20210906/20140426gPbDtkP2qE.png
  • 初始机率阵列:也就是当前(最一开始)的状态,如下图,也就是说最一开始是晴天。
    https://ithelp.ithome.com.tw/upload/images/20210906/20140426fLFcwUXlky.png

从上述可以了解,若今天天气晴,隔天的各个天气状况会如下所示:
状态转移阵列的转置 * 初始机率阵列,隔天天气晴的机率为0.5,阴天的机率为0.375,雨天的机率为0.125:
https://ithelp.ithome.com.tw/upload/images/20210906/20140426d2MZlGuLDa.png

二. 隐马可夫模型(Hidden Markov Model)

以下皆简称为HMM,但在某些情况下,我们无法直接观测到状态资讯(ex:晴天、多云、雨天),就是所谓的隐态(HMM中,第一个字为何为Hidden的原因),但我们可观察其他的状态来做推测,ex: 可以藉由观察水草状态(乾燥、湿润、潮湿)来推测天气的状况。以NLP的POS来说,我们无法直接看出一个句字的中每个词的词性,所以词性就是隐态,可以观察到的状态就是每个词,也就是需要透过词来推论词性为何。

通常会比MM多一个阵列:

发射矩阵:隐藏状态对应到每个观察状态的机率,以POS任务来说就是词性(隐态)发生在每个词的机率为何
用一个课堂上的例子:
https://ithelp.ithome.com.tw/upload/images/20210906/20140426Py5zFgKxV4.png

有上述这些阵列,若三天水草都是乾燥(Dry),想推测这三天的天气都是晴天的机率为多少,算法如下:

Sunny->Sunny->Sunny = (0.4 * 0.6) * (0.6 * 0.6) * (0.6 * 0.6) = 0.031104

  1. 第一个 Sunny: Sunny 初始为 0.4,在 Dry 的状态下是 Sunny 的机率 为 0.6 => 0.4*0.6

  2. 第二个 Sunny:前一天是 Sunny 且今天也为 Sunny 的机率为 0.6,在Dry 的状态下是 Sunny 的机率也是 0.6 => 0.6 * 0.6

  3. 第三个 Sunny:前一天是 Sunny 且今天也为 Sunny 的机率为 0.6,在Dry 的状态下是 Sunny 的机率也是 0.6 => 0.6 * 0.6

全部相乘即为所求

但这样狂列出每个天气情况的话会非常复杂,所有的机率都要个别算过一次才行知道哪种天气组合的机率最大。现在我们来想一下若是POS问题的话,考虑一句话’我 很 帅’这个句子中每个词的词性,可以把词性当成是graph的node,然後找出最有可能的词性组合,就像下图找到红色箭头这样的路径,‘我’对应到的词性为’词性1’,‘很’对应到的为’词性2’,‘帅’对应到的为’词性3’:
https://ithelp.ithome.com.tw/upload/images/20210906/20140426nGhBchvKvc.png

那要如何找到上面这条红色的路径,下一篇就会介绍一个Dynamic Programming的演算法: 为特比


<<:  Day 7 - 基本语法2 (型态)

>>:  每个人都该学的30个Python技巧|技巧 7:能精准判断的判断式(字幕、衬乐、练习)

30-6 之软件架构设计原则 5 - DIP 依赖反向原则

软件架构设计原则一切都是为了下面这两点,别忘了。 低耦合 高内聚 这一篇文章我们将要来谈谈 DIP ...

Day21 - 轻前端 Vue - 动态 新增/删除 Collection 项目(四)

Case01 与 Day20 重点差异的部份: Controller 内 Action: [Http...

关於取得旧版 macOS 这件事

想要降刷 macOS 版本,或是处理 Fusion Drive,该怎麽办?那里有资源?或是那边有官方...

Day4 : Hello World 程序再解析

探讨 hello_world.go 背後的一些机制 我们可以透过以下三个问题 hello_world...

见习村27 - First non-repeating character

27 - First non-repeating character Don't say so mu...