自然語言處理筆記-隱馬爾克夫模型(HMM)

在中文分詞里提到了分詞時(shí)是否使用隱馬爾克夫模型山橄,這里就講一下什么是隱馬爾克夫模型

馬爾可夫模型

事物在一段時(shí)間里的變化模式(規(guī)律)

比如知道今天的天氣情況,推測(cè)明天的天氣情況澳窑,這叫1階馬爾可夫模型,通過昨天與今天的天氣情況户盯,推測(cè)明天的天氣情況屯伞,這叫2階馬爾可夫模型,

通過前n天的天氣情況挣磨,推測(cè)明天的天氣情況雇逞,這叫n階馬爾可夫模型荤懂。

隱馬爾可夫模型

繼續(xù)舉例,比如你的異地朋友有三大愛好塘砸,散步节仿,購物,打掃衛(wèi)生掉蔬,他每天選擇做什么只根據(jù)當(dāng)天什么樣的天氣廊宪,每次打電話他都會(huì)告訴你今天做了什么。這時(shí)你來猜測(cè)朋友當(dāng)?shù)氐奶鞖狻?/p>

當(dāng)天天氣對(duì)于你來說是隱藏的女轿,“散步箭启,購物,打掃衛(wèi)生”這些都是觀察數(shù)據(jù)蛉迹,整個(gè)系統(tǒng)就是隱馬爾可夫模型

HMM

如上圖就是一個(gè)簡(jiǎn)單的 HMM册烈,我們假設(shè)第一天下雨的概率為0.6,晴天的概率為0.4婿禽,赏僧,如果今天下雨,那么明天也下雨的概率是0.7扭倾,晴天的概率是0.3淀零,如果今天是晴天,明天也是晴天天的概率是0.6膛壹,下雨的概率是0.4.

如果是雨天驾中,去散步的概率是0.1,去購物的概率是0.3模聋, 去打掃的概率是0.6

如果是晴天肩民,去散步的概率是0.5,去購物的概率是0.4链方, 去打掃的概率是0.1

根據(jù)以上的信息持痰,我們得到了 HMM的一些基本要素:


# 狀態(tài)數(shù)目,兩個(gè)狀態(tài):下雨或晴天

states = ('下雨','晴天')


# 每個(gè)狀態(tài)下可能的觀察值

observations = ('散步', '購物', '打掃')


# 初始狀態(tài)空間的概率分布  π

start_probability = {'下雨': 0.6, '晴天': 0.4}


#與時(shí)間無關(guān)的狀態(tài)轉(zhuǎn)移概率矩陣 A (如果這個(gè)模型定好之后祟蚀,數(shù)據(jù)不會(huì)發(fā)生變化)

transition_probability = {

    '下雨' : {'下雨': 0.7, '晴天': 0.3},

    '晴天' : {'下雨': 0.4, '晴天': 0.6},

}


# 給定狀態(tài)下工窍,觀察值概率分布,發(fā)射概率 B

emission_probability = {

    '下雨' : {'散步': 0.1, '購物': 0.3, '打掃': 0.6},

    '晴天' : {'散步': 0.5, '購物': 0.4, '打掃': 0.1},

}

現(xiàn)在,重點(diǎn)是要了解并解決HMM 的三個(gè)問題

問題一:概率計(jì)算問題前酿。也叫評(píng)估問題(Evaluation)患雏。給定模型 λ=(A,B,π) 和觀察序列 O=(o1,o2,o3),計(jì)算在模型λ下觀察序列O出現(xiàn)的概率P(O|λ)

結(jié)合上面列子,問題就是罢维,已知整個(gè)模型淹仑,你朋友告訴你他連續(xù)三天做的事情分別是:散步,購物,收拾匀借。那么取试,根據(jù)模型,計(jì)算產(chǎn)生這些行為的概率是多少怀吻?

解決方法:向前算法

先計(jì)算t=1時(shí)刻瞬浓,

P(散步,下雨) = P(第一天下雨)*P(散步|下雨) = 0.6 * 0.1 = 0.06

P(散步蓬坡,晴天) = P(第一天晴天)*P(散步|晴天) = 0.4 * 0.5 = 0.2

t=2時(shí)刻猿棉, 發(fā)生“購物的概率”

