Xây dựng LM với SRILM và RandLM

Một phần của tài liệu Tìm hiểu mô hình ngôn ngữ sử dụng phương pháp bloom filter (Trang 43 - 48)

Với ngữ liệu tiếng Anh:

Các mô hình ngôn ngữ SRILM được xây dựng từ các tập ngữ liệu trên sử dụng lệnh sau:

./ngram-count -order 3 -interpolate –kndiscount

-text /corpus/news.lowercased_1GB.gz -lm model_sri_1.00GB_3-grams.txt

Câu lệnh trên sẽ tạo ra một mô hình ngôn ngữ 3-gram trong file

model_sri_1.00GB_3-grams.txt từ file ngữ liệu news.lowercased_1GB.gz (SRILM cho phép đầu vào và đầu ra sử dụng file nén). Ta cũng có thể yêu cầu SRILM tạo ra những mô hình ngôn ngữ bậc cao hơn như 4-gram, 5-gram, thậm chí cao hơn nữa. Nhưng khi tham số này tăng thì lượng bộ nhớ cần dùng cũng tăng lên rất nhanh. SRILM sử dụng RAM để lưu trữ kết quả đếm n-gram tạm thời, với cấu hình máy tính thử nghiệm đã nêu trên (sử dụng 2GB RAM), chúng tôi đã xây dựng được mô hình ngôn ngữ 3-gram từ tập ngữ liệu 1GB; nhưng không tạo được mô hình 4-gram với cùng lượng dữ liệu do thiếu RAM trong bước thống kê n-gram. Tham số -kndiscount yêu cầu SRILM sử dụng thuật toán Kneser-Ney cải tiến trong bước làm mịn. Các thuật toán làm mịn khác có thể được dùng trong SRILM là Good-Turing hay Witten-Bell.

Việc xây dựng mô hình tốn khoảng 10 phút cho tập ngữ liệu 0.25GB (Set 1) cho đến vài tiếng đối với tập ngữ liệu 1GB (Set 4). Sau khi xây dựng ta có thể xem có bao nhiêu n- gram mỗi bậc trong file mô hình ngôn ngữ vừa được tạo ra (head –n 5 model_sri_1.00GB_3-grams.txt).

Bảng 4: Thống kê số lượng các n-gram trong các tập ngữ liệu

Set 1 409,806 6,322,122 4,648,704

Set 2 585,002 9,720,557 9,294,600

Set 3 717,048 12,354,288 13,813,750

Set 4 825,026 14,549,604 18,171,077

Đối với RandLM, xây dựng mô hình ngôn ngữ có thể được thực hiện theo 3 cách: i) từ ngữ liệu đã được chia từ sẵn; ii) từ một tập các cặp n-gram và số lần xuất hiện của nó (cặp ngram-count); iii) từ một mô hình ngôn ngữ backoff đã được xây dựng trước đó với định dạng ARPA (định dạng của mô hình ngôn ngữ được tạo ra từ SRILM). Nếu xây dựng theo cách đầu tiên hoặc thứ hai, mô hình được gọi là CountRandLM, sử dụng loại thứ ba thì được gọi là BackoffRandLM. CountRandLM có thể sử dụng làm mịn StupidBackoff hoặc Witten-Bell. BackoffRandLM có thể sử dụng bất kỳ phương pháp làm mịn nào mà SRILM hỗ trợ. Ví dụ ta xây dựng BloomMap-LM 3-gram từ tập ngữ liệu 1GB sử dụng lệnh sau:

./buildlm –struct BloomMap –falsepos 8 –values 8

–output-prefix randlm_3-grams_1.00GB

–input-path /corpus/news.lowercased_1GB.gz –order 3 –working-mem 1500

 Tham số -falsepos quyết định tỉ lệ lỗi false positive của cấu trúc dữ liệu, ví dụ

-falsepos 8 cho ta tỉ lệ lỗi là 1/28.

 Tham số values quyết định khoảng lượng tử hóa của mô hình, bậc của logarit sử dụng trong quá trình lượng tử hóa sẽ là 21/values nếu ta sử dụng tham số -values 8.

 Tham số order xác định bậc của mô hình n-gram.

 Tham số input-path: đường dẫn tới ngữ liệu được dùng để tạo LM.

 Đặc biệt tham số -struct quyết định cấu trúc dữ liệu được sử dụng để xây dựng mô hình ngôn ngữ. Hiện tại, RandLM hỗ trợ hai loại cấu trúc dữ liệu là Log-Frequency Bloom Filter (-struct LogFreqBloomFilter) và Bloom Map (-struct BloomMap). Sử dụng RandLM, chúng tôi sẽ xây dựng các mô hình ngôn ngữ với cả hai loại cấu trúc dữ liệu này để so sánh kích thước cũng như hiệu quả của từng cấu trúc dữ liệu.

 Tham số “-working-mem 1500” có nghĩa là cho phép sử dụng 1500MB trong quá trình sắp xếp các n-gram.

Các file được tạo ra sau quá trình xây dựng LM với câu lệnh trên bao gồm:

- randlm_3-grams_1.00GB.BloomMap Mô hình ngôn ngữ

- randlm_3-grams_1.00GB.counts.sorted.gz Thống kê n-gram

- randlm_3-grams_1.00GB.stats.gz Thống kê kết quả đếm

- randlm_3-grams_1.00GB.vcb.gz File chứa từ vựng

