Tải bản đầy đủ (.pdf) (78 trang)

Sử dụng mô hình ngôn ngữ bloom filter trong cải tiến dịch máy thống kê

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.69 MB, 78 trang )

3

LỜI CAM ĐOAN
Em - Trần Tiến Thành, học viên lớp Cao học K12E Trường Đại học
Công nghệ thông tin và Truyền thông Thái Nguyên - cam kết Luận văn thạc
sỹ khoa học máy tính: “Sử dụng mô hình ngôn ngữ Bloom Filter trong cải
tiến dịch máy thống kê” là công trình nghiên cứu của bản thân em dưới sự
hướng dẫn của thầy giáo TS. Nguyễn Văn Vinh, Bộ môn Khoa học máy tính,
Khoa Công nghệ thông tin – Trường Đại học Công nghệ - Đại học Quốc gia
Hà Nội.
Các kết quả trong luận văn tốt nghiệp là trung thực, không sao chép
toàn văn của bất kỳ công trình nào khác.

Thái Nguyên, ngày 05 tháng 10 năm 2015
TÁC GIẢ

Trần Tiến Thành


4

LỜI CẢM ƠN
Em xin bày tỏ lòng biết ơn sâu sắc tới thầy giáo, TS. Nguyễn Văn
Vinh, Bộ môn Khoa học máy tinh, Khoa Công nghệ thông tin - Trường Đại
học Công nghệ - Đại học Quốc gia Hà Nội đã khuyến khích và tận tình hướng
dẫn em trong suốt quá trình thực hiện luận văn. Em cũng xin cảm ơn anh Trần
Hồng Việt, nghiên cứu sinh Trường Đại học Công nghệ, giảng viên Trường
Đại học Kinh tế kĩ thuật công nghiệp đã hết lòng giúp đỡ em trong quá trình
thực hiện đề tài. Nhờ sự quan tâm chỉ bảo và những ý kiến đóng góp quý báu
của thầy và của anh em mới có thể hoàn thành luận văn này.
Em xin chân thành cảm ơn tập thể các thầy, cô giáo Trường Đại học


Công nghệ thông tin và Truyền thông Thái Nguyên đã tận tình giảng dạy
truyền đạt cho em những kiến thức, kinh nghiệm quý báu trong suốt những
năm học vừa qua.
Em cũng xin cảm ơn Sở Giáo dục và Đào tạo Phú Thọ, Trường THPT
Minh Đài đã tạo điều kiện về kinh phí và thời gian để em có thể học tập và
hoàn thành luận văn.
Cuối cùng em xin chân thành cảm ơn gia đình, người thân đã hết lòng
giúp đỡ, hỗ trợ về vật chất lẫn tinh thần giúp em yên tâm học tập và nghiên
cứu trong suốt quá trình học tập và thực hiện luận văn.
Trong khoảng thời gian có hạn, cũng như kiến thức còn nhiều hạn chế
luận văn không tránh khỏi những sai sót về nội dung cũng như hình thức.
Kính mong nhận được sự góp ý của quý thầy cô, bạn bè và đồng nghiệp.
Thái Nguyên, ngày 05 tháng 10 năm 2015
TÁC GIẢ

Trần Tiến Thành


5

DANH SÁCH CÁC TỪ VIẾT TẮT
Đầy đủ

Viết tắt
BF

Bloom Filter

BF-LM


Mô hình ngôn ngữ dựa trên Bloom Filter

LF-BF-LM

Mô hình ngôn ngữ Log-Frequency Bloom Filter

LM

Mô hình ngôn ngữ

MKN

Phương pháp làm mịn Kneser-Ney cải tiến

MLE

Ước lượng cực đại hóa khả năng

MSE

Lỗi trung bình bình phương

MT

Dịch máy

NLP

Xử lý ngôn ngữ tự nhiên


PDS

Cấu trúc dữ liệu xác suất

RDS

Cấu trúc dữ liệu ngẫu nhiên

SMT

Dịch máy bằng phương pháp thống kê


6

DANH MỤC CÁC HÌNH VẼ
Hình

Tên hình

Trang

Hình 1 Kiến trúc của một hệ thống SMT

14

Hình 2 Minh họa dịch máy thống kê dựa vào cụm
Ví dụ về hàm băm. Các xâu ký tự được chuyển thành chữ
Hình 3 ký đại diện.


15
35

Cặp khóa ki và giá trị ai của tập S được ánh xạ thông qua
Hình 4 hàm băm vào bảng băm. Xuất hiện xung đột giữa 2 phần
tử k1 và k3.

36

Hình 5 Huấn luyện Bloom Filter

37

Hình 6 Truy vấn Bloom Filter

38

Hình 7 Lỗi một phía trong Bloom Filter

39


7

MỤC LỤC
MỞ ĐẦU .......................................................................................................... 9
1. Đặt vấn đề .................................................................................................... 9
2. Đối tượng và phạm vi nghiên cứu............................................................ 10
3. Nhiệm vụ nghiên cứu ................................................................................ 10
4. Những nội dung nghiên cứu chính .......................................................... 10

NỘI DUNG ..................................................................................................... 11
CHƯƠNG I .................................................................................................... 11
TỔNG QUAN VỀ DỊCH MÁY THỐNG KÊ DỰA VÀO CỤM TỪ ............. 11
VÀ MÔ HÌNH NGÔN NGỮ........................................................................... 11
1.1 Dịch máy thống kê dựa trên cụm từ ...................................................... 11
1.1.1 Dịch máy và dịch máy thống kê ............................................................. 11
1.1.2 Dịch máy thống kê dựa trên cụm ......................................................... 15
1.2.1 N-gram ................................................................................................... 17
1.2.2 Mô hình ngôn ngữ ................................................................................ 19
1.2.3 Huấn luyện mô hình ngôn ngữ ............................................................ 21
1.2.3.1 Ước lượng cực đại hóa khả năng (Maximium Likelihood Estimation MLE)................................................................................................................ 21
1.2.3.2 Các phương pháp làm mịn .................................................................. 22
1.2.3.2.1 Kneser-Ney ...................................................................... 24
1.2.3.2.2 Kneser-Ney cải tiến (Modified Kneser-Ney - MKN) ...... 25
1.2.3.2.3 Stupid Backoff ................................................................. 26
1.3 Đánh giá mô hình ngôn ngữ ................................................................... 27
1.3.1 Entropy – Độ đo thông tin .................................................................... 27
1.3.2 Độ hỗn loạn thông tin (Perplexity)...................................................... 29
1.3.3 Tỉ lệ lỗi (Error rate) ............................................................................... 30
1.4 Đánh giá chất lượng dịch tự động dựa trên điểm BLEU .................... 31
CHƯƠNG 2 .................................................................................................... 32


