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
532,03 KB
Nội dung
Header Page of 126 ĐẠ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 Footer Page of 126 Số hóa trung tâm học liệu http://lrc.tnu.edu.vn/ Header Page of 126 Cơng trình hồn thành 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 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 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 Footer Page of 126 Số hóa trung tâm học liệu ii http://lrc.tnu.edu.vn/ Header Page of 126 MỞ ĐẦU Đặt vấn đề Nén liệu kỹ thuật quan trọng nhiều lĩnh vực khác Chính nhờ có kỹ thuật nén liệu mà ngày có phương tiện truyền thơng đại phục vụ cho sống truyền hình cáp, truyền hình số, điện thoại, internet, hệ thống lưu trữ, văn nhiều khía cạnh khác Do kỹ thuật nén liệu ngày quan tâm phát triển nhiều Tiếng Việt ngơn ngữ thuộc hệ thống chữ Latinh, sử dụng nhiều dấu kèm với ngun âm, ngồi bảng chữ tiếng Anh, tiếng Việt có thêm ký tự: Sáu ngun âm a, e, i, o, u, y với dấu (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 (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 = 134 ký tự cho tiếng Việt Với bảng mã ASCII bit sử dụng phổ biến máy tính, mã hóa 256 ký tự Tuy nhiên, ký tự có mã từ đến 127 chuẩn hóa thuộc diện “cấm vi phạm” 128 chỗ (mã từ 128 đến 255) “tự do” Vậy xây dựng ứng với mã sử dụng hết vùng tự mà thiếu 134 – 128 = chỗ Hiện sử dụng chuẩn Unicode để lưu trữ ký tự tiếng Việt Như biết chuẩn Unicode chuẩn 2byte, lưu trữ văn tiếng Việt hệ thống lưu trữ xẩy tình trạng dư thừa liệu Điều dẫn đến việc lưu trữ xử lý lãng tài ngun hệ Footer Page of 126 Số hóa trung tâm học liệu http://lrc.tnu.edu.vn/ Header Page of 126 thống, truyền tải đường truyền mạng chiếm băng thơng nhiều Từ u cầu thực tế đòi hỏi phải loại bỏ dư thừa liệu trước lưu trữ xử lý Chính em chọn đề tài “Nén liệu tiếng Việt sử dụng thuật tốn mã hóa số học” Đối tượng 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 kỹ thuật nén liệu - Các phần mềm nén liệu Hướng nghiên cứu đề tài - Nghiên cứu phương pháp nén liệu nén bảo tồn liệu (lossless data compression) nén mát liệu (lossy data compression) - Nghiên cứu kỹ thuật nén liệu như: kỹ thuật xử lý lặp lại xâu (RLE), mã hóa Huffman, kỹ thuật nén LZW (Lempel - Zip Welch)… - Nghiên cứu kỹ thuật nén bảo tồn 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 liệu Arithmetic Coding - Phân tích, so sánh đánh giá kết thực nghiệm với kỹ thuật nén liệu (văn tiếng Việt) khác Footer Page of 126 Số hóa trung tâm học liệu http://lrc.tnu.edu.vn/ Header Page of 126 Phương pháp nghiên cứu - Nghiên cứu tài liệu kỹ thuật mã hóa nén liệu - Tìm hiểu chuẩn tiếng Việt Việt Nam - Khảo sát thực tế phần mềm nén liệu việc nén văn tiếng Việt - Phân tích, đánh giá kỹ thuật (thuật tốn) nén liệu - Cài đặt kỹ thuật nén Arithmetic Coding - Triển khai thử nghiệm loại liệu văn tiếng Việt Ý nghĩa khoa học ý nghĩa thực tiễn đề tài - Nghiên cứu hồn thiện kỹ thuật nén bảo tồn liệu cho văn tiếng Việt - Xây dựng ứng dụng nén liệu cho văn tiếng Việt Footer Page of 126 Số hóa trung tâm học liệu http://lrc.tnu.edu.vn/ Header Page of 126 Chương 1: TỔNG QUAN VỀ NÉN DỮ LIỆU 1.1 Tổng quan nén liệu 1.1.1 Sơ lược nén liệu 1.1.1.1 Khái niệm nén liệu Nén liệu q trình làm giảm lượng thơng tin “dư thừa” liệu gốc vậy, lượng thơng tin thu sau nén thường nhỏ so với liệu gốc nhiều 1.1.1.2 Ngun tắc nén liệu Thơng thường, hầu hết tập tin máy tính có nhiều thơng tin dư thừa, việc thực nén tập tin thực chất mã hố lại tập tin để loại bỏ thơng tin dư thừa Nhìn chung khơng thể có phương pháp nén tổng qt cho kết tốt tất loại tập tin khơng ta áp dụng n lần phương pháp nén để đạt tập tin nhỏ tuỳ ý Kỹ thuật nén tập tin thường áp dụng cho tập tin văn (Trong có số kí tự có xác suất xuất nhiều kí tự khác), tập tin ảnh bitmap (Mà có mảng lớn đồng nhất), tập tin dùng để biểu diễn âm dạng số hố tín hiệu tương tự (analog signal) khác (Các tín hiệu có mẫu lặp lại nhiều lần) Ðối với tập tin nhị phân tập tin chương trình sau nén khơng tiết kiệm nhiều Ngồi ra, số trường hợp để nâng cao hệ số nén người ta bỏ bớt số thơng tin tập tin 1.1.2 Các phương pháp nén liệu 1.1.2.1 Nén bảo tồn liệu Đó mơ hình nén liệu mà cho phép người sử dụng bảo tồn thơng tin suốt q trình nén Điều giải thích sau: Footer Page of 126 Số hóa trung tâm học liệu http://lrc.tnu.edu.vn/ Header Page of 126 Giả sử ta có liệu nguồn A liệu nén A' Sau ta giải nén A' tập A'' mà tập A'' hồn tồn giống với tập A ban đầu giải nén Thơng thường, kỹ thuật áp dụng với loại liệu văn độ xác văn 1.1.2.2 Nén hao hụt liệu Trong kỹ thuật nén, bên cạnh nén bảo tồn người ta đưa khái niệm nén khơng bảo tồn (hay gọi nén hao hụt liệu) Nén khơng bảo tồn mơ hình nén liệu mà tính bảo tồn liệu khơng coi trọng Nó có nghĩa ta có tập liệu A, tập nén A' sau giải nén ta thu tập A'' khác tập A ban đầu Kỹ thuật thường áp dụng cho việc nén liệu loại tệp ảnh nói chung khơng ảnh hưởng nhiều đến hình dạng ảnh 1.2 Các kỹ thuật nén liệu văn 1.2.1 Xử lý lặp lại xâu ký tự (Run – Length Encoding) Mục đích thuật tốn tìm ký tự lặp lại nhiều lần số lần lặp lại ký tự đó, thay cụm lặp lại biểu diễn nhỏ gọn Có thể biểu diễn rút gọn dạng cặp ký hiệu (r,s,l) với s ký hiệu dãy ký tự nằm bảng chữ cái, r l ký hiệu khơng xuất bảng chữ cái, tùy trường hợp mà r l lại có ý nghĩa khác Ví dụ: Cho chuỗi đầu vào MMMMMMM (chữ M lặp lại lần), chuỗi thay (r,7,M) hay viết tắt r7M r với ý nghĩa ký hiệu cho việc xuất lặp lại (repeating) đòi hỏi chữ r khơng xuất bảng chữ đầu vào Cho chuỗi đầu vào ABCDEFG (khơng xuất lặp lại) chuỗi thay (n,7,ABCDEFGH), hay viết tắt n7ABCDEFG n Footer Page of 126 Số hóa trung tâm học liệu http://lrc.tnu.edu.vn/ Header Page of 126 với ý nghĩa ký hiệu cho việc khơng xuất lặp lại (non-repeating), chữ n khơng xuất bảng chữ đầu vào Thuật tốn hiệu 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 dạng chữ bảng chữ cái, bit 0, nhị phân; thơng số màu điểm ảnh, khối hợp thành liệu kiểu âm Trên thực tế, thuật tốn áp dụng ngày nay: thuật tốn HDC (hardware data compression), sử dụng ổ băng kết nối với hệ thống máy tính IBM, thuật tốn tương tự dùng chuẩn SNA (System network architecture) IBM 1.2.2 Mã hóa Huffman 1.2.2.1 Mã Huffman tĩnh * Ngun lý: Ngun lý phương pháp Huffman mã hố bytes tệp liệu nguồn biến nhị phân Nó tạo mã độ dài biến thiên tập hợp bits Đây phương pháp nén kiểu thống kê, ký tự xuất nhiều có mã ngắn Mã Huffman có tính chất quan trọng: mã ký hiệu khơng thể phần đầu mã ký hiệu khác Nếu ký hiệu mã hố tổ hợp nhị phân 101 tổ hợp 10110 khơng thể mã ký hiệu khác tệp nguồn Do giải mã cần phải đọc bit gặp mã ký hiệu * Thuật tốn: Việc xây dựng mã hố Huffman tiến hành thuật tốn khác với thuật tốn Fano - Shannon Nếu Fano - Shannon xây dựng từ xuống cách chia đơi gán cho Footer Page of 126 Số hóa trung tâm học liệu http://lrc.tnu.edu.vn/ Header Page of 126 phần bít, cơng việc kết thúc khơng thể tiến hành phân chia tiếp Huffman lại thiết kế từ lên, cơng việc kết thúc điểm gốc Ví dụ : Cho mơ hình nguồn có trạng thái tần suất tương ứng 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ã A 0.2 10 E 0.3 01 I 0.1 001 O 0.2 11 U 0.1 0000 Ơ 0.1 0001 01 0 1 u e a o i Bước1: Nhóm chữ có tần suất nhỏ tạo chữ kép Sau lần nhóm số chữ 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 i -> 0.1 {u,ơ} -> 0.2 u -> 0.1 i -> 0.1 {{u, ơ}, i} -> 0.3 o -> 0.2 -> 0.1 Bước 2: Tạo 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ã Footer Page of 126 Số hóa trung tâm học liệu http://lrc.tnu.edu.vn/ Header Page 10 of 126 {{{{u, ơ}, 1}, e}, {a, o}} {{{u, ơ}, i}, e} {a, o} 10 {{{ u, ơ}, i}, e a o {u, ơ} i u Vậy mã 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ỏ ghép lại làm một, trọng số ký tự tổng trọng số hai ký tự đem ghép Bước 2: Trong số lượng ký tự danh sách lớn thực bước một, khơng thực bước ba Bước ba: Tách ký tự cuối tạo nhị phân với qui ước bên trái mã 0, bên phải mã Thuật tốn giải nén: Bước 1: Đọc bit tập tin nén duyệt nhị phân xác định hết Lấy ký tự ghi tệp giải nén Bước 2: Trong chưa hết tập tin nén thực bước một, ngược lại thực bước ba Bước 3: Kết thúc thuật tốn Footer Page 10 of 126 Số hóa trung tâm học liệu http://lrc.tnu.edu.vn/ Header Page 40 of 126 38 Thời gian nén giải nén, mơ hình từ xấp xỉ với thời gian nén giải nén phương pháp nén gzip Điều chứng tỏ nén số học dùng mơ hình từ mang lại tỷ số tốt Footer Page 40 of 126 Số hóa trung tâm học liệu http://lrc.tnu.edu.vn/ Header Page 41 of 126 39 KẾT LUẬN Hiện nén số liệu khơng phải vấn đề mẽ người sử dụng máy tính, tất máy cài đặt vài tiện ích nén cho người sử dụng Tuy nhiên để có hiểu biết chế làm việc q trình nén chưa có tài liệu tiếng Việt đề cập đến Do việc tiếp cận cơng nghệ nén thời gian ngắn, kinh nghiệm lập trình thân yếu gặp nhiều khó khăn việc dịch tài liệu nước ngồi nên khơng tránh khỏi số sai sót Thêm vào hiểu biết cá nhân tất khía cạnh chưa thật sâu sắc, nên đề tài chưa hồn chỉnh cần có cải tiến khác để nâng cao hiệu suất Rất mong góp ý thầy cơ, anh chị trước bạn để em hồn thành luận văn tốt Để nâng cao tỷ số nén chương trình cần lựa chọn cấu trúc liệu tối ưu để xây dựng mơ hình bậc cao kết thực nghiệm thực mơ hình bậc khơng Do với mơ hình bậc cao kết mang lại có lẽ tốt Cải tiến thao tác đọc ghi tệp mức bít để nâng cao tốc độ v.v Chương trình cần phát triển để phát huy tác dụng với tất loại tập tin (văn bản, hình ảnh, âm thanh, tập tin nhị phân, ) Footer Page 41 of 126 Số hóa trung tâm học liệu http://lrc.tnu.edu.vn/ Header Page 42 of 126 40 TÀI LIỆU THAM KHẢO Tài liệu tiếng Việt Đỗ Ngọc Anh (2006), Nén ảnh sử dụng biến đổi Wavelet ứng dụng dịch vụ liệu đa phương tiện tự động”, Luận văn thạc sỹ khoa học-Đại học Bách Khoa Hà Nội Phạm Văn Ất (2006), Kỹ thuật lập trình C sở nâng cao, NXB Giao thơng vận tải, Hà Nội Nguyễn Hữu Điển (2004), Một số vấn đề thuật tốn, NXB Giáo dục Tài liệu tiếng Anh: Maxime Crochemore, Thierry Lecroq (2010), Text data compression algorithms, Chapman & Hall/CRC Darrel R.Hankerson, Greg A.Haris, Peter D.Johnson, Introduction to Information theory and compression, Chapman&Hall/CRC Ida Mengyi Pu (2006), Fundamental Data Compression, Elsevier, Burlington Amir Said (2004), Introduction to arithmetic coding – Theory and Practice, Imaging system Laboratory Khalid Sayood (2006), Introduction to Data compression, Elsevier Tài liệu Internet: http://wikipedia.org 10 http://en.wikibooks.org 11 http://unikey.org 12 http://www.vnnic.vn/tenmientiengviet Footer Page 42 of 126 Số hóa trung tâm học liệu http://lrc.tnu.edu.vn/ Header Page 43 of 126 41 MỤC LỤC MỞ ĐẦU 1 Đặt vấn đề Đối tượng phạm vi nghiên cứu Hướng nghiên cứu đề tài Phương pháp nghiên cứu Ý nghĩa khoa học ý nghĩa thực tiễn đề tài Chương 1: TỔNG QUAN VỀ NÉN DỮ LIỆU 1.1 Tổng quan nén liệu 1.1.1 Sơ lược nén liệu 1.1.1.1 Khái niệm nén liệu 1.1.1.2 Ngun tắc nén liệu 1.1.2 Các phương pháp nén liệu 1.1.2.1 Nén bảo tồn liệu 1.1.2.2 Nén hao hụt liệu 1.2 Các kỹ thuật nén liệu văn 1.2.1 Xử lý lặp lại xâu ký tự (Run – Length Encoding) 1.2.2 Mã hóa Huffman 1.2.2.1 Mã Huffman tĩnh 1.2.2.2 Thuật tốn Huffman động 1.2.3 Thuật tốn LZW 12 1.2.4 Phương pháp mã hóa số học (Arithmetic Coding) 14 1.2.5 Mã hóa kiểu từ điển 16 1.2.5.1 Từ điển tĩnh 17 1.2.5.2 Từ điển động 18 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 21 2.1 Các bảng mã tiếng Việt 21 2.1.1 Chuẩn lưu trữ Unicode 21 2.1.1.1.Kho chữ 21 2.1.1.2 Bảng mã 22 2.1.1.3 Phơng chữ Unicode 26 2.1.2 Chuẩn lưu trữ tiếng Việt TCVN3 26 2.1.3 Chuẩn lưu trữ VNI-Windows 26 2.2 Kỹ thuật mã hóa số học 27 2.3 Phân tích thuật tốn mã hóa số học 28 2.2.1 Nén liệu văn tiếng Việt 28 2.2.2 Giải nén liệu văn tiếng Việt 31 2.2.3 Những hạn chế 32 Footer Page 43 of 126 Số hóa trung tâm học liệu http://lrc.tnu.edu.vn/ Header Page 44 of 126 42 Chương 3: XÂY DỰNG ỨNG DỤNG NÉN DỮ LIỆU CHO VĂN BẢN TIẾNG VIỆT 34 3.1 Bài tốn nén liệu văn tiếng Việt 34 3.2 Xây dựng ứng dụng 34 3.2.1 Cài đặt thuật tốn nén liệu văn tiếng Việt 34 3.2.2 Cài đặt thuật tốn giải nén liệu văn tiếng Việt 35 3.3 Triển khai thử nghiệm 35 3.4 Đánh giá 37 Bảng so sánh giải nén 37 KẾT LUẬN 39 Footer Page 44 of 126 Số hóa trung tâm học liệu http://lrc.tnu.edu.vn/ Header Page 45 of 126 43 PHỤ LỤC using using using using using using using using using using System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Linq; System.Text; System.Windows.Forms; System.IO; ACLib; namespace ArithmeticCoder { public partial class frmArithmeticCoder : Form { //Khởi tạo form public frmArithmeticCoder() { InitializeComponent(); } //Sự kiện click button để chọn file đầu vào private void browseSourceButton_Click(object sender, EventArgs e) { //Mở file dialog sourceOpenFileDialog.ShowDialog(); } private void sourceOpenFileDialog_FileOk(object sender, CancelEventArgs e) { //gán đường dẫn file cho TextBox sourceText.Text = sourceOpenFileDialog.FileName; } //Sự kiện click button để chọn file đầu private void browseTargetButton_Click(object sender, EventArgs e) { //Mở file dialog targetOpenFileDialog.ShowDialog(); } private void targetOpenFileDialog_FileOk(object sender, CancelEventArgs e) { //gán đường dẫn file cho TextBox targetText.Text = targetOpenFileDialog.FileName; } // Sự kiện chọn nút mã hóa liệu private void encodeButton_Click(object sender, EventArgs e) { AbstractModel model = new ModelOrder0(); //Khai báo biến lấy thơng tin file đầu vào, đầu FileInfo sourceFile, targetFile; //Khai báo biến lấy cấu trúc file đầu vào, đầu FileStream sourceStream, targetStream; try Footer Page 45 of 126 Số hóa trung tâm học liệu http://lrc.tnu.edu.vn/ Header Page 46 of 126 44 { //Đọc file đầu vào sourceFile = new FileInfo(sourceText.Text); sourceStream = sourceFile.OpenRead(); } catch (Exception openSourceException) { MessageBox.Show("Lỗi 1! Khơng thể đọc file đầu vào"); return; } try { //Ghi file kết targetFile = new FileInfo(targetText.Text); targetStream = targetFile.OpenWrite(); } catch (Exception openTargetException) { MessageBox.Show("Lỗi 2! Khơng thể mở file đầu để ghi!"); return; } // Thơng tin độ lớn file đầu vào sourceFileSizeValueText.Text = sourceFile.Length.ToString(); sourceStream.Seek(0, SeekOrigin.Begin); byte[] writtenBytes = Encoding.Default.GetBytes(Program.g_Signature); targetStream.Write(writtenBytes, 0, 4); DateTime firstTime = DateTime.Now; // Chức nén model.Process(sourceStream, targetStream, ModeE.MODE_ENCODE); // Đo thời gian nén DateTime secondTime = DateTime.Now; TimeSpan duration = secondTime - firstTime; // Đóng file sourceStream.Close(); targetStream.Close(); // Thơng tin độ lớn file đầu targetFileSizeValueText.Text = targetFile.Length.ToString(); compressionRatioValueText.Text = ((double)sourceFile.Length / (double)targetFile.Length).ToString(); timeValueText.Text = duration.TotalMilliseconds.ToString(); MessageBox.Show("Mã hóa (nén) thành cơng!"); } // Sự kiện chọn nút mã hóa liệu, tương tự mã hóa private void decodeButton_Click(object sender, EventArgs e) { AbstractModel model = new ModelOrder0(); FileInfo sourceFile, targetFile; FileStream sourceStream, targetStream; Footer Page 46 of 126 Số hóa trung tâm học liệu http://lrc.tnu.edu.vn/ Header Page 47 of 126 45 try { sourceFile = new FileInfo(sourceText.Text); sourceStream = sourceFile.OpenRead(); } catch (Exception openSourceException) { MessageBox.Show("Lỗi 1! Khơng thể mở file đầu vào để đọc!"); return; } try { targetFile = new FileInfo(targetText.Text); targetStream = targetFile.OpenWrite(); } catch (Exception openTargetException) { MessageBox.Show("Lỗi 2! Khơng thể mở file đầu để ghi!"); return; } sourceFileSizeValueText.Text = sourceFile.Length.ToString(); byte[] readBytes = new byte[4]; sourceStream.Read(readBytes, 0, 4); string signature = Encoding.Default.GetString(readBytes); if (signature != Program.g_Signature) { MessageBox.Show("Lỗi 3! nén khơng hợp lệ!"); return; } DateTime firstTime = DateTime.Now; model.Process(sourceStream, targetStream, ModeE.MODE_DECODE); DateTime secondTime = DateTime.Now; TimeSpan duration = secondTime - firstTime; sourceStream.Close(); targetStream.Close(); targetFileSizeValueText.Text = targetFile.Length.ToString(); compressionRatioValueText.Text = ((double)targetFile.Length / (double)sourceFile.Length).ToString(); timeValueText.Text = duration.TotalMilliseconds.ToString(); MessageBox.Show("Giải mã (giải nén) thành cơng!"); } } Footer Page 47 of 126 Số hóa trung tâm học liệu http://lrc.tnu.edu.vn/ Header Page 48 of 126 46 } namespace ArithmeticCoder { partial class frmArithmeticCoder { /// /// Required designer variable /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// /// Required method for Designer support - not modify /// the contents of this method with the code editor /// private void InitializeComponent() { this.sourceOpenFileDialog = new System.Windows.Forms.OpenFileDialog(); this.sourceLabel = new System.Windows.Forms.Label(); this.targetLabel = new System.Windows.Forms.Label(); this.sourceText = new System.Windows.Forms.TextBox(); this.targetText = new System.Windows.Forms.TextBox(); this.browseSourceButton = new System.Windows.Forms.Button(); this.browseTargetButton = new System.Windows.Forms.Button(); this.targetOpenFileDialog = new System.Windows.Forms.OpenFileDialog(); this.encodeButton = new System.Windows.Forms.Button(); this.decodeButton = new System.Windows.Forms.Button(); this.sourceFileSizeLabel = new System.Windows.Forms.Label(); this.targetFileSizeLabel = new System.Windows.Forms.Label(); this.infoGroupBox = new System.Windows.Forms.GroupBox(); this.timeValueText = new System.Windows.Forms.TextBox(); this.compressionRatioValueText = new System.Windows.Forms.TextBox(); this.targetFileSizeValueText = new System.Windows.Forms.TextBox(); this.sourceFileSizeValueText = new System.Windows.Forms.TextBox(); this.timeLabel = new System.Windows.Forms.Label(); this.compressionRatioLabel = new System.Windows.Forms.Label(); this.infoGroupBox.SuspendLayout(); this.SuspendLayout(); Footer Page 48 of 126 Số hóa trung tâm học liệu http://lrc.tnu.edu.vn/ Header Page 49 of 126 47 // // sourceOpenFileDialog // this.sourceOpenFileDialog.FileName = "openFileDialog1"; this.sourceOpenFileDialog.SupportMultiDottedExtensions = true; this.sourceOpenFileDialog.Title = "Browse the Source File"; this.sourceOpenFileDialog.FileOk += new System.ComponentModel.CancelEventHandler(this.sourceOpenFileDialog_FileOk ); // // sourceLabel // this.sourceLabel.AutoSize = true; this.sourceLabel.Location = new System.Drawing.Point(11, 96); this.sourceLabel.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); this.sourceLabel.Name = "sourceLabel"; this.sourceLabel.Size = new System.Drawing.Size(69, 13); this.sourceLabel.TabIndex = 0; this.sourceLabel.Text = "File đầu vào:"; // // targetLabel // this.targetLabel.AutoSize = true; this.targetLabel.Location = new System.Drawing.Point(11, 124); this.targetLabel.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); this.targetLabel.Name = "targetLabel"; this.targetLabel.Size = new System.Drawing.Size(60, 13); this.targetLabel.TabIndex = 1; this.targetLabel.Text = "File đầu ra:"; // // sourceText // this.sourceText.Location = new System.Drawing.Point(108, 93); this.sourceText.Margin = new System.Windows.Forms.Padding(2); this.sourceText.Name = "sourceText"; this.sourceText.Size = new System.Drawing.Size(401, 20); this.sourceText.TabIndex = 2; // // targetText // this.targetText.Location = new System.Drawing.Point(108, 121); this.targetText.Margin = new System.Windows.Forms.Padding(2); this.targetText.Name = "targetText"; this.targetText.Size = new System.Drawing.Size(401, 20); this.targetText.TabIndex = 3; // // browseSourceButton // this.browseSourceButton.Location = new System.Drawing.Point(513, 93); this.browseSourceButton.Margin = new System.Windows.Forms.Padding(2); this.browseSourceButton.Name = "browseSourceButton"; Footer Page 49 of 126 Số hóa trung tâm học liệu http://lrc.tnu.edu.vn/ Header Page 50 of 126 48 this.browseSourceButton.Size = new System.Drawing.Size(109, 22); this.browseSourceButton.TabIndex = 4; this.browseSourceButton.Text = "Mở"; this.browseSourceButton.UseVisualStyleBackColor = true; this.browseSourceButton.Click += new System.EventHandler(this.browseSourceButton_Click); // // browseTargetButton // this.browseTargetButton.Location = new System.Drawing.Point(513, 121); this.browseTargetButton.Margin = new System.Windows.Forms.Padding(2); this.browseTargetButton.Name = "browseTargetButton"; this.browseTargetButton.Size = new System.Drawing.Size(109, 21); this.browseTargetButton.TabIndex = 5; this.browseTargetButton.Text = "Mở"; this.browseTargetButton.UseVisualStyleBackColor = true; this.browseTargetButton.Click += new System.EventHandler(this.browseTargetButton_Click); // // targetOpenFileDialog // this.targetOpenFileDialog.CheckFileExists = false; this.targetOpenFileDialog.CheckPathExists = false; this.targetOpenFileDialog.DefaultExt = "ac"; this.targetOpenFileDialog.FileName = "openFileDialog1"; this.targetOpenFileDialog.SupportMultiDottedExtensions = true; this.targetOpenFileDialog.Title = "Select Destination File"; this.targetOpenFileDialog.FileOk += new System.ComponentModel.CancelEventHandler(this.targetOpenFileDialog_FileOk ); // // encodeButton // this.encodeButton.Location = new System.Drawing.Point(496, 152); this.encodeButton.Margin = new System.Windows.Forms.Padding(2); this.encodeButton.Name = "encodeButton"; this.encodeButton.Size = new System.Drawing.Size(50, 34); this.encodeButton.TabIndex = 6; this.encodeButton.Text = "Nén"; this.encodeButton.UseVisualStyleBackColor = true; this.encodeButton.Click += new System.EventHandler(this.encodeButton_Click); // // decodeButton // this.decodeButton.Location = new System.Drawing.Point(550, 152); this.decodeButton.Margin = new System.Windows.Forms.Padding(2); this.decodeButton.Name = "decodeButton"; this.decodeButton.Size = new System.Drawing.Size(72, 34); this.decodeButton.TabIndex = 7; Footer Page 50 of 126 Số hóa trung tâm học liệu http://lrc.tnu.edu.vn/ Header Page 51 of 126 49 this.decodeButton.Text = "Giải nén"; this.decodeButton.UseVisualStyleBackColor = true; this.decodeButton.Click += new System.EventHandler(this.decodeButton_Click); // // sourceFileSizeLabel // this.sourceFileSizeLabel.AutoSize = true; this.sourceFileSizeLabel.Location = new System.Drawing.Point(11, 22); this.sourceFileSizeLabel.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); this.sourceFileSizeLabel.Name = "sourceFileSizeLabel"; this.sourceFileSizeLabel.Size = new System.Drawing.Size(157, 13); this.sourceFileSizeLabel.TabIndex = 8; this.sourceFileSizeLabel.Text = "Kích thước file đầu vào (Bytes):"; // // targetFileSizeLabel // this.targetFileSizeLabel.AutoSize = true; this.targetFileSizeLabel.Location = new System.Drawing.Point(11, 46); this.targetFileSizeLabel.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); this.targetFileSizeLabel.Name = "targetFileSizeLabel"; this.targetFileSizeLabel.Size = new System.Drawing.Size(148, 13); this.targetFileSizeLabel.TabIndex = 9; this.targetFileSizeLabel.Text = "Kích thước file đầu (Bytes):"; // // infoGroupBox // this.infoGroupBox.Controls.Add(this.timeValueText); this.infoGroupBox.Controls.Add(this.compressionRatioValueText); this.infoGroupBox.Controls.Add(this.targetFileSizeValueText); this.infoGroupBox.Controls.Add(this.sourceFileSizeValueText); this.infoGroupBox.Controls.Add(this.timeLabel); this.infoGroupBox.Controls.Add(this.compressionRatioLabel); this.infoGroupBox.Controls.Add(this.sourceFileSizeLabel); this.infoGroupBox.Controls.Add(this.targetFileSizeLabel); this.infoGroupBox.Location = new System.Drawing.Point(14, 10); this.infoGroupBox.Margin = new System.Windows.Forms.Padding(2); this.infoGroupBox.Name = "infoGroupBox"; this.infoGroupBox.Padding = new System.Windows.Forms.Padding(2); this.infoGroupBox.Size = new System.Drawing.Size(608, 77); this.infoGroupBox.TabIndex = 10; this.infoGroupBox.TabStop = false; this.infoGroupBox.Text = "Thơng tin"; // // timeValueText // Footer Page 51 of 126 Số hóa trung tâm học liệu http://lrc.tnu.edu.vn/ Header Page 52 of 126 50 this.timeValueText.Location = new System.Drawing.Point(457, 43); this.timeValueText.Margin = new System.Windows.Forms.Padding(2); this.timeValueText.Name = "timeValueText"; this.timeValueText.ReadOnly = true; this.timeValueText.Size = new System.Drawing.Size(134, 20); this.timeValueText.TabIndex = 18; // // compressionRatioValueText // this.compressionRatioValueText.Location = new System.Drawing.Point(457, 19); this.compressionRatioValueText.Margin = new System.Windows.Forms.Padding(2); this.compressionRatioValueText.Name = "compressionRatioValueText"; this.compressionRatioValueText.ReadOnly = true; this.compressionRatioValueText.Size = new System.Drawing.Size(134, 20); this.compressionRatioValueText.TabIndex = 17; // // targetFileSizeValueText // this.targetFileSizeValueText.Location = new System.Drawing.Point(172, 46); this.targetFileSizeValueText.Margin = new System.Windows.Forms.Padding(2); this.targetFileSizeValueText.Name = "targetFileSizeValueText"; this.targetFileSizeValueText.ReadOnly = true; this.targetFileSizeValueText.Size = new System.Drawing.Size(134, 20); this.targetFileSizeValueText.TabIndex = 16; // // sourceFileSizeValueText // this.sourceFileSizeValueText.Location = new System.Drawing.Point(172, 22); this.sourceFileSizeValueText.Margin = new System.Windows.Forms.Padding(2); this.sourceFileSizeValueText.Name = "sourceFileSizeValueText"; this.sourceFileSizeValueText.ReadOnly = true; this.sourceFileSizeValueText.Size = new System.Drawing.Size(134, 20); this.sourceFileSizeValueText.TabIndex = 11; // // timeLabel // this.timeLabel.AutoSize = true; this.timeLabel.Location = new System.Drawing.Point(355, 43); this.timeLabel.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); this.timeLabel.Name = "timeLabel"; this.timeLabel.Size = new System.Drawing.Size(76, 13); this.timeLabel.TabIndex = 13; this.timeLabel.Text = "Thời gian (ms):"; // Footer Page 52 of 126 Số hóa trung tâm học liệu http://lrc.tnu.edu.vn/ Header Page 53 of 126 51 // compressionRatioLabel // this.compressionRatioLabel.AutoSize = true; this.compressionRatioLabel.Location = new System.Drawing.Point(355, 19); this.compressionRatioLabel.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); this.compressionRatioLabel.Name = "compressionRatioLabel"; this.compressionRatioLabel.Size = new System.Drawing.Size(98, 13); this.compressionRatioLabel.TabIndex = 12; this.compressionRatioLabel.Text = "Compression Ratio:"; // // frmArithmeticCoder // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(633, 200); this.Controls.Add(this.infoGroupBox); this.Controls.Add(this.decodeButton); this.Controls.Add(this.encodeButton); this.Controls.Add(this.browseTargetButton); this.Controls.Add(this.browseSourceButton); this.Controls.Add(this.targetText); this.Controls.Add(this.sourceText); this.Controls.Add(this.targetLabel); this.Controls.Add(this.sourceLabel); this.Margin = new System.Windows.Forms.Padding(2); this.MaximizeBox = false; this.Name = "frmArithmeticCoder"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "Mã hóa số học"; this.infoGroupBox.ResumeLayout(false); this.infoGroupBox.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); } #endregion private private private private private private private private private private private private private private private private private Footer Page 53 of 126 System.Windows.Forms.OpenFileDialog sourceOpenFileDialog; System.Windows.Forms.Label sourceLabel; System.Windows.Forms.Label targetLabel; System.Windows.Forms.TextBox sourceText; System.Windows.Forms.TextBox targetText; System.Windows.Forms.Button browseSourceButton; System.Windows.Forms.Button browseTargetButton; System.Windows.Forms.OpenFileDialog targetOpenFileDialog; System.Windows.Forms.Button encodeButton; System.Windows.Forms.Button decodeButton; System.Windows.Forms.Label sourceFileSizeLabel; System.Windows.Forms.Label targetFileSizeLabel; System.Windows.Forms.GroupBox infoGroupBox; System.Windows.Forms.Label timeLabel; System.Windows.Forms.Label compressionRatioLabel; System.Windows.Forms.TextBox sourceFileSizeValueText; System.Windows.Forms.TextBox timeValueText; Số hóa trung tâm học liệu http://lrc.tnu.edu.vn/ Header Page 54 of 126 52 private System.Windows.Forms.TextBox compressionRatioValueText; private System.Windows.Forms.TextBox targetFileSizeValueText; } using using using using using using System; System.Collections.Generic; System.Linq; System.Windows.Forms; System.IO; ACLib; namespace ArithmeticCoder { static class Program { /// /// The main entry point for the application /// public const string g_Signature = "ACMC"; //Hàm gọi form chạy chương trình [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new frmArithmeticCoder()); } } } Footer Page 54 of 126 Số hóa trung tâm học liệu http://lrc.tnu.edu.vn/ ... 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 kí hiệu đầu vào từ mã riêng biệt mà thay luồng ký hiệu đầu vào từ mã đầu Đầu mã hóa Số học số lớn nhỏ Mã hóa Số học bắt đầu... Page 29 of 126 Số hóa trung tâm học liệu http://lrc.tnu.edu.vn/ Header Page 30 of 126 28 2.3 Phân tích thuật tốn mã hóa số học 2.2.1 Nén liệu văn tiếng Việt Bước mã hóa sở mã hóa thực arithmetic_encode(l,... of 126 Số hóa trung tâm học liệu http://lrc.tnu.edu.vn/ Header Page 23 of 126 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