如果t=2下雨:

P(第一天散步,第二天購物屑咳,第二天下雨) =【P(第一天散步萨赁,第一天下雨) * P(第二天下雨 | 第一天下雨)

                                                      + P(第一天散步,第一天晴天) * P(第二天下雨 | 第一天晴天)】

                                                      * P(第二天購物 | 第二天下雨) 

                                                      = [0.06x0.7+0.2*0.4]*0.3

                                                      =0.0366

如果t=2晴天:

P(第一天散步兆龙,第二天購物杖爽,第二天晴天) =【P(第一天散步,第一天下雨) * P(第二天晴天 | 第一天下雨)

                                                      + P(第一天散步紫皇,第一天晴天) * P(第二天晴天 | 第一天晴天)】

                                                      * P(第二天購物 | 第二天晴天) 

                                                      = [0.06x0.3+0.2*0.6]*0.4

                                                      =0.0552

t=3時(shí)刻慰安,發(fā)生“收拾的概率”

如果t=3 下雨

P(第一天散步,第二天購物聪铺,第三天收拾化焕,第三天下雨)=[P(第一天散步,第二天購物铃剔,第二天下雨) * P(第三天下雨|第二天下雨)

                                                                       +P(第一天散步撒桨,第二天購物,第二天晴天)* P(第三天下雨|第二天晴天)]

                                                                       * P(第三天打掃|第三天下雨)

                                                                       =[0.0366**0.7+0.0552**0.4]*0.6

                                                                       = 0.02862

如果t=3 晴天

P(第一天散步键兜,第二天購物凤类,第三天收拾,第三天晴天)=[P(第一天散步普气,第二天購物谜疤,第二天下雨) * P(第三天晴天|第二天下雨)

                                                                       +P(第一天散步,第二天購物棋电,第二天晴天)* P(第三天晴天|第二天晴天)]

                                                                       * P(第三天打掃|第三天晴天)

                                                                       =[0.0366**0.3+0.0552**0.6]*0.1

                                                                       = 0.00441

所以 P(第一天散步茎截,第二天購物苇侵,第三天收拾) = 0.02862 + 0.00441 = 0.03303

從以上公式可以看出后一次的算法都與上一次的有關(guān)赶盔,所以使用遞歸方式,可以很輕松的算出最終結(jié)果

問題二:學(xué)習(xí)問題(Learning)榆浓。已知觀察序列 O=(o1,o2,o3,... Or),估計(jì)模型 λ=(A,B,π) 參數(shù)于未,使得在該模型下觀察序列概率P(O|λ)最大

Baum-Welch 算法

問題三:預(yù)測(cè)問題也稱為解碼問題(decoding)。已知模型 λ=(A,B,π) 和觀察序列 O=(o1,o2,o3,... Or) ,求對(duì)給定的觀察序列條件概率 P(I|O)最大的狀態(tài)序列 I=(i1,i2,i3, ... ir)。 即給定觀察序列烘浦,求最有可能的對(duì)應(yīng)的狀態(tài)序列抖坪。

結(jié)合上面列子,問題就是闷叉,已知整個(gè)模型擦俐,你朋友告訴你他連續(xù)三天做的事情分別是:散步,購物握侧,收拾蚯瞧。那么,根據(jù)模型品擎,這三天怎么樣的天氣才最有可能讓她做這樣的事情埋合?

解法,解最大似然路徑問題

1.第一天萄传,散步甚颂。

第一天

當(dāng)?shù)谝惶焓乔缣鞎r(shí),去散步的概率最大秀菱,為0.4 * 0.5振诬,高于下雨的0.6 * 0.1

2.第二天, 購物衍菱。

第二天

這時(shí)我們要分別求出第二天是晴天贷揽,下雨的最大概率,顯然梦碗,要取得取大值禽绪,第一天必須是晴天

第二天是晴天的最大概率值:

P2(晴天) = P(散步|第一天是晴天)P(第二天晴天|第一天晴天)P(購物|第二天是晴天)

        =  0.4 * 0.5 * 0.6 * 0.4 

        = 0.048

第二天是下雨的最大概率值 :

P2(下雨) = P(散步|第一天是晴天)P(第二天雨天|第一天晴天)P(購物|第二天是雨天)

            = 0.4 * 0.5 * 0.4 * 0.3

            = 0.024