8

MÔ HÌNH NGÔN NGỮ BLOOM FILTER.................................................... 32
2.1 Các cấu trúc dữ liệu xác suất (PDS) ...................................................... 33
2.2 Hàm băm (Hash function) ...................................................................... 35
2.3 Bloom Filter cơ bản................................................................................. 37
2.4 Mô hình ngôn ngữ Bloom Filter ............................................................ 43

2.4.1 Bloom Filter tần số log (Log-frequency Bloom Filter).......................... 43
2.4.2 Bộ lọc dựa vào chuỗi con (sub-sequence filtering) ............................... 45
CHƯƠNG 3 .................................................................................................... 47
ỨNG DỤNG BLOOM FILTER CHO HỆ DỊCH MÁY THỐNG KÊ DỰA
VÀO CỤM TỪ ................................................................................................ 47
3.1 Hệ dịch máy thống kê mã nguồn mở Moses ......................................... 47
3.2 Tích hợp Mô hình ngôn ngữ Bloom Filter vào hệ thống Moses ......... 48
3.2.1 Xây dựng LM với RandLM và SRILM ................................................ 48
3.2.1.1 Ngữ liệu ............................................................................... 49
3.2.1.2 Thuật toán làm mịn ............................................................. 53
3.2.1.3. Xây dựng LM với SRILM và RandLM .............................. 53
3.3 Thử nghiệm và đánh giá ......................................................................... 65
KẾT LUẬN .................................................................................................... 78
TÀI LIỆU THAM KHẢO ............................................................................ 79


9

MỞ ĐẦU
1. Đặt vấn đề
Mô hình ngôn ngữ (Language Model - LM) là một phần không thể
thiếu trong lĩnh vực xử lý ngôn ngữ tự nhiên. Mô hình ngôn ngữ được sử
dụng ở các lĩnh vực trong xử lý ngôn ngữ tự nhiên như: nhận dạng tiếng nói,
kiểm lỗi chính tả, phân đoạn từ hay dịch máy thống kê… Để ứng dụng tốt mô
hình ngôn ngữ phải lớn, cũng chính vì vậy mà việc tìm kiếm không gian lưu
trữ là vô cùng quan trọng trong mô hình ngôn ngữ. Chính vì thế, luận văn này
tôi lựa chọn và thực hiện đề tài: “Sử dụng mô hình ngôn ngữ Bloom Filter
trong cải tiến dịch máy thống kê”.
Trong luận văn này, chúng tôi nghiên cứu và tìm hiểu mô hình ngôn
ngữ xây dựng dựa trên cấu trúc dữ liệu Bloom Filter. Không lưu trữ toàn bộ

tập n-gram giống như các mô hình truyền thống, loại mô hình ngôn ngữ
này sử dụng một quy trình mã hóa đặc biệt, cho phép chia sẻ một cách hiệu
quả các bit khi lưu trữ thông tin thống kê n-gram, nhờ đó tiết kiệm đáng kể bộ
nhớ. Sau khi tìm hiểu sơ lược về mô hình ngôn ngữ, chúng ta sẽ nghiên cứu
kiểu cấu trúc dữ liệu dựa trên Bloom Filter là Bloom Map. Qua các thử
nghiệm, chúng tôi chỉ ra sự ưu việt của các mô hình ngôn ngữ dựa trên
Bloom Filter trên cả phương diện dung lượng và tính hiệu quả khi ứng dụng
trong thực tế, cụ thể ở đây là hệ thống dịch máy bằng phương pháp thống kê
với Moses [2].


10

2. Đối tượng và phạm vi nghiên cứu
- Luận văn này chúng tôi nghiên cứu về n-gram và cách ước lượng, tính toán
biễu diễn mô hình ngôn ngữ.
- Thực hiện thử nghiệm với dữ liệu tiếng Việt.
3. Nhiệm vụ nghiên cứu
- Thông qua luận văn, trình bày các hiểu biết cơ bản cần biết về mô hình ngôn
ngữ như n-gram, các thuật toán làm mịn được sử dụng trong mô hình ngôn
ngữ và các thước đo để đánh giá một mô hình ngôn ngữ.
- Luận văn tập trung nghiên cứu về các trúc dữ liệu dựa trên Bloom Filter được
sử dụng cho mô hình ngôn ngữ cụ thể là Log-Frequency Bloom Filter.
- Thực hiện thử nghiệm xây dựng mô hình ngôn ngữ trên một ngữ liệu tiếng
Việt và một ngữ liệu tiếng Anh..
- Ngoài ra, luận văn còn giới thiệu sơ lược về dịch máy thống kê, thử nghiệm
dịch máy thống kê với hệ thống dịch máy mã nguồn mở Moses sử dụng các
mô hình ngôn ngữ xây dựng ở chương 3.
4. Những nội dung nghiên cứu chính
Luận văn được trình bày thành 3 phần:

MỞ ĐẦU
NỘI DUNG
Chương 1 - Tổng quan về dịch máy thống kê dựa vào cụm từ và mô
hình ngôn ngữ
Chương 2 - Mô hình ngôn ngữ Bloom Filter
Chương 3 - Ứng dụng Bloom Filter cho hệ dịch máy thống kê dựa vào
cụm từ
KẾT LUẬN


11