Cả hai file .stats.gz.counts.sorted.gz đều có thể được khai báo sử dụng lại, tránh tính toán nhiều lần khi cần xây dựng thêm LM từ bộ ngữ liệu giống nhau. Điều này là rất cần thiết do trong thử nghiệm nhiều khi cần xây dựng LM nhiều lần với giá trị các tham số khác nhau. Ví dụ:

./buildlm –struct BloomMap –falsepos 8 –values 10 –order 3

–output-prefix randlm_3-grams_1.00GB_values10 –input-path randlm_3-grams_1.00GB.counts.sorted.gz -input-type counts

-stats-path randlm_3-grams_1.00GB.stats.gz –working-mem 1500

sẽ xây dựng một BloomMap-LM mới từ cùng ngữ liệu đã sử dụng trước đó nhưng với giá trị lượng tử hóa khác (–values 10) mà không cần tính toán lại các file thống kê.

Thời gian để xây dựng các BF-LM sử dụng RandLM lâu hơn khi xây dựng các mô hình ngôn ngữ chuẩn cùng bậc, cùng lượng dữ liệu trong SRILM; mất xấp xỉ 20 tiếng RandLM mới xây dựng xong mô hình ngôn ngữ 3-gram với 1GB ngữ liệu (Set 4). RandLM lưu trữ mọi thứ trên đĩa cứng, nên việc thống kê, sắp xếp cũng mất nhiều thời gian hơn. Nhưng bù lại, RandLM lại có thể xây dựng các mô hình ngôn ngữ bậc cao hơn, sử dụng nhiều dữ liệu hơn SRILM. Ví dụ, trên máy tính thử nghiệm, RandLM đã có thể xây dựng thành công mô hình ngôn ngữ 4-gram từ 1GB ngữ liệu huấn luyện, trong khi SRILM thì không thể. Tuy thời gian huấn luyện của RandLM lâu hơn SRILM nhưng đó không phải là vấn đề lớn, vì ta chỉ xây dựng mô hình ngôn ngữ một lần duy nhất. Hơn nữa, dung lượng các mô hình ngôn ngữ Bloom Filter xây dựng từ RandLM chiếm ít bộ nhớ hơn các mô hình

chuẩn từ SRILM rất nhiều. Bảng 5 thống kê dung lượng các mô hình ngôn ngữ 3-gram tạo bởi hai công cụ này (không nén) với các bộ ngữ liệu kích thước khác nhau.

Bảng 5: Kích thước các loại LM khác nhau trên các tập ngữ liệu

Set 1 Set 2 Set 3 Set 4 BloomMap 52.5 MB 86.6 MB 114.4 MB 138.8 MB

Log-Freq BF 63.4 MB 102.1 MB 136.8 MB 181.5 MB

SRILM 290.7 MB 511.6 MB 710.4 MB 893.4 MB

Qua bảng trên ta có thể thấy rằng dung lượng các mô hình ngôn ngữ tạo bởi RandLM chỉ bằng khoảng 1/6 lần dung lượng mô hình ngôn ngữ chuẩn tạo bởi SRILM nếu sử dụng cấu trúc dữ liệu Bloom Map, và bằng khoảng 1/5 lần nếu sử dụng cấu trúc dữ liệu Log-Frequency Bloom Filter. Với cùng các tham số khi xây dựng bằng RandLM, nhưng LM với cấu trúc dữ liệu LF-BF có kích thước lớn hơn LM với cấu trúc dữ liệu Bloom Map (khoảng 20 - 30%). 0 100 200 300 400 500 600 700 800 900

Set 1 Set 2 Set 3 Set 4

M

B LF-BF-LM

BloomMap-LM SRI-LM

Biểu đồ 3: Dung lượng các LM tạo từ RandLM và SRILM

Nhìn vào biểu đồ 3, ta có thể kết luận rằng càng sử dụng nhiều dữ liệu huấn luyện, thì càng tiết kiệm được không gian lưu trữ; nghĩa là tỉ lệ chênh lệch giữa dung lượng LM chuẩn và mô hình xây dựng bằng công cụ RandLM tạo ra từ cùng một ngữ liệu huấn luyện càng tăng. Thế nhưng để trả lời cho câu hỏi liệu việc tiết kiệm dung lượng này làm hiệu quả LM giảm như thế nào so với LM chuẩn thì cần phải được trả lời bằng thực nghiệm.

Kết quả xây dựng LM bậc 2, 3 và 4 từ bộ ngữ liệu tiếng Việt được thể hiện trong biểu đồ dưới đây:

0 20 40 60 80 100 120 140 160 180

2-gram 3-gram 4-gram

M

B LF-BF-LMBloomMap-LM

SRI-LM

Biểu đồ 4: Dung lượng các LM tiếng Việt

Các LM này được xây dựng với bậc n-gram khác nhau, từ 2-gram cho đến 4-gram. Kết quả thể hiện trong biểu đồ một lần nữa cho thấy sự chênh lệch lớn về dung lượng giữa các mô hình ngôn ngữ SRILM chuẩn và RandLM.

Chương 4 Thử nghiệm:

Hệ thống dịch máy thống kê với Moses

Các mô hình được xây dựng ở trên sẽ được dùng trong dịch máy thống kê sử dụng hệ thống dịch máy mã nguồn mở Moses [21]. Kết quả dịch sau đó được đánh giá bằng điểm BLEU. Qua đó ta có thể so sánh hiệu quả của mô hình ngôn ngữ sử dụng Bloom Filter với mô hình ngôn ngữ chuẩn truyền thống.

Một phần của tài liệu Tìm hiểu mô hình ngôn ngữ sử dụng phương pháp bloom filter (Trang 43 - 48)

Tải bản đầy đủ (DOC)

(71 trang)
w