所以第二天是睛天去購物的概率最大

3.第三天,打掃洪规。

第三天

同樣印屁,我們要求出第三天是晴天,下雨的最大概率斩例。同樣雄人,要有最大值,第二天必須是晴天念赶。

第三天是晴天的最大概率值 :

P3(晴天) = P2(晴天) * P(第三天晴天|第二天晴天) * P(打掃|第三天是晴天)

            = 0.048 * 0.6 * 0.1

            = 0.00288

第三天是雨天的最大概率值 :

P3(雨天) = P2(晴天) * P(第三天雨天|第二天晴天) * P(打掃|第三天是雨天)

            = 0.048 * 0.3 * 0.6

            = 0.00864

所以由結(jié)果可以看出础钠,第三天是雨天去打掃的概率最大

所以最終的天氣序列為:晴天-下雨-下雨

隱馬爾克夫模型在分詞中的應(yīng)用

轉(zhuǎn)

隱馬爾可夫模型是一個(gè)五元組:

S:狀態(tài)集合:即所有可能的狀態(tài)s1,s2,…,sn所組成的集合。

O:觀察序列:即實(shí)際存在的一個(gè)狀態(tài)的有向序列叉谜,如狀態(tài)o1,o2,…,on旗吁,注意狀態(tài)是存在順序的。

A:狀態(tài)轉(zhuǎn)移分布停局,即S中各元素中很钓,兩兩之間轉(zhuǎn)移的概率值香府。比如當(dāng)前是s2,下一個(gè)狀態(tài)是s9的轉(zhuǎn)移概率為s2,9(小于1)码倦。

B:每種狀態(tài)出現(xiàn)的概率分布企孩。

π:初始的狀態(tài)分布

HMM模型有三個(gè)主要用途,沒有例子可能比較難于理解袁稽,分詞示例:

1.參數(shù)學(xué)習(xí)

模型沒有建立前勿璃,有已經(jīng)分好詞的部分語料。利用現(xiàn)有語料訓(xùn)練模型推汽,得到各參數(shù)的值蝗柔。我們使用最簡(jiǎn)單的HMM(設(shè)S由四種狀態(tài)構(gòu)成:詞頭,詞中民泵、詞尾癣丧、單字成詞),可以這樣做:

假如訓(xùn)練語料有兩句話:

我 愛 你 程序員栈妆。

他們 兩個(gè) 人 是 半斤八兩胁编。

a. O是觀察序列,本例中鳞尔,就是:“我嬉橙、愛、你寥假、程市框、序、員糕韧、他枫振、們、兩萤彩、個(gè)粪滤、人、是雀扶、半杖小、斤、八愚墓、兩”這16個(gè)字予权。

b. S由四種狀態(tài)構(gòu)成:詞頭(如“程”),詞中(如“序”)浪册、詞尾(如“員”)扫腺、單字成詞(如“愛”、“你”)
c. A即由一個(gè)狀態(tài)轉(zhuǎn)移到另一個(gè)狀態(tài)的概率集合议经,本例共有8種狀態(tài)
- 單字成詞->單字成詞斧账,如a我單單=1“我”后面一定是單字成詞
- 單字成詞->詞頭谴返,如a我單頭=0“我”后面一定不是詞頭煞肾,而a你單頭=1
- 詞頭->詞中
- 詞頭->詞尾
- 詞中->詞尾
- 詞中->詞中
- 詞尾->詞頭
- 詞尾->單字成詞

d. B由各狀態(tài)的概率分布構(gòu)成咧织,如b我單=1(“我”一定單字成詞)。

e. π由初始狀態(tài)的概率構(gòu)成籍救,此例中為π我=1/2(以“我”開頭的概率為1/2)习绢,π他=1/2(以“他”開頭的概率為1/2)。

2.評(píng)價(jià)問題

以上面一個(gè)問題的參數(shù)為基礎(chǔ)蝙昙,評(píng)估第一句話:我 愛 你 程序員闪萄。