NỘI DUNG
CHƯƠNG I
TỔNG QUAN VỀ DỊCH MÁY THỐNG KÊ DỰA VÀO CỤM TỪ
VÀ MÔ HÌNH NGÔN NGỮ
1.1 Dịch máy thống kê dựa trên cụm từ
1.1.1 Dịch máy và dịch máy thống kê
Dịch máy (Machine Translation - MT) xuất hiện từ thập kỷ 50 của thế
kỷ trước và đặc biệt được phát triển mạnh mẽ từ thập kỷ 80 cho đến ngày nay.
Trên thế giới, hiện tại có rất nhiều hệ dịch máy thương mại nổi tiếng như
Systrans, Kant, … hay những hệ dịch máy mở tiêu biểu là hệ dịch của
Google, hỗ trợ hàng chục cặp ngôn ngữ phổ biến như Anh-Pháp, Anh-Trung,
Anh-Nhật, Hoa-Nhật, … Các cách tiếp cận MT chia làm bốn lớp chính là dịch
trực tiếp (direct), dịch dựa trên luật chuyển đổi (transfer), dịch liên ngữ
(interlingua) và dịch dựa vào thống kê (statistical MT). Trước đây, phương
pháp dịch dựa trên luật chuyển đổi và dịch liên ngữ chủ yếu dựa vào cú pháp
có thời gian phát triển khá dài và hiện vẫn còn được sử dụng phổ biến trong
nhiều hệ dịch thương mại. Những hệ dịch máy loại này này đã đạt được kết
quả khá tốt với những cặp ngôn ngữ tương đồng nhau về cú pháp như AnhPháp, Anh-Tây Ban Nha, … nhưng còn gặp nhiều hạn chế đối với các cặp

ngôn ngữ có cú pháp rất khác nhau như Anh-Trung, Anh-Nhật, …
Dịch Anh-Việt, Việt-Anh ở nước ta cũng vấp phải những khó khăn
tương tự do sự khác biệt về mặt cấu trúc ngữ pháp và tính nhập nhằng của
ngữ nghĩa. Hệ thống dịch Anh-Việt dựa trên luật chuyển đổi được thương mại
hóa đầu tiên ở Việt Nam là EVTran. Nhiều nghiên cứu với yêu cầu tăng chất
lượng dịch hiện nay vẫn đang được thực hiện và có thể thích nghi với đặc
điểm của các cặp ngôn ngữ khác nhau.


12

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 được tạ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ân tích các cặp câu song ngữ. Các phương pháp tiếp cận
thống kê tương phản với các phương pháp tiếp cận dựa trên luật trong dịch
máy cũng như với dịch máy dựa trên ví dụ.
Những ý tưởng đầu tiên của dịch máy thống kê đã được giới thiệu
bởi Warren Weaver vào năm 1949 [1], bao gồm cả những ý tưởng của việc áp
dụng lý thuyết thông tin của Claude Shannon. Dịch máy thống kê được tái
giới thiệu vào năm 1991 bởi các nhà nghiên cứu làm việc tại Trung tâm
nghiên cứu Thomas J. Watson của IBM[2] và đã góp phần đáng kể trong sự
hồi sinh việc quan tâm đến dịch máy trong những năm gần đây. Ngày nay nó
là phương pháp dịch máy được nghiên cứu nhiều nhất.
Dịch máy bằng phương pháp thống kê (Statistical Machine
Translation) đã chứng tỏ là một hướng tiếp cận đầy đầy tiềm năng bởi những
ưu điểm vượt trội so với các phương pháp dịch máy dựa trên cú pháp truyền
thống qua nhiều thử nghiệm về dịch máy. Thay bằng việc xây dựng các từ
điển, các luật chuyển đổi bằng tay, hệ dịch này tự động xây dựng các từ điển,
các quy luật dựa trên kết quả thống kê có được từ dữ liệu. Vì thế, dịch máy
dựa vào thống kê có tính khả chuyển cao, có khả năng áp dụng được cho cặp

ngôn ngữ bất kỳ. Hệ thống SMT được đề xuất lần đầu tiên bởi Brown năm
1990 sử dụng mô hình kênh nhiễu và đã phát triển áp đảo trong ngành MT
nhiều năm trở lại đây. Thêm vào đó dịch máy thống kê có những ưu điểm sau:
Dịch máy (MT) là vấn đề quyết định: Cho trước những từ trong ngôn
ngữ nguồn, chúng ta phải quyết định chọn những từ trong ngôn ngữ đích. Vì
vậy, nó tạo cho chúng ta một cảm giác là có thể giải quyết nó bằng định lý
quyết định thống kê. Điếu đó dẫn đến cách tiếp cận thống kê được đề xuất.


13

Mối quan hệ giữa đối tượng ngôn ngữ như từ, cụm từ và cấu trúc ngữ
pháp thường yếu và mơ hồ. Để mô hình hóa những phụ thuộc này, chúng ta
cần một công thức hóa như đưa ra phân phối xác suất mà nó có thể giải quyết
với những vấn đề phụ thuộc lẫn nhau.
Để thực hiện MT, chúng ta nhất thiết phải kết hợp nhiều nguồn trí thức.
Trong dịch thống kê, chúng ta dựa vào toán học để thực hiện kết hợp tối ưu
của các nguồn trí thức.
Trong dịch máy thống kê (SMT), trí thức dịch được học một cách tự
động từ dữ liệu huấn luyện. Với kết quả như vậy, việc phát triển một hệ dịch
dựa vào thống kê sẽ rất nhanh so với hệ dịch dựa vào luật.
SMT khá phù hợp với ứng dụng nhúng mà ở đây MT là một phần của
ứng dụng lớn hơn. Ví dụ, trong dịch các bài nói chuyện, máy nhận dạng tiếng
nói sẽ được thêm vào. SMT xem như rất phù hợp với cách tiếp cận này bởi vì
nó tận dụng được sức mạnh của ngôn ngữ tự nhiện.
Việc đưa ra khái niệm “chính xác” của mối quan hệ ngữ pháp, ngữ
nghĩa, văn phong là rất khó khăn nếu không nói là không thể. Vì vậy, việc
hình thức hóa vấn đề này càng chính xác càng tốt không thể dựa vào sự giằng
buộc bởi các luật mô tả chúng. Thay vào đó, trong cách tiếp cận thống kê, các
giả định mô hình được kiểm định bằng thực nghiệm dựa vào dữ liệu huấn

