Mô hình ngôn ngữ Ngram - Cao Văn Việt K51KHMT
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Cao Văn Việt
XÂY DỰNG MÔ HÌNH NGÔN NGỮ CHO TIẾNG VIỆT
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Khoa học máy tính
HÀ NỘI – 2010
LỜI CẢM ƠN
Đầu tiên, cho phép tôi gửi lời cảm ơn sâu sắc tới TS Lê Anh Cường, người đã
trực tiếp hướng dẫn, chỉ bảo và tạo điều kiện cho tôi trong quá trình hoàn thành luận
văn này.
Đồng thời tôi cũng xin gửi lời cảm ơn chân thành tới các thầy cô giáo trường Đại
học Công Nghệ, đặc biệt là các thầy cô trong bộ môn Khoa học Máy tính , những
người đã trực tiếp giảng dạy, hướng dẫn và tạo điều kiện cho tôi trong quá trình học
tập và thực hành ở trường.
Cuối cùng, tôi xin gửi gời cảm ơn tới tất cả các bạn đồng học và gia đình đã ủng
hộ, giúp đỡ tôi hoàn thành luận văn
TÓM TẮT
Mô hình ngôn ngữ là một bộ phận quan trọng của lĩnh vực xử lý ngôn ngữ tự
nhiên. Có rất nhiều lĩnh vực trong xử lý ngôn ngữ tự nhiên sử dụng mô hình ngôn ngữ
như: kiểm lỗi chính tả, dịch máy hay phân đoạn từ... Trên thế giới đã có rất nhiều nước
công bố nghiên cứu về mô hình ngôn ngữ áp dụng cho ngôn ngữ của họ nhưng ở Việt
Nam, việc nghiên cứu và xây dựng một mô hình ngôn ngữ chuẩn cho tiếng Việt vẫn
còn mới mẻ và gặp nhiều khó khăn. Chính điều này đã gợi ý và thúc đẩy chúng tôi lựa
chọn và tập trung nghiên cứu vấn đề này để có thể tạo điều kiện cho việc xử lý ngôn
ngữ tiếng Việt vốn vô cùng phong phú của chúng ta.
Luận văn sẽ trình bày khái quát về mô hình ngôn ngữ, đồng thời chỉ ra các khó
khăn còn tồn tại để rồi đưa ra những phương pháp khắc phục, trong đó trọng tâm
nghiên cứu các phương pháp làm mịn. Trong luận văn này này, chúng tôi sử dụng chủ
yếu bộ công cụ mã nguồn mở SRILIM để xây dựng mô hình ngôn ngữ cho tiếng Việt,
sau đó áp dụng mô hình ngôn ngữ đã tạo ra để tính toán độ hỗn loạn thông tin của văn
bản và dịch máy thống kê. Kết quả có được sẽ là cơ sở chính để chúng tôi chỉ ra
phương pháp làm mịn nào là tốt nhất khi sử dụng trong việc xây dựng mô hình ngôn
ngữ tiếng Việt.
MỤC LỤC
Chương 1
Giới thiệu vấn đề ................................................................................ 1
1.1
Đặt vấn đề: ......................................................................................................... 1
1.2
Mục tiêu: ............................................................................................................ 1
1.3
Cấu trúc của luận văn: ........................................................................................ 2
Chương 2
Mô hình ngôn ngữ Ngram: ................................................................. 3
2.1
Khái quát: ........................................................................................................... 3
2.2
Công thức tính “xác suất thô”: ............................................................................ 3
2.3
Khó khăn khi xây dựng mô hình ngôn ngữ N-gram ............................................ 4
2.3.1
Phân bố không đều: .................................................................................................4
2.3.2
Kích thước bộ nhớ của mô hình ngôn ngữ................................................................5
2.4
Các phương pháp làm mịn .................................................................................. 5
2.4.1
Các thuật toán chiết khấu (discounting): .................................................................5
2.4.2
Phương pháp truy hồi:..............................................................................................8
2.4.3
Phương pháp nội suy: ............................................................................................10
2.4.4
Phương pháp làm mịn Kneser - Ney: .....................................................................10
2.4.5
Phương pháp làm mịn Kneser - Ney cải tiến bởi Chen - GoodMan: .......................12
2.5
Kỹ thuật làm giảm kích thước dữ liệu: .............................................................. 13
2.5.1
Loại bỏ (pruning):..................................................................................................13
2.5.2
Đồng hóa (Quantization):.......................................................................................15
2.5.3
Nén (Compression):...............................................................................................16
2.6
Độ đo:............................................................................................................... 16
2.6.1
Entropy – Độ đo thông tin:.....................................................................................16
2.6.2
Perplexity – Độ hỗn loạn thông tin:........................................................................18
2.6.3
Error rate – Tỉ lệ lỗi: ..............................................................................................18
Chương 3
3.1
Ứng dụng của mô hình ngôn ngữ trong mô hình dịch máy thống kê: 19
Dịch máy: ......................................................................................................... 19
3.2
Dịch máy thống kê:........................................................................................... 19
3.2.1
Giới thiệu: .............................................................................................................19
3.2.2
Nguyên lý và các thành phần: ................................................................................19
3.2.3
Mô hình dịch: ........................................................................................................21
3.2.4
Bộ giải mã: ............................................................................................................25
3.3
Các phương pháp đánh giá bản dịch: ................................................................ 25
3.3.1
Đánh giá trực tiếp bằng con người: ........................................................................25
3.3.2
Đánh giá tự động: phương pháp BLEU ..................................................................26
Chương 4
4.1
Thực nghiệm: ................................................................................... 28
Công cụ: ........................................................................................................... 28
4.1.1
Bộ công cụ trợ giúp xây dựng tập văn bản huấn luyện: ..........................................28
4.1.2
Công cụ tách từ cho tiếng Việt - vnTokenizer: .......................................................28
4.1.3
Bộ công cụ xây dựng mô hình ngôn ngữ - SRILM: ................................................29
4.1.4
Bộ công cụ xây dựng mô hình dịch máy thống kê – MOSES: ................................32
4.2
Dữ liệu huấn luyện: .......................................................................................... 34
4.3
Kết quả: ............................................................................................................ 34
4.3.1
Số lượng các cụm ngram:.......................................................................................34
4.3.2
Tần số của tần số: ..................................................................................................36
4.3.3
Cut-off (loại bỏ):....................................................................................................39
4.3.4
Các phương pháp làm mịn: ....................................................................................40
4.3.5
Áp dụng vào mô hình dịch máy thống kê: ..............................................................41
Chương 5
Kết luận............................................................................................ 43
Tài liệu tham khảo................................................................................................ 44
Danh sách các bảng sử dụng trong luận văn:
Bảng 4-1: số lượng các cụm Ngram trong văn bản huấn luyện với âm tiết .................35
Bảng 4-2: số lượng các cụm Ngram trong văn bản huấn luyện với từ.........................36
Bảng 4-3: tần số của tần số các cụm Ngram áp dụng cho âm tiết ...............................37
Bảng 4-4: tần số của tần số các cụm Ngram với từ.....................................................38
Bảng 4-5: bộ nhớ và độ hỗn loạn thông tin khi áp dụng loại bỏ trong âm tiết .............39
Bảng 4-6: bộ nhớ và độ hỗn loạn thông tin khi áp dụng loại bỏ với từ .......................40
Bảng 4-7: độ hỗn loạn thông tin của các phương pháp làm mịn cho âm tiết ...............40
Bảng 4-8: độ hỗn loạn thông tin của các phương pháp làm mịn cho từ.......................41
Bảng 4-9: điểm BLEU của bản dịch máy với mô hình ngôn ngữ sử dụng dữ liệu huấn
luyện có kích thước nhỏ (50Mb) ................................................................................41
Bảng 4-10: điểm BLEU của bản dịch máy với mô hình Ngram sử dụng dữ liệu huấn
luyện có kích thước lớn (300Mb)...............................................................................42
Danh sách các hình sử dụng trong luận văn:
Hình 3-1: mô hình dịch máy thống kê từ tiếng Anh sang tiếng Việt ...........................20
Hình 3-3: sự tương ứng một - một giữa câu tiếng Anh và câu tiếng Pháp...................21
Hình 3-4: sự tương ứng giữa câu tiếng Anh với câu tiếng Tây Ban Nha khi cho thêm từ
vô giá trị (null) vào đầu câu tiếng Anh .......................................................................22
Hình 3-5: sự tương ứng một - nhiều giữa câu tiếng Anh với câu tiếng Pháp...............22
Hình 3-6: sự tương ứng nhiều - nhiều giữa câu tiếng Anh với câu tiếng Pháp. ...........22
Hình 3-7: mô hình dịch dựa trên cây cú pháp.............................................................25
Hình 3-8: sự trùng khớp của các bản dịch máy với bản dịch mẫu...............................26
Hình 4-1: số lượng các cụm Ngram với âm tiết khi tăng kích thước dữ liệu ...............35
Hình 4-2: số lượng các cụm Ngram với từ khi tăng kích thước dữ liệu.......................36
Hình 4-3: số lượng các cụm Ngram (âm tiết) có tần số từ 1 đến 10 ............................37
Hình 4-4: số lượng các cụm Ngram (từ) có tần số từ 1 đến 10....................................38
Chương 1 Giới thiệu vấn đề
1.1 Đặt vấn đề:
Ngôn ngữ tự nhiên là những ngôn ngữ được con người sử dụng trong các giao
tiếp hàng ngày: nghe, nói, đọc, viết [10]. Mặc dù con người có thể dễ dàng hiểu và học
các ngôn ngữ tự nhiên; việc làm cho máy hiểu được ngôn ngữ tự nhiên không phải là
chuyện dễ dàng. Sở dĩ có khó khăn là do ngôn ngữ tự nhiên có các bộ luật, cấu trúc
ngữ pháp phong phú hơn nhiều các ngôn ngữ máy tính, hơn nữa để hiểu đúng nội dung
các giao tiếp, văn bản trong ngôn ngữ tự nhiên cần phải nắm được ngữ cảnh của nội
dung đó. Do vậy, để có thể xây dựng được một bộ ngữ pháp, từ vựng hoàn chỉnh,
chính xác để máy có thể hiểu ngôn ngữ tự nhiên là một việc rất tốn công sức và đòi hỏi
người thực hiện phải có hiểu biết sâu về ngôn ngữ học.
Các phương pháp xử lý ngôn ngữ tự nhiên dựa trên thống kê không nhắm tới việc
con người tự xây dựng mô hình ngữ pháp mà lập chương trình cho máy tính có thể
“học” nhờ vào việc thống kê các từ và cụm từ có trong các văn bản. Cốt lõi nhất của
các phương pháp xử lý ngôn ngữ tự nhiên dựa trên thống kê chính là việc xây dựng 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 [2][10]. 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à thứ năm”] = 0.001
P[“năm thứ hôm là qua”] = 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. Vấn đề này sẽ trình bày rõ ràng hơn trong chương 2.
1.2 Mục tiêu:
1
Mục tiêu chính của luận văn là tìm hiểu lý thuyết về mô hình Ngram và các vấn đề
trong đó, đặc biệt là các phương pháp làm mịn. Về thực nghiệm, luận văn có sử dụng
bộ công cụ SRILM để xây dựng mô hình ngôn ngữ cho tiếng Việt với các phương
pháp làm mịn khác nhau. Bằng việc áp dụng các mô hình ngôn ngữ khác nhau đó vào
dịch máy thống kê, chúng tôi đã chỉ ra được phương pháp làm mịn nào là tốt nhất khi
áp dụng cho mô hình ngôn ngữ. Để đạt được thành tựu đó, chúng tôi cũng đã phải tìm
hiểu lý thuyết dịch máy thống kê và thực nghiệm dựa trên bộ công cụ Moses.
1.3 Cấu trúc của luận văn:
Luận văn có cấu trúc như sau:
Chương 2 xem xét các vấn đề liên quan đến mô hình ngôn ngữ Ngram, các sự cố
gặp phải và cách khắc phục.
Chương 3 đề cập đến lý thuyết mô hình dịch máy thống kê.
Chương 4, luận văn tập trung vào việc mô tả thực nghiệm, bao gồm công việc xây
dựng và cài đặt những chương trình hỗ trợ việc xây dựng được mô hình ngôn ngữ, mô
hình dịch máy thống kê và các kết quả đạt được
Chương 5 tổng kết lại những gì luận văn đạt được và đưa ra kế hoạch nghiên cứu
trong tương lai.
2
Chương 2 Mô hình ngôn ngữ Ngram:
2.1 Khái quát:
Nhiệm vụ của mô hình ngôn ngữ là cho biết xác suất của một câu w1w2...wm là
bao nhiêu. Theo công thức Bayes: P(AB) = P(B|A) * P(A), thì:
P(w1w2…wm) = P(w1) * P(w2|w1) * P(w3|w 1w2) *…* P(wm|w1w2…wm-1)
Theo công thức này, mô hình ngôn ngữ cần phải có một lượng bộ nhớ vô cùng
lớn để có thể lưu hết xác suất của tất cả các chuỗi độ dài nhỏ hơn m. Rõ ràng, điều này
là không thể khi m là độ dài của các văn bản ngôn ngữ tự nhiên (m có thể tiến tới vô
cùng). Để có thể tính được xác suất của văn bản với lượng bộ nhớ chấp nhận được, ta
sử dụng xấp xỉ Markov bậc n:
P(wm|w1,w2,…, wm-1) = P(wm|w m-n,wn-m+1, …,wm-1)
Nếu áp dụng xấp xỉ Markov, xác suất xuất hiện của một từ (wm) được coi như chỉ
phụ thuộc vào n từ đứng liền trước nó (wm-nwm-n+1…wm-1) chứ không phải phụ thuộc
vào toàn bộ dãy từ đứng trước (w1w2…wm-1). Như vậy, công thức tính xác suất văn
bản được tính lại theo công thức:
P(w1w2…wm) = P(w1) * P(w2|w1) * P(w3|w 1w2) *…* P(wm-1|wm-n-1wm-n
…wm-2)* P(wm|wm-nwm-n+1…wm-1)
Với công thức này, ta có thể xây dựng mô hình ngôn ngữ dựa trên việc thống kê
các cụm có ít hơn n+1 từ. Mô hình ngôn ngữ này gọi là mô hình ngôn ngữ N-gram.
Một cụm N-gram là một dãy con gồm n phần tử liên tiếp của 1 dãy các phần tử
cho trước (trong bộ dữ liệu huấn luyện) [2].
Ví dụ: cụm 2-gram “tôi đã” thuộc câu “tôi đã từng đọc quyển sách ấy”.
Các phần tử được xét ở đây thường là kí tự, từ hoặc cụm từ; tùy vào mục đích
sử dụng. Dựa vào số phần tử của 1 cụm N-gram, ta có các tên gọi cụ thể:
N = 1: Unigram
N = 2: Bigram
N = 3: Trigram
2.2 Công thức tính “xác suất thô”:
3
Gọi C(wi-n+1...wi-1wi) là tần số xuất hiện của cụm wi-n+1...wi-1wi trong tập văn bản
huấn luyện.
Gọi P(wi|wi-n+1...wi-1) là xác suất wi đi sau cụm wi-n+1..wi-2wi-1.
Ta có công thức tính xác suất như sau:
P(wi|wi-n+1...wi-1) =
C(wi-n+1...wi-1wi)
C(wi-n+1...wi-1w)
w
Dễ thấy, C(wi-n+1..wi-1w) chính là tần số xuất hiện của cụm wi-n+1...wi-1 trong
w
văn bản huấn luyện. Do đó công thức trên viết lại thành:
P(wi|wi-n+1...wi-1) =
C(wi-n+1...wi-1wi)
C(wi-n+1...wi-1)
Tỉ lệ ở vế phải còn gọi là tỉ lệ tần số. Cách tính xác suất dựa vào tỉ lệ tần số còn
gọi là ước lượng xác suất cực đại. Cũng có thể gọi đây là công thức tính “xác suất thô”
để phân biệt với các cách tính xác suất theo các thuật toán sẽ xét ở phần sau.
2.3 Khó khăn khi xây dựng mô hình ngôn ngữ N-gram
2.3.1 Phân bố không đều:
Khi sử dụng mô hình N-gram theo công thức “xác suất thô”, sự phân bố không
đều trong tập văn bản huấn luyện có thể dẫn đến các ước lượng không chính xác. Khi
các N-gram phân bố thưa, nhiều cụm n-gram không xuất hiện hoặc chỉ có số lần xuất
hiện nhỏ, việc ước lượng các câu có chứa các cụm n-gram này sẽ có kết quả tồi. Với V
là kích thước bộ từ vựng, ta sẽ có Vn cụm N-gram có thể sinh từ bộ từ vựng. Tuy
nhiên, thực tế thì số cụm N-gram có nghĩa và thường gặp chỉ chiếm rất ít.
Ví dụ: tiếng Việt có khoảng hơn 5000 âm tiết khác nhau, ta có tổng số cụm 3gram có thể có là: 5.0003 = 125.000.000.000 Tuy nhiên, số cụm 3-gram thống kê được
chỉ xấp xỉ 1.500.000. Như vậy sẽ có rất nhiều cụm 3-gram không xuất hiện hoặc chỉ
xuất hiện rất ít.
Khi tính toán xác suất của một câu, có rất nhiều trường hợp sẽ gặp cụm Ngram
chưa xuất hiện trong dữ liệu huấn luyện bao giờ. Điều này làm xác suất của cả câu
bằng 0, trong khi câu đó có thể là một câu hoàn toàn đúng về mặt ngữ pháp và ngữ
nghĩa. Đề khắc phục tình trạng này, người ta phải sử dụng một số phương pháp “làm
mịn” kết quả thống kê mà chúng ta sẽ đề cập ở phần 2.5.
4
2.3.2 Kích thước bộ nhớ của mô hình ngôn ngữ
Khi kích thước tập văn bản huấn luyện lớn, số lượng các cụm Ngram và kích
thước của mô hình ngôn ngữ cũng rất lớn. Nó không những gây khó khăn trong việc
lưu trữ mà còn làm tốc độ xử lý của mô hình ngôn ngữ giảm xuống do bộ nhớ của máy
tính là hạn chế. Để xây dựng mô hình ngôn ngữ hiệu quả, chúng ta phải giảm kích
thước của mô hình ngôn ngữ mà vẫn đảm bảo độ chính xác. Vấn đề này sẽ được giải
quyết ở phần 2.6
2.4 Các phương pháp làm mịn
Để khắc phục tình trạng các cụm N-gram phân bố thưa như đã đề cập ở phần
2.4.1, người ta đã đưa ra các phương pháp “làm mịn” kết quả thống kê nhằm đánh giá
chính xác hơn (mịn hơn) xác suất của các cụm N-gram. Các phương pháp “làm mịn”
đánh giá lại xác suất của các cụm N-gram bằng cách:
Gán cho các cụm N-gram có xác suất 0 (không xuất hiện) một giá trị khác
0.
Thay đổi lại giá trị xác suất của các cụm N-gram có xác suất khác 0 (có
xuất hiện khi thống kê) thành một giá trị phù hợp (tổng xác suất không
đổi).
Các phương pháp làm mịn có thể được chia ra thành loại như sau:
Chiết khấu (Discounting): giảm (lượng nhỏ) xác suất của các cụm
Ngram có xác suất lớn hơn 0 để bù cho các cụm Ngram không xuất hiện
trong tập huấn luyện.
Truy hồi (Back-off) : tính toán xác suất các cụm Ngram không xuất hiện
trong tập huấn luyện dựa vào các cụm Ngram ngắn hơn có xác suất lớn
hơn 0
Nội suy (Interpolation): tính toán xác suất của tất cả các cụm Ngram dựa
vào xác suất của các cụm Ngram ngắn hơn.
2.4.1 Các thuật toán chiết khấu (discounting):
Nguyên lý của các thuật toán chiết khấu là giảm xác suất của các cụm Ngram có
xác suất lớn hơn 0 đề bù cho các cụm Ngram chưa từng xuất hiện trong tập huấn luyện
[10]. Các thuật toán này sẽ trực tiếp làm thay đổi tần số xuất hiện của tất cả các cụm
Ngram. Ở đây đề cập đến 3 thuật toán chiết khấu phổ biến:
5
Thuật toán Add-one
Thuật toán Witten-Bell
Thuật toán Good-Turing
2.4.1.1 Phương pháp làm mịn Add-one:
Thuật toán làm mịn Add-one cộng thêm 1 vào tần số xuất hiện của tất cả các cụm
N-gram rồi nhân với phân số chuẩn hóa (để bảo toàn tổng xác suất).
Với unigram, khi cộng thêm 1 vào tần số của mỗi cụm unigram, thì tổng số cụm
unigram đã xuất hiện bằng:
M’ = M + V với M là tổng số cụm unigram đã xuất hiện
V là kích thước bộ từ vựng
Để bảo toàn tổng số cụm unigram vẫn bằng M, thì tần số mới của các cụm
unigram được tính lại theo công thức:
Ci* = (Ci+1)
M
với Ci là tần số của cụm unigram trước khi làm mịn
M’
Như vậy, xác suất của các cụm unigram cũng được tính lại:
Pi* =
Ci* (Ci+1)
=
M
M+V
Xét các cụm N-gram với N>1, thay M bằng C(wi-n+1...wi-1) thì xác suất của cụm
wi-n+1...wi-1wi được tính theo công thức sau:
P(wi|wi-n+1...wi-1) =
C(wi-n+1...wi-1wi) + 1
C(wi-n+1...wi-1) + V
Chúng ta có thể thấy thuật toán này sẽ làm thay đổi đáng kể xác suất của các cụm
Ngram đã xuất hiện trong tập huấn luyện nếu kích thước bộ từ điển V là rất lớn. Trong
thực nghiệm, một vài cụm Ngram có xác suất giảm đi gần 10 lần, do kích thước bộ từ
điển là lớn trong khi tần số xuất hiện của cụm Ngram đó không cao. Để thuật toán
thêm hiệu quả, người ta sử dụng công thức sau:
P(w1w2...wn) =
C(w1w2...wn) +
C(w1w2...wn-1) + M
6
Công thức trên là một phiên bản cải tiến thông dụng của thuật toán add-one. Để
bảo toàn tổng xác suất của tất cả các cụm Ngram, thì được chọn trong khoảng [0, 1],
với một số giá trị thông dụng sau:
= 0: không làm mịn
= 1: thuật toán add-one
1
= : được gọi là thuật toán Jeffreys - Perks
2
2.4.1.2 Phương pháp làm mịn Witten - Bell:
Thuật toán Witten-Bell hoạt động dựa trên nguyên tắc:
Khi gặp những cụm N-gram có tần số 0, ta coi đây là lần đầu tiên cụm từ này
xuất hiện. Như vậy, xác suất của cụm N-gram có tần số bằng 0 có thể tính dựa vào xác
suất gặp một cụm N-gram lần đầu tiên.
Với unigram, gọi T là số cụm unigram khác nhau đã xuất hiện, còn M là tổng số
các cụm unigram đã thống kê, khi đó tổng số sự kiện sẽ là (T+M), và xác suất để gặp
cụm unigram lần đầu tiên (hay tổng xác suất của các cụm unigram chưa xuất hiện lần
T
nào) được tính bằng:
T+M
Gọi V là kích thước bộ từ vựng, còn Z là số cụm unigram chưa xuất hiện lần nào:
Z=V-T
Xác suất xuất hiện của một cụm unigram chưa xuất hiện lần nào (có tần số bằng
0) được tính bằng:
P* =
T
Z(T+M)
Và xác suất xuất hiện của các cụm unigram có tần số khác 0 được tính lại theo
công thức:
P(w) =
c(w)
với c(w) là số lần xuất hiện của cụm w
T+M
Cũng giống thuật toán add-one, khi xét các cụm N-gram với N>1, thay M bằng
C(wi-n+1...wi-1) thì xác suất của cụm wi-n+1...wi-1wi với C(wi-n+1...wi-1wi) = 0 được tính
theo công thức sau:
7
T(wi-n+1...wi-1)
Z(wi-n+1...wi-1)(C(wi-n+1...wi-1) + T(wi-n+1...wi-1))
P(wi|wi-n+1...wi-1) =
Với C(wi-n+1...wi-1wi) > 0, thì xác suất cụm wi-n+1...wi-1wi tính bằng công thức:
P(wi|wi-n+1...wi-1) =
C(wi-n+1...wi-1wi)
C(wi-n+1...wi-1) + T(wi-n+1...wi-1)
2.4.1.3 Phương pháp làm mịn Good - Turing:
Thuật toán Good-Turing dựa trên việc tính toán Nc, với Nc là số cụm N-gram
xuất hiện c lần. Như vậy:
N0 là số cụm n-gram có tần số 0 (số cụm N-gram không xuất hiện lần nào)
N1 là số cụm n-gram có tần số 1 (số cụm N-gram xuất hiện 1 lần)
…
Nc có thể hiểu đơn giản là: Nc =
w:count(w)=c
Khi đó, thuật toán Good-Turing sẽ thay thế tần số c bằng một tần số mới c* theo
công thức:
c* = (c+1) *
Nc+1
Nc
Xác suất của một cụm N-gram với tần số là c được tính lại theo công thức:
c=
c=
c=
c*
P(w) = với N = Ncc = Ncc* = Nc+1(c+1)
N
c=0
c=0
c=0
Trên thực tế, người ta không tính toán và thay thế mọi tần số c bởi một tần số
mới c*. Người ta chọn một ngưỡng k nhất định, và chỉ thay thế tần số c bởi tần số mới
c* khi c nhỏ hơn hoặc bằng k, còn nếu c lớn hơn k thì giữ nguyên tần số. Để đơn giản,
người ta chọn k đủ lớn dựa vào kết quả huấn luyện (ví dụ giá trị lớn nhất)
2.4.2 Phương pháp truy hồi:
Trong các phương pháp chiết khấu như Add-One hay Witten-Bell, nếu cụm
wi-n+1...wi-1wi không xuất hiện trong tập huấn luyện, và cụm wi-n+1...wi-1 cũng không
xuất hiện, thì xác suất của cụm wi-n+1...wi-1wi sau khi làm mịn vẫn bằng 0. Phương
pháp truy hồi tránh rắc rối trên bằng cách ước lượng xác suất các cụm Ngram chưa
8
xuất hiện lần nào dựa vào xác suất của các cụm Ngram ngắn hơn có xác suất khác 0
[10][4].
Cụ thể, xác suất của cụm wi-n+1...wi-1wi được tính lại theo công thức sau:
nếu C(wi-n+1...wi-1wi) > 0
P(wi|wi-n+1...wi-1)
PB(wi|wi-n+1...wi-1) =
* PB(wi|wi-n+2 ...wi-1 ) nếu C(wi-n+1...wi-1wi) = 0
Áp dụng cho bigram, ta có:
P(wi|wi-1) nếu C(wi-1wi) > 0
PB(wi|wi-1) =
* P(w i) nếu C(wi-1wi) = 0
Công thức trên có thể viết lại thành:
1 nếu C(x) = 0
PB(wi|wi-1) = P(wi|wi-1) + (wi-1wi) * * P(wi) với u(x) = 0 nếu C(x) > 0
Tương tự, khi áp dụng cho trigram ta có:
P(wi|wi-2wi-1) nếu C(wi-2wi-1wi ) > 0
PB(wi|wi-2wi-1) = 1 * P(wi|w i-1) nếu C(wi-2wi-1wi ) = 0 và C(wi-1wi ) > 0
2 * P(wi) nếu C(wi-2wi-1wi ) = 0 và C(wi-1wi ) = 0
Công thức trên cũng có thể viết lại thành:
PB(wi|wi-2wi-1) = P(wi|w i-2wi-1) + (wi-2wi-1wi) * 1 * P(w i|wi-1) + (wi-1wi) *
2 * P(wi)
Sự chính xác của mô hình truy hồi phụ thuộc vào các tham số 1 và 2. Có vài kỹ
thuật giúp lựa chọn được những tham số này, tùy theo tập huấn luyện và mô hình ngôn
ngữ.
Một cách đơn giản, có thể chọn 1 và 2 là các hằng số. Tuy nhiên rất khó có thể
chọn được hai hằng số để tổng xác suất của tất cả các cụm Ngram không thay đổi.
Việc chọn hằng số không chính xác, sẽ làm ảnh hưởng lớn đến độ chính xác của cả mô
hình ngôn ngữ. Do đó, ta có thể chọn tham số như một hàm của Ngram:
1 = 1(wi-1wi) và 2 = 2(wi-1wi)
Tuy nhiên, trong phương pháp truy hồi, tổng xác suất của tất cả các cụm Ngram
sẽ luôn lớn hơn 1, do xác suất của các cụm Ngram đã xuất hiện thì không thay đổi,
trong khi xác suất của các cụm Ngram chưa xuất hiện thì được tăng lên. Do đó, để
thuật toán chính xác hơn, thì ta cần kết hợp nó với một thuật toán chiết khấu như
9
Witten-Bell hay Good-Turing để làm giảm xác suất của các cụm Ngram đã xuất hiện.
Do đó, trong thực tế, chúng ta có công thức sau:
P’(wi|wi-2wi-1) nếu C(wi-2wi-1wi) > 0
P(wi|wi-2wi-1) = 1 * P’(wi|wi-1) nếu C(wi-2wi-1wi) = 0 và C(wi-1wi) > 0
2 * P’(wi) nếu C(wi-2wi-1wi) = 0 và C(wi-1wi) = 0
Trong đó P’ chính là xác suất của cụm Ngram khi áp dụng thuật toán làm mịn
chiết khấu.
2.4.3 Phương pháp nội suy:
Phương pháp này có chung nguyên lý với phương pháp truy hồi: “sử dụng các
cụm Ngram ngắn hơn để tính xác suất của cụm Ngram dài hơn”[1][2]. Tuy nhiên,
phương pháp này khác phương pháp truy hồi ở điểm: phương pháp này không phụ
thuộc vào sự xuất hiện của các cụm Ngram.
Công thức tính xác suất theo phương pháp nội suy như sau:
PI(wi|wi-n+1...wi-1) = P(wi|wi-n+1...wi-1) + (1-)PI(wi|wi-n+2...wi-1)
Áp dụng cho bigram và trigram ta có:
PI(wi|wi-1) = P(wi|wi-1) + (1-)P(wi)
PI(wi|wi-n+1...wi-1) = 1P(wi|wi-2wi-1) + 2P(wi|wi-1) + 3P(wi) với i = 1
i
Ở công thức trên, do tổng của tất cả các tham số bằng 1 nên để đơn giản ta có
1
thể chọn tất cả bằng nhau và bằng .
3
Tuy nhiên, cũng có thể chọn các tham số như là một hàm của Ngram:
1 = 1(wi-2wi-1wi), 2 = 2(wi-1wi) và 3 = 3(wi)
2.4.4 Phương pháp làm mịn Kneser - Ney:
Thuật toán Kneser-Ney xây dựng theo hai mô hình: truy hồi và nội suy, tuy nhiên
trong thuật toán này không cần phải áp dụng các thuật toán chiết khấu trước khi áp
dụng công thức truy hồi.
Mô hình truy hồi:
10
C(wi-n+1 ...wi) - D
nếu C(wi-n+1 ...wi) > 0
PBKN(wi|wi-n+1 ..wi-1) = C(wi-n+1...wi-1)
(wi-n+1 ...wi-1)PBKN(wi|wi-n+2 ...wi-1) nếu C(wi-n+1 ...wi) = 0
Trong đó:
o PBKN(wi) =
N(vw i) - D
với N(vw) là số lượng từ v khác nhau xuất hiện
N(vw)
w
trước w trong tập huấn luyện
o (wi-n+1..wi-1) =
C(wi-n+1..wi-1w) - D
w:C(wi-n+1..wi-1w)>0
1C(wi-n+1..wi-1)
1-
PBKN(w|wi-n+2..wi-1)
w:C(wi-n+1..wi-1w>0)
Như vậy:
C(wi-2 wi-1wi) - D
nếu C(wi-2wi-1wi) > 0
PBKN(wi|wi-2wi-1) = C(wi-2wi-1)
(wi-2 wi-1)PBKN(wi|wi-1 ) nếu C(wi-2 wi-1 wi) = 0
C(wi-1 wi) - D
nếu C(wi-1wi) > 0
PBKN(wi|wi-1) = C(wi-1)
(w i-1)PBKN(wi) nếu C(wi-1wi) = 0
PBKN(wi) =
N(vwi) - D
N(vw)
w
Mô hình nội suy:
PIKN(wi|wi-n+1..wi-1) =
C(wi-n+1..wi) - D
+ (wi-n+1..wi-1)PIKN(wi|wi-n+2..wi-1)
C(wi-n+1..wi-1)
Trong đó:
o (wi-n+1..wi-1) =
D N(wi-n+1..wi-1v)
với N(wi-n+1..wi-1v) là số lượng từ v
C(wi-n+1..wi-1)
khác nhau xuất hiện liền sau cụm wi-n+1..wi trong tập huấn luyện
11
N(vwi) - D
o PIKN(wi) =
+
N(vw)
1
với N(vw) là số lượng từ v khác nhau xuất
V
w
hiện liền trước từ w trong tập huấn luyện.
D N(v)
o =
N(vw)
w
Như vậy:
PIKN(wi|wi-2wi-1) =
PIKN(wi|wi-1) =
PIKN(wi) =
C(wi-2wi-1wi) - D
+ (wi-2wi-1)PIKN(wi|w i-1)
C(wi-2wi-1)
C(wi-1wi) - D
+ (wi-1)PIKN(wi)
C(wi-1)
N(vwi) - D
N(vw)
+
1
V
w
Trong cả 2 mô hình nội suy và truy hồi, D được chọn: D =
N1
N1 + 2N2
2.4.5 Phương pháp làm mịn Kneser - Ney cải tiến bởi Chen GoodMan:
Công thức tính toán của thuật toán Kneser-Ney cải tiến bởi Chen và GoodMan
giống công thức của thuật toán Kneser-Ney, tuy nhiên hằng số D bị thay đổi.
Chen và GoodMan chọn D như sau:
D=
Với Y =
c(wi-n+1..wi) = 0
0Dnếu
1 nếu c(wi-n+1.. wi) = 1
D2 nếu c(wi-n+1.. wi) = 2
D3 nếu c(wi-n+1.. wi) >= 3
N1
(N1 + 2N2)
D1 = 1 - 2Y
N2
N1
D2 = 1 - 3Y
N3
N2
12
D3 = 1 - 4Y
N4
N3
Trong đó: Ni là số lượng cụm N-gram có số lần xuất hiện bằng i
Chú ý rằng: với mỗi bậc của N-gram ta lại có một bộ 3 hằng số trên. Điều đó có
nghĩa là: unigram, bigram, ... có các hằng số trên là khác nhau.
2.5 Kỹ thuật làm giảm kích thước dữ liệu:
Các kỹ thuật này làm giảm kích thước của mô hình ngôn ngữ. Mặc dù đều có
chung một mục tiêu, nhưng mỗi kỹ thuật lại có hiệu quả khác nhau. Có ba kỹ thuật
chính, bao gồm:
Pruning (loại bỏ): làm giảm số lượng các cụm Ngram trong mô hình ngôn
ngữ bằng cách loại bỏ các cụm Ngram không quan trọng
Quantization (lượng tử hóa): thay đổi cấu trúc thông tin của mỗi cụm
Ngram trong mô hình ngôn ngữ.
Compression (nén): nén cấu trúc dữ liệu sử dụng trong việc lưu trữ các
cụm Ngram trong mô hình ngôn ngữ
2.5.1 Loại bỏ (pruning):
Số lượng các cụm Ngram xuất hiện vài lần trong tập huấn luyện thường là lớn so
với tổng số các cụm Ngram. Các cụm Ngram đó thường là lỗi ngữ pháp trong tập huấn
luyện, hoặc là một số dạng đặc biệt như: tên riêng, từ viết tắt, ... [10] Những cụm
Ngram này thường rất ít sử dụng trong thực tế, do đó việc tồn tại của chúng có thể làm
ảnh hưởng đến độ chính xác của mô hình ngôn ngữ. Chính vì lý do đó, kỹ thuật
pruning tập trung vào việc loại bỏ các cụm Ngram như vậy. Có 2 phương pháp chính:
Cut-off (cắt bỏ): phương pháp này tập trung vào việc loại bỏ các cụm
Ngram có tần số thấp trong tập huấn luyện
Weighted difference: phương pháp này tập trung vào việc đánh giá và
loại bỏ các cụm Ngram không hiệu quả dựa vào xác suất của các cụm
Ngram trước và sau khi làm mịn theo phương pháp truy hồi.
2.5.1.1 Cắt bỏ (cut-off):
Phương pháp này là phương pháp thông dụng, thường được sử dụng để làm giảm
kích thước mô hình ngôn ngữ. Trong thực tế, trong tập văn bản huấn luyện, có rất
13
- Xem thêm -