日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【中文分词】隐马尔可夫模型HMM

發布時間:2025/3/17 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【中文分词】隐马尔可夫模型HMM 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Nianwen Xue在《Chinese Word Segmentation as Character Tagging》中將中文分詞視作為序列標注問題(sequence tagging problem),由此引入監督學習算法來解決分詞問題。

1. HMM

首先,我們將簡要地介紹HMM(主要參考了李航老師的《統計學習方法》)。HMM包含如下的五元組:

  • 狀態值集合\(Q=\{q_1, q_2, \cdots, q_N\}\),其中\(N\)為可能的狀態數;
  • 觀測值集合\(V=\{v_1, v_2, \cdots, v_M\}\),其中\(M\)為可能的觀測數;
  • 轉移概率矩陣\(A=\left[ a_{ij} \right]\),其中\(a_{ij}\)表示從狀態\(i\)轉移到狀態\(j\)的概率;
  • 發射概率矩陣(在[2]中稱之為觀測概率矩陣\(B=\left[ b_{j}(k) \right]\),其中\(b_{j}(k)\)表示在狀態\(j\)的條件下生成觀測\(v_k\)的概率;
  • 初始狀態分布\(\pi\).

一般地,將HMM表示為模型\(\lambda = (A, B, \pi)\),狀態序列為\(I\),對應測觀測序列為\(O\)。對于這三個基本參數,HMM有三個基本問題:

  • 概率計算問題,在模型\(\lambda\)下觀測序列\(O\)出現的概率;
  • 學習問題,已知觀測序列\(O\),估計模型\(\lambda\)的參數,使得在該模型下觀測序列\(P(O|\lambda)\)最大;
  • 解碼(decoding)問題,已知模型\(\lambda\)與觀測序列\(O\),求解條件概率\(P(I|O)\)最大的狀態序列\(I\)

2. 中文分詞

將狀態值集合\(Q\)置為\(\{ B, E, M, S\}\),分別表示詞的開始、結束、中間(begin、end、middle)及字符獨立成詞(single);觀測序列即為中文句子。比如,“今天天氣不錯”通過HMM求解得到狀態序列“B E B E B E”,則分詞結果為“今天/天氣/不錯”。

通過上面例子,我們發現中文分詞的任務對應于解碼問題:對于字符串\(C=\{ c_1, \cdots, c_n \}\),求解最大條件概率

\[ \max P(t_1, \cdots, t_n | c_1, \cdots, c_n) \]

其中,\(t_i\)表示字符\(c_i\)對應的狀態。應如何求解狀態序列呢?解決的辦法便是Viterbi算法;其實,Viterbi算法本質上是一個動態規劃算法,利用到了狀態序列的最優路徑滿足這樣一個特性:最優路徑的子路徑也一定是最優的。定義在時刻\(t\)狀態為\(i\)的概率最大值為\(\delta_t(i)\),則有遞推公式:

\begin{equation}
\delta_{t+1}(i) = \max { [\delta_t(j) a_{ji}] b_i(o_{t+1}) }
\label{eq:hmm}
\end{equation}

其中,\(o_{t+1}\)即為字符\(c_{t+1}\)

3. 開源實現

以下的源碼分析基于Jieba 0.36版本。

Jieba的jieba.finalseg實現HMM中文分詞。prob_start.py定義初始狀態分布\(\pi\)

P={'B': -0.26268660809250016,'E': -3.14e+100,'M': -3.14e+100,'S': -1.4652633398537678}

prob_trans.py轉移概率矩陣\(A\)

P={'B': {'E': -0.510825623765990, 'M': -0.916290731874155},'E': {'B': -0.5897149736854513, 'S': -0.8085250474669937},'M': {'E': -0.33344856811948514, 'M': -1.2603623820268226},'S': {'B': -0.7211965654669841, 'S': -0.6658631448798212}}

prob_emit.py定義了發射概率矩陣\(B\),比如,P("和"|M)表示狀態為M的情況下出現“和”這個字的概率;

P={'B': {'一': -3.6544978750449433,'丁': -8.125041941842026,'七': -7.817392401429855,...}'S': {':': -15.828865681131282,'一': -4.92368982120877,...}...}

關于訓練模型的生成,作者在這里有解釋,來源主要有兩個:標準的切分語料 + ICTCLAS切分的txt小說。還有一個大家可能會疑惑的問題,為什么Jieba中的概率矩陣中出現了負數?不急,我們先來看看Viterbi算法的實現——jieba.finalseg.viterbi函數:

PrevStatus = {'B': 'ES','M': 'MB','S': 'SE','E': 'BM' }def viterbi(obs, states, start_p, trans_p, emit_p):V = [{}] # tabularpath = {}for y in states: # initV[0][y] = start_p[y] + emit_p[y].get(obs[0], MIN_FLOAT)path[y] = [y]for t in xrange(1, len(obs)):V.append({})newpath = {}for y in states:em_p = emit_p[y].get(obs[t], MIN_FLOAT)(prob, state) = max([(V[t - 1][y0] + trans_p[y0].get(y, MIN_FLOAT) + em_p, y0) for y0 in PrevStatus[y]])V[t][y] = probnewpath[y] = path[state] + [y]path = newpath(prob, state) = max((V[len(obs) - 1][y], y) for y in 'ES')return (prob, path[state])

為了適配中文分詞任務,Jieba對Viterbi算法做了如下的修改:

  • 狀態轉移時應滿足PrevStatus條件,即狀態\(B\)的前一狀態只能是\(E\)或者\(S\),...
  • 最后一個狀態只能是\(E\)或者\(S\),表示詞的結尾。

與此同時,Jieba在實現公式\eqref{eq:hmm}時,對其求對數,將相乘轉化成了相加:

\[ \ln \delta_{t+1}(i) = \max \{ \ln \delta_t(j) + \ln a_{ji} + \ln b_i(o_{t+1}) \} \]

這就回答了上面的問題——為什么概率矩陣中出現了負數,是因為對其求了對數。

Jieba的HMM分詞:

from jieba.finalseg import cutsentence = "小明碩士畢業于中國科學院計算所,后在日本京都大學深造" print('/'.join(cut(sentence)))

分詞結果為“小明/碩士/畢業于/中國/科學院/計算/所/,/后/在/日/本京/都/大學/深造”,我們發現:關于“日本京都”出現分詞錯誤的情況。這是因為最大條件概率\(P(I|O)\)對應的狀態序列不一定是分詞正確的標注序列。此外,HMM做了兩個基本假設:

  • 齊次Markov性假設,即任意時刻t的狀態僅與前一時刻狀態相關,與其他時刻的狀態、時刻t均無關;
  • 觀測獨立性假設,任意時刻t的觀測僅依賴于該時刻HMM的狀態,與其他的觀測及狀態均無關。

HMM受限于這兩個假設(字符\(c_t\)僅與前一字符\(c_{t-1}\)相關),而不能學習到更多的特征,泛化能力有限。

4. 參考資料

[1] Xue, Nianwen. "Chinese word segmentation as character tagging." Computational Linguistics and Chinese Language Processing 8.1 (2003): 29-48.
[2] 李航. "統計學習方法." 清華大學出版社, 北京 (2012).
[3] Itenyh, Itenyh版-用HMM做中文分詞二:模型準備.
[4] Django夢之隊, 對Python中文分詞模塊結巴分詞算法過程的理解和分析.(源鏈接掛了,為轉載鏈接)

轉載于:https://www.cnblogs.com/en-heng/p/6164145.html

總結

以上是生活随笔為你收集整理的【中文分词】隐马尔可夫模型HMM的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 人妻互换免费中文字幕 | 欧美成网站| 日本精品在线观看视频 | 久草电影在线 | 国产无遮挡一区二区三区毛片日本 | 黄色一级免费网站 | 66精品| 午夜伦伦 | 精品肉丝脚一区二区三区 | 涩涩视频免费在线观看 | 免费黄色在线 | 亚洲av成人无码网天堂 | 成人免费区一区二区三区 | 国产8区| 玖玖精品在线视频 | 五十路熟母 | 求av网站 | 久色精品视频 | 总受合集lunjian双性h | 91刺激视频| 乳色吐息在线观看 | 日韩av高清无码 | 极品销魂美女一区二区 | 香蕉视频在线免费 | 99视频在线看 | 香蕉视频黄在线观看 | 黄色大片中文字幕 | 福利电影一区二区三区 | 欧美激情视频一区二区三区在线播放 | 亚洲视频免费观看 | 国产麻豆一级片 | 欧美一区二区三区久久精品 | 超碰免费观看 | 国产精品性色 | 欧美高清性xxxxhd | 亚洲成人av电影 | 99re99热| 日本高清三区 | 69精品久久久 | 日韩性生交大片免费看 | xxxx.国产 | 精品国产99一区二区乱码综合 | 久久观看最新视频 | 91嫩草欧美久久久九九九 | 人妻 日韩精品 中文字幕 | 天堂av.com| 天天天天天天干 | 亚洲综合小说 | 变态另类一区二区 | 日韩精品福利视频 | 精品久久999 | 麻豆高清 | 在线观看第一页 | 久久久国产精品 | 欧美在线免费播放 | 4444亚洲人成无码网在线观看 | 999久久久| 看了让人下面流水的视频 | 老女人毛片50一60岁 | wwwwww在线观看 | 刘亦菲一区二区三区免费看 | 欧美 日韩 国产精品 | 国产伦精品一区二区三区高清版禁 | 日本不卡一区二区在线观看 | 爆乳2把你榨干哦ova在线观看 | 91精品人妻互换一区二区 | 日本丰满少妇做爰爽爽 | 成人性视频在线 | 成人黄色一区二区三区 | 一区二区三区高清不卡 | 亚洲自拍天堂 | 日韩视频一区二区三区在线播放免费观看 | 午夜诱惑痒痒网 | 黄色成人在线观看 | 日韩欧美在线观看一区二区三区 | 岛国av一区二区三区 | 精品国产乱码久久久久夜深人妻 | 九色综合网 | 丰满人妻一区二区三区免费 | 日本一区二区三区成人 | 日本老熟妇乱 | 日本免费专区 | 中文字幕人妻一区二区 | 欧美日韩免费做爰视频 | 91在线精品李宗瑞 | 日韩精品一卡 | 国产精品一二三四五 | 天天综合久久综合 | 国产无套内射又大又猛又粗又爽 | 落日余晖图片 | 中文字幕第九页 | 色女人在线| 日啪| 在线草| 欧美综合第一页 | 粉嫩av一区二区三区天美传媒 | 黄色免费小视频 | 丰满女人又爽又紧又丰满 | 91丨九色丨蝌蚪丨对白 |