luyện.
SMT đã cho chất lượng dịch khá tốt. Hệ thống CANDIDE của IBM
được coi là một trong những hệ dịch tốt nhất hiện nay trên thế giới. Chất
lượng đạt trên 80%.
Với phương pháp dịch trực tiếp, từng từ được dịch từ ngôn ngữ nguồn
sang ngôn ngữ đích. Trong dịch dựa trên luật chuyển đổi, đầu tiên chúng ta
cần phải phân tích cú pháp của câu vào, rồi áp dụng các luật chuyển đổi để
biến đổi cấu trúc câu này ở ngôn ngữ nguồn sang cấu trúc của ngôn ngữ đích;


14

cuối cùng ta mới dịch ra câu hoàn chỉnh. Đối với dịch liên ngữ, câu vào được
phân tích thành một dạng biểu diễn trừu tượng hóa về ngữ nghĩa, được gọi là
“interlingua”, sau đó ta tìm cách xây dựng câu đích phù hợp nhất với
“interlingua” này. Dịch máy thống kê có cách tiếp cận hoàn toàn khác, khả
năng dịch có được là dựa trên các mô hình thống kê được huấn luyện từ các
ngữ liệu song ngữ. Kiến trúc chung của một hệ thống SMT được thể hiện
trong hình 1.
Mô hình của Brown (hay còn gọi là mô hình IBM) [7] biểu diễn quá
trình dịch bằng một mô hình kênh nhiễu (noisy channel model) bao gồm ba
thành phần: một mô hình dịch (translation model), có nhiệm vụ liên hệ các từ,
cụm từ tương ứng của các ngôn ngữ khác nhau; một mô hình ngôn ngữ (LM),
đại diện cho ngôn ngữ đích; một bộ giải mã (decoder), kết hợp mô hình dịch
và mô hình ngôn ngữ để thực hiện nhiệm vụ dịch.
Ngôn ngữ nguồn ( f )

Tiền xử lý

Bộ giải mã


f

*

 arg max Pr(e | f )

Mô hình ngôn ngữ Pr(e)
Mô hình dịch Pr(f | e)

Hậu xử lý

Ngôn ngữ đích ( e )
Hình 1: Kiến trúc của một hệ thống SMT


15

1.1.2 Dịch máy thống kê dựa trên cụm
He

Anh ấy

is a

good

là một

bác sỹ


doctor

giỏi

Hình 2: Minh họa dịch máy thống kê dựa vào cụm
Với dịch dựa trên cụm, một chuỗi các từ liên tiếp (cụm) được dịch sang
ngôn ngữ đích, với độ dài cụm ngôn ngữ nguồn và đích có thể không giống
nhau. Hình 2 minh họa phương pháp dịch cụm: câu vào được chia thành một
số cụm; từng cụm một được dịch sang ngôn ngữ đích và sau đó các cụm được
đảo trật tự theo một cách nào đó rồi ghép với nhau. Kết quả ta thu được câu
dịch trong ngôn ngữ đích.
Nếu gọi ngôn ngữ nguồn là f và ngôn ngữ đích là e, ta sẽ cố gắng tối
đa hóa xác suất Pr( f | e) với mong muốn có được bản dịch tốt nhất. Trong
thực tế tồn tại hơn một bản dịch đúng cho cùng một câu, mục đích của ta là
tìm ra câu ngôn ngữ e phù hợp nhất khi cho trước câu ngôn ngữ nguồn f. Dịch
dựa vào cụm áp dụng mô hình kênh nhiễu, sử dụng công thức Bayes ta có:

arg max ePr(e| f )



arg max ePr( f |e) Pr(e)
Pr( f )

Vì Pr(f) là không thay đổi đối với e, bài toán trở thành việc tìm câu e
nhằm cực đại hoá giá trị Pr( f | e) Pr(e) , Pr( f | e) Pr(e) có giá trị cực đại khi
Pr( f | e) và Pr(e) cực đại. Việc xây dựng mô hình ngôn ngữ cần sử dụng một

ngữ liệu đơn ngữ lớn, trong khi đó mô hình dịch lại cần đến ngữ liệu song ngữ



16

tốt. Bộ giải mã được sử dụng để tìm ra câu dịch tốt nhất khi đã biết được
Pr(e) .

Để có được câu dịch, câu nguồn được chia thành I cụm liên tiếp f1I . Giả
sử rằng phân phối xác suất là như nhau đối với các cụm này. Mỗi cụm fi trong
f1I được dịch thành cụm tương ứng trong ngôn ngữ đích ei . Các cụm trong
ngôn ngữ đích có thể đảo ví trí cho nhau. Quá trình dịch cụm được mô hình
hóa bởi phân phối xác suất  ( f i | ei ) .
Việc đảo vị trí (reodering) của các cụm đầu ra được mô hình bởi phân
phối xác suất d(ai – bi-1), trong đó ai đại diện cho vị trí bắt đầu của cụm trong
câu nguồn được dịch thành cụm thứ i trong câu đích, và bi-1 là ký hiệu chỉ vị
trí kết thúc của cụm trong câu nguồn được dịch thành cụm (i-1) trong câu
đích. Ở đây chúng ta sử dụng mô hình đảo cụm như sau:
d (a i bi 1)   a i bi1

1|

|

Trong đó α là giá trị tham số thích hợp.
Muốn xác định độ dài phù hợp của câu dịch, ta đưa thêm thừa số ω khi
sinh ra câu trong ngôn ngữ đích. Qua quá trình tìm kiếm câu dịch tối ưu thừa
số này sẽ được tối ưu. Độ dài của câu trong ngôn ngữ đích càng dài khi thừa
số này càng lớn hơn 1.
Như vậy, câu dịch tốt nhất


