3.7.3. Xây dựng mơ hình ngơn ngữ mức ký tự tiếng Ba Na Look-ahead
Mơ hình ngơn ngữ này sẽ lựa chọn các ký tự ứng viên mà có xác xuất cao nhất đứng đằng trước.
29
Xét văn bản “hoạt độnng” bị sai ở chữ “n” thứ hai. Ta đưa chuỗi “hoạt độn” là đầu vào, và mơ hình ngơn ngữ sẽ cho ra một danh sách các ký tự để thay thế và trong đó ký tự “g” có xác suất cao nhất. Sau đó ta thực hiện các tuỳ chọn sửa lỗi có thể có đối với ký tự “g”.
Xoá ký tự hiện tại, chuỗi đầu vào trở thành “hoạt động”. Thay thế ký tự hiện tại, chuỗi đầu vào trở thành “hoạt độngg”
Thêm vào trước ký tự hiện tại, chuỗi đầu vào trở thành “hoạt độngng”
Sau khi tính xác suất Look-ahead cho cả 3 trường hợp, ta chọn trường hợp xóa ký tự cho kết quả chuỗi “hoạt động” là một chuỗi đúng.
Kết luận chương 3
Qua nghiên cứu cơ sở lý thuyết, tác giả đề xuất quy trình và mơ hình nghiên cứu nhằm đạt được các mục tiêu nghiên cứu đặt ra. Chương này trình bày chi tiết về: Cơ sở lý thuyết của mơ hình ngơn ngữ, kiến trúc RNN, kiến trúc LSTM; Xây dựng tập dữ liệu tiếng Ba Na được sử dụng trong nghiên cứu; Đặt bài toán và đề xuất hướng giải quyết; Đặc trưng của những mơ hình ngơn ngữ đề xuất; từ đó đề xuất phương pháp nghiên cứu chính được sử dụng để tiến hành thực nghiệm và đánh giá ở chương sau.
30
CHƯƠNG 4 THỰC NGHIỆM VÀ ĐÁNH GIÁ
Từ mơ hình đã nêu ở chương 3, luận văn thực hiện một số thực nghiệm nhằm đánh giá tính hiệu quả của mơ hình cũng như tìm được các siêu tham số phù hợp nhất với mơ hình đề ra. Trình tự các bước thực nghiệm được mơ tả như sau.
4.1 Tiêu chí đánh giá với độ đo WER
Đối với vấn đề chuyển tiếng nói thành văn bản, thì độ chính xác của văn bản đầu ra là yếu tố quyết định hệ thống có đạt được kết quả mong muốn. Để đo độ chính xác này, ta sẽ so sánh văn bản dự đoán khác nhau bao nhiêu so với văn bản thực tế.
Sự khác nhau càng nhỏ, sự chính xác của văn bản dự đốn được càng lớn. Một giá trị thường được sử dụng để đo sự khác nhau giữa hai văn bản đó là Word Error Rate (WER).
WER là tỉ lệ lỗi giữa văn bản dự đoán và văn bản đúng, được đo trên số lượng từ bị thay đổi giữa hai văn bản (do bị xóa, thêm, chỉnh sửa) trong q trình dự đốn. [8] WER = S+D+I N = S+D+I S+D+C Trong đó: S: số lượng từ bị thay thế D: số lượng từ bị xóa I: số lượng từ thêm vào C: số lượng từ chính xác
N: tổng số lượng từ (N = S + D + C)
Ngoài ra, ta cũng có thể định nghĩa thêm Char Error Rate (CER) một cách tương tự.
4.2 Chuẩn bị dữ liệu
Theo phương pháp được giới thiệu ở mục 3.4, đề tài đã tiến hành trích xuất dữ liệu từ cuốn từ điển Ba Na Kriêm và một số nội dung đài phát thanh radio huyện Vĩnh Thạnh từ 07/2019 đến 07/2020 để xây dựng tập dữ liệu tiếng Ba Na để sửa lỗi. Tập huấn luyện với mục đích tối ưu các thơng số của mơ hình. Tập kiểm thử dùng để đánh giá kết
31
quả của phương pháp sau q trình huấn luyện. Như đã nói, vì nguồn dữ liệu cịn hạn chế nên chúng tơi nhân dữ liệu lên nhiều lần với các từ vựng, các câu ngắn không bị thay đổi, với các câu hội thoại thì ít hơn. Chi tiết các tập dữ liệu được mô tả trong bảng 4.1.
Bảng 4. 1 Dữ liệu phục vụ cho đề tài.
STT Tập dữ liệu Số từ/câu
1 Từ vựng 2962 (x10)
2 Cụm từ ngắn (ít bị thay đổi) 465 (x10) 3 Các câu đoạn hội thoại 1.216 (x5)
4 Nội dung radio 2.381 (x5)
5 Dữ liệu được làm giàu 7.267 (x3) 6 Tập huấn luyện (training set) 59.245 7 Tập kiểm thử (test set) 14.811
4.3 Huấn luyện dữ liệu
Đề tài đã cài đặt thực nghiệm và được cấu hình huấn luyện như sau: ₋ Số epoch: 50 ₋ Period: 5 ₋ Vocabulary Size: 86 ₋ Sequence length: 20 ₋ Dropout: 0.15 ₋ Optimizer: Softmax ₋ batch_size : 512 ₋ N_layers: 4 Cấu hình hệ thống thực nghiệm
Để huấn luyện mơ hình học sâu địi hỏi phải có phần cứng máy tính rất mạnh, đặc biệt là GPU và RAM. Do đó luận văn chủ yếu chạy các thực nghiệm trên môi trường Google Colab Pro có cấu hình phần cứng và mơi trường như sau:
32
₋ Hệ điều hành: Windows 10 Pro 64-bit operating system ₋ RAM: 8GB.
Các thực nghiệm hiện thực bằng ngơn ngữ lập trình python kết hợp với Google Colab, sử dụng thư viện học sâu chính là tensorflow GPU. Thời gian huấn luyện mơ hình được thể hiện như bảng 4.2.
Bảng 4. 2 Thời gian huấn luyện mơ hình.
Mơ hình Thời gian huấn luyện
Mơ hình huấn luyện ~ 6 giờ
Với tập dữ liệu train và test như sau:
Bảng 4. 3 Tập dữ liệu huấn luyện và kiểm thử
STT Tập dữ liệu Số câu/ Cặp câu Phần trăm (%)
1 Tập dữ liệu huấn huyện 59.245 80
2 Tập dữ liệu kiểm thử 14.811 20
4.4 Kết quả thực nghiệm
4.4.1. Kết quả mơ hình ngơn ngữ mức ký tự tiếng Ba Na (Char L2R)
Người dùng nhập một chuỗi ký tự từ trái sang phải làm đầu vào để hệ thống dự đốn ký tự tiếp theo với mơ hình ngơn ngữ mức ký tự từ trái sang phải với xác xuất ký tự từ.
Bảng 4. 4 Kết quả mơ hình ngơn ngữ mức ký tự tiếng Ba Na (Char L2R)
Input : Yôl tơ'nglaih kơpô lơ̆m tơmăn 'nhăt jê̆ 'bă
output 1: yôl tơ'nglaih kơpô lơ̆m tơmăn 'nhăt jê̆ 'bău - prob: 0.9999853372573853 output 2: yôl tơ'nglaih kơpô lơ̆m tơmăn 'nhăt jê̆ 'bă - prob: 9.06658715398599e-06 output 3: yôl tơ'nglaih kơpô lơ̆m tơmăn 'nhăt jê̆ 'băn - prob: 3.93688696931341e-06 output 4: yôl tơ'nglaih kơpô lơ̆m tơmăn 'nhăt jê̆ 'băt - prob: 1.42309227157623e-06 output 5: yôl tơ'nglaih kơpô lơ̆m tơmăn 'nhăt jê̆ 'băm - prob: 2.17801655821873e-07
33
Input : Sư̆ pơtho khan nă ma choh jang rim adrêch 'ba la
output 1: sư̆ pơtho khan nă ma choh jang rim adrêch 'ba lai - prob: 0.985504448489 output 2: sư̆ pơtho khan nă ma choh jang rim adrêch 'ba lao - prob: 0.01088975143 output 3: sư̆ pơtho khan nă ma choh jang rim adrêch 'ba la - prob: 0.003877677107 output 4: sư̆ pơtho khan nă ma choh jang rim adrêch 'ba lak - prob: 0.00006310594 output 5: sư̆ pơtho khan nă ma choh jang rim adrêch 'ba lay - prob: 8.27369318e-05
Input : 'Boi thu 'yŏk điêu tra ra soat ŭnh hnam dơnuh atŭc
output 1: 'boi thu 'yŏk điêu tra ra soat ŭnh hnam dơnuh atŭch - prob: 0.999865472 output 2: 'boi thu 'yŏk điêu tra ra soat ŭnh hnam dơnuh atŭcc - prob: 6.790235e-05 output 3: 'boi thu 'yŏk điêu tra ra soat ŭnh hnam dơnuh atŭcg - prob: 3.835686e-05 output 4: 'boi thu 'yŏk điêu tra ra soat ŭnh hnam dơnuh atŭc - prob: 2.1305823e-05 output 5: 'boi thu 'yŏk điêu tra ra soat ŭnh hnam dơnuh atŭcd - prob: 1.843488e-06
Kết quả thực nghiệm trên cho thấy hệ thống đã đoán ký tự từ tiếp theo với mơ hình ngơn ngữ mức ký tự từ trái sang phải sẽ hiển thị ra k kết quả ( cụ thể k ở đây được chọn là 5) có xác xuất tốt nhất từ trên xuống dưới. Với kết quả output 1 là kết quả có khả năng sảy ra nhất.
4.4.2. Kết quả mơ hình ngơn ngữ mức ký tự tiếng Ba Na (Char R2L)
Người dùng nhập một chuỗi ký tự từ trái sang phải làm đầu vào để hệ thống dự đốn ký tự tiếp theo với mơ hình Char R2L với xác xuất ký tự từ.
34
Input : Yôl tơ'nglaih kơpô lơ̆m tơmăn 'nhăt jê̆ 'bă
output 1: yôl tơ'nglaih kơpô lơ̆m tơmăn 'nhăt jê̆ 'bău - prob: 0.9999853372573853 output 2: yôl tơ'nglaih kơpô lơ̆m tơmăn 'nhăt jê̆ 'bă - prob: 9.0665871539389e-06 output 3: yôl tơ'nglaih kơpô lơ̆m tơmăn 'nhăt jê̆ 'băn - prob: 3.9368869693131e-06 output 4: yôl tơ'nglaih kơpô lơ̆m tơmăn 'nhăt jê̆ 'băt - prob: 1.42309227157963e-06 output 5: yôl tơ'nglaih kơpô lơ̆m tơmăn 'nhăt jê̆ 'băm - prob: 2.1780165582173e-07
Input : Sư̆ pơtho khan nă ma choh jang rim adrêch 'ba la
output 1: sư̆ pơtho khan nă ma choh jang rim adrêch 'ba lai - prob: 0.985504448-05 output 2: sư̆ pơtho khan nă ma choh jang rim adrêch 'ba lao - prob: 0.010272692-05 output 3: sư̆ pơtho khan nă ma choh jang rim adrêch 'ba la - prob: 0.003878894-05 output 4: sư̆ pơtho khan nă ma choh jang rim adrêch 'ba lak - prob: 0.000151963-05 output 5: sư̆ pơtho khan nă ma choh jang rim adrêch 'ba lay - prob: 8.27368858-06
Input : 'Boi thu 'yŏk điêu tra ra soat ŭnh hnam dơnuh atŭc
output 1: 'boi thu 'yŏk điêu tra ra soat ŭnh hnam dơnuh atŭch - prob: 0.9998652-05 output 2: 'boi thu 'yŏk điêu tra ra soat ŭnh hnam dơnuh atŭcc - prob: 6.7902350-05 output 3: 'boi thu 'yŏk điêu tra ra soat ŭnh hnam dơnuh atŭcg - prob: 3.835639e-05 output 4: 'boi thu 'yŏk điêu tra ra soat ŭnh hnam dơnuh atŭc - prob: 2.1305828e-05 output 5: 'boi thu 'yŏk điêu tra ra soat ŭnh hnam dơnuh atŭcd - prob: 1.8434882e-06
Kết quả thực nghiệm trên cho thấy hệ thống đã đốn ký tự từ tiếp theo với mơ hình ngơn ngữ mức ký tự từ phải sang trái sẽ hiển thị ra k kết quả ( cụ thể k ở đây được chọn là 5) có xác xuất tốt nhất từ trên xuống dưới. Với kết quả output 1 là kết quả có khả năng sảy ra nhất.
4.4.3. Kết quả sửa lỗi kết hợp 2 mơ hình ngơn ngữ Char L2R và Char R2L
Ý tưởng chính :
Hàm def correct_mistake:
35
Với mỗi lần scan, xác suất replace ký tự (sửa lỗi) của mơ hình nào cao hơn thì sẽ thực hiện sửa lỗi trên mơ hình đó và trả ra output là chuỗi text đã được sửa lỗi.
Dùng chuỗi text đó làm input để scan lại với cả 2 mơ hình.
Lặp lại cho đến khi thỏa điều kiện dừng (hoặc 1 trong 2 mơ hình khơng cịn tìm thấy lỗi hoặc số vịng lặp = 20 để tránh tình trạng lặp vơ hạn) thì xuất ra output cuối cùng.
Chúng ta sẽ tiến hành sửa lỗi tự động cho hai mơ hình ngơn ngữ Char L2R và Char R2L.
Ví dụ 1:
Người dùng nhập một chuỗi ký tự vào hệ thống, hệ thống sẽ phát hiện ký tự sai và tiến hành thay thế ký tự đúng với cả hai mơ hình ngơn ngữ Char L2R và Char R2L.
Bảng 4. 6 So sánh kết quả của hai mơ hình ngơn ngữ Char L2R và Char R2L
Input: Yôl tơ'nglaih kơpô lơ̆m tơmăn 'nhct jê̆ 'bău Model left:
output 1: yôl tơ'nglaih kơpô lơ̆m tơmăn 'nhăt jê̆ 'bău Prob: 0.99929535 output 2: yôl tơ'nglaih kơpô lơ̆m tơmăn 'nhut jê̆ 'bău Prob: 0.0004037932 output 3: yôl tơ'nglaih kơpô lơ̆m tơmăn 'nhĕt jê̆ 'bău Prob: 0.00010607801 output 4: yôl tơ'nglaih kơpô lơ̆m tơmăn 'nhet jê̆ 'bău Prob: 5.5604094e-05 output 5: yôl tơ'nglaih kơpô lơ̆m tơmăn 'nhŏt jê̆ 'bău Prob: 4.7186622e-05 Model right:
output 1: yôl tơ'nglaih kơpô lơ̆m t măn 'nhct jê̆ 'bău Prob: 0.9999987 output 2: yôl tơ'nglaih kơpô lơ̆m t}măn 'nhct jê̆ 'bău Prob: 1.302423e-06
output 3: yôl tơ'nglaih kơpô lơ̆m tưmăn 'nhct jê̆ 'bău Prob: 3.797905e-09
output 4: yôl tơ'nglaih kơpô lơ̆m temăn 'nhct jê̆ 'bău Prob: 3.6372614e-09 output 5: yôl tơ'nglaih kơpô lơ̆m tomăn 'nhct jê̆ 'bău Prob: 3.1097203e-09
Kết quả thực nghiệm trên cho thấy hệ thống đã đoán ký tự từ tiếp theo với sự kết hợp hai mơ hình ngơn ngữ mức ký tự từ trái sang phải và từ phải sang trái sẽ hiển thị ra k kết quả ( cụ thể k ở đây được chọn là 5) có xác xuất tốt nhất từ trên xuống dưới đối với mỗi mơ hình. Với kết quả output 1 là kết quả có khả năng sảy ra nhất.
36
Kết quả thực nghiệm trên cũng cho ta thấy được kết quả hai mơ hình để từ đó có thể tiến hành thực nghiệm bước tiếp theo là so sánh xác suất có khả năng xảy ra cao nhất để chọn ra mơ hình tốt hơn.
Ví dụ 2:
Người dùng nhập một chuỗi ký tự vào hệ thống, hệ thống sẽ phát hiện ký tự sai và tiến hành thay thế ký tự đúng với cả hai mơ hình ngơn ngữ Char L2R và Char R2L rồi so sánh xác suất có khả năng xảy ra cao nhất để chọn ra mơ hình tốt hơn.
Bảng 4. 7 Kết hợp 2 mơ hình Char L2R và Char R2L để sửa lỗi tiếng Ba Na.
Input: Yôl tơ'nglaih kơpô lơ̆m tơmăn 'nhct jê̆ 'bău
================== STEP 1 =====================
Model left: yôl tơ'nglaih kơpô lơ̆m tơmăn 'nhăt jê̆ 'bău Prob: 0.9992953538
Model right: yôl uơ'nglaih kơpô lơ̆m tơmăn 'nhct jê̆ 'bău Prob: 0.5149679183 Choose model left: yôl tơ'nglaih kơpô lơ̆m tơmăn 'nhăt jê̆ 'bău
================== STEP 2 =====================
Model left: yôl tơmnglaih kơpô lơ̆m tơmăn 'nhăt jê̆ 'bău Prob: 0.9371384978 Model right: yôl uơ'nglaih kơpô lơ̆m tơmăn 'nhăt jê̆ 'bău Prob: 0.5149679183 Choose model left: yôl tơmnglaih kơpô lơ̆m tơmăn 'nhăt jê̆ 'bău
End
================== Result ===================== Input : Yôl tơ'nglaih kơpô lơ̆m tơmăn 'nhct jê̆ 'bău
Output : yôl tơmnglaih kơpô lơ̆m tơmăn 'nhăt jê̆ 'bău
Input: 'Boi thu 'yŏk điêu tra ra soat ŭnh hnxm dơnuh atŭc
================== STEP 1 =====================
Model left: 'boi thu 'yŏk điêu tra ra soat ŭnh hnam dơnuh atŭc Prob: 0.999995708
Model right: 'loi thu 'yŏk điêu tra ra soat ŭnh hnxm dơnuh atŭc Prob: 0.653470814
Choose model left: 'boi thu 'yŏk điêu tra ra soat ŭnh hnam dơnuh atŭc ================== STEP 2 ===================== Model left: Prob: 0.0
Model right: 'loi thu 'yŏk điêu tra ra soat ŭnh hnam dơnuh atŭc Prob: 0.653470814
37
End
================== Result ===================== Input : 'Boi thu 'yŏk điêu tra ra soat ŭnh hnxm dơnuh atŭc Output : 'loi thu 'yŏk điêu tra ra soat ŭnh hnam dơnuh atŭc
Với kết quả thực nghiệm trên người dùng sẽ nhập một chuỗi ký tự vào hệ thống, hệ thống sẽ phát hiện ký tự sai và tiến hành thay thế ký tự đúng với cả hai mơ hình ngơn ngữ Char L2R và Char R2L rồi so sánh xác suất có khả năng xảy ra cao nhất để chọn ra mơ hình tốt hơn. Mơ hình vẫn sẽ tiếp tục nếu phát hiện ký tự sai và tiến hành thay thế ký tự đúng trên cả hai mơ hình ngơn ngữ Char L2R và Char R2L rồi so sánh xác suất có khả năng xảy ra cao nhất để chọn ra mơ hình tốt hơn cho đến khi tìm ra kết quả có xác xuất tốt nhất.
4.4.4. Kết quả mơ hình ngơn ngữ mức ký tự tiếng Ba Na Look-ahead
Qua thực nghiệm tơi nhận thấy mơ hình Char L2R có xác suất đúng cao hơn, nên với mơ hình ngơn ngữ mức ký tự tiếng Ba Na Look-ahead chỉ trên mơ hình Char L2R. Với ý tưởng:
Hàm def correct_one_mistake_with_Look-ahead: Thực hiện việc sửa lỗi trên mơ hình trái sang phải
Gặp một ký tự có xác suất thấp dưới ngưỡng đưa ra (0.001), thay vì thay thế bằng kí tự có xác suất cao nhất thì sẽ tạo ra danh sách ứng viên gồm ký tự hiện tại và danh sách các kí tự có xác suất cao nhất.
Sau đó tính xác suất xuất hiện của ký tự tiếp theo với từng ứng viên rồi chọn ra xác suất của cao nhất ứng với ứng viên để chọn ứng viên làm kí tự thay thế.
Ví dụ:
Bảng 4. 8 Kết quả thực nghiệm mơ hình Look-ahead
Input: adriêng 'bă 'băn nb x tơmang --------------------------------------------- STEP:1:adriêng 'bă 'băn nb tơmang >> adr(i)
38 >> adriê(n) >> adriên(g) >> adriêng( ) >> adriêng (') >> adriêng '(b) >> adriêng 'b(ă) >> adriêng 'bă( ) >> adriêng 'bă (') >> adriêng 'bă '(b) >> adriêng 'bă 'b(ă) >> adriêng 'bă 'bă(n) >> adriêng 'bă 'băn( ) >> adriêng 'bă 'băn (n) >> adriêng 'bă 'băn n(b)
<< [top look ahead] adriêng 'bă 'băn năm tơmang (0.999943) << [top look ahead] adriêng 'bă 'băn ngŏ tơmang (0.971874) << [top look ahead] adriêng 'bă 'băn nhŏ tơmang (0.000610) << [top look ahead] adriêng 'bă 'băn ngo tơmang (0.000588) << [top look ahead] adriêng 'bă 'băn nhơtơmang (0.000496) ---------------------------------------------