Phần này sẽ mô tả một trường hợp đặc biệt của HMMs: thuật toán được áp dụng cho một thuật toán gán nhãn triagram. Trong một thuật toán gán nhãn triagram HMMs, mỗi triagram của một nhãn và mỗi cặp nhãn/từ có một số tham số tương ứng. Tham số tương ứng với một triagram (x, y, z) là αx,y,z, và tham số tương ứng với cặp nhãn/từ (t, w) là αt,w. Một phương pháp thường sử dụng các tham số để ước lượng xác suất điều kiện α x, y, z = log(P(z | x, y)), α w, t = log(P(w | t)).
Ta kí hiệu chuỗi [w1, w2, .., wn] là w[1:n]; chuỗi nhãn [t1, t2, .., tn] là t[1:n]. Trong thuật toán gán nhãn triagram, điểm số của một cặp nhãn t[1:n] và chuỗi từ
w[1:n] là n
i t w n
i 1ti 2,t 1,ti 1i, i . Khi các tham số là các xác xuất điều kiện thì điểm số sẽ được tính theo log của xác xuất đồng thời P(w[1:n], t[1:n]). Thuật toán Viterbi được dùng để tìm ra chuỗi được gán nhãn có điểm số cao nhất.
Để thay thế cho ước lượng tham số theo cực đại hóa độ đo likelihood, một thuật toán được phát biểu như sau:
Đầu vào: Tập huấn luyện bao gồm n câu đã được gán nhãn. Câu thứ i có độ dài ni. Tập các mẫu được kí hiệu ( i
n i
ni t i
w[1: ], [1: ]), với i = 1…n.
Thuật toán huấn luyện gồm các bước sau:
Khởi tạo tất cả các tham số αx,y,zvà αt,w bằng 0.
Với t = 1…T, i = 1...n,
o Sử dụng thuật toán Viterbi để tìm ra chuỗi nhãn tốt nhất cho câu i
ni
w[1: ]đối với các tham số hiện thời, giả sử là [1: ]
i
n
z .
o Đối với mỗi triagram nhãn (x, y, z), có c1 lần xuất hiện trong i
ni
t[1: ] và c2 lần xuất hiện trong [1: ]
i
n
z . Nếu c1 ≠ c2, ta cập nhật tham số:
αx,y,z= αx,y,z + c1 – c2.
o Với mỗi cặp nhãn/từ (t, w) xuất hiện c1 lần trong ( i
ni
w[1: ], i ni
t[1: ]) và c2 lần xuất hiện trong ( i ni w[1: ], [1: ] i n z ). Nếu c1 ≠ c2, ta sẽ cập nhật tham số: αt,w = αt,w + c1 – c2.
Ví dụ: một chuỗi thứ i được gán nhãn ( i n i
ni t i
w[1: ], [1: ]) trong dữ liệu huấn luyện là: the/D man/N saw/V the/D dog/N
và theo tham số hiện thời thì chuỗi có điểm cao nhất ( i ni
w[1: ], [1: ]
i
n
z ) là: the/D man/N saw/N the/D dog/N.
Khi đó αD,N,V, αsaw/V, αN,D,V, αV,D,N được tăng lên 1, αD, N, N, αN,N,D, αN,D,N,
αsaw/N bị giảm đi 1,…
Như vậy, tham số của các thuộc tính bị bỏ qua (không được nhận) sẽ được tăng lên 1, còn tham số của các thuộc tính không đúng (bị nhận nhầm) sẽ bị giảm đi 1. Chú ý rằng i
ni
t[1: ]= [1: ]
i
n
z có nghĩa là chuỗi nhãn đã được gán đúng, và khi đó giá trị của các tham số là không đổi.