e

được sinh ra từ câu nguồn theo mô

best

hình trong là:

e

best

 arg max Pr(e | f )  arg max Pr( f | e)Pr LM (e)
e

e

Với Pr( f | e) được phân tích:
I

I

Pr( f | e1 )    ( f
1

I

i 1

|e ) d(a  b


i

i

i

)

i 1

length ( e )


17

1.2 Tổng quan về mô hình ngôn ngữ
Mô hình ngôn ngữ là một phân bố xác suất trên các tập văn bản. Nói
đơn giản, mô hình ngôn ngữ có thể cho biết xác suất một câu (hoặc cụm từ)
thuộc một ngôn ngữ là bao nhiêu.
Ví dụ: Khi áp dụng mô hình ngôn ngữ cho tiếng Việt:
P[“hôm qua là ngày nghỉ lễ”] = 0.001
P[“nghỉ lễ là qua hôm ngày”] = 0
Mô hình ngôn ngữ được áp dụng trong rất nhiều lĩnh vực của xử lý
ngôn ngữ tự nhiên như: kiểm lỗi chính tả, dịch máy hay phân đoạn từ... Chính
vì vậy, nghiên cứu mô hình ngôn ngữ chính là tiền đề để nghiên cứu các lĩnh
vực tiếp theo.
Mô hình ngôn ngữ có nhiều hướng tiếp cận, nhưng chủ yếu được xây
dựng theo mô hình Ngram.
1.2.1 N-gram

Phương pháp đơn giản nhất để ngắt một chuỗi kí tự thành các thành
phần nhỏ hơn gọi là các chuỗi con. Mỗi chuỗi con n-từ như vậy được gọi là ngram.
Với n = 1 ta gọi là unigram hay còn gọi là từ;
Với n = 2 ta gọi là bigram;
Với n = 3 ta gọi là trigram.
Nếu một chuỗi kí tự có rất nhiều n-gram hợp lệ thì ta có thể kết luận
chuỗi kí tự đó là chuỗi hợp lệ. Kí hiệu b(y/x) là xác suất mà từ y theo sau từ x.
Chúng ta có thể ước lượng xác suất này dựa vào Corpus.
Xác suất bigram điều kiện là thương số của phép chia số lần xuất hiện
cụm “xy” cho số lần xuất hiện từ “x” trong Corpus, được kí hiệu là p(x|y).
Ví dụ về xác suất bigram điều kiện:


18

P(qua | hôm,): ta có thể hiểu là xác suất để từ “qua” xuất hiện sau từ
“hôm”. Về giá trị này, chúng ta có thể xác định trực tiếp và tự động từ corpus
tiếng Anh. Giả sử trong corpus mà ta test, “hôm” xuất hiện 468 lần, còn “hôm
qua” xuất hiện 63 lần, thì P(qua | hôm) = 63/468 = 0,13.
Tương tự, ta có định nghĩa tương tự đối với xác suất trigram điều kiện.
Ví dụ về xác suất trigram điều kiện:
P(là | hôm qua): ta có thể hiểu là xác suất để từ “là” xuất hiện sau dãy
hai từ “ hôm qua”. Giả sử trong corpus mà ta test, “hôm qua là” xuất hiện 9
lần, còn “hôm qua” xuất hiện là 28 lần, như vậy P(là | hôm qua) = 9/28 =
0,32.
Ta nhận thấy rằng mỗi từ sẽ liên quan có điều kiện tới toàn bộ các từ
trước nó (ta sẽ gọi đây là lịch sử của sự kiện hoặc từ đó).
Tuy nhiên, việc sử dụng toàn bộ các từ trước đó để đoán nhận từ tiếp
theo là không thể thực hiện được vì hai nguyên nhân sau. Đầu tiên là phương
pháp này không khả thi về mặt tính toán do tốn quá nhiều thời gian, tài

nguyên hệ thống cho mỗi lần dự đoán. Hai là, trong rất nhiều trường hợp, chỉ
sau khi duyệt vài từ trong lịch sử, ta đã nhận thấy rằng đó là một câu chưa
từng gặp trước đây. Bởi vậy kể cả khi đã biết toàn bộ lịch sử của một từ, xác
suất của nó vẫn có thể là không biết. Thay vào đó, các mô hình ngôn ngữ
thường được ước lượng tương đối xác suất dựa trên giả định Markov (hay mô
hình Markov ẩn), rằng từ tiếp theo chỉ chịu ảnh hưởng từ một vài từ trước đó.
Một mô hình Markov bậc n giả định rằng chỉ n từ trước đó có liên hệ ngữ
cảnh với từ đang cần xác định. Việt quyết định bao nhiêu từ trước đó mà LM
quan tâm được gọi là bậc n (order) của LM, và thường được gọi là 1-gram
(unigram), 2-gram (bigram), 3- gram (trigram), 4-gram (fourgram) tương ứng
với các mô hình Markov bậc một, hai, ba, bốn. Ví dụ, nếu chúng ta muốn ước


19

lượng xác suất 3-gram của một từ wi với mô hình Markov bậc 2 thì chúng ta
sẽ dựa trên hai từ trước đó:
Pr(w1, w2, ..., wi) ≈ Pr(wi|wi-2, wi-1)
Hình 1: Mô hình Markov bậc 2
Một cách tổng quát, gọi
từ

i

w

i  n 1

là một n-gram chiều dài n kết thúc bằng


w . Khi đó để ước lượng xác xuất n-gram cho một chuỗi chiều dài N ta sử
i

dụng công thức:
N

Pr(w1 )   Pr(wi | wi n1)
N

i 1

i 1