“我”開頭的概率為π我=1/2,“我”轉(zhuǎn)移到“愛”的概率為a我單=1奇颠,“愛”到“你”的概率為a單單=1败去,“你”到“程”的概率為a單頭=1,“你”到“序”的概率為a頭中=1烈拒,“序”到“員”的概率為a中尾=1圆裕,而本例(因?yàn)樽痔伲總€(gè)字只出現(xiàn)一次)中所有的b都為1荆几,所以該句的概率為:

Pv=π我b我單 a我單單 b愛單a愛單單b你單 a你單頭 b程頭a程頭中b序中a序中尾*b員尾

注:至于數(shù)值越界等非原理問題這里就不詳解了吓妆,請(qǐng)大家自己找資料。

3.分詞問題

比如還以第一個(gè)問題的參數(shù)為基礎(chǔ)吨铸,來解碼還沒有分詞的句子:我愛人是程序員行拢。

因?yàn)槭鬃质恰拔摇保允恰八钡那闆r被排除诞吱。

π我=1/2舟奠,

“我”后面是單字的概率為1,a我單=1(即只能是單字)房维,其它情況的概率為0

“愛”后面是單字的概率為1鸭栖,a愛單=1,其它情況的概率為0

“人”后面是單字的概率為1握巢,a人單=1晕鹊,其它情況的概率為0

“是”后面是詞頭的概率為1,a是頭=1暴浦,其它情況的概率為0

“程”后面是詞中的概率為1溅话,a程中=1,其它情況的概率為0

“序”后面是詞尾的概率為1歌焦,a序尾=1飞几,其它情況的概率為0

所有分詞的可能性是很多的,需要采用動(dòng)態(tài)規(guī)劃的算法独撇,這里就不詳述了屑墨,只給出其中三種可能作為示例:

a. “我”為開頭躁锁,“愛”是單字成詞,“人”是單字成詞卵史,“是”是單字成詞战转,“程”是詞頭,“序”是詞中以躯,“員”是詞尾:

P1= π我b我單a我單單b愛單a愛單單b人單a人單單b是單a是單頭b程頭a程頭中b序中a序中尾*b員尾

=1/2111111111111*1=1/2

b. “我”為開頭槐秧,“愛”是詞頭,“人”是詞尾忧设,“是”是單字成詞刁标,“程”是詞頭,“序”是詞中址晕,“員”是詞尾:

P1= π我b我單a我單頭b愛頭a愛頭尾b人尾a人尾單b是單a是單頭b程頭a程頭中b序中a序中尾*b員尾

=1/2100000111111*1=0

c. “我”為開頭膀懈,“愛”是詞頭,“人”是詞中谨垃,“是”是詞尾启搂,“程”是詞頭,“序”是詞中乘客,“員”是詞尾:

P1= π我b我單a我單頭b愛頭a愛頭尾b人中a人中尾b是尾a是尾頭b程頭a程頭中b序中a序中尾*b員尾

=1/2100000001111*1=0

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末狐血,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子易核,更是在濱河造成了極大的恐慌匈织,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件牡直,死亡現(xiàn)場(chǎng)離奇詭異缀匕,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)碰逸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門乡小,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人饵史,你說我怎么就攤上這事满钟。” “怎么了胳喷?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵湃番,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我吭露,道長(zhǎng)吠撮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任讲竿,我火速辦了婚禮泥兰,結(jié)果婚禮上弄屡,老公的妹妹穿的比我還像新娘。我一直安慰自己鞋诗,他們只是感情好膀捷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著师脂,像睡著了一般担孔。 火紅的嫁衣襯著肌膚如雪江锨。 梳的紋絲不亂的頭發(fā)上吃警,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音啄育,去河邊找鬼酌心。 笑死,一個(gè)胖子當(dāng)著我的面吹牛挑豌,可吹牛的內(nèi)容都是我干的安券。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼氓英,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼侯勉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起铝阐,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤址貌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后徘键,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體练对,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年吹害,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了螟凭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡它呀,死狀恐怖螺男,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情纵穿,我是刑警寧澤下隧,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站政恍,受9級(jí)特大地震影響汪拥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜篙耗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一迫筑、第九天 我趴在偏房一處隱蔽的房頂上張望宪赶。 院中可真熱鬧,春花似錦脯燃、人聲如沸搂妻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至撰洗,卻和暖如春锹引,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背忽匈。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人引几。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像挽铁,于是被迫代替她去往敵國(guó)和親伟桅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容