Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 54 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
54
Dung lượng
511,89 KB
Nội dung
ĐẠI HỌC THÁI NGUN TRƯỜNG ĐẠI HỌC CNTT & TRUYỀN THƠNG HÀ DIỆU THÚY NÉN DỮ LIỆU TIẾNG VIỆT SỬ DỤNG PHƯƠNG PHÁP MÃ HĨA SỐ HỌC Chun ngành: Khoa học máy tính Mã số: 60 48 01 TĨM TẮT LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Thái Ngun – 2013 Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/ ii Cơng trình được hồn thành tại TRƯỜNG ĐẠI HỌC CNTT & TRUYỀN THƠNG Người hướng dẫn khoa học: PGS.TS Nguyễn Hữu Điển Phản biện 1: TS. Lê Quang Minh Phản biện 2: TS. Trần Đức Sự Luận văn sẽ được bảo vệ trước Hội đồng chấm luận văn họp tại: Trường Đại học Cơng nghệ thơng tin & Truyền thơng Vào hồi 11 giờ 00 ngày 09 tháng 11 năm 2013 Có thể tìm hiểu luận văn tại: - Trung tâm học liệu Đại học Thái Ngun - Thư viện trường Đại học CNTT & Truyền thơng Thái Ngun Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/ 1 MỞ ĐẦU 1. Đặt vấn đề Nén dữ liệu là một kỹ thuật quan trọng trong rất nhiều lĩnh vực khác nhau. Chính nhờ có kỹ thuật nén dữ liệu mà ngày nay chúng ta có những phương tiện truyền thơng hiện đại phục vụ cho cuộc sống như truyền hình cáp, truyền hình số, điện thoại, internet, các hệ thống lưu trữ, văn bản và rất nhiều khía cạnh khác. Do đó kỹ thuật nén dữ liệu ngày càng được quan tâm và phát triển nhiều hơn. Tiếng Việt là một ngơn ngữ thuộc hệ thống chữ cái Latinh, sử dụng nhiều dấu đi kèm với ngun âm, ngồi bảng chữ cái của tiếng Anh, tiếng Việt còn có thêm các ký tự: Sáu ngun âm a, e, i, o, u, y với 5 dấu thanh (sắc, huyền, hỏi, ngã, nặng) tổ hợp thành 30 ký tự. Sáu ngun âm ă, â, ê, ơ, ơ, ư với sáu dấu thanh (sắc, huyền, hỏi, ngã, nặng, khơng dấu) tổ hợp thành 36 ký tự. Một phụ âm đặc biệt đ. Vậy cần thêm (30 + 36 +1) x 2 = 134 ký tự cho tiếng Việt. Với bảng mã ASCII 8 bit sử dụng phổ biến trên máy tính, chúng ta có thể mã hóa 256 ký tự. Tuy nhiên, các ký tự có mã từ 0 đến 127 đã được chuẩn hóa và thuộc diện “cấm vi phạm” vì vậy chỉ còn 128 chỗ (mã từ 128 đến 255) là được “tự do”. Vậy nếu xây dựng mỗi chứ ứng với một mã thì sử dụng hết vùng tự do mà vẫn thiếu 134 – 128 = 6 chỗ. Hiện nay chúng ta đang sử dụng chuẩn Unicode để lưu trữ các ký tự tiếng Việt. Như chúng ta biết chuẩn Unicode là chuẩn 2byte, do vậy khi lưu trữ các văn bản tiếng Việt trên các hệ thống lưu trữ sẽ xẩy ra tình trạng dư thừa dữ liệu. Điều này dẫn đến việc lưu trữ và xử lý sẽ lãng tài ngun hệ Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/ 2 thống, khi truyền tải trên các đường truyền mạng sẽ chiếm băng thơng nhiều hơn. Từ các u cầu thực tế đó đòi hỏi chúng ta phải loại bỏ sự dư thừa dữ liệu đó trước khi lưu trữ và xử lý. Chính vì thế em chọn đề tài “Nén dữ liệu tiếng Việt sử dụng thuật tốn mã hóa số học” 2. Đối tượng và phạm vi nghiên cứu - Các chuẩn lưu trữ tiếng Việt (Unicode, TCVN3, VNI-Vindows…) - Các phương pháp và kỹ thuật nén dữ liệu - Các phần mềm nén dữ liệu hiện nay 3. Hướng nghiên cứu đề tài - Nghiên cứu các phương pháp nén dữ liệu như nén bảo tồn dữ liệu (lossless data compression) và nén mất mát dữ liệu (lossy data compression). - Nghiên cứu các kỹ thuật nén dữ liệu như: kỹ thuật xử lý sự lặp lại của xâu (RLE), mã hóa Huffman, kỹ thuật nén LZW (Lempel - Zip và Welch)… - Nghiên cứu về kỹ thuật nén bảo tồn dữ liệu Arithmetic Coding (Phương pháp mã hóa số học). - Cài đặt thực nghiệm việc nén dữ liệu bằng Arithmetic Coding. - Phân tích, so sánh và đánh giá kết quả thực nghiệm với các kỹ thuật nén dữ liệu (văn bản tiếng Việt) khác. Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/ 3 4. Phương pháp nghiên cứu - Nghiên cứu các tài liệu về các kỹ thuật mã hóa và nén dữ liệu. - Tìm hiểu các chuẩn tiếng Việt hiện nay ở Việt Nam. - Khảo sát thực tế các phần mềm nén dữ liệu hiện nay đối với việc nén các văn bản tiếng Việt. - Phân tích, đánh giá các kỹ thuật (thuật tốn) nén dữ liệu. - Cài đặt kỹ thuật nén Arithmetic Coding - Triển khai thử nghiệm trên các loại dữ liệu văn bản tiếng Việt. 5. Ý nghĩa khoa học và ý nghĩa thực tiễn của đề tài - Nghiên cứu hồn thiện các kỹ thuật nén bảo tồn dữ liệu cho các văn bản tiếng Việt. - Xây dựng ứng dụng nén dữ liệu cho các văn bản tiếng Việt. Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/ 4 Chương 1: TỔNG QUAN VỀ NÉN DỮ LIỆU 1.1. Tổng quan về nén dữ liệu 1.1.1. Sơ lược về nén dữ liệu 1.1.1.1 Khái niệm nén dữ liệu Nén dữ liệu là q trình làm giảm lượng thơng tin “dư thừa” trong dữ liệu gốc và do vậy, lượng thơng tin thu được sau nén thường nhỏ hơn so với dữ liệu gốc rất nhiều. 1.1.1.2 Ngun tắc nén dữ liệu Thơng thường, hầu hết các tập tin trong máy tính có rất nhiều thơng tin dư thừa, việc thực hiện nén tập tin thực chất là mã hố lại các tập tin để loại bỏ các thơng tin dư thừa. Nhìn chung khơng thể có phương pháp nén tổng qt nào cho kết quả tốt đối với tất cả các loại tập tin vì nếu khơng ta sẽ áp dụng n lần phương pháp nén này để đạt được một tập tin nhỏ tuỳ ý. Kỹ thuật nén tập tin thường được áp dụng cho các tập tin văn bản (Trong đó có một số kí tự nào đó có xác suất xuất hiện nhiều hơn các kí tự khác), các tập tin ảnh bitmap (Mà có thể có những mảng lớn đồng nhất), các tập tin dùng để biểu diễn âm thanh dưới dạng số hố và các tín hiệu tương tự (analog signal) khác (Các tín hiệu này có thể có các mẫu được lặp lại nhiều lần). Ðối với các tập tin nhị phân như tập tin chương trình thì sau khi nén cũng khơng tiết kiệm được nhiều. Ngồi ra, trong một số trường hợp để nâng cao hệ số nén người ta có thể bỏ bớt một số thơng tin của tập tin. 1.1.2. Các phương pháp nén dữ liệu 1.1.2.1 Nén bảo tồn dữ liệu Đó là mơ hình nén dữ liệu mà nó cho phép người sử dụng bảo tồn thơng tin trong suốt q trình nén. Điều này được giải thích như sau: Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/ 5 Giả sử ta có dữ liệu nguồn là A và dữ liệu nén là A'. Sau khi ta giải nén A' thì được tập A'' mà tập A'' hồn tồn giống với tập A ban đầu khi được giải nén. Thơng thường, kỹ thuật này được áp dụng với các loại dữ liệu như văn bản vì độ chính xác của văn bản. 1.1.2.2 Nén hao hụt dữ liệu Trong kỹ thuật nén, bên cạnh nén bảo tồn thì người ta còn đưa ra khái niệm nén khơng bảo tồn (hay còn gọi là nén hao hụt dữ liệu). Nén khơng bảo tồn là mơ hình nén dữ liệu mà tính bảo tồn của dữ liệu khơng được coi trọng. Nó có nghĩa là nếu ta có tập dữ liệu A, tập nén A' thì sau khi giải nén ta thu được tập A'' khác tập A ban đầu. Kỹ thuật này thường áp dụng cho việc nén dữ liệu là các loại tệp ảnh vì nói chung nó cũng khơng ảnh hưởng gì nhiều đến hình dạng ảnh. 1.2 Các kỹ thuật nén dữ liệu văn bản 1.2.1 Xử lý lặp lại của xâu ký tự (Run – Length Encoding) Mục đích của thuật tốn là tìm ra được ký tự lặp lại nhiều lần và số lần lặp lại của ký tự đó, thay thế cụm lặp lại bằng một biểu diễn nhỏ gọn hơn. Có thể biểu diễn rút gọn dưới dạng cặp 3 ký hiệu (r,s,l) với s là ký hiệu của một dãy các ký tự nằm trong bảng chữ cái, r và l sẽ là các ký hiệu khơng được xuất hiện trong bảng chữ cái, tùy từng trường hợp mà r và l lại có ý nghĩa khác nhau. Ví dụ: Cho chuỗi đầu vào là MMMMMMM (chữ M được lặp lại 7 lần), chuỗi này có thể thay thế bằng (r,7,M) hay viết tắt là r7M. r với ý nghĩa ký hiệu cho việc xuất hiện sự lặp lại (repeating) đòi hỏi chữ r khơng được xuất hiện trong bảng chữ cái của đầu vào. Cho chuỗi đầu vào là ABCDEFG (khơng xuất hiện sự lặp lại) chuỗi này có thể thay thế bằng (n,7,ABCDEFGH), hay viết tắt là n7ABCDEFG. n Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/ 6 với ý nghĩa là ký hiệu cho việc khơng xuất hiện sự lặp lại (non-repeating), chữ n khơng được xuất hiện trong bảng chữ cái đầu vào. Thuật tốn này hiệu quả nếu như dữ liệu đầu vào gồm nhiều ký tự bị lặp lại liên tiếp. Ký tự đầu vào có thể ở dạng chữ trong bảng chữ cái, có thể là các bit 0, 1 nhị phân; các thơng số về màu của các điểm ảnh, cũng có thể là các khối hợp thành của dữ liệu kiểu âm thanh. Trên thực tế, thuật tốn này vẫn còn được áp dụng cho tới ngày nay: thuật tốn HDC (hardware data compression), được sử dụng trong các ổ băng kết nối với hệ thống máy tính IBM, và cả thuật tốn tương tự được dùng trong chuẩn SNA (System network architecture) của IBM. 1.2.2 Mã hóa Huffman 1.2.2.1. Mã Huffman tĩnh * Ngun lý: Ngun lý của phương pháp Huffman là mã hố các bytes trong tệp dữ liệu nguồn bằng biến nhị phân. Nó tạo mã độ dài biến thiên là một tập hợp các bits. Đây cũng là một phương pháp nén kiểu thống kê, những ký tự xuất hiện nhiều hơn sẽ có mã ngắn hơn. Mã Huffman có một tính chất quan trọng: mã của một ký hiệu này khơng thể là phần đầu của mã một ký hiệu khác. Nếu như một ký hiệu được mã hố bằng tổ hợp nhị phân 101 thì tổ hợp 10110 khơng thể là mã của một ký hiệu khác trong tệp nguồn. Do đó khi giải mã cần phải đọc lần lượt các bit cho đến khi gặp mã của ký hiệu nào đó. * Thuật tốn: Việc xây dựng cây mã hố Huffman được tiến hành bởi một thuật tốn khác với thuật tốn Fano - Shannon. Nếu như cây Fano - Shannon được xây dựng từ trên xuống dưới bằng cách chia đơi và gán cho mỗi Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/ 7 phần 1 bít, cơng việc kết thúc khi khơng thể tiến hành phân chia tiếp thì cây Huffman lại được thiết kế từ dưới lên, bắt đầu từ các lá của cây và cơng việc kết thúc tại điểm gốc. Ví dụ : Cho mơ hình nguồn có các trạng thái và tần suất tương ứng như sau: (A, 0.2); (E, 0.3); (I, 0.1), (0. 0,2); (U, 0.1); (Ơ, 0.1) ta có: Ký tự Tần xuất Mã 0 1 A 0.2 10 E 0.3 01 I 0.1 001 O 0.2 11 U 0.1 0000 Ơ 0.1 0001 Bước1: Nhóm 2 chữ cái có tần suất nhỏ nhất tạo ra chữ cái kép. Sau mỗi lần nhóm số chữ cái ít đi 1. c -> 0.3 e -> 0.3 e -> 0.3 {a, 0} -> 0.4 {{{u, ơ},:} a -> 0.2 a -> 0.2 {{u,ơ},i} -> 0.3 e -> 0.3 {a, o{ -> o -> 0.2 o -> 0.2 a -> 0.2 {{u, ơ}, i} -> 0.3 i -> 0.1 {u,ơ} -> 0.2 o -> 0.2 u -> 0.1 i -> 0.1 ơ -> 0.1 Bước 2: Tạo cây phân nhánh ngược với q trình nhóm từ nhánh trái có mã 0, nhánh phải mã 1. 0 1 0 1 0 1 0 1 e a o 0 1 i u ơ Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/ 8 {{{{u, ơ}, 1}, e}, {a, o}} 0 1 {{{u, ơ}, i}, e} {a, o} 0 10 1 {{{ u, ơ}, i}, e a o 0 1 {u, ơ} i 0 1 u ơ Vậy mã của ký tự là: u -> 0000; e -> 01 ơ -> 0001; a -> 10 i -> 001; o -> 11 Thuật tốn nén: Bước 1: Tìm hai ký tự có trọng số nhỏ nhất ghép lại làm một, trọng số của ký tự mới bằng tổng trọng số của hai ký tự đem ghép. Bước 2: Trong khi số lượng ký tự trong danh sách còn lớn hơn một thì thực hiện bước một, nếu khơng thì thực hiện bước ba. Bước ba: Tách ký tự cuối cùng và tạo cây nhị phân với qui ước bên trái mã 0, bên phải mã 1. Thuật tốn giải nén: Bước 1: Đọc lần lượt từng bit trong tập tin nén và duyệt cây nhị phân đã được xác định cho đến khi hết một lá. Lấy ký tự ở lá đó ghi ra tệp giải nén. Bước 2: Trong khi chưa hết tập tin nén thì thực hiện bước một, ngược lại thực hiện bước ba. Bước 3: Kết thúc thuật tốn. Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/ [...]... thuật tốn có hiệu quả nén cao 1.2.4 Phương pháp mã hóa số học (Arithmetic Coding) Phương pháp này giống với mã hóa Huffman ở chỗ nó cũng dựa trên bảng chữ cái và tần số xuất hiện của từng chữ, nó cũng có thể áp dụng dạng động hoặc dạng tĩnh dựa vào việc thay đổi các khoảng tần số trong q trình mã hóa Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/ 15 Mục đích của phương pháp là tìm ra một khoảng... kinh nghiệm Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/ 21 Chương 2: NGHIÊN CỨU KỸ THUẬT NÉN VĂN BẢN TIẾNG VIỆT SỬ DỤNG KỸ THUẬT MÃ HĨA SỐ HỌC 2.1 Các bảng mã tiếng Việt 2.1.1 Chuẩn lưu trữ Unicode Unicode (hay gọi là mã thống nhất; mã đơn nhất) là bộ mã chuẩn quốc tế được thiết kế để dùng làm bộ mã duy nhất cho tất cả các ngơn ngữ khác nhau trên thế giới, kể cả các ngơn ngữ sử dụng ký tự tượng... cản chữ 1 khơng cho biến thành dấu sắc (') của chữ a như trong chữ á 2.2 Kỹ thuật mã hóa số học - Ngun tắc mã hóa: Mã hóa Số học khơng thay thế các kí hiệu đầu vào bằng các từ mã riêng biệt mà thay thế luồng ký hiệu đầu vào bằng một từ mã duy nhất ở đầu ra Đầu ra của mã hóa Số học là một số lớn hơn 0 và nhỏ hơn 1 Mã hóa Số học bắt đầu hoạt động của nó bằng việc phân chia khoảng giữa 0 và 1 dựa vào sự... nào để bộ giải mã biết được đã kết thúc luồng đầu vào Ở đây có 2 cách để giải quyết vấn đề này là ta gửi cho bộ giải mã biết độ dài của thơng điệp hoặc một kí hiệu đặc biệt để báo cho bộ giải mã biết là đã kết thúc thơng điệp Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/ 28 2.3 Phân tích thuật tốn mã hóa số học 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... điển đó đem lại nén đạt hiệu quả cao và cải thiện sự cứng nhắc của thuật tốn nén Như chúng ta đều biết, việc nén dữ liệu chẳng qua là việc mã các thơng tin thương xun xuất hiện bằng một từ mã ngắn và thơng tin ít xuất hiện bằng từ mã dài và được lưu trữ trong một từ điển Vậy chúng ta có một số phương án sau: + Sử dụng loại mã có chiều dài cố định: Trong phương án này, số bits cần nén dữ liệu cần được... http://lrc.tnu.edu.vn/ 34 Chương 3: XÂY DỰNG ỨNG DỤNG NÉN DỮ LIỆU CHO VĂN BẢN TIẾNG VIỆT 3.1 Bài tốn nén dữ liệu văn bản tiếng Việt Nén dữ liệu là việc thực hiện thu gọn kích thước các tập tin hoặc làm cho thơng tin lưu trữ chiếm khơng gian đĩa ít nhất có thể Có nhiều cách để thực hiện điều này tùy vào từng đối tượng cụ thể Văn bản tiếng Việt ta lưu trữ hàng ngày có rất nhiều các đoạn dữ liệu được lặp đi lặp lại Vì vậy... nén dữ liệu cần được quyết định trước khi tiến hành nén Nén sử dụng số bits ít thì từ điển sẽ nhanh chóng bị đầy do đó hiệu quả nén khơng cao Ngược lại nếu chúng ta sử dụng số bits q lớn thì sẽ gây lãng phí và cũng dẫn đến khơng có hiệu quả cao trong việc nén + Sử dụng loại mã có chiều dài thay đổi: Phương án này nảy sinh một vấn đễ là chiều dài mã là bao nhiêu hay nói cách khác đó là kích thước của... khỏi bảng mã Huffman Tăng số lượng ký tự ở cây thứ tự lên một Giảm số lượng ký tự ở cây Huffman đi một Thêm ký tự vừa loại ra khỏi bảng mã Huffman đó và bảng mã thứ tự ở vị trí đầu tiên End; Tạo lại bảng mã thứ tự, mã Huffman cho bảng mã Huffman theo ngun tắc cân bằng End; Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/ 11 Bước 4: Dừng chương trình Thuật tốn giải nén: Bước 1: Khởi tạo bảng mã thứ... giảm sự dư thừa dữ liệu 3.2 Xây dựng ứng dụng 3.2.1 Cài đặt thuật tốn nén dữ liệu văn bản tiếng Việt Chương trình cài đặt trên ngơn ngữ Visual Studio Khi mã hóa dùng các thao tác di chuyển /cộng các số ngun để tính tốn, với độ chính xác thấp đã được chấp nhận, trong một vài cấu trúc nó thực thi nhanh hơn Một đặc điểm nổi bật của mã hóa là dùng sự chính xác rõ ràng khi thực hiện Tổng tần số có thể lên... ch If ch thuộc bảng mã thứ tự then Begin Ghi mã 0/1 của ký tự đó và ký tự đặc biệt ra tệp đích Xóa ký tự đó ở bảng mã thứ tự, thêm ký tự đó vào bảng mã Huffman (trong cây front tree) với số đếm bằng 1 End Else Begin Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/ 10 If ch thuộc bảng mã Huffman then Begin Tăng số đếm của ký tự đó lên một đơn vị If số đếm của ký tự đó lớn hơn số đếm của ký tự ngay . ĐẠI HỌC THÁI NGUN TRƯỜNG ĐẠI HỌC CNTT & TRUYỀN THƠNG HÀ DIỆU THÚY NÉN DỮ LIỆU TIẾNG VIỆT SỬ DỤNG PHƯƠNG PHÁP MÃ HĨA SỐ HỌC Chun ngành: Khoa học máy tính Mã số: 60. thuật nén dữ liệu (văn bản tiếng Việt) khác. Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/ 3 4. Phương pháp nghiên cứu - Nghiên cứu các tài liệu về các kỹ thuật mã hóa và nén dữ liệu. . tồn dữ liệu cho các văn bản tiếng Việt. - Xây dựng ứng dụng nén dữ liệu cho các văn bản tiếng Việt. Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/ 4 Chương 1: TỔNG QUAN VỀ NÉN DỮ LIỆU