1.2.2 Mô hình ngôn ngữ
Trước hết chúng ta xem xét về trật tự từ. Giả sử trong cách dịch của
chúng ta, có một hộp chứa các từ và chúng ta muồn lấy chúng ra theo một thứ
tự hợp lý. Nhưng giả sử rằng chúng ta có vài hộp khác nhau, tương ứng là tập
các nghĩa của cách dịch các từ ở hộp trên. Chúng ta có thể tìm thứ tự từ tốt
nhất của mỗi hộp nhưng làm thế nào để chúng ta chọn câu của ngôn ngữ đích
hợp lý nhất. Câu trả lời là chúng ta sử dụng mô hình n-gram, gán xác suất cho
bất kì một dãy các từ có thể hiểu được. Sau đó chúng ta chọn ra dãy có thể
nhất (xác suất cao nhất).
Ví dụ: dãy các từ “hôm qua là ngày nghỉ lễ” và “tôi vẫn phải đi làm” là
có thể hiểu được (có thể tồn tại) ngược lại dãy “nghỉ lễ là qua hôm ngày” và
“đi tôi vẫn làm phải” là không thể hiểu được (không tồn tại). Về ngôn ngữ
học, theo truyền thống chúng ta chia các dãy các từ này thành hai loại: đúng
ngữ pháp và sai ngữ pháp nhưng trong dịch máy chúng ta luôn luôn phải chọn
giữa hai câu đúng ngữ pháp.
Ví dụ: Cách dịch nào là tốt hơn trong (A) và (B)
(A) Hôm qua là ngày nghỉ lễ nhưng tôi vẫn phải đi làm.

(B) Ngày hôm qua là nghỉ lễ nhưng tôi vẫn phải đi làm.


20

Mặt khác, trong nhận dạng tiếng nói người ta sử dụng khá nhiều xác
suất theo kinh nghiệm gán cho dãy các từ. Ví dụ: “nghỉ lễ là” đúng hơn là “là
nghỉ lễ”.
Phương pháp sử dụng ở đây là dựa vào bigram hoặc trigram để chuyển
chúng thành xác suất để so sánh.
Để gán xác suất cho toàn bộ một câu, ta nhân xác suất điều kiện n-gram
mà nó bao gồm. Vì vậy, một câu tốt (càng đúng ngữ pháp) là câu mà có nhiều
dãy n-gram. Ví dụ trong bigram ta có:
P(Hôm qua là ngày nghỉ lễ) =
P(Hôm | đầu câu) *
P(qua | Hôm) *
P(là | qua) *
P(ngày | là) *
P(nghỉ | ngày) *
P(cuổi câu | nghỉ lễ)
Dễ dàng thấy rằng điều này có ích như thế nào đối với trật tự từ. Dựa
vào cách tính xác suất như trên ta thấy rằng câu “Hôm qua là ngày nghỉ lễ” tốt
hơn “Nghỉ lễ ngày là qua hôm”.
Như vậy, ta có thể coi toàn bộ các chủ đề về gán xác suất cho một câu
được gọi là mô hình ngôn ngữ.
Mô hình ngôn ngữ không chỉ có ích cho thứ tự các từ mà còn có ích
cho việc chọn nghĩa giữa các cách dịch khác nhau.
Ví dụ: Cho 2 câu (A) và (B)
(A) Áo trắng em đến trường, cùng đàn chim ca rộn ràng.
(B) Em đến trường áo trắng, cùng đàn chim ca rộn ràng.

Quyết định này dịch từ tiếng Anh sang tiếng Việt, cụm từ “Áo trắng em
đến trường” dùng để chỉ nữ sinh còn “Em đến trường áo trắng” lại dùng để


21

chỉ trang phục. Nếu trong corpus của chúng ta, giả sử trigram “Áo trắng em
đến trường” xuất hiện 10 lần, trong khi “Em đến trường áo trắng” không xuất
hiện (hoặc khá nhỏ so với “Áo trắng em đến trường”) thì (A) là câu tốt hơn
(được chọn). Điều đó có nghĩa là ta có thể giả quyết vấn đề nhập nhằng ngữ
nghĩa chỉ dựa vào ngôn ngữ đích.
1.2.3 Huấn luyện mô hình ngôn ngữ
Khi huấn luyện (xây dựng) một mô hình ngôn ngữ ta cần chuẩn bị dữ
liệu là một ngữ liệu đơn ngữ (corpus) (kích thước dữ liệu huấn luyện lớn sẽ
cho mô hình ngôn ngữ tốt) và một bộ ước lượng thống kê có nhiệm vụ mô
hình hóa lượng xác suất của ngữ liệu. Các bộ ước lượng được mà LM sử dụng
đều cần đến tần suất của các n-gram, vì vậy ta cần đếm tần suất xuất hiện của
các n-gram từ 1-gram cho đến số bậc mô hình đang huấn luyện.
1.2.3.1 Ước lượng cực đại hóa khả năng (Maximium Likelihood
Estimation - MLE)
Để xây dựng một mô hình ước lượng cực đại hóa khả năng với tần suất
tương đối của các n-gram trong ngữ liệu ta có thể sử dụng kết quả đếm các ngram. Với ước lượng cực đại hoá khả năng, xác suất một unigram nhất định
nào đó sẽ xuất hiện tiếp theo đơn giản là tần suất nó xuất hiện trong ngữ liệu.

Pr

( )
MLE wi

c( wi )


 c( w )
i'

i'

