Nén dữ liệu văn bản tiếng Việt

Một phần của tài liệu Nén dữ liệu tiếng việt sử dụng phương pháp mã hóa số học (Trang 30 - 33)

5. Ý nghĩa khoa học và ý nghĩa thực tiễn của đề tài

2.2.1. Nén dữ liệu văn bản tiếng Việt

Bước mã hĩa cơ sở của bộ mã hĩa được thực hiện bởi arithmetic_encode(l, h, t) trong đĩ l và h lần lượt là mức thấp và mức cao của biến đếm trước khi tích lũy tần số trong ngữ cảnh của các kí hiệu tương ứng, hàm này mã hĩa 1 kí hiệu giả sử ngầm định là nĩ xuất hiện h - l lần trong tổng số t lần, và nĩ chỉđịnh vùng xác suất là [ l/t, h/t ]. Trạng thái nội tại của bộ mã hĩa được cho bởi 2 giá trị là R và L, trong đĩ L là mức thấp hiện tại và R là vùng của đoạn đang mã hĩa, và tại mỗi giai đoạn thì thơng điệp cĩ thể được diễn tả bằng bất kì giá trị nào trong đoạn [ L, L+R ]. Quá trình xử lý của bộ

mã hĩa được minh họa ở hình 4. Giá trị L và R được thể hiện thơng qua b bit., L được khởi tạo là 0 và nĩ cĩ giá trị nằm giữa 0 và 2b – 2b-2, R được khởi tạo là 2b-1 và cĩ giá trị nằm giữa 2b-2 + 1 và 2b-1. Chúng tơi cho rằng 0 < l < h < t và t là tổng tần số của tất cả các kí hiệu khác nhau được chỉ định trong ngữ

cảnh, t phải thỏa mãn điều kiện t < 2f với f là số bit đã dùng để giữ tần số của kí hiệu và cĩ thể khơng vượt quá giá trịđiều khiển bởi lựa chọn của b và kích thước từ máy đang dùng.

Thuật tốn mã hĩa kí hiệu thể hiện ở dưới.

Đầu vào là các biến thành phần l, h, t. Đầu ra là các bit biểu diễn kí hiệu đĩ. Arithmetic_encode(l,h,t) { 1- Đặt T=(R.l)/t 2- Đặt L=L+T 3- Đặt R=(R.h/t)-T 4-Trong khi R < 2b - 2 làm { Chuẩn hĩa lại R Tính lại L Đưa ra 1 bit

Hoạt động cơ sở của bộ mã hĩa, trong các bước 1,2 và 3 là làm nhỏ

khoảng [ L, L + R ) thành các khoảng nhỏ hơn để biểu diễn các kí hiệu mới [ l / t, h / t ), mang lại một vùng mới là [ L + R.l/t, L + R.h/t ]. Giá trị của L và R

đưọc cập nhật để phản ánh vùng mới này. Vùng này phải chuẩn hĩa lại thành các giai đoạn để ngăn cản nĩ trở thành các khoảng quá nhỏđể diễn tả đúng b bit của giá trị này.

Để giảm tối đa sự mất mát hiệu quả nén bởi vì sự chia khơng chính xác của khơng gian mã, R nên được giữ ở giá trị lớn nếu cĩ thể và trong hoạt

động hiện tại, nĩ phải cĩ độ rộng tối thiểu cũng như t. Điều này được thực hiện bằng cách duy trì R trong khoảng 2b-2 < R < 2b-1 trước mỗi bước mã hĩa và khẳng định rằng t ≤ 2f với f ≤ b -2. Đĩ là R phải được chuẩn hĩa lại một cách định kỳ với một hoặc nhiều hơn các bit ở đầu ra. Chi tiết của quá trình xử lí này phù hợp với sự chuẩn hĩa lại của L, R và chuẩn hĩa lại R là một bước của arithmetic_encode() .

Trong thuật tốn chuẩn hĩa lại R trong bộ mã hĩa, khi L và L+R đều ≤ 2b -1,bit 0 cĩ thể là đầu ra và L, R nên điều chỉnh cho đúng. Tương tự, kết quả đầu ra cĩ thể là bit 1 khi cả 2 đều lớn hơn 2b - 1. Khi R ≤ 2b -2 và cả 2 trường hợp trên khơng chấp nhận, khoảng [L,L+R) phải thuộc 2b -1. Trong trường hợp thứ 3 thì biến bit_outstanding được tăng, đây là biến lưu giữ tất cả

các bit biểu diễn kí hiệu được đề cập đến ở đầu vào, do đĩ bit 0 hoặc bit 1 của

đầu ra sẽ đi theo sau bởi một hoặc nhiều hơn các bit đối lập với nĩ. Hàm bit_plus_follow( ) kiểm tra vị trí cĩ sự tồn tại các bit ngược nhau của các bit tại thời gian mà nĩ được gọi trên đầu ra với một bit khác đã biết.

Tất cả đầu ra này hoạt động mang lại kết quả trong R, do đĩ sau một số thao tác của đầu ra R sẽ được ở lại trong vùng, chuẩn bị cho bước mã hĩa tiếp theo. Thực vậy, mã hĩa một bit kí hiệu tùy theo các tham số l, h và t phải

tự động sinh ra (-log((h-l)/t)) bit hoặc -log((h-l)/t) bit được sinh ra trong vịng lặp chuẩn hĩa lại.

Hàm bis_plus_follow(x): ghi bit x cĩ giá trị là 0 hay 1 vào dãy bit đầu ra. Cộng vào bất kỳ một bit tự do nào vào sau các bit đĩ nếu biết được rằng nĩ ngược nhau.

bis_plus_follow(x) {

1- write_one_bit(x)

2- Trong khi bit_outstanding > 0 làm write_one_bit(1 - x)

Gán bit_outstanding = bit_outstanding -1 }

Bất kì thơng tin cịn lại của kí hiệu được ghi lại bởi việc thay đổi trạng thái mã hĩa, được phản chiếu trong giá trị mới của L và R. Thuật tốn chuẩn

Đây là bước thứ 4 trong thuật tốn mã hĩa. { Trong khi R < 2b - 2 làm Nếu L + R < 2b - 1 thì bis_plus_follow(0) Khác { Nếu 2b - 1 < L thì bis_plus_follow(1) gán L = L - 2b -1 Khác gán bit_outstanding = bit_outstanding + 1 L = L - 2b –2 } Gán L = 2.L, R = 2.R }

hĩa lại được thể hiện trong hình 5 ở dưới. Sự chuẩn hĩa lại chính là bước thứ

(4) trong thuật tốn mã hĩa ở trên.

Sau mỗi kí hiệu được nhận ra bộ mã hĩa phải điều chỉnh lại độ rộng vùng. Do đĩ với mỗi bit được xử lí bằng cách di chuyển nĩ ra ngồi mức kết thúc cao của 0 và 1 bit mới được chuyển đến trong mức kết thúc thấp.

Một phần của tài liệu Nén dữ liệu tiếng việt sử dụng phương pháp mã hóa số học (Trang 30 - 33)

Tải bản đầy đủ (PDF)

(54 trang)