Nguyên lý LZ

Một phần của tài liệu nén văn bản tiếng việt theo huffman (Trang 45)

5. Ý nghĩa khoa học của luận văn

2.4.1.Nguyên lý LZ

Như chúng ta đã biết, bản chất của nén dữ liệu là làm thế nào để chúng ta có thể dự đoán càng đúng càng tốt ký hiệu sẽ xuất hiện tiếp theo là ký hiệu nào. Ví dụ như trong tiếng Việt thì đang sau chữ “q” chỉ có thể là chữ “u”. Sau chữ “qu” thì có thể là một trong số các chữ “y, a, e, i, ê, â, ă”. Nếu đoán được chính xác hoàn toàn chữ sẽ xuất hiện thì lẽ dĩ nhiên chúng ta không cần lưu chữ đó nữa. Đứng đằng sau khả năng đoán nhận là t ính luật hay nói cách khác là sự phụ thuộc, mà entropy là số đo của nó. Entropy mà càng nhỏ thì khả năng nén một văn bản lại càng lớn.

Tính entropy, tức là tìm ra lượng tin. Đối với một quyển truyện thì lượng tin phân bố theo các tầng kiến tạo tin sau đây:

Phân tích chi tiết hơn tầng từ ngữ bao gồm các lớp phụ thuộc tin như các chữ cái, qui tắc tạo từ, qui tắc tạo câu, qui tắc tạo đoạn văn, qui tắc tạo chương… Về mặt nguyên lý để tính được lượng tin có trong một văn bản một cách tốt nhất thì ta cần phải có thuật toán phân tích tìm ra mô hình phụ thuộc phân tầng nói trên. Việc làm này rất khó, chính vì vậy mà người ta thường tạo ra thuật toán nén dựa trên sự lý giải có lý. Sự thật thì khi dự đoán chúng ta luôn sử dụng những điều xảy ra trong quá khứ. Việc tính toán để dự báo cái gì sắp xảy ra được chuyển về sự tương tự với cái đã xảy ra trong quá khứ. Vì thế việc tính toán để tìm các thông số phục vụ cho một thuật toán nén là không còn cần thiết nữa. Như vậy, tư duy thì thông qua các khái niệm, khái niệm lại được thể hiện thông qua từ ngữ. Khái niệm là các yếu tố

Từ ngữ Đoạn Câu Cụm từ Từ Chữ cái .... Triết lý Quan niệm Ý tưởng tác giả Nội dung câu chuyện Tình tiết diễn biến

Nhân vật của câu chuyện Từ ngữ

tương đối ổn định dẫn tới ngôn ngữ thường dùng có rất nhiều từ và cụm từ lặp đi lặp lại. Vì lý do đó mà thay vì phải tìm cách ghi nhận khái niệm, người ta nghĩ đến việc mô tả một từ hay cụm từ theo vị trí của nó đã gặp ở đâu đó.

Nguyên lý LZ (viết tắt của Ziv-Lempel do Jacob-Ziv và Abraham Lemple phát triển năm 1977): thay một từ (một cụm từ) bằng vị trí của một từ (một cụm từ) giống hệt nó trong quá khứ.

Toàn bộ nguyên lý LZ dựa trên một nhận xét sau: ngôn ngữ thường dùng hàng ngày có rất nhiều từ và cụm từ lặp đi lặp lại. Một quyển truyện càng dày thì càng có nhiều từ và cụm từ. Chính vì vậy mà người ta nghĩ đến việc mô tả một từ hay cụm từ theo vị trí của nó trong một quyển truyện nào đó mà chúng ta sẽ gọi là từ điển.

Phương pháp mã hoá theo nguyên lý LZ cho phép nén ở tầng từ ngữ. Đối với các tầng ở cao hơn phương pháp này không có khả năng thực hiện được.

2.4.2.Từ điển

Dựa vào từ điển một văn bản có thể phân ra thành nhiều cụm từ và văn bản được mã hoá thành toạ độ của các cụm từ cùng với độ dài của cụm từ. Điều phải quan tâm là làm sao chọn được quyển từ điển tốt và làm sao cho chúng ta luôn tìm được cụm từ dài nhất có thể. Từ điển mà các thuật toán LZ sử dụng có đặc điểm:

- Từ điển có thể tĩnh hoặc động.

- Từ điển được xây dựng tuỳ thuộc vào từng văn bản cụ thể.

2.4.2.1. Mã với từ điển tĩnh

Mã từ điển tĩnh không khác gì phương pháp ký hiệu là mấy. Có điều ở đây chúng ta tiến hành ký hiệu một cách có hệ thống tất cả các đoạn copy. Lấy ví dụ coi truyện Kiều của Nguyễn Du là từ điển. Trong truyện có câu:

“Sè sè nấm đất ven đường Rầu rầu ngọn cỏ nửa vầng nửa xanh”

Chúng ta có thể tìm thấy trong truyện Kiều một phần của câu “đất ven đường được ưu tiên để trồng cây…”. Như vậy, thay vì ghi cả đoạn “đất ven đường” trong câu trên, chúng ta chỉ cần ghi vị trí toạ độ của nó trong từ điển là đủ. Giả sử toạ độ của đoạn này trong từ điển là từ số 1156 đến 1158 thì ta có văn bản “1156 1158 được ưu tiên để trồng cây…”.

Như vậy, một văn bản bất kỳ nào đó có t hể phân thành các “đoạn chữ” mà chúng ta sẽ gọi chúng là các đoạn copy, mỗi đoạn copy này có thể được tìm thấy

có thể cắt thành các đoạn copy. Sau đó sử dụng các con số là toạ độ của các đoạn này trong truyện Kiều để ký hiệu thay cho nó. Truyện Kiều là một công cụ cho phép biến đổi một đoạn copy thành các con số. Ngược lại dựa vào truyện Kiều và các con số toạ độ này chúng ta xác định lại được văn bản ban đầu. Quá trình này được gọi là quá trình “số hoá” văn bản hay là tra từ điển.

2.4.2.2. Mã với từ điển động

Độ dài đoạn copy càng lớn thì chúng ta càng có khả năng nén tốt hơn. Bởi vậy, chúng ta cần sử dụng từ điển lớn. Tuy nhiên để giải mã văn bản chúng ta cần không chỉ bản mã mà còn cần cả từ điển. Việc lưu giữ một từ điển lớn cùng với bản mã nén là không kinh tế. Vì tổng cộng dung lượng của từ điển phải lưu để giải nén và dung lượng của bản mã nén có khi lớn hơn cả dung lượng của văn bản ban đầu. Chính vì thế mà tư tưởng chủ đ ạo của mã nén LZ động là sử dụng ngay văn bản cần nén làm từ điển. Đặt giả sử như chúng ta đã nén đến kí tự thứ m và chuẩn bị mã cho các kí tự tiếp theo, chúng ta có thể dùng toàn bộ quá khứ của văn bản làm từ điển. Khi đó cả lúc mã lẫn lúc giải mã chúng ta đều có ngay từ điển mà không cần phải lưu giữ chúng.

Một phần của tài liệu nén văn bản tiếng việt theo huffman (Trang 45)