Với c( wi ')  | wi'| là số lần xuất hiện của từ

w

i'

trong ngữ liệu.

Phương pháp này được gọi như vậy bởi vì nó cực đại hóa giá trị đầu ra để mô
hình hóa ngữ liệu huấn luyện. Ví dụ, trong ngữ liệu Brown1, một ngữ liệu với
một triệu từ, từ khóa ”Chinese” xuất hiện 400 lần. Vậy thì xác suất mà một
mô hình ngôn ngữ dùng MLE sẽ gán cho unigram ”Chinese” là

Pr

MLE

(Chinese) 

400
 0.0004 .
1000000



22

Xác suất điều kiện của một n-gram tổng quát với bậc >1 là:
i

Pr

i 1

MLE

( wi | wi n1) 

c( wi n 1)
i 1

c( wi n 1)

Nghĩa là một từ nào đó có tần suất xuất hiện thường xuyên sau lịch sử
có bậc n-1. Để minh họa, ta tiếp tục ví dụ trên, xác suất bigram ”Chinese
food” xuất hiện là số lần từ ”food” xuất hiện sau từ ”Chinese” chia cho
c(Chinese) = 400. Với ngữ liệu Brown, cụm từ ”Chinese food” xuất hiện 120
lần, ta có:
PrMLE(food|Chinese) = 0.3
1.2.3.2 Các phương pháp làm mịn
MLE là một phương pháp dễ hiểu, dễ sử dụng để ước lượng xác suất
cho mô hình, tuy nhiên trong thực tế ta gặp phải vấn đề dữ liệu thưa (data
sparseness problem). Nghĩa là tập ngữ liệu dùng để xây dựng LM dù lớn cũng
chỉ là tập hữu hạn các câu trong vô số câu có thể của một ngôn ngữ tự nhiên.
Do đó một LM chỉ sử dụng MLE sẽ gán xác suất bằng 0 cho nhiều n-gram tốt.

Để hạn chế vấn đề này, người ta thường sử dụng các phương pháp ước lượng
xác suất thống kê phức tạp hơn thay cho MLE. Những phương pháp này được
gọi là làm mịn (smoothing) hay trừ hao (discounting), khi mà một phần xác
suất từ các sự kiện trong mô hình sẽ được dành cho những sự kiện chưa từng
xuất hiện. Việc lấy từ cái gì và trừ hao như thế nào là một đề tài vẫn đang
được nghiên cứu nhiều. Ví dụ, cách cổ điển nhất của làm mịn là phương pháp
Add-one smoothing [13], trong phương pháp này, ta thêm một lượng l  1 vào
kết quả đếm số lần xuất hiện của tất cả từ vựng trong ngữ liệu.
Backoff và interpolation là hai khái niệm quan trọng được sử dụng
trong quá trình làm mịn. Khi LM gặp một n-gram chưa biết, việc tính xác suất
sẽ sử dụng thông tin từ (n-1)-gram, khi sự kiện (n-1)-gram cũng chưa từng
xuất hiện trong quá trình huấn luyện thì LM lại sử dụng thông tin xác suất từ


23

(n-2)-gram, ... cứ tiếp tục như vậy cho đến khi tính được xác suất của n-gram.
Quá trình này được gọi là backoff và được định nghĩa như sau:
i 1
i 1

  ( win1) PrLM ( wi| win1)
Pr BO (wi | wi n1)   PrBO( wiin2)



i 1

if


c(

i 1

win1)  0

otherwise.

Với  là hệ số trừ hao dựa trên tần suất xuất hiện của

i 1

w

i  n 1

trong lịch

sử,  là tham số backoff. Khi số lượng từ vựng đủ lớn, chúng ta có thể sẽ cần
gán xác suất bằng 0 cho một số từ ngoài từ điển (out of vocabulary – OOV)
khi ở mức unigram. Ví dụ như khi ta có một cuốn từ điển chuyên ngành và
không muốn chia sẻ lượng xác suất của các từ vựng đó (các danh từ chung,
các số thực đặc biệt, ...) cho các OOV. Một cách khác là chúng ta làm mịn
LM và dành một lượng xác suất nhỏ gán cho các OOV khi ở mức unigram.
Interpolation là phương pháp kết hợp thông tin thống kê n-gram qua tất
cả các bậc của LM. Nếu bậc của LM là n thì công thức đệ quy interpolation
như sau:
i 1

n


Pr (w | w
I

i

i 1

n 1

i 1

)   Pr LM ( wi | wi  n 1)  (1   ) Pr I ( wi | wi  n  2)

i  n 1

Với  là trọng số quyết định bậc của LM có ảnh hưởng lớn nhất đến
giá trị đầu ra. Tổng trọng số  được sử dụng cho tất cả các bậc n-gram bằng
một. Có nhiều cách để xác định giá trị cho các trọng số  này, đối với
phương pháp interpolation đơn giản thì các giá trị  này giảm theo số bậc ngram. Tuy nhiên thông thường chúng sẽ tính toán theo điều kiện ngữ cảnh cụ
thể, nghĩa là theo tần suất của các bậc n-gram trong lịch sử. Các trọng số này
không được tính toán từ dữ liệu huấn luyện, mà sử dụng tập dữ liệu held-out
riêng biệt – tập này chỉ được dùng để huấn luyện các tham số, mà trong
trường hợp này là các giá trị  . Cần thấy rằng sự khác biệt cơ bản giữa hai
phương pháp này là interpolation sử dụng thông tin từ các bậc thấp hơn ngay


24

cả khi dữ liệu xác suất của n-gram cần tính đã khác 0; trong khi đó backoff lại

chỉ tìm kiếm đến dữ liệu khác 0 gần nhất.
Những tiểu mục tiếp theo sẽ trình bày về một số phương pháp làm mịn
phổ biến nhất hiện nay, như Kneser-Ney[6] hay Stupid backoff

của

Google[5].
1.2.3.2.1 Kneser-Ney
Kneser-Ney (KN) là thuật toán làm mịn công bố năm 1995 [6], được
phát triển bởi Reinhard Kneser và Hermann Ney. Trong thuật toán KN, xác
suất của một unigram không tỉ lệ thuận với tần suất xuất hiện của nó mà với
số tiền tố mà nó có.
Có thể minh họa như sau, bigram “San Francisco” rất phổ biến trong
cuốn sách “Lịch sử thành phố San Francisco”. Với tần suất bigram này cao
như vậy thì nếu sử dụng phương pháp đơn giản, tần suất của từng từ “San” và
“Francisco” cũng sẽ phải rất cao. Tuy nhiên trong thuật toán KN thì xác suất
Pr(Francisco) lại có thể là rất thấp, vì từ “Francisco” thường chỉ đứng sau từ
“San”. Do các LM bậc thấp thường được sử dụng cho việc tính xác suất
backoff của các LM bậc cao hơn, nên thuật toán KN muốn tận dụng sự lãng
phí lượng xác suất này trong các thuật toán trước đó để dành cho các sự kiện
có khả năng xảy ra lớn hơn.
Trước hết chúng ta định nghĩa số lượng tiền tố của một từ như sau:

N
Thuật ngữ

N

1


1

( wi ) | wi 1 : c( wi 1 wi )  0|

để chỉ số lượng các từ xuất hiện một lần hoặc nhiều

hơn và ký tự “ o ” chỉ một từ bất kỳ nào đó. Thay vì sử dụng tần suất như trong
MLE, tần suất thô của mỗi từ được thay thế bằng số lượng từ (khác nhau)
đứng trước từ đó. Xác suất của unigram trong thuật toán KN được tính là:

PrKN (wi) 

N ( w )
 N ( w )
1

i'

i

1

i'


25

Tức là bằng số lượng tiền tố của từ

chia cho tổng số tiền tố của tất


w

i

cả các unigram trong ngữ liệu.
Với các bậc cao hơn, xác suất này được tính như sau:

N ( w
Pr (w | w ) 
 N ( w
i

i 1

KN

1

i n2
i'

i n 2

i

1

i'


)

i ' n2

)

Trong đó tử số:

N

( wi n 2) |
i

1

w



: c( wi n1 wi n 2)  0 |
i

i  n 1

Và mẫu số là tổng số lượng tiền tố của tất cả các n-gram có cùng chiều
dài

i

w


i n 2

. Mô hình đầy đủ của thuật toán KN được nội suy và có dạng như

sau:
i 1

Pr (w | w
i

)

i  n 1





max c( wi n1)  D,0
i

 c( w

i'

)

i '  n 1


i'

D

i 1

w

N (w
1

i'

i  n 1

) Pr KN ( wi n 2)
i

i '  n 1

i'

Với:
i 1

N (w
1

i  n 1


) |

w : c(w

i 1
i  n 1

i

w )  0|
i

Là số lượng hậu tố (khác nhau) xuất hiện sau từ

i 1

w

i  n 1

; và D là tham số

trừ hao.
1.2.3.2.2 Kneser-Ney cải tiến (Modified Kneser-Ney - MKN)
Thuật toán làm mịn Kneser-Ney cải tiến do Chen và Goodman nghiên
cứu, công bố năm 1999 [11], được phát triển từ thuật toán KN. Thuật toán KN
dùng phương pháp trừ hao tuyệt đối (absolutely discounting), trừ đi một giá
trị D duy nhất, 0 < D < 1, cho mọi kết quả đếm khác 0. Thuật toán MKN nâng
cao hiệu quả của KN bằng cách sử dụng các giá trị trừ hao khác nhau trong
những trường hợp khác nhau, dựa trên giá trị đếm của mỗi n-gram. Công thức

tổng quát của MKN là:
c( wi n1)  D(c( wi n1))
i

Pr

i 1

(
)
MKN wi wi  n 1

i

i ' c(wi ' n1)
i'

