* Dịch máy thống kê trở thành một mô hình chính bằng cách ánh xạ từ vựng từ ngôn ngữnguồn sang ngôn ngữ đích sử dụng các mô hình dịch thuật.. Dịch máy thống kê SMT là một phương pháp d
Trang 1BÁO CÁO CHUYÊN ĐỀ MÔN NGÔN NGỮ HỌC MÁY TÍNH
Tên đề tài:
TÌM HIỂU CÔNG CỤ GIZA++
TRONG DỊCH MÁY THỐNG KÊ
MỤC LỤC 1.Giới thiệu về dịch máy thống kê và Giza++ 3
2.Các tính năng của công cụ: 4
3.Nguyên lý thiết kế và phương pháp xây dựng công cụ 5
3.1 Các mô hình huấn luyện: 5
3.2 Quá trình huấn luyện: 9
3.3 Phương pháp xây dựng công cụ: 10
3.4 Ứng dụng các mô hình: 16
4 Cài đặt và sử dụng 20
4.1 Cài đặt Giza++ 20
4.2 Chạy thử nghiệm GIZA++: 21
5 Kết luận 22
5.1 Kết quả đạt được 22
5.2 Hướng phát triển tiếp theo 22
Trang 25.3 Rút ra bài học cho bản thân 22
7.TÀI LIỆU THAM KHẢO 23
Trang 31 Giới thiệu về dịch máy thống kê và Giza++
Dịch máy hay còn gọi là dịch tự động là việc dịch 1 ngôn ngữ nguồn ra một hay nhiềungôn ngữ đích một cách tự động không có sự can thiệp của con người
Theo sự tìm hiểu của em, ngày nay có hai cách tiếp cận chính cho dịch máy:
Dựa trên luật
Dựa trên ngữ liệu gồm:
o Dịch máy dựa trên ví dụ
o Dịch máy dựa trên thống kê
* Dịch máy dựa trên luật: cần phải xây dựng hệ thống luật, cú pháp, ngữ nghĩa, xây dựng từđiển đầy đủ thông tin Để thực hiện phương pháp dịch máy dựa trên luật đòi hỏi nhiều thờigian công sức nhưng sản phẩm dịch vẫn không đạt độ chính xác như mong đợi
* Dịch máy thống kê trở thành một mô hình chính bằng cách ánh xạ từ vựng từ ngôn ngữnguồn sang ngôn ngữ đích sử dụng các mô hình dịch thuật Thực hiện quá trình dịch nhờ vàoviệc học từ ngữ liệu:
Dựa vào các mô hình máy học
Khá đơn giản và cho kết quả tốt
Đặc điểm:
Không cần nắm rõ luật của từng ngôn ngữ -> có thể dùng cho nhiều ngôn ngữ khácnhau
Cần có kho dữ liệu chuẩn để huấn luyện
Tuy nhiên có một số khuyết điểm sau:
Phải cung cấp một lượng lớn dữ liệu đào tạo
SMT không hề biết gì về cấu trúc cú pháp cơ bản của thuật toán trên câu trong hệthống dịch máy
Yêu cầu về chuyên môn ở từng lĩnh vực
Khó khăn trong việc chọn nghĩa cho từ (một từ có nhiều nghĩa)
Dịch máy thống kê (SMT) là một phương pháp dịch máy, trong đó các bản dịch đượctạo ra trên cơ sở các mô hình thống kê có các tham số được bắt nguồn từ việc phântích các cặp câu song ngữ
Dịch máy thống kê trên cơ sở từ
Trong bài báo cáo này, em xin trình bày công cụ Giza++ ứng dụng trong dịch máy thống
kê (SMT) trên cơ sở từ Trong dịch máy thống kê trên cơ sở từ, các đơn vị cơ bản của bảndịch là một từ trong ngôn ngữ tự nhiên Giza++ dùng để tập huấn cho các mô hình dịch IBM,
mô hình HMM Hầu hết các hệ thống dựa trên cụm từ vẫn còn sử dụng Giza++ để liên kếtcâu, trích rút ra các cặp câu song ngữ và mô hình ngôn ngữ Vì những ưu thế của Giza++,hiện nay có một số nỗ lực đưa áp dụng tính toán phân tán trực tuyến cho phần mềm này.Phần II của bài báo cáo nêu sơ lược về các tính năng của công cụ Giza++
Trang 4Phần III giới thiệu các mô hình dịch thuật thống kê dựa trên các mô hình dịch thuật thống
kê của IBM, tiến trình huấn luyện các mô hình, phương pháp xây dựng công cụ Phần IV càiđặt và ứng dụng Giza++ trên hệ điều hành Linux Ubutun với phần mềm GIZA++ v.1.0.3
2 Các tính năng của công cụ:
Bộ công cụ dịch máy thống kê EGYPT chứa GIZA một chương trình huấn luyện các môhình dịch máy thống kê từ cặp câu song ngữ GIZA được viết bằng C++ với thư việnSTG (kiểm tra bằng cách sử dụng gnu C++)
http://www.clsp.jhu.edu/ws99/projects/mt/toolkit/
(được phát triển trong tổ chức WS’99 Summer Workshop organized bởi trung tâmLanguage and Speech Processing của Johns Hopkins University)
GIZA++ là một phần mở rộng chương trình GIZA
Ngày nay, GIZA++ được sử dụng để sắp xếp từ ngữ liệu song ngữ, sự sắp xếp này là
cơ sở để xây dựng các mô hình dựa trên cụm từ, một kĩ thuật chính trong dịch máythống kê
Gói chương trình GIZA++ và các tính năng
Plain2snt.out: công cụ đơn giản để chuyển đổi văn bản vào định dạng GIZA
Plain2snt.out: công cụ đơn giản để chuyển đổi GIZA vào văn bản rõ
TrainGIZA++.sh: Mẫu kịch bản để thực hiện huấn luyện một ngữ liệu trong định dạngGIZA
mkcls: tính toán các lớp từ trong một ngữ liệu đơn giản
snt2cooc: tạo ra tập tin dạng coocurrence
Trong hệ thống dịch máy thống kê MOSES (2010), GIZA++ được sử dụng kết hợp với các
Trong đó, Sử dụng công cụ SRILM để xây dựng mô hình ngôn ngữ tri-gam
Công cụ xây dựng mô hình dịch: GIZA++-v2, mkcls-v2 Trong đó, Sử dụng GIZA++ để xâydựng mô hình dịch và dùng mkcls để ước lượng giá trị cực đại cho mỗi mô hình
Trang 53 Nguyên lý thiết kế và phương pháp xây dựng công cụ
Theo em, nguyên lý thiết kế dựa vào các mô hình IBM 1-5, mô hình HMM để huấn luyện cách dịch tự động
3.1 Các mô hình huấn luyện:
Trang 6Độ dài của xác suất: Pr(J | y) ≈ n(J |I )
Thống kê từ vựng
Thống kê sắp xếp Thống kê từ vựng
Trang 7Tối ưu hóa liên kết với Model 2
Tìm sự sắp xếp tốt nhất từ
Cách sử dụng Model 2:
Thuật toán Viterbi (x, y, l, a)
For j := 1 until J A[j] := argmax a(i | j, J, I ) · l(xj | yi) End-for
0<=i<=I Return: A
Chi phí tính toán của thuật toán này là: O( J X I ).
Trang 8Xét một từ nguồn yi, số vị trí trống bao gồm cả vị trí j được đặt trước τi,k,là:
f (φi | yi) khả năng tạo ra xác suất
l(x | yi) xác suất từ vựng
d=1(vj | CX (xj ), vc(i−1), vJ − φi + 1) · (1 − δ(vj , vj−1)) xác suất nhập nhằng của
vị trí đầu tiên của bảng tính
d>1(vj − vπi,k−1 |CX (xj ), vJ − vπi,k−1 − φi + k) · (1 − δ(vj , vj−1)) xác suất nhập nhằng của các vị trí còn lại trong bảng tính
3.2 Quá trình huấn luyện:
Theo P F Brown thì quá trình huấn luyện có các đặc điểm sau:
* Mỗi mô hình đều có 1 tập hợp cụ thể các thông số tự do
Trang 9* Ví dụ cho mô hình IMB 4:
* Để huấn luyện cho các thông số của mô hình, sử dụng một ngữ liệu đào tạo song song bao gồm các cặp câu S:
* Huấn luyện được thực hiện bằng cách sử dụng thuật toán EM(Expectation-Maximization).Giải thuật EM là cách gọi chung của giải thuật lặp (iterative) với một giá trị ban đầu chocác tham số của mô hình và sau đó hiệu chỉnh các giá trị này qua mỗi lần lặp nhằm gia tăng
độ tin cậy (likelihhood) của dữ liệu quan sát được
Những biểu hiện cụ thể của giải thuật EM đã được áp dụng cho một số bài toán khácnhau trong xử lí ngôn ngữ tự nhiên như:
Để ước lượng tham số của mô hình HMM,
ta dùng phiên bản của giải thuật EM có tên
là Baum-Welch hay Forward-Backward
Để ước lượng tham số của văn phạm xác suất, ta dùng phiên bản của giải thuật EM
có tên là Inside-Outside
Để làm trơn (trơn) trong mô hình dựa trên HMM, ta dùng phiên bản của giải thuật
EM có tên là Linear Interpolation (nội suy tuyến tính)
* Tối ưu khả năng xảy ra bởi thuật toán EM
* Không có phương pháp hiệu quả để tính toán các số lượng ước tính
* Số lượng ước tính gần đúng bởi:
Tính toán liên kết (gần đúng) nhất có thể xảy ra
Áp dụng các sửa đổi: di chuyển và đổi chỗ
Tổng các số lượng ước tính cho tất cả sự sắp xếp có xác suất lớn hơn xác suất của sốlần liên kết có thể xảy ra
Xem chi tiết hơn P F Brown et al The mathematics of statistical machinetranslation: parameter estimation Computational Linguistics, vol 19 (2),263–310, 1993
3.3 Phương pháp xây dựng công cụ:
Trong phần phương pháp xây dựng công cụ, em xin đề cập đến các vấn đề sau:
Định dạng file input là các file từ vựng, các file dạng bitext, file từ điển
Cách cấu hình cho file GIZA++
Trang 10 Định dạng file output là các bảng xác suất.
** Định dạng file input: các file từ vựng
Mỗi mục được lưu trữ trên một dòng như sau:
uniq_id1 string1 no_occurrences1 uniq id2 string2 no occurrences2 uniq id3 string3 no occurrences3
.Sau đây là một ví dụ:
File từ vựng nguồn File từ vựng đích
uniq_ids là các số nguyên dương có thứ tự
0 được dành riêng cho thẻ đặc biệt NULL
** Định dạng file input: file bitext
Mỗi cặp câu được lưu trữ trên 3 dòng:
Dòng đầu tiên là số lần của mỗi cặp câu
Dòng thứ 2 là câu nguồn đã được mã hóa bằng cách sử dụng các tập tin từ vựng
Thứ 3 là câu đích trong cùng một định dạng
Đây là một mẫu của 3 câu:
1
Trang 11** Định dạng file input: file từ điển
Tập tin từ điển có định dạng như sau:
target word id source word id
Danh sách phải được sắp xếp theo target word id
Nếu 1 từ điển được cung cấp trong các tập tin cấu hình GIZA++ sẽ làm thay đổi bộđếm cooccurrence trong phiên làm việc đầu tiên của model 1 đó là đặc điểm của sựràng buộc trong từ điển
** Cấu hình file GIZA++:
model1iterations 5 (số lần lặp của Model 1)
model2iterations 0 (số lần lặp của Model 2)
model3iterations 5 (số lần lặp của Model 3)
model4iterations 5 (số lần lặp của Model 4)
model5iterations 0 (số lần lặp của Model 5)
model6iterations 0 (số lần lặp của Model 6)
// tham số chứa các heuristics khác nhau trong GIZA++ đánh giá hiệu quả của huấn luyện
mô hình :
Trang 12//
countincreasecutoff 1e-06 (biến đếm tăng ngưỡng cutoff)
countincreasecutoffal 1e-05
// (biến đếm tăng ngưỡng cutoff cho liên kết trong đào tạo các mô hình tạo sinh)
mincountincrease 1e-07 (tăng số lượng tối thiểu)
peggedcutoff 0.03
// (mối quan hệ xác suất cutoff cho alignment-centers trong pegging)
probcutoff 1e-07 (ngưỡng xác suất cutoff trong xác suất từ vựng)
probsmooth 1e-07 (giá trị trơn xác suất)
// các thông số cho sự mô tả kiểu và số lượng của output:
//
-compactalignmentformat 0
// (0:định dạng chi tiết alignment, 1: định dạng alignment dạng rút gọn )
hmmdumpfrequency 0 (tần suất kết xuất của HMM)
// l (tên log file)
log 0 (0: không logfile; 1: logfile)
model1dumpfrequency 0 (tần suất kết xuất của Model 1)
model2dumpfrequency 0 (tần suất kết xuất của Model 2)
model345dumpfrequency 0 (tần suất kết xuất của Model 3/4/5)
nbestalignments 0 (in n sự sắp xếp tốt nhất)
nodumps 0 (1: không ghi ra bất kì file nào)
// o (output file dạng tiền tố)
onlyaldumps 0 (1: không ghi ra bất kì file nào)
// outputpath (đường dẫn output)
transferdumpfrequency 0 (output: dump của chuyển từ Model 2 sang 3)verbose 0 (0: không phức tạp; 1: phức tạp)
Trang 13-// s (tên file từ vựng nguồn)
// (tham số smooting cho xác suất biến thể trong Model 5
// (phép nội suy tuyến tính với hằng số)
nsmooth 64
// (trơn cho các tham số sản sinh (giá trị tốt là : 64):
// giá trị của độ dài từ phụ thuộc vào các tham số sản sinh )
nsmoothgeneral 0
//(trơn cho các tham số sản sinh (default: 0):
// số lượng từ phụ thuộc các tham số định dạng cho các mô hình)
// Các thông số định dạng cho các mô hình:
// -
compactadtable 1
// (1: bảng sắp xếp 3 chiều cho IBM-2 và IBM-3)
deficientdistortionforemptyword 0
// (0: IBM-3/IBM-4 được mô tả trong (Brown et al 1993);
// 1: mô hình biến thể của từ rỗng bị thiếu;
// 2: mô hình biến thể của từ rỗng bị thiếu (khác mô hình kia);
// thông số này được thiết lập giúp ta tránh được lỗi trong suốt quá trình huấn luyện // theo mô hình IBM-3
// và IBM-4 nhiều từ liên kết với từ rỗng )
depm4 76
Trang 14// (d_{ 1}: &1:l, &2:m, &4:F, &8:E, d_{>1}&16:l, &32:m, &64:F, &128:E)
depm5 68
// (d_{ 1}: &1:l, &2:m, &4:F, &8:E, d_{>1}&16:l, &32:m, &64:F, &128:E)
emalignmentdependencies 2
// (lextrain: phụ thuộc liên kết trong mô hình HMM)
// &1: độ dài câu;
// &2: lớp (class) trước;
// &4: vị trí trước;
// &8: vị trí tiếng Anh;
// &16: lớp tiếng Anh)
emprobforempty 0.4 (f-b-trn: xác xuất cho từ rỗng)
// các tham số định nghĩa cho thuật toán EM:
// - m5p0 -1
// (sửa giá trị cho tham số p_0 trong IBM-5 (nếu âm thì nó được quyết định
// trong lúc huấn luyện))
// (sửa giá trị cho tham số p_0 trong IBM-3/4 (nếu âm
// sẽ được quyết định trong lúc huấn luyện))
pegging 0 (0: không pegging; 1: do pegging)
** Định dạng file output: các bảng xác suất
1 Bảng dịch ( *.t*.* )
prob table.t1.n = t bảng được tạo ra sau khi huấn luyện Model 1 được lặp đi lặp lại prob table.t2.n = t bảng được tạo ra sau khi huấn luyện Model 2 được lặp đi lặp
Trang 15prob table.4.n = t bảng được tạo ra sau khi huấn luyện Model 4 được lặp đi lặp
Mỗi dòng có định dạng sau:
s id t id P (t id|s id)
2 Khả năng tạo bảng mới (*.n3.* )
Mỗi dòng trong file này có dạng sau:
source token id p0 p1 p2 pn nơi mà p0 là xác suất mà token nguồn không
có khả năng tạo ra (nên=0) Tương tự p1 là 1, p2 là 2, n là khả năng tạo sinh tối đa cóthể được định nghĩa trong chương trình
3 Xác suất chèn 1 NULL sau một từ nguồn chứa chỉ 1 dòng với xác suất không chèn một token NULL.
4 Các bảng liên kết (*.a*.*)
Định dạng mỗi dòng như sau:
i j l m P (i | j, l, m)
Trong đó:
j = vị trí trong câu đích i = vị trí của câu nguồn
l = độ dài của câu nguồn m = độ dài của câu đích
và P (i|j, l, m) là xác suất mà một từ nguồn trong vị trí i được di chuyển tới vị trí j trong một cặp câu với độ dài là l và m
5 Bảng biến thể (*.d3.*)
Định dạng giống như bảng liên kết như vị trí của i và j đảo ngược
j i l m P (j | i, l, m)
6 Bảng biến thể của IMB-4 (*.d4.*)
7 Bảng biến thể của IBM-5 (*.d5.*)
8 Xác suất liên kết của mô hình liên kết HMM
9 File hỗn hợp (*.perp)
10 Tập tin sửa đổi từ vựng (*.src.vcb,*.trg.vcb)
11 File chứa các tham số cuối cùng (*.gizacfg)
3.4 Ứng dụng các mô hình:
Cho câu tiếng Anh đầu vào e, tìm câu tiếng Việt v sao cho xác suất điều kiệnP(v|e) là lớn nhất Do v và e phụ thuộc lẫn nhau,nên theo lý thuyết xác suất có điềukiện: Công thức Bayes
argmax(P(v|e)) = argmax(P(v) * P (e|v))
Trang 16P(v)= p(v1,v2,…,vI) = p(v1) p(v2|v1)…p(vI|v1,v2,…,vI-1)
+ Giả thuyết Markov:
-N-gram: cụm n-từ liên tiếp
- Xấp xỉ n-gram:P (vI |v1, v2,…, vI-1) ≈ p (vI| vI-n+1, vI-n+2,…, vI-1)
- Trigram(n=3):P(v)= p(v1,v2,…,vI) = ∏ p(vk | vk-2 vk-1)
k=1,…,I
Ví dụ: v = "Tôi đang đọc sách" (I=4) p(Tôi đang đọc sách) = p(Tôi | <bắt-đầu-câu><bắt-đầu- câu>) * p(đang | <bắt-đầu-câu>Tôi) *
p(đọc | tôi đang) *
Trang 17Tính p(z|xy):P(đọc|tôi đang)= c(tôi đang đọc)/ c(tôi đang)
Vì chúng ta không thể tính chính xác:
Nên chúng ta sử dụng mô hình trigram dể tính gần đúng,mỗi ek-2 , ek-1, ek được gọi là tri-gram
Phương tri-gram được làm trơn:
Trang 18Trong đó:
Để chọn được một liên kết tốt nhất thì phải chạy mô hình dịch từ 1 đến 5 thông qua một sốcác vòng lặp của thuật toán ước lượng giá trị cực đại (Estimation Maximization Algorithm) cho từngthông số của mô hình
MÔ HÌNH DỊCH DỰA TRÊN ĐƠN VỊ TỪ
IBM Model 1-5:
Phương pháp sinh: chia quá trình gióng hàng thành các bước nhỏ hơn Mô hình hóacác bước đó bằng các xác suất điều kiện dựa trên các giả thuyết đơn giản
IBM Model1: ví dụ với |e|=J, |v|=I
Bước 1: Xác định độ dài câu e
Bước 2: Chọn gióng
Bước 3: Chọn dịch tương ứng các từ tiếng Việt sang tiếng Anh
IBM MODEL 1
Xác suất p(e|v):
Trang 19Đưa ra các mô hình IBM Model 2, 3,4 và 5 để có giả thuyết khái quát hơn.
Hạn chế của các mô hình IBM:
Chỉ giải quyết được gióng hàng 1-nhiều
Không giải quyết được gióng hàng nhiều-nhiều
Gióng hàng theo đơn vị cụm từ (phrase)
Từ các khả năng dịch ta tìm ra câu dịch tốt nhất:
Mở rộng không gian giả thuyết:
Giảm bớt số lượng giả thuyết:
Trang 20GIZA++ v.1.0.3
Biên dịch GIZA++
Để dùng được Giza++ ta cần download, biên dịch source code
Bước 1: Source được download từ
http://code.google.com/p/giza-pp/downloads/detail?name=giza-pp-v1.0.3.tar.gz&can=1&q=.Bước 2: Biên dịch và chạy tool này trên Ubuntu Linux 10.04, trước tiên cần cài đặt trình biêndịch G++ Trong Ubuntu terminal gõ:
apt-get install gcc g++
Bước 3: Download source về, giải nén bằng các lệnh gunzip và tar
Bước 4: Chuyển vào thư mục giza-pp, gõ make để biên dịch
Sau khi thực hiện xong 4 bước trên ta tiến hành chuẩn bị dữ liệu để chạy GIZA
Dùng GIZA++ để huấn luyện ta cần có kho ngữ liệu, kho ngữ liệu song ngữđược định dạng ban đầu thành 2 file theo 2 ngôn ngữ mong muốn, các dòngtrên 2 file theo thứ tự tương ứng với nhau