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

Một phần của tài liệu (LUẬN văn THẠC sĩ) sử dụng mô hình ngôn ngữ bloom filter trong cải tiến dịch máy thống kê (Trang 32 - 34)

4. Những nội dung nghiên cứu chính

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

Lưu trữ và xử lý dữ liệu là một bước quan trọng trong khâu thiết kế của một chương trình. Cấu trúc dữ liệu sử dụng trong chương trình được đánh giá và lựa chọn cẩn trọng có ý nghĩa rất quan trọng: tiết kiệm tài nguyên, tăng đáng kể hiệu năng của chương trình, dễ dàng bảo trì hệ thống trong tương lai nếu được lựa chọn đúng; 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 tốn q 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.

Hiện nay tuỳ thuộc vào mục đích sử dụng khác nhau mà tồn tại nhiều dạng cấu trúc dữ liệu khác nhau. Một vài cấu trúc dữ liệu chỉ là những kho chứa dữ liệu thơng thường, cịn một số khác lại được dùng cho những ứng dụng đặc biệt và chỉ phát huy được hiệu năng tối đa trong điều kiện nhất định.

Thực tế nhiều trường hợp, khi tập ngữ liệu quá lớn đến mức hiện tại khơng một siêu máy tính nào có khả năng quản lý được và cũng chưa 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 kinh ngạc khi họ công bố một ngữ liệu Ngram khổng lồ. Với khoảng 3 tỉ từ,

chiếm 24 GB bộ nhớ khi đã nén, tập ngữ liệu như vậy là quá lớn, thậm chí ngay cả với hệ thống bộ nhớ của những siêu máy tính. Rõ ràng là ta có thể 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 hiển nhiên đây không phải là một 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 khổng lồ như vậy.

Có một cách tiếp cận khả thi hơn là thay vì tìm cách biểu diễn đầy đủ một tập ngữ liệu lớn, không mất mát (lossless), ta chấp nhận 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 số 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) Sự toàn vẹn dữ liệu bị tổn hại gây ra bởi lượng dữ liệu đã mất có thể được coi là nhỏ khi so sánh với không gian lưu trữ đáng kể ta tiết kiệm được. Đồng thời thay vì khơng thể kiểm số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 sốt được chúng.

Phương pháp 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 - PDS). Trong các PDS, dữ liệu được mã hóa và tối ưu dưới dạng bị 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 tốn mã hóa mang tính ngẫu nhiên nhất định.

Có thể định nghĩa một thuật tốn ngẫu nhiên là “thuật toán sử dụng các

lựa chọn tùy ý, không xác định trước trong q trình tính tốn” [14]. Khi mã

hóa vào một PDS, một phần dữ liệu sẽ bị mất. Tuy vậy thông tin sẽ được lưu trữ sao cho dạng biểu diễn mất mát này của dữ liệu vẫn có hiệu quả tương đồng với dạng biểu diễn đầy đủ (không mất mát) của nó.

Trong những năm gần đây có 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ụng, có thể kể đến như Skip List, Sparse Partition [8], Lossy Dictionary và một cấu trúc dữ liệu tuy đã xuất hiện từ khá lâu nhưng hiện tại lại tiếp tục được nghiên cứu nhiều đó là Bloom Filter.

Bloom Filter có một số ưu điểm như tốc độ, khả năng tiết kiệm bộ nhớ đáng kể, tôi đã chọn nghiên cứu loại cấu trúc dữ liệu này và trình bày trong luận văn. Cấu trúc dữ liệu Bloom Filter cơ bản sẽ được giới thiệu trong phần sau củ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á trị} – Logarithmic Frequency Bloom Filter (hay Bloom Filter tần số log).

Một phần của tài liệu (LUẬN văn THẠC sĩ) sử dụng mô hình ngôn ngữ bloom filter trong cải tiến dịch máy thống kê (Trang 32 - 34)