i 1

i 1

  ( wi n1) Pr MKN ( wi | w

i n 2

)


26


Với:
 0 if c  0

if c  1

D (c) D1
 D 2 if c  2

 D3 if c  3

Và:
n1
n1  2n2
n2
D1  1  2
n1
n3
D2  2  3
n2
n4
D3  3  4
n3
Với ni là tổng số n-gram có kết quả đếm là i của mô hình bậc n đang


được nội suy. Tổng tất cả các phân phối phải bằng một, do vậy:
i 1


)


 ( wi n1

i 1

D N (w
 c( w )

i{1, 2 , 3 }

N

2



N

3

i

i  n 1

)

i'

i'


Trong đó

i

i '  n 1

tương ứng đại diện cho số sự kiện có kết quả đếm

là hai và ba hoặc nhiều hơn ba.
1.2.3.2.3 Stupid Backoff
Thuật toán Kneser-Ney và Kneser-Ney cải tiến ở trên tuy hiệu quả
trong thực tế nhưng việc tính toán lại khá phức tạp, khối lượng tính toán sẽ trở
nên rất lớn khi dữ liệu nhiều, chẳng hạn như ngữ liệu n-gram Trillion Words
của Google.
Thay vì sử dụng thuật toán KN và MKN, Google sử dụng một thuật
toán làm mịn đơn giản hơn là Stupid Backoff. Thuật toán này sử dụng tần suất
tương đối của các n-gram một cách trực tiếp như sau:


27

 c( i )
i
 wii 1n 1
if c( wi n 1)  0
i 1

S ( wi | wi n 1)   c( wi n 1)
i


 S ( wi n  2) otherwise


Với N là cỡ của ngữ liệu huấn luyện. Brants[5] đã tuyên bố rằng khi có
lượng dữ liệu đủ lớn, thì hiệu quả của Stupid Backoff xấp xỉ làm mịn MKN.
Lý do ở đây ký hiệu S được sử dụng thay cho P là để nhấn mạnh rằng phương
pháp này trả lại điểm số tương đối chứ không phải là xác suất được chuẩn
hóa.
1.3 Đánh giá mô hình ngôn ngữ
Để xây dựng được một mô hình ngôn ngữ hiệu quả, chúng ta phải có
cách để đánh giá chúng. Dưới đây là một số phương pháp phổ biến để đánh
giá một mô hình ngôn ngữ:
- Entropy – Độ đo thông tin
- Perplexity – Độ hỗn loạn thông tin
- Error rate – Tỉ lệ lỗi
1.3.1 Entropy – Độ đo thông tin
Entropy là thước đo thông tin, có giá trị rất lớn trong xử lý ngôn ngữ.
Nó thể hiện mức độ thông tin trong ngữ pháp, thể hiện sự phù hợp của một
câu với ngôn ngữ, và dự đoán được từ tiếp theo trong cụm n-gram. Entropy
của một biến ngẫu nhiên X được tính theo công thức:
H ( X )    p( x)log p( x)
xX

2

Xét các câu gồm hữu hạn m từ W  ( w1, w2,..., wm) trong ngôn ngữ L.
Ta có công thức tính entropy như sau:
H(w1, w2,..., wm)    p( w1, w2,..., wm)log p( w1, w2,..., wm)
W L


2


×