1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu mô hình ngôn ngữ sử dụng phương pháp bloom filter

71 1,5K 6
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 71
Dung lượng 1,04 MB

Nội dung

Tài liệu tham khảo công nghệ thông tin Tìm hiểu mô hình ngôn ngữ sử dụng phương pháp bloom filter

Trang 1

Nguyễn Thạc Huy

TÌM HIỂU MÔ HÌNH NGÔN NGỮ

SỬ DỤNG PHƯƠNG PHÁP BLOOM FILTER

KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY

Ngành: Công nghệ thông tin

Trang 2

Nguyễn Thạc Huy

TÌM HIỂU MÔ HÌNH NGÔN NGỮ

SỬ DỤNG PHƯƠNG PHÁP BLOOM FILTER

KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY

Ngành: Công nghệ thông tin

Cán bộ hướng dẫn: TS Nguyễn Văn Vinh

Trang 3

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 hai kiểu cấu trúc dữ liệu dựa trên Bloom Filter là Log-FrequencyBloom Filter và 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ớiMoses [21]

Trang 4

Mục lục

TÓM TẮT NỘI DUNG 1

MỤC LỤC 2

LỜI CẢM ƠN 4

DANH MỤC TỪ VIẾT TẮT 5

DANH MỤC HÌNH 6

MỞ ĐẦU 1

CHƯƠNG 1 - Tổng quan về mô hình ngôn ngữ 3

1.1 N-gram 3

1.2 Xây dựng mô hình ngôn ngữ 4

1.2.1 Ước lượng cực đại hóa khả năng (MLE) 5

1.2.2 Các phương pháp làm mịn 5

1.2.2.1 Kneser-Ney 7

1.2.2.2 Kneser-Ney cải tiến (Modified Kneser-Ney) 8

1.2.2.3 Stupid Backoff 9

1.3 Đánh giá mô hình ngôn ngữ 10

1.3.1 Perplexity 10

1.3.2 MSE 11

CHƯƠNG 2 - Các cấu trúc dữ liệu dựa trên Bloom Filter 13

2.1 Các cấu trúc dữ liệu xác suất (PDS) 14

2.2 Hàm băm 16

2.3 Bloom Filter cơ bản 18

2.4 Mô hình ngôn ngữ sử dụng Bloom Filter 23

2.4.1 Bloom Filter tần số log 23

Trang 5

2.4.2 Bộ lọc dựa vào chuỗi con 25

2.4.3 Bloom Map 26

CHƯƠNG 3 - Thử nghiệm: Xây dựng LM với RandLM và SRILM 32

3.1 Ngữ liệu 33

3.2 Thuật toán làm mịn 34

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

CHƯƠNG 4 - Thử nghiệm: Dịch máy thống kê với Moses 40

4.1 Dịch máy thống kê 40

4.1.1 Giới thiệu về dịch máy thống kê 40

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

4.1.3 Điểm BLEU 45

4.2 Baseline System 46

4.3 Ngữ liệu 46

4.4 Kết quả thử nghiệm 47

KẾT LUẬN 50

PHỤ LỤC 51

Trang 6

Lời cảm ơn

Trước tiên, tôi muốn gửi lời cảm ơn chân thành tới giảng viên, TS Nguyễn VănVinh, cảm ơn sự chỉ bảo tận tình của thầy trong suốt thời gian hướng dẫn tôi thực tậpchuyên ngành và nghiên cứu khóa luận này Tôi cũng xin cảm ơn anh Tống Tùng Khánh

và anh Vương Hoài Thu trong nhóm Digital Content Solution ở Công ty cổ phần tin họcLạc Việt, hai anh đã nhiệt tình giúp đỡ tôi với đề tài này và đóng góp nhiều ý kiến quýbáu để khóa luận được hoàn thiện hơn Nếu không có sự hướng dẫn của thầy và các anh,tôi đã không thể hoàn thành được khóa luận này

Sự động viên, khích lệ của bố mẹ, anh chị tôi là nguồn động lực, nguồn hỗ trợ lớnlao Và tôi cũng rất cảm ơn tất cả những người bạn đại học đã cùng chia sẻ quãng thờigian ý nghĩa của đời sinh viên dưới mái trường Đại học Công nghệ - ĐHQGHN Chúc cácbạn có kết quả tốt nghiệp tốt và thành công trong cuộc sống

Trang 7

Danh mục từ viết tắt

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

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

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

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

Trang 8

Danh mục hình

Hình 1: Mô hình Markov bậc 2 4

Hình 2: Ví dụ về hàm băm 16

Hình 3: Ví dụ về bảng băm Xung đột trong bảng băm 17

Hình 4: Huấn luyện Bloom Filter 18

Hình 5: Truy vấn Bloom Filter 19

Hình 6: Lỗi-một-phía trong Bloom Filter 20

Hình 7: Tăng kích cỡ LM cải thiện điểm BLEU 42

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

Hình 9: Minh họa dịch máy thống kê dựa vào cụm 43

Trang 9

Mở đầu

Mô hình ngôn ngữ (Language Model - LM) là một thành phần quan trọng trongnhiều ứng dụng như dịch máy, nhận dạng tiếng nói, … Các LM luôn cố gắng mô phỏngngôn ngữ tự nhiên một cách chính xác nhất Từ nhiều nghiên cứu và thử nghiệm [19, 28],chúng ta có thể thấy rằng mô hình ngôn ngữ với ngữ liệu càng lớn, bậc càng cao thì môphỏng càng chính xác

Trước đây việc xây dựng các ngữ liệu lớn rất khó khăn Nhưng với sự bùng nổ củaInternet như hiện nay, khối lượng thông tin sẵn có là vô cùng lớn Sẽ thật là lãng phí nếunhư chúng ta không tận dụng kho ngữ liệu khổng lồ này Do đó trong những năm gầnđây, kích thước các tập ngữ liệu dùng để huấn luyện LM đã phát triển đáng kinh ngạc,chúng lớn đến mức không còn có thể lưu trữ được trong bộ nhớ của những siêu máy tínhvới nhiều Gigabytes bộ nhớ RAM Điều này khiến cho nỗ lực mô phỏng chính xác hơnngôn ngữ tự nhiên bằng cách sử dụng các ngữ liệu lớn với kiểu mô hình truyền thống trởnên vô nghĩa, vì cần phải cắt giảm kích cỡ của ngữ liệu để LM có thể được chứa vừatrong bộ nhớ máy tính Điều này đi ngược lại với mục đích ban đầu của việc tạo ra nhữngtập ngữ liệu ngày càng lớn hơn Hạn chế này đòi hỏi các nhà nghiên cứu cần tìm ra nhữngphương pháp khác để mô hình hóa ngôn ngữ nếu vẫn muốn tận dụng lợi thế mà các bộngữ liệu lớn mang lại

Một giải pháp để thực hiện yêu cầu này là bỏ đi sự chính xác, chấp nhận mất mát

một lượng thông tin nhất định khi mô hình ngôn ngữ từ ngữ liệu Nghĩa là thay vì các LM không mất mát (losses LM), ta sử dụng các LM có mất mát thông tin (lossy LM) Các nghiên cứu về lossy LM tạo ra một lớp các loại cấu trúc dữ liệu mới là Cấu trúc dữ liệu ngẫu nhiên (Randomized Data Structure, viết tắt là RDS), hay còn gọi là Cấu trúc dữ liệu xác suất (Probabilistic Data Structure - PDS) Vài cấu trúc dữ liệu điển hình loại này là

Skip List [33], Sparse Partition [16], Lossy Dictionary [31], Bloom Filter [4] Ở Việt Namcũng đã có một số nghiên cứu về vấn đề mô hình ngôn ngữ [39], nhưng mới chỉ dừng lại

ở việc sử dụng các mô hình ngôn ngữ chuẩn Khóa luận này nghiên cứu và tìm hiểu về

mô hình ngôn ngữ dựa trên Bloom Filter do những cải tiến đáng chú ý những năm gầnđây của loại cấu trúc dữ liệu này để xây dựng mô hình ngôn ngữ [35, 36, 37] Nội dungkhóa luận tập trung nghiên cứu khả năng tiết kiệm bộ nhớ, không gian lưu trữ của loại

Trang 10

LM này và hiệu quả của nó, so với các LM tiêu chuẩn [34], thông qua một ứng dụng cụthể là hệ thống dịch máy thống kê Moses.

Chương 1 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 để đánhgiá một mô hình ngôn ngữ

Chương 2 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 và Bloom Map

Chương 3 thử nghiệm xây dựng mô hình ngôn ngữ trên một ngữ liệu tiếng Anh và

một ngữ liệu tiếng Việt

Chương 4 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 nguồn mở Moses sử dụng các mô hình ngôn ngữ xây dựng ởchương 3

Trang 11

Chương 1 Tổng quan về mô hình ngôn ngữ

Mô hình ngôn ngữ (Language Model - LM) là các phân phối xác suất trên một ngữliệu đơn ngữ, được sử dụng trong nhiều bài toán khác nhau của xử lý ngôn ngữ tự nhiên,

ví dụ như: dịch máy bằng phương pháp thống kê, nhận dạng giọng nói, nhận dạng chữviết tay, sửa lỗi chính tả, … Thực chất, LM là một hàm chức năng có đầu vào là mộtchuỗi các từ và đầu ra là điểm đánh giá xác suất một người bản ngữ có thể nói chuỗi đó.Chính vì vậy, một mô hình ngôn ngữ tốt sẽ đánh giá các câu đúng ngữ pháp, trôi chảy caohơn một chuỗi các từ có thứ tự ngẫu nhiên, như trong ví dụ sau:

Pr(“hôm nay trời nắng”) > Pr(“trời nắng nay hôm”)

1.1 N-gram

Cách thông dụng nhất được dùng để mô hình hóa ngôn ngữ vào trong LM là thông

qua các n-gram Với mô hình n-gram, chúng ta coi một văn bản, đoạn văn bản là chuỗi các từ liền kề nhau, w1, w2, …, wN-1, wN, và sau đó phân tích xác suất của chuỗi với công

Trang 12

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

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 đó [25] 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ệc 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 ứngvớ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 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

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

đó để ước lượng xác suất n-gram cho một chuỗi chiều dài N ta sử dụng công thức:

 



1.2 Xây dựng mô hình ngôn ngữ

Để xây dựng (huấn luyện) một mô hình ngôn ngữ ta cần một ngữ liệu đơn ngữ (corpus) có kích thước tương đối 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, theo những cách

khác nhau, đều cần đến tần suất của các n-gram, do đó chúng ta cần phải đếm số lần xuất hiện của các n-gram từ 1-gram cho đến số bậc mô hình chúng ta đang huấn luyện.

Trang 13

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

Chúng ta có thể sử dụng kết quả đếm các n-gram để xây dựng một mô hình ước lượng cực đại hóa khả năng (Maximium Likelihood Estimation - MLE) với tần suất tương đối của các n-gram trong ngữ liệu Với MLE, 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

' '

c c

trong đó c(wi’) = |wi’| chính là số lần xuất hiện của từ wi’ 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 Brown 1, 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

  

  

 

tức là tần suất một từ nào đó thường xuyên xuất hiệ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 Trong ngữ liệu Brown, cụm từ

“Chinese food” xuất hiện 120 lần, nên:

PrMLE(food|Chinese) = 0.3

1.2.2 Các phương pháp làm mịn

Tuy 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, nhưng trong thực tế ta gặp phải vấn đề dữ liệu thưa (data sparseness problem) Tức

là tập ngữ liệu dùng để xây dựng LM dù lớn đến mấy, cũng chỉ là tập hữu hạn các câutrong 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 Để giảm thiểu vấn đề này, người ta thường

1 http://icame.uib.no/brown/bcm.html

Trang 14

không sử dụng MLE mà thay vào đó là các phương pháp ước lượng xác suất thống kê

phức tạp hơn Các 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 chonhữ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àivẫ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 mọi từ vựng trong ngữ liệu

Hai khái niệm quan trọng được sử dụng trong quá trình làm mịn các mô hình ngôn

ngữ là backoff và interpolation 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, nếu 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ừ (n-2)-gram, … Và 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:

1 1

 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 Chẳng

hạn 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ủacá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ứcunigram

Phương pháp Interpolation 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:

Trang 15

tính toán tùy theo điều kiện ngữ cảnh cụ thể, tức 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 phải nhận thấy rằng sự khác biệt cơ bản giữa haiphương pháp này là interpolation sử dụng thông tin từ các bậc thấp hơn ngay cả khi dữliệu xác suất của n-gram cần tính đã khác 0; trong khi backoff thì 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 trong phần này 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 [17] hay Stupid backoff của Google [5].

1.2.2.1 Kneser-Ney

Thuật toán làm mịn Kneser-Ney (KN) được phát triển bởi Reinhard Kneser và

Hermann Ney, công bố năm 1995 [17] Trong thuật toán KN, xác suất của một unigramkhô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ụngcác 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 choviệ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 tiên chúng ta định nghĩa số lượng tiền tố của một từ như sau:

1 ( w ) | w : (w w ) 0 |i i 1 i 1 i

Thuật ngữ N1 dùng để chỉ số lượng các từ xuất hiện một lần hoặc nhiều hơn và ký

tự  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ủamỗi từ được thay thế bằng số lượng từ (khác nhau) đứng trước từ đó Vậy thì xác suất củaunigram trong thuật toán KN được tính là:

Trang 16

1 ' '

N N

N N

1.2.2.2 Kneser-Ney cải tiến (Modified Kneser-Ney)

Thuật toán làm mịn Kneser-Ney cải tiến (Modified Kneser-Ney - MKN) được phát

triển từ thuật toán KN, là kết quả nghiên cứu của Chen và Goodman, công bố năm 1999

[11], tức là 4 năm sau sự ra đời của 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ácgiá 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à:

Trang 17

1 1 1 1 1

' 1 '

0 if c 0

if c 1( )

1

1 2

2 1

1 3 2

2 4 3

n n D

n n D

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 đó:

1 1 {1,2,3+}

1

' 1 '

(w ) (w )

(w )

i

i i

i n i

D N c

nhiều, chẳng hạn như ngữ liệu n-gram Trillion Words của Google.

Google sử dụng một thuật toán làm mịn đơn giản, tê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:

Trang 18

w (w ) i i

S

N

trong đó 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ữ

1.3.1 Perplexity

Sau khi LM đã được huấn luyện, chúng ta cần phải đánh giá chất lượng của môhình Cách đánh giá chính xác nhất một mô hình ngôn ngữ là kiểm tra trong thực tế Ví dụtrong nhận dạng tiếng nói, chúng ta có thể so sánh hiệu quả của 2 mô hình ngôn ngữ bằngcách chạy bộ nhận dạng ngôn ngữ 2 lần, mỗi lần với 1 mô hình và xem mô hình nào chokết quả chính xác hơn Nhưng cách này lại rất tốn thời gian, vì thế, chúng ta cần 1 công cụ

mà có thể nhanh chóng đánh giá hiệu quả của một mô hình Perplexity (PP) [3] là thước

đo thường được dùng cho công việc này

Perplexity thực chất là một dạng biến đổi của entropy chéo (cross entropy) của mô hình Entropy chéo là cận trên của entropy Entropy là một khái niệm cơ bản trong Thuyết thông tin, đánh giá lượng thông tin của dữ liệu bằng độ đo sự không chắc chắn Nếu một biến ngẫu nhiên x tồn tại trong khoảng X của thông tin đang được đánh giá với phân phối xác suất là p, thì khi đó entropy của x được định nghĩa là:

Trang 19

Ví dụ khi tung một đồng xu, x chỉ có thể là mặt ngửa hoặc mặt sấp và xác suất

Entropy chéo của một mô hình là độ đo thông tin giữa hai phân phối xác suất Đối

với một phân phối xác suất q nào đó mà chúng ta sử dụng để mô hình hóa phân phối xác suất p, entropy chéo được định nghĩa là:

chéo chúng ta đều có thể bỏ đi thành phần p nếu chuỗi giá trị x đủ dài Nếu chúng ta cần

tính entropy cho từng từ thì chỉ việc chia cho tổng số từ:

Các mô hình LM có mất mát không đảm bảo xác suất chính xác vì nó lưu trữ dữliệu không đầy đủ, do đó làm biến dạng phân phối xác suất thông thường Chính vì lý donày mà ta không thể sử dụng các phương pháp đo dựa trên Entropy như Perplexity đểđánh giá chất lượng của mô hình Tuy nhiên chúng ta vẫn có thể sử dụng một mô hìnhđảm bảo phân phối xác suất thông thường làm chuẩn mực để so sánh xem các lossy LMkhác biệt như thế nào so với mô hình này Điều này có thể được thực hiện bằng cách sử

Trang 20

dụng Lỗi trung bình bình phương (Mean Square Error - MSE) của lossy LM và lossless

LM, đều được huấn luyện và kiếm tra sử dụng các tập ngữ liệu giống nhau

Trang 21

mà LM phải đối mặt Đó là làm thế nào tạo ra được mô hình đại diện hiệu quả ngôn ngữ

tự nhiên, bằng cách sử dụng nhiều dữ liệu, tăng bậc mô hình n-gram (n = 6, 7, 8, …)

nhưng không quá phức tạp trong tính toán và sử dụng ít bộ nhớ Một tập ngữ liệu như củaGoogle là quá lớn (24GB khi đã nén), không thể chứa vừa trong bộ nhớ RAM thôngthường Điều này thúc đẩy các nhà nghiên cứu cần tìm ra một giải pháp thay thế cách biểu

diễn n-gram truyền thống, nếu vẫn muốn tận dụng ưu thế của các tập ngữ liệu lớn mà

không cần sử dụng các phương thức tốn kém truyền thống như hệ thống siêu máy tínhtrong môi trường điện toán phân tán của Google

Trong chương này chúng ta sẽ tìm hiểu một loại cấu trúc dữ liệu có khả năng đáp

ứng phần nào những yêu cầu nêu trên, đó chính là Bloom Filter (BF) [4], sử dụng một dạng mã hóa có mất mát thông tin (lossy encoding), ý tưởng của BF là thay vì lưu trữ toàn bộ các n-gram, chúng ta chỉ lưu một tập đại diện mang tính ngẫu nhiên của nó Mã hóa có mất mát thông tin là một loại kỹ thuật phổ biến thường được dùng trong lưu trữ đa

phương tiện như chuẩn nén JPEG cho hình ảnh, MP3 cho âm thanh hay MPEG cho nénvideo Trong đó một phần dữ liệu bị mất đi khi mã hóa, nhưng đại diện mới được tạothành vẫn chứa đựng khá đầy đủ các thông tin hữu ích sau khi được giải mã

Bloom Filter là một cấu trúc dữ liệu xác suất, đầu tiên được xây dựng chỉ để trả lời

cho câu hỏi “Liệu phần tử x có thuộc tập S hay không ?” Nếu kết quả là có thì ta gọi đó là một HIT, còn ngược lại thì ta gọi là MISS Có hai loại lỗi có thể xảy ra khi trả lời câu hỏi truy vấn trên, đó là false positive và false negative Lỗi false positive xảy ra khi đối tượng được truy vấn không thuộc tập S, x S, nhưng lại HIT Còn false negative thì ngược lại

với false positive, tức là một đối tượng x S bị kết luận là MISS trong khi thực tế thì

Trang 22

không phải như vậy Cấu trúc dữ liệu thống kê nào chỉ gặp một trong hai loại lỗi này được

gọi là có lỗi một phía (one-side error) và lỗi hai phía trong trường hợp còn lại BF là cấu

trúc dữ liệu chỉ có lỗi một phía

Cấu trúc dữ liệu này yêu cầu dung lượng lưu trữ thấp hơn khá nhiều ngưỡng dướicủa thuyết Entropy nhưng lại có tỉ lệ lỗi khá thấp và có thể xác định được Bloom Filternguyên bản không hỗ trợ lưu trữ cả cặp khóa-giá trị Tuy nhiên Talbot và Osborne [35,

36, 37] đã đề xuất những cách cho phép tích hợp giá trị vào trong mô hình ngôn ngữBloom Filter Cách thức thực hiện điều này được mô tả trong nội dung của chương

2.1 Các cấu trúc dữ liệu xác suất (PDS)

Một bước quan trọng trong khâu thiết kế của một chương trình là tìm cách thíchhợp để lưu trữ và xử lý dữ liệu Việc đánh giá và lựa chọn cẩn trọng cấu trúc dữ liệu được

sử dụng trong chương trình có ý nghĩa rất quan trọng: lựa chọn đúng có thể làm tăng đáng

kể hiệu năng của chương trình, tiết kiệm tài nguyên, dễ dàng bảo trì hệ thống trong tươnglai; ngược lại, khả năng vận hành của hệ thống có thể bị hạn chế do khối lượng tính toánquá lớn hay hoạt động thiếu ổn định, thậm chí không hoạt động được với những tập dữliệu lớn nếu sử dụng một cấu trúc dữ liệu tồi

Tồn tại nhiều dạng cấu trúc dữ liệu khác nhau, phù hợp cho những mục đích sửdụng khác nhau Một số cấu trúc dữ liệu chỉ là những kho chứa dữ liệu thông thường,trong khi một số khác lại được dùng cho những ứng dụng đặc biệt và chỉ phát huy đượchiệu năng tối đa trong điều kiện nhất định

Trong nhiều trường hợp, tập ngữ liệu quá lớn đến nỗi không một siêu máy tính nàohiện tại có khả năng quản lý được Và cũng không có cấu trúc dữ liệu chuẩn nào có thểlưu trữ được nó Ví dụ như, trong lĩnh vực dịch máy thống kê, năm 2006, Google đãkhiến cả cộng đồng ngành NLP phải sửng sốt khi họ công bố một ngữ liệu Ngram khổng

lồ 2 Với khoảng 3 tỉ từ, dung lượng là 24 GB khi đã nén, tập ngữ liệu này quá lớn thậmchí với hệ thống bộ nhớ của những siêu máy tính Hiển nhiên là ta có thể được lưu trữ nótrong ổ đĩa cứng, nhưng ví dụ như với dịch máy thống kê (SMT), một mô hình ngôn ngữ

có thể được truy vấn hàng trăm nghìn lần mỗi câu, vậy nên rõ ràng đây không phải là một

Trang 23

phương án khả thi Chúng ta cần tìm ra một hướng tiếp cận khác cho những tập ngữ liệu

đồ sộ như thế này

Một hướng tiếp cận khả thi là thay vì tìm cách biểu diễn chính xác một tập ngữ liệu

lớn, không mất mát (lossless), ta chấp nhận ý tưởng sử dụng một tập đại diện có mất mát (lossy) của nó Nghĩa là bằng cách sử dụng một vài kỹ thuật nào đó:

i) Một lượng dữ liệu mà ta kiểm soát được bị mất đi.

ii) Tổn hại đến sự toàn vẹn dữ liệu gây ra bởi lượng dữ liệu đã mất có thể được

coi là nhỏ nếu so sánh với không gian lưu trữ ta đã tiết kiệm được Đồng

thời từ chỗ không thể kiểm soát được dữ liệu (không sử dụng được trong các

chương trình do tập này quá lớn, thời gian tìm kiếm lâu, …), giờ đây ta đã

có thể kiểm soát được chúng.

Hướng tiếp cận này phát triển thành một lớp cấu trúc dữ liệu mới, được gọi là các

Cấu trúc dữ liệu ngẫu nhiên (Randomised Data Structure - RDS) hay còn được gọi là các Cấu trúc dữ liệu xác suất (Probabilistic Data Structure) Trong các PDS, dữ liệu được mã hóa cẩn thận và tối ưu dưới dạng có mất mát, và từ “ngẫu nhiên” ám chỉ các cấu trúc dữ

liệu này dựa trên những thuật toán mã hóa mang tính ngẫu nhiên nhất định

Một thuật toán ngẫu nhiên có thể được định nghĩa là “thuật toán sử dụng các lựa chọn tùy ý, không xác định trước trong quá trình tính toán” [14] Một phần dữ liệu sẽ bị

mất khi được mã hóa vào một PDS Tuy nhiên thông tin vẫn sẽ được lưu trữ sao cho dạngmới này của dữ liệu vẫn hiệu quả tương đương dạng biểu diễn chính xác (không mất mát)của nó

Nhiều loại cấu trúc dữ liệu xác suất đã được nghiên cứu, phát triển và ứng dụngtrong những năm gần đây [30] Một số cấu trúc dữ liệu loại này có thể kể đến như SkipList [33], Sparse Partition [16], Lossy Dictionary [31], và một cấu trúc dữ liệu tuy đãđược đề xuất từ khá lâu nhưng hiện tại lại tiếp tục được nghiên cứu nhiều - Bloom Filter[24, 35, 36, 37]

Nhận thấy một số ưu điểm như tốc độ, khả năng tiết kiệm bộ nhớ đáng kể củaBloom Filter [24], chúng tôi đã chọn nghiên cứu loại cấu trúc dữ liệu này và trình bàytrong khóa luận Cấu trúc dữ liệu Bloom Filter cơ bản sẽ được giới thiệu trong phần saucủa chương này Tiếp đó là cải tiến đơn giản để có thể lưu trữ dữ liệu theo cặp {khóa, giá

Trang 24

trị} – Logarithmic Frequency Bloom Filter (hay Bloom Filter tần số log) [35]; và mộtdạng cải tiến phức tạp hơn được ra đời sau là Bloom Map [37].

2.2 Hàm băm

Một thành phần rất quan trọng được sử dụng trong Bloom Filter đó là các hàmbăm Chính vì vậy trước khi đi sâu tìm hiểu cấu trúc dữ liệu BF ở các phần sau, mục nàytrình bày vài nét sơ lược về hàm băm

Hàm băm (Hash function) là một hàm ánh xạ phần tử từ tập này sang một tập khác

(thường là nhỏ hơn)

 w  

Hình 2: Ví dụ về hàm băm Các xâu ký tự được chuyển thành chữ ký đại diện.

Phần tử cần được băm là từ tập S có cỡ n, tập này nằm trong tập dữ liệu ban đầu U

với SUU 0,1w Đại diện của phần tử đó trong miền b được gọi là chữ ký hoặc dấu ấn của dữ liệu Hàm h này phải mang tính ổn định, có nghĩa là nếu cùng một dữ liệu

đi qua hàm h nhiều lần thì luôn cho kết qua giống nhau Đồng thời nếu đầu ra của haiphần tử qua hàm h khác nhau thì ta cũng có thể kết luận hai phần tử đó là khác nhau

Khóa ki được đưa vào hàm băm h(k i ), kết quả của hàm băm này trỏ đến một ô trong

bảng giá trị cỡ m: 0,1, ,m 1 (được gọi là bảng băm), ô đó chứa giá trị ai Đặc tính

Trang 25

đáng chú ý của bảng giá trị băm này là thời gian tìm kiếm không phụ thuộc vào kích cỡcủa tập dữ liệu được mã hóa vào bảng Hình 3 minh họa cấu trúc một bảng băm.

Hình 3: Cặp khóa k i và giá trị a i của tập S được ánh xạ thông qua hàm băm

vào bảng băm Xuất hiện xung đột giữa 2 phần tử k 1 và k 3

Trang 26

Để có một hàm băm tốt thì giá trị của nó phải có phân phối đều Số lượng giá trị chúng ta có thể lưu trữ với b-bits là 2b Nếu tập S lớn và b w thì một số phần tử thuộc

tập S sẽ xung đột với nhau khi được ánh xạ từ không gian lớn cỡ w vào không gian nhỏ hơn là b Chúng ta có thể tối thiểu hóa va chạm nếu chọn được hàm băm có đầu ra phân phối đều trên b Bởi vì nếu hàm băm không có phân phối đều, đầu ra của chúng sẽ chỉ tập

trung ánh xạ vào một số vị trí trong bảng băm, trong khi nhiều vị trí khác lại bị bỏ trống

2.3 Bloom Filter cơ bản

Các cấu trúc dữ liệu dựa trên Bloom Filter được sử dụng để xây dựng mô hìnhngôn ngữ có nguồn gốc từ Bloom Filter (BF) cơ bản [4] BF, trước tiên là một cấu trúc dữliệu xác suất (PDS), hỗ trợ truy vấn kiểm tra một đối tượng có thuộc tập hợp hay không

BF sử dụng một thuật toán mã hóa độc đáo cho phép nó tiết kiệm đáng kể không gian lưutrữ, thời gian truy vấn bất biến không phụ thuộc vào kích cỡ của tập cần đại diện và có tỉ

lệ lỗi-một-phía điều khiển được

0 0 1 0 0 1 0 0 1 0 0

0 0 1 0 0 1 0 0 1 0 0

Hình 4: Huấn luyện Bloom Filter

Một BF đại diện cho một tập S  x x1, , ,2 x n với n phần tử được lấy ngẫu nhiên từ tập ban đầu U cỡ N ( Nn ) Bộ nhớ đáng kể nhất mà BF sử dụng là một mảng bit cỡ m.

Trước quá trình huấn luyện, mảng này chỉ chứa các giá trị 0 Để huấn luyện BF, chúng ta

Trang 27

sử dụng k hàm băm độc lập, mỗi hàm băm có đầu ra trỏ đến một vị trí trong mảng bít m tùy theo giá trị đầu vào x, h x k( )0,1, ,m1 Mỗi phần tử x trong tập S cỡ n chúng ta

đang cần biểu diễn được băm k lần sử dụng k hàm băm nêu trên, và bit tương ứng với đầu

ra của mỗi hàm băm trong bảng m được thiết lập giá trị bằng 1 Như vậy là với mỗi phần

tử x S, k vị trí tương ứng được “bật lên”, nếu một bit hk nào đó đã có giá trị bằng 1 rồithì bit đó vẫn giữ nguyên trạng thái Nghĩa là, một khi đã được thiết lập, giá trị này sẽkhông bao giờ bị thay đổi nữa qua cả quá trình huấn luyện Cần lưu ý rằng có thể tồn tại

khả năng k hàm băm của một phần tử có đầu ra không trỏ đến k vị trí riêng biệt trong

mảng bit, BF không tránh sự va chạm này Các bit trong mảng do cơ chế này mà có thểđược chia sẻ cho các phần tử dùng chung, đem lại khả năng tiết kiệm đáng kể bộ nhớ cho

BF, tuy nhiên lại tồn tại một xác suất lỗi false positive khác 0

1 0 1 0 0 1 0 1 1 0 1

1 0 1 0 0 1 0 1 1 0 1

Hình 5: Truy vấn Bloom Filter

Để kiểm tra một phần tử nào đó có thuộc tập đã được mã hóa trong BF hay không,chúng ta lại đưa nó chạy qua k hàm băm trên Nếu tất cả các bit được tham chiếu bởi k

hàm băm có giá trị bằng 1 thì ta coi phần tử đó thuộc tập hợp; còn nếu tồn tại bất cứ giá trị nào bằng 0 thì chúng ta biết chắc chắn nó không thuộc tập hợp Tại sao ở đây cần phải nhấn mạnh từ “coi” và “chắc chắn” ? Đó là vì các phần tử thực sự của tập S thì luôn được xác định chính xác, nhưng có một xác suất lỗi false positive sẽ xuất hiện nếu như k bit

Trang 28

tương ứng thực ra được thiết lập do các phần tử trong tập huấn luyện mà phần tử đang xét

thì không thuộc tập này Đây được gọi là lỗi-một-phía.

Cần chú ý là, thay vì thực sự lưu trữ tập S, sử dụng Bloom Filter, thực chất chúng

ta chỉ đang lưu trữ một đại diện của nó – B, một mảng bit cỡ m Các phần tử trong S do đó

thực chất bị mất: chúng ta sẽ không thể khôi phục được tập đó từ Bloom Filter Tuy

nhiên, nếu chúng ta chỉ quan tâm đến liệu một phần tử có nằm trong tập S hay không thì

Bloom Filter lại có thể thực hiện được, đồng thời tiết kiệm đáng kể bộ nhớ trong khi tốc

độ truy vấn lại không đổi

Một ưu điểm đáng chú ý nữa của Bloom Filter, như được trình bày sau đây, đó làmặc dù không thể tránh khỏi, nhưng lỗi-một-phía của Bloom Filter lại là yếu tố mà ta cóthể kiểm soát được

1 0 1 0 0 1 0 1 1 0 1

1 0 1 0 0 1 0 1 1 0 1

Hình 6: Lỗi-một-phía trong Bloom Filter

Nếu chúng ta coi các hàm băm có phân phối đều và hoàn toàn ngẫu nhiên, tức là

chúng sẽ chọn các vị trí trong mảng m-bit với xác suất tương đương nhau thì xác suất một bit bất kỳ được thiết lập bằng 1 bởi một hàm băm là 1/m Xác suất một bit bất kỳ không

phải là 1 sau khi thực hiện một hàm băm là:

11

m

Xác suất một bit vẫn là 0 sau khi mới chỉ có một phần tử chạy qua k hàm băm là:

Trang 29

k m

Trang 30

Biểu đồ 2: Tỉ lệ lỗi và Số lượng khóa (giữ nguyên m) [24]

Nếu một phần tử nào đó không phải là thành viên của tập S, xác suất nó lúc nào

cũng trỏ tới những bit bằng 1 đối với tất cả k hàm băm nó được chạy qua, gây ra lỗi false positive, là:

1

1 1

k kn m

Để xác suất lỗi là nhỏ nhất, từ công thức trên ta lấy đạo hàm thì sẽ tính được số

hàm băm k tối ưu là:

