序列標註問題:給定乙個句子x1…xn,生成乙個與之對應的序列y1…yn.如詞性標註。
序列標註的目標是從訓練資料中學習乙個從句子到標註序列的對映。
詞性標註的乙個難點是歧義。英文中的許多單詞可以有不同的詞性。另外乙個問題是訓練語料不可能窮盡所有的單詞,如何確定訓練語料中沒出現過單詞的詞性同樣值得研究。
詞性標註時,有兩種有用的資訊值得考慮。第一是單個單詞的詞性統計性特徵。某些單詞更有可能是名詞而某些單詞更多的是動詞。如quarter既可以做動詞又可以做名詞,但是更多的時候做的是名詞。第二種資訊是第乙個單詞來說上下文的資訊對其有影響。譬如名詞後面更多的接動詞而不是形容詞,而名詞前面更多的是形容詞而不是副詞。當然,有時候這兩種資訊表現的並不一致,甚至會出現相互衝突的現象。這在後面的模型中會具體考慮這個問題。
命名實體識別的輸入是乙個句子,目標是將句子中的所有已定義的命名實體找出來(如人名、地點名或者公司名等)。句子中的每個單詞或者是每個命名實體的開始(如sc表示公司名的開始)、繼續(如cc為公司名的非其實單詞)或者非命名實體單詞(na).
自然語言處理中的許多問題都是監督式的學習問題。例如在標註問題中,我們要從訓練樣本中學習乙個輸入x到標記序列y的對映。在機器翻譯中,輸入x可以是源語言,輸出y是需要得到的語言。在語音識別當中,輸入是語音,輸出是文字。所有這些問題都是要學習從輸入x到輸出y的乙個對映函式,通過給定的標記資料。
一種方式是定義對映f(x)為條件概率。在這種方法種,會有乙個條件概率模型對所有的x,y定義了所有的條件概率:p(y|x).模型的引數通過訓練語料學習得到。對於測試集中的乙個資料x,模型的輸出就是:
f(x)=argmaxy∈
yp(y
|x) .也就是將最有可能的輸出作為真實的輸出。
另外乙個在自然語言處理和機器學習中用的比較多的方法是定義乙個生成式模型。而不是直接估計條件概率p(y|x).在生成式模型中會學習聯合概率模型p(x,y).模型的引數仍然從訓練預料中學習得到。在許多情形下會將聯合概率寫成:p(x,y)=p(y)*p(x|y).然後分別估計p(y)和p(x|y).這兩個部分又有如下解釋:
通過聯合概率以及貝葉斯公式,我們可以得到p(y|x)=p(y)p(x|y)/p(x).然後求argmaxp(y|x).這種將聯合概率分解為p(y)和p(x|y)的模型被稱為噪音通道模型。直觀來講,生成模型的過程如下:首先通過概率密度p(y)生成乙個標記y,然後又根據條件概率密度p(x|y)生成x.我們目標是當我們給定x之後尋找最有可能生成x的y.其中給定輸入x尋找輸出f(x)的問題被成為解碼問題。
對於序列標註問題,如何通過生成式模型來求解。
這裡面有三個基本問題:
隱馬爾可夫模型的關鍵就在於定義
p(x1…xn,y1…)=∏n
+1i=
1p(y
i|yi
−2,y
i−1)
∏ni=1p(
xi|y
i)
其中y0=
y−1=
∗ 在三元隱馬爾可夫模型下,句子生成的步驟如下:
初始化i=1並且y0
=y−1
=∗根據分布q(
yi|y
i−2,
yi−1
) 生成yi
如果yi
=sto
p ,返回y1
...y
n,x1
...x
n ,否則根據條件概率e(
xi|y
i)生成xi
並且i+1返回第二步
模型引數的估計採用最簡單的極大似然估計,就是統計訓練語料中相關詞、詞性出現的次數,然後做除法。為了避免資料稀疏的問題,可以採用語言模型中的平滑處理方法,就是一元、二元、三元模型估計一塊上,最後做個折中。如 q(s|u,v)=a1*qm
l(s|
u,v)
+a2*qqm
l(s|
v)+a3*qm
l(s)
對於給定的輸入語句x1…xn,解碼演算法是找出最有可能的序列y1…yn.
最簡單的方法就是列舉法,就是遍歷整個解空間,尋找是概率p(x1…xn,y1…yn)最大的y1…yn.但是這種方法對於標記詞典大小為n,句子長度為m的情況,總的可能序列是|n
|m種,顯然時間複雜度太大。
維特比演算法
列舉法的時間複雜度太高,採用動態規劃的維特比演算法。
輸入仍然是句子序列x1…xn.對於這個句子,對於任意的ki
n1...n,
對於任何序列y−
1,y0
,y1,
...y
k,其中
y−1=
y0=∗
,定義如下方法: r(
y−1,
y0,y
1,..
.,yk
)=∏k
i=1q
(yi|
yi−2
,yi−
1)∏k
i=1e
(xi|
yi) 因此: p(
x1..
.xn,
y1..
.yn+
1=r(
∗,∗,
y1,.
..,y
n)∗q
(yn+
1|yn
−1,y
n)=r
(∗,∗
,y1,
...,
yn)∗
q(st
op|y
n−1,
yn)
定義π(
k,u,
v)是對
長度為k
,以u,
v結尾的
序列的最
大標記序
列。 令
π(0,
∗,∗)
=1有如下迭代公式 π(
k,u,
v)=m
ax(π
(k−1
,w,u
)∗q(
v|w,
u)∗e
(xk|
v))
演算法逐步的計算π(
k,u,
v)一直
到k的長
度為n為
止 完整的解碼演算法如下:
也可以在每一步儲存使得當前序列概率最大的標記。其演算法如下:
首先學習乙個三元的隱含馬爾可夫模型,這個模型有引數:q(s|u,v)和e(x|s). 定義任何句子和標記的聯合概率為(其中yn
+1=s
top ): p(
x1..
.xn,
y1..
.yn+
1)=∏
n+1i
=1q(
yi|y
i−2,
yi−1
)∏ni
=1e(
xi|y
i)給予乙個訓練語料,可以使用最大似然估計獲取上述的引數: q(
s|u,
v)=c
(u,v
,s)c
(u,v
) e(
x|s)
=c(s
−>x)
c(s)
給定乙個句子x1
...x
n 以及由2估計的引數q和e(即訓練好的隱馬模型),通過維特比解碼演算法(figure 2.5)獲得概率最大的標記序列。
隱馬爾可夫模型
隱 馬爾可夫模型 hidden markov model,hmm 作為一種統計分析模型,創立於20世紀70年代。80 年代得到了傳播和發展,成為訊號處理的乙個重要方向,現已成功地用於語音識別 行為識別,文字識別以及故障診斷等領域。隱馬爾可夫模型是馬爾可夫鏈的一種,它的狀態不能直接觀察到,但能通過觀測...
隱馬爾可夫模型
對隱馬爾可夫模型的解釋,個人覺得一句簡單概括就是 在馬爾可夫鏈的情況下對每乙個狀態都加入乙個單獨輸出口,而我們把這個輸出口定為可視視窗,可把馬爾可夫鏈放到裡面藏起來。ok!這樣就是知道隱馬爾可夫模型的結構了。通過如下例子來說明hmm的含義。假定乙個暗室中有n個口袋,每個口袋中有m種不同顏色的球,乙個...
隱馬爾可夫模型
搖色子的比喻很好 它解釋了模型的概念 模型的n個狀態 s 對應於色子的種類 隱狀態 真實不可見狀態s的序列,是每次用的色子種類d4 d6 d8組成的序列 觀測狀態 o 是可見的狀態,這裡是色子搖出的點數 觀測概率 是當確定用d4 d6 d8搖的色子的種類,求產生某種點數的概率 如 d4產生點數1的概...