luyện Điều này sẽ dẫn đến xác suất lỗi false positive là:

/

1

0.61852

Trang 31

Như vậy là nếu giữ nguyên n, xác suất lỗi giảm nếu m tăng (sử dụng nhiều không gian lưu trữ hơn) Còn nếu m không đổi thì tỉ lệ lỗi tăng nếu n tăng Hai biểu đồ 1 và 2 có

thể chỉ ra sự tương quan giữa tỉ lệ lỗi với không gian lưu trữ, và số lượng khóa (số phần tử

2.4 Mô hình ngôn ngữ sử dụng Bloom Filter

Năm 2007, Talbot và Osborne lần đầu tiên giới thiệu phương pháp sử dụng mộtcấu trúc lưu trữ dữ liệu có mất mát như BF để mô hình ngôn ngữ, và cũng đưa ra ý tưởnggiúp giảm tỉ lệ lỗi false positive, tích hợp cả khóa và giá trị trong Bloom Filter với việccông bố hai cấu trúc dữ liệu Log Frequency Bloom Filter [35, 36] và Bloom Map [37]

2.4.1 Bloom Filter tần số log (Log-frequency Bloom Filter)

Khả năng lưu trữ hiệu quả dữ liệu thống kê n-gram vào trong BF có được là do

phân phối dạng Zipf (luật Zipf) 3 của các từ trong một ngữ liệu ngôn ngữ tự nhiên Theoluật này, thì trong một ngữ liệu thông thường, từ xảy ra thường xuyên nhất nhiều gấp đôi

từ xảy ra thường xuyên thứ hai, từ này lại nhiều bằng hai lần từ xảy ra thường xuyên thứ

tư, … Lấy ví dụ đối với ngữ liệu Brown, “the” là từ xảy ra nhiều nhất, chiếm 7% tổng số

từ Đúng theo luật Zipf, từ có số lượng xếp thứ hai là “of” chiếm khoảng trên 3.5% mộtchút Và chỉ cần khoảng 135 từ là đã chiếm một nửa tổng số từ của ngữ liệu Brown (theoWikipedia) Như vậy tức là chỉ có một số ít sự kiện xảy ra thường xuyên trong khi hầu hếtcác sự kiện khác đều hiếm khi xảy ra

Để biến BF thành một cấu trúc dữ liệu hỗ trợ lưu trữ cặp khóa – giá trị, với khóa là

n-gram còn giá trị là số lần xuất hiện n-gram trong ngữ liệu Nhằm tối thiểu hóa số bit cần

sử dụng, một thuật toán có tên mã hóa tần số log (log-frequency encoding) được sử dụng.

3 Tham khảo thêm trên Wikipedia: http://en.wikipedia.org/wiki/Zipf’s_law

Trang 32

Số lần xuất hiện của các n-gram c(x) trước tiên được lượng tử hóa thành qc(x) sử dụng

công thức:

( ) 1 log ( )b

qc x   c x Điều này có nghĩa là tần suất xuất hiện của các n-gram sẽ bị suy giảm theo hàm mũ

khi sử dụng quy trình mã hóa tần số log Tuy nhiên do có sự khác biệt lớn trong phân phốicủa các sự kiện này nên tỉ lệ của mô hình vẫn được lưu giữ gần như nguyên vẹn trong BF-

LM Kích thước khoảng giá trị qc(x) được quyết định bởi cơ số b trong công thức trên.

Từng n-gram được lưu trữ vào trong BF cùng với giá trị qc(x) được biểu diễn bằng một số nguyên j tăng từ 1 đến qc(x) Đến giai đoạn kiểm tra thì tần suất của một n-gram được lấy ra bằng cách đếm tăng dần lên bắt đầu từ 1 Với mỗi loạt k hàm băm có kết quả

trỏ tới các giá trị bằng 1 trong mảng bit BF, thì giá trị của n-gram lại được tăng thêm 1đơn vị Quá trình này tiếp diễn cho đến khi một hàm băm nào đó trỏ đến bit 0 trong mảnghoặc đạt đến giá trị đếm tối đa Và khi đó giá trị đếm hiện tại trừ đi một được trả lại, chính

là cận trên của qc(x) n-gram đó Đối với hầu hết các n-gram thì quá trình này chỉ diễn ra

một hoặc hai lần nhờ có quy trình mã hóa tần số log Đặc tính lỗi-một-phía của Bloom

Filter đảm bảo rằng giá trị lượng tử hóa qc(x) không thể lớn hơn giá trị được trả lại này Quá trình huấn luyện và kiểm tra được minh họa qua Thuật toán 1 và Thuật toán 2 [35].

Thuật toán 1: Thuật toán huấn luyện BF

- Đầu vào:S train, h1 , ,h k và BF 

- Đầu ra: Bloom Filter

for all x in S train do

c(x) = tần suất của n-gram x in S train qc(x) = giá trị lượng tử hóa của c(x)

end for

return BF

Trang 33

Thuật toán 2: Thuật toán kiểm tra BF

- Đầu vào: x, MAXQCOUNT, h1 , ,h kvà BF

- Đầu ra: Cận trên của giá trị c(x) trong S train

2.4.2 Bộ lọc dựa vào chuỗi con

Các mô hình ngôn ngữ n-gram chuẩn lưu trữ xác suất điều kiện của n-gram trong

một ngữ cảnh cụ thể Hầu hết các mô hình ngôn ngữ này cũng lại sử dụng một số phương

pháp nội suy để kết hợp xác suất điều kiện của n-gram đang xét với xác suất n-gram bậc

thấp hơn Phụ thuộc vào phương pháp làm mịn được sử dụng, có thể chúng ta còn cần đếncác thông số thống kê phụ cho từng n-gram như số lượng hậu tố (đối với làm mịn Witten-Bell, Kneser-Ney) hay tiền tố ngữ cảnh (đối với làm mịn Kneser-Ney, Stupid Backoff).Chúng ta có thể sử dụng một BF duy nhất để lưu trữ những số liệu thống kê này nhưngcần chỉ rõ loại của chúng (tần suất xuất hiện thô, số tiền tố, số hậu tố, …), bằng cách sử

dụng các tập k hàm băm khác nhau cho từng loại.

Lý do nên lưu trữ các dữ liệu thống kê này một cách trực tiếp vào BF, thay vì lưucác xác suất được tính toán sẵn là: (i) tính hiệu quả của quy trình mã hóa nêu trên dựa vào

Trang 34

phân phối tần suất dạng Zipf; điều này là hoàn toàn đúng cho dữ liệu thống kê n-gram

trong ngữ liệu ngôn ngữ tự nhiên, nhưng lại có thể là không đúng cho xác suất được ướclượng của chúng; (ii) sử dụng dữ liệu thống kê ngữ liệu trực tiếp, chúng ta có thể tiết kiệm

cả không gian lưu trữ đồng thời giảm tỉ lệ lỗi nhờ sử dụng các thông tin trung gian khácđược kết xuất từ ngữ liệu

Phân tích về tỉ lệ lỗi ở phần trên chỉ tập trung vào lỗi false positive của BF Nhưngthực tế, không giống như các cấu trúc dữ liệu thông thường khác, độ chính xác của môhình BF còn phụ thuộc vào các yếu tố khác trong hệ thống và cách thức mô hình đượctruy vấn

Chúng ta có thể tận dụng tính đơn điệu của không gian sự kiện n-gram trong ngữliệu ngôn ngữ tự nhiên để thiết lập một cận trên cho tần suất của tất cả các n-gram này.Nhờ đó mà có thể giảm bớt số lần thực hiện vòng lặp lớn trong thuật toán kiểm tra (Thuật

toán 2) Cụ thể là, nếu đã lưu trữ các n-gram bậc thấp hơn trong BF, ta có thể nói rằng một n-gram không thể tồn tại nếu bất kỳ chuỗi con nào của nó không tồn tại, ý tưởng này được gọi là bộ lọc dựa vào chuỗi con (sub-sequence filtering) [35] Do quy trình lưu trữ

tần suất BF sử dụng không bao giờ đánh giá thấp tần suất của một sự kiện, nên: tần suấtcủa một n-gram không thể lớn hơn tần suất của chuỗi con ít xảy ra nhất của nó

2.4.3 Bloom Map

Bloom Map [37] được phát triển dựa trên nghiên cứu của Chazelle với một cấu

trúc có tên là Bloomier Filter [10].

Bloom Map ra đời nhằm giải quyết nhu cầu lưu trữ hiệu quả cặp {khóa, giá trị}trong một cấu trúc dữ liệu tiết kiệm bộ nhớ Không giống như LF-BF, Bloom Map không

bị hạn chế với mã hóa chỉ các số nguyên dương Giả sử chúng ta có một bảng ánh xạ khóa– giá trị cần mã hóa như sau:

Trang 35

trong đó mỗi phần tử trong tập V này phải là giá trị của ít nhất một khóa nào đó thuộc tập

X Ta giả sử phân phối của các giá trị trên các khóa được đại diện bởi véc tơ không đổi

Giải pháp đầu tiên được đề xuất để xây dựng một p- map ngẫu nhiên là Bloom

Map đơn giản: đây là một cải tiến của Bloom Filter, thay vì sử dụng k hàm băm ngẫu nhiên độc lập với nhau, chúng ta sẽ sử dụng một mảng của các mảng k hàm băm độc lập

ngẫu nhiên

1 2

1,1 1,2 1, 2,1 2,2 2,

Trong một ma trận như vậy, số dòng được cố định và bằng số lượng các giá trị

(i=1,…,b) Số lượng cột ở mỗi dòng không bằng nhau, tức là nó là một hàm của số thứ tự dòng: số phần tử ở mỗi hàng i đại diện cho ki hàm băm được chọn cho giá trị vi Nghĩa là

Ngày đăng: 23/11/2012, 15:04

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Nguyễn Văn Vinh. “Xây dựng chương trình dịch tự động Anh-Việt bằng phương pháp dịch thống kê”. Luận văn Thạc sĩ, Đại học Công nghệ, ĐHQGHN, 2005.Tiếng Anh Sách, tạp chí
Tiêu đề: “Xây dựng chương trình dịch tự động Anh-Việt bằng phương pháp dịch thống kê”
[2] Algoet, P. H. and Cover, T. M.. “A sandwich proof of the Shannon-McMillan-Breiman Theorem”. The Annals of Probability, 1988, 16(2): pages 899-909 Sách, tạp chí
Tiêu đề: “A sandwich proof of the Shannon-McMillan-Breiman Theorem”
[3] Bahl, L. R., Baker J. K., Jelinek F. and Mercer R. L.. “Perplexity - a measure of the difficulty of speech recognition tasks”. Acoustical Society of America Journal 62, 1977, pages 63–66 Sách, tạp chí
Tiêu đề: “Perplexity - a measure of the difficulty of speech recognition tasks”
[4] Bloom, B. H.. “Space/time trade-offs in hash coding with allowable errors”. Commun. ACM, 1970 Sách, tạp chí
Tiêu đề: Space/time trade-offs in hash coding with allowable errors”
[5] Brants, T., Popat, A. C., Xu, P., Och, F. J., and Dean, J.. “Large language models in machine translation”. In Proceedings of the 2007 Joint Conference on Empirical Methods in Natural Language Processing and Computational Natural Language Learning (EMNLP- CoNLL), 2007, pages 858–867 Sách, tạp chí
Tiêu đề: Large language models in machine translation”
[6] Broder, A. and Mitzenmacher, M., “Network applications of bloom filters: A survey”. In In Proc. of Allerton Conference, 2002 Sách, tạp chí
Tiêu đề: “Network applications of bloom filters: A survey”
[7] Brown P. F., Cocke J., Della Pietra V., Della Pietra S., Jelinek F., Lafferty J. D., Mercer R. L., and Roossin P. S.. “A statistical approach to machine translation”. Computational Linguistics, 1990, 6(2): pages 79–85 Sách, tạp chí
Tiêu đề: “A statistical approach to machine translation”
[8] Brown et al. “The Mathematics of Statistical Machine Translation: Parameter Estimation”. Computational Linguistics, 19(2), 1993 Sách, tạp chí
Tiêu đề: “The Mathematics of Statistical Machine Translation: Parameter Estimation”
[9] Callison-Burch, Chris, Miles Osborne, and Philipp Koehn. “Re-evaluating the role of Bleu in machine translation research”. In EACL 2006: Proceedings the Eleventh Sách, tạp chí
Tiêu đề: “Re-evaluating the role of Bleu in machine translation research”
[10] Chazelle, B., Kilian, J., Rubinfeld, R., and Tal, A.. “The bloomier filter: an efficient data structure for static support lookup tables”. In SODA ’04: Proceedings of the fifteenth annual ACM-SIAM symposium on Discrete algorithms, Philadelphia, PA, USA. Society for Industrial and Applied Mathematics, 2004, pages 30–39 Sách, tạp chí
Tiêu đề: “The bloomier filter: an efficient data structure for static support lookup tables”
[11] Chen, S. and Goodman, J.. “An empirical study of smoothing tech-niques for language modeling”. Computer Speech &amp; Language, 1999, 13: pages 359–393(35) Sách, tạp chí
Tiêu đề: “An empirical study of smoothing tech-niques for language modeling”
[12] Costa, L. H. M. K., Fdida, S., and Duarte, O. C. M. B. “Incremental service deployment using the hop-by-hop multicast routing protocol”. IEEE/ACM Trans. Netw., 2006, 14(3): pages 543–556 Sách, tạp chí
Tiêu đề: “Incremental service deployment using the hop-by-hop multicast routing protocol”
[13] de Laplace, M.. “A Philosophical Essay on Probabilities”. Dover Publications, 1996 Sách, tạp chí
Tiêu đề: “A Philosophical Essay on Probabilities”
[14] Fallis, D.. “The reliability of randomized algorithms”. Br J Philos Sci, 2000, 51(2): pages 255-271 Sách, tạp chí
Tiêu đề: “The reliability of randomized algorithms”
[15] Galley M. and Manning C. D.. “A simple and effective hierarchical phrase reordering model”. In Proceedings of the 2008 Conference on Empirical Methods in Natural Language Processing, Honolulu, Hawaii, October. Association for Computational Linguistics, 2008, pages 848–856 Sách, tạp chí
Tiêu đề: “A simple and effective hierarchical phrase reordering model”
[16] Golin, M., Raman, R., Schwarz, C., Smid, M., and C, S. J. C.. “Randomized data structures for the dynamic closest-pair problem”. In In Proc. 4th ACM-SIAM Sympos.Discrete Algorithms, 1993, pages 301-310 Sách, tạp chí
Tiêu đề: “Randomized data structures for the dynamic closest-pair problem”
[17] Kneser, R. and Ney, H., “Improved backing-off for m-gram language modelling”. In Proceedings of the IEEE Conference on Acoustics, Speech and Signal Processing, 1995, volume 1, pages 181–184 Sách, tạp chí
Tiêu đề: Improved backing-off for m-gram language modelling”
[18] Koehn, P.. “Europarl: A multilingual corpus for evaluation of machine translation”, 2003.Available at http://people.csail.mit.edu/˜koehn/publications/europarl.ps Sách, tạp chí
Tiêu đề: Europarl: A multilingual corpus for evaluation of machine translation”
[19] Koehn, P.. “Empirical Methods in Natural Language Processing”. From course slides at http://www.inf.ed.ac.uk/teaching/courses/emnlp/, 2007 Sách, tạp chí
Tiêu đề: “Empirical Methods in Natural Language Processing”
[20] Koehn, P. and Chris Callison-Burch. “Introduction to statistical machine translation”. ESSLLI 2005 tutorial, 2005 Sách, tạp chí
Tiêu đề: “Introduction to statistical machine translation”

HÌNH ẢNH LIÊN QUAN

Hình 2: Ví dụ về hàm băm. Các xâu ký tự được chuyển thành chữ ký đại diện. - Tìm hiểu mô hình ngôn ngữ sử dụng phương pháp bloom filter
Hình 2 Ví dụ về hàm băm. Các xâu ký tự được chuyển thành chữ ký đại diện (Trang 24)
Hình 3: Cặp khóa k i  và giá trị a i  của tập S được ánh xạ thông qua hàm băm - Tìm hiểu mô hình ngôn ngữ sử dụng phương pháp bloom filter
Hình 3 Cặp khóa k i và giá trị a i của tập S được ánh xạ thông qua hàm băm (Trang 25)
Hình 4: Huấn luyện Bloom Filter - Tìm hiểu mô hình ngôn ngữ sử dụng phương pháp bloom filter
Hình 4 Huấn luyện Bloom Filter (Trang 26)
Hình 5: Truy vấn Bloom Filter - Tìm hiểu mô hình ngôn ngữ sử dụng phương pháp bloom filter
Hình 5 Truy vấn Bloom Filter (Trang 27)
Hình 6: Lỗi-một-phía trong Bloom Filter - Tìm hiểu mô hình ngôn ngữ sử dụng phương pháp bloom filter
Hình 6 Lỗi-một-phía trong Bloom Filter (Trang 28)
Bảng 1: Thống kê ngữ liệu News Shuffle - Tìm hiểu mô hình ngôn ngữ sử dụng phương pháp bloom filter
Bảng 1 Thống kê ngữ liệu News Shuffle (Trang 41)
Bảng 2: Thống kê các tập ngữ liệu tiếng Anh được sử dụng để xây dựng LM (Set 1 → 4) - Tìm hiểu mô hình ngôn ngữ sử dụng phương pháp bloom filter
Bảng 2 Thống kê các tập ngữ liệu tiếng Anh được sử dụng để xây dựng LM (Set 1 → 4) (Trang 41)
Bảng 3: Thống kê về ngữ liệu Tiếng Việt “Báo Lao động” điện tử - Tìm hiểu mô hình ngôn ngữ sử dụng phương pháp bloom filter
Bảng 3 Thống kê về ngữ liệu Tiếng Việt “Báo Lao động” điện tử (Trang 42)
Bảng 5: Kích thước các loại LM khác nhau trên các tập ngữ liệu - Tìm hiểu mô hình ngôn ngữ sử dụng phương pháp bloom filter
Bảng 5 Kích thước các loại LM khác nhau trên các tập ngữ liệu (Trang 46)
Hình 7: Tăng kích cỡ LM cải thiện điểm BLEU [19] - Tìm hiểu mô hình ngôn ngữ sử dụng phương pháp bloom filter
Hình 7 Tăng kích cỡ LM cải thiện điểm BLEU [19] (Trang 50)
Hình 8: Kiến trúc của một hệ thống SMT [20] - Tìm hiểu mô hình ngôn ngữ sử dụng phương pháp bloom filter
Hình 8 Kiến trúc của một hệ thống SMT [20] (Trang 51)
Hình 9: Minh họa dịch máy thống kê dựa vào cụm - Tìm hiểu mô hình ngôn ngữ sử dụng phương pháp bloom filter
Hình 9 Minh họa dịch máy thống kê dựa vào cụm (Trang 51)
Bảng 7: Thống kê ngữ liệu song ngữ Đức – Anh dùng để huấn luyện, phát triển và đánh - Tìm hiểu mô hình ngôn ngữ sử dụng phương pháp bloom filter
Bảng 7 Thống kê ngữ liệu song ngữ Đức – Anh dùng để huấn luyện, phát triển và đánh (Trang 55)
Bảng 6: Thống kê chi tiết ngữ liệu Europarl đơn ngữ tiếng Anh - Tìm hiểu mô hình ngôn ngữ sử dụng phương pháp bloom filter
Bảng 6 Thống kê chi tiết ngữ liệu Europarl đơn ngữ tiếng Anh (Trang 55)
Bảng 8: Thời gian dịch 2000 câu tiếng khi sử dụng các loại LM khác nhau - Tìm hiểu mô hình ngôn ngữ sử dụng phương pháp bloom filter
Bảng 8 Thời gian dịch 2000 câu tiếng khi sử dụng các loại LM khác nhau (Trang 56)
Bảng 9: Điểm BLEU cho kết quả dịch với các LM khác nhau - Tìm hiểu mô hình ngôn ngữ sử dụng phương pháp bloom filter
Bảng 9 Điểm BLEU cho kết quả dịch với các LM khác nhau (Trang 57)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w