Nén văn bản tiếng Việt với phương pháp mã hóa Huffman

Một phần của tài liệu Xây dựng kho dữ liệu an toàn với mã huffman (Trang 63)

d. Ứng dụng mã hóa Huffman để nén file

5.2.2. Nén văn bản tiếng Việt với phương pháp mã hóa Huffman

Áp dụng thuật toán mã Huffman để nén và giải nén các văn bản tiếng Việt: thay vì thay thế một ký tự bằng 1 chuỗi các bít 0,1 thì sẽ thay thế 1 từ bằng một chuổi bít (ví dụ: thay thế từ “Ngày” bằng một chuổi bít 0,1).

Khắc phục nhược điểm của thuật toán Huffman: khi nén văn bản phải liệt kê tỷ lệ xuất hiện từng từ, và cây Huffman sẽ khác nhau giữa các văn bản khác nhau. Như vậy để nén và giải nén thì cần gửi kèm cây mã Huffman.

64 Để khắc phục điểm này cần xây dựng một bộ mã Huffman dựa trên số lần xuất hiện của từng từ trên một bộ dữ liệu đầu vào (là căc văn bản được dùng làm dữ liệu mẫu). 5.2.3. Tập văn bản mẫu cho việc mã hóa và nén văn bản Tiếng Việt

Việc kết hợp hai phương pháp mã hóa Vigenere và Huffman trên văn bản Tiếng Việt sẽ đưa ra các bài toán yêu cầu cần xử lý:

- Để mã hóa Vigenere cần có 01 hình vuông Vigenere với mỗi hàng/cột là 01 từ Tiếng Việt (là từ đơn hay ghép có nghĩa trong Từ điển Tiếng Việt).

- Phương pháp mã Huffman yêu cầu xây dựng bộ thư viện mẫu bằng cách phân tích một tập các văn bản, tài liệu … đầu vào, qua đó thống kê tần suất xuất hiện của các từ (đơn và ghép) qua đó xây dựng lên bộ mã Huffman.

- Tuy nhiên việc phân tích các văn bản với văn phong hiện đại sẽ phát sinh những trường hợp như:

o Các từ cổ trong Tiếng Việt không xuất hiện đầy đủ ở các văn bản tài liệu. Điều này dẫ tới tập thư viện của mã Huffman sẽ nhở hơn bộ từ điển của mã Vigenere.

o Việc vay mượn hay giữ nguyên các từ phiên âm tiếng Anh cũng như sự phát sinh từ mới trong văn phong hiện đại sẽ làm cho bộ mã Huffman chứa những từ không có trong bộ từ điển tiếng Việt.

 Nói cách khác các tập từ điển cho hai phương pháp mã hóa là không trùng lặp, không phủ kín nhau:

65

Từ điển Tiếng Việt

Thư viện từ của mã Huffman Các từ trong Từ điển

Tiếng Việt được sử dụng trong tập văn bản mẫu

Văn phong hiện đại, các từ giữ nguyên từ tiếng nước ngoài Các từ Tiếng Việt cổ ít hoặc không còn sử dụng trong các văn bản, tài liệu mới

Hình CIII.II.3 – 1 Độ giao giữa các Tập văn bản mẫu

Việc chênh lệch về bộ thư viện mẫu sẽ dẫn tới việc dữ liệu sau khi được mã hóa bằng phương pháp mã Vigenere sẽ không thể nén và giải nén bằng phương pháp mã Huffman, do từ trong văn bản sau khi mã hóa với Vigenere không hề tồn tại trong cây mã Huffman.

Để khắc phục vấn đề này, bộ từ điển Tiếng Việt chỉ được sử dụng như một thư viện mẫu giúp phân tích và bóc tách văn bản Tiếng Việt thành các từ (đơn và ghép) cho việc xây dựng mã Huffman. Kết quả phân tích các tập văn bản mẫu sẽ sinh ra, hay “Thư viện từ của mã Huffman” trong hình trên, sẽ được dùng xây dựng hình vuông Vigenere. Phương pháp này ngoài việc giải quyết được vấn đề chênh lệch giữa 02 bộ thư viện cho Vigenere và Huffman còn làm tăng độ phức tạp cho các phương pháp thám mã Vigenere do bộ thư viện từ của hã Huffman được sinh ra dựa trên tập văn bản mẫu đưa vào, tức là nó không cố định. Hacker nếu không có được bộ “thư viện từ của mã Huffman” này sẽ không thể tiến hành các phương pháp vét cạn để giải mã các văn bản.

66 - Xây dựng tập văn bản mẫu: tập các tài liệu, văn bản … sẽ dùng để xây dựng lên

cây mã Huffman.

- Xử lý và phân tích văn bản mẫu từ đó liệt kê tỷ lệ xuất hiện của các từ.

- Xây dựng bộ mã Huffman dựa trên kết quả liệt kê tỷ lệ xuất hiện các từ ở trên. - Sử dụng “thư viện từ của mã Huffman” làm hình vuông Vigenere.

- Sử dụng cây mã Huffman thu được để nén và giải dữ liệu (các file văn bản tiếng Việt)

5.3. Xử lý văn bản và liệt kê tỷ lệ xuất hiện của các từ

- Bài toán đặt ra: Tìm giải pháp đếm các từ tiếng Việt xuất hiện trong các văn bản và liệt kê tỷ lệ xuất hiện của các từ này.

67

Hình CIII.III-1 Mô hình liệt kê tỷ lệ xuất hiện của các từ trong Tiếng Việt

Từ các tập tài liệu mẫu, tiến hành phân tích từng tài liệu (từng tệp tin): - B1: Tách một tệp tin thành từng đoạn văn bản

- B2: Phân tích từng đoạn văn bản thu được ở B1 thành các câu ngắn (phân cách bằng các dấu câu)

- B3: phân tích câu để tìm kiếm từ (đơn hoặc kép) là một từ có nghĩa

- B4: Lập một danh sách các từ với số lần xuất hiện của từ đó. Lặp lại bước 3 cho tới khi xử lý hết các câu.

68 Kết thúc 04 bước trên sẽ thu được một dữ liệu gồm các từ tiếng Việt và số lần xuất hiện của từ đó trong toàn bộ văn bản mẫu.

5.4. Xây dựng bộ mã Huffman

Hình CIII.IV – 1 Mô hình xây dựng bộ mã Huffman

Từ dữ liệu thu được trong việc “Xử lý văn bản và liệt kê tỷ lệ xuất hiện của các từ”, áp dụng giải thuật mã Huffman xây dựng hai bộ dữ liệu bao gồm:

- Cây nhịn phân mã Huffman: là một cây nhị phân với :

oLá là các từ

oBên trái của một node là bít 0

oBit 1 nằm bên phải node.

oCây nhịn phân Huffman được sử dụng để giải mã các văn bản đã nén. - Bảng mã hóa:

oLà một tập dữ liệu với định dạng: <Ký tự> - <Chuỗi bit nhị phân>

oBảng mã hóa được sử dụng để nén các file văn bản tiếng Việt. 5.5. Má hóa văn bản Tiếng việt sử dụng phương pháp mã Vigenere

5.5.1. Yêu cầu bài toán

69 5.5.2. Mô hình xử lý

Hình CIII.V.2 – Mô hình nén văn bản Tiếng Việt với mã hóa Vigenere

5.5.3. Giải thích mô hình xử lý

Bước 1: Từ kết quả việc phân tích các tập văn bản mẫn, thu được một bộ dữ liệu “thống kê từ trong Tiếng Việt”

a. Các bước để mã hóa một văn bản

- Bước 2: sử dụng bộ dữ liệu “thống kê từ trong Tiếng Việt” xây dựng lên “Hình vuông Vigenere”

- Bước 4: Mã hóa văn bản:

o Quá trình này sử dụng đầu vào là:  “hình vuông Vigenere”  “văn bản gốc” cần mã hóa.

 Người dùng nhập từ khóa để mã hóa văn bản

o Đầu ra: văn bản đã được mã hóa

b. Các bước để giải mã văn bản

- Bước 2: sử dụng bộ dữ liệu “thống kê từ trong Tiếng Việt” xây dựng lên “Hình vuông Vigenere”

70 - Bước 5: Giải mã văn bản

o Đầu vào:

 “hình vuông Vigenere”  Văn bản đã được mã hóa

 Người dùng nhập từ khóa để giải mã văn bản

o Đầu ra: Văn bản gốc trước khi mã hóa

c. Ghi chú

Bước 2 luôn được thực hiện lại tại mỗi quá trình nén và giải nén do bộ dữ liệu mẫu cho mã Huffman có thể được cập nhật liên tục theo yêu cầu sử dụng cũng như sự phát triển của ngôn ngữ theo thời gian.

5.6. Nén và giải nén văn bản Tiến Việt sử dụng phương pháp mã Huffman 5.6.1. Yêu cầu bài toán 5.6.1. Yêu cầu bài toán

71 5.6.2. Mô hình xử lý

Hình CIII.VI – 1 Mô hình nén và giải nén văn bản

Khi có một tài liệu (văn bản tiếng Việt) cân được nén, quá trình “nén dữ liệu” sẽ tiến hành:

- Bóc tách văn bản đầu vào, tách thành các từ (đơn – ghép) có nghĩa

- Mang đối chiếu các từ đã bóc tách được với bản mã Huffman để chuyển đổi từ đó thành một dãy bit.

 Kết thúc quá trình nén dữ liệu: văn bản được chuyển thành một chuỗi bít 0,1. Khi cần giản nén dữ liệu, quá trình giải nén:

- Mang chuỗi bít nhị phân 0-1 và đối chiếu vào duyệt cây nhị phân Huffman để tìm ra từ (đơn – ghép) tương ứng.

72 5.6.3. Kết quả thực hiện

a. Nén dữ liệu

Cho một chuỗi văn bản đầu vào cần nén:

Các danh mục tài sản danh mục đơn vị sử dụng Đơn vị sử dụng tài sản bộ phận sử dụng loại tài sản hồ sơ giấy tờ nhãn hiệu chức danh được sử dụng tài sản được giao diện chuyển sang các ứng dụng phần mềm quản lý Đăng ký tài sản phần mềm Kế toán nội bộ và phần mềm Tài chính nội ngành

Hệ thống tiến hành phân tích văn bản và lọc ra các từ đơn/ghép có nghĩa:

Các danh mục tài sản danh mục đơn vị sử dụng Đơn vị sử dụng tài sản bộ phận sử dụng loại tài sản hồ sơ giấy tờ nhãn hiệu chức danh được sử dụng tài sản được giao diện chuyển sang các ứng dụng phần mềm quản lý Đăng ký tài sản phần mềm Kế toán nội bộ phần mềm Tài chính nội ngành

73 Các từ đơn/ghép này được man đối chiếu với bản mã Huffman đã được xây dựng và tiến hành nén dữ liệu, kết quả trả về một chuỗi nhị phân:

01100000110010110101100101000110101111110101011011110011010101 000001101101000100111000110000010101010110100101010000110101010111 111010100100010110110101001101001110011001010011110000110001

b. Giải nén dữ liệu

Khi tiến hành giải mã, hệ thống lấy chuỗi nhị phân :

01100000110010110101100101000110101111110101011011110011010101 000001101101000100111000110000010101010110100101010000110101010111 111010100100010110110101001101001110011001010011110000110001

Để duyệt trên cây mã hóa Huffman, từ đó trả về kết quả giải nén:

Các danh mục tài sản danh mục đơn vị sử dụng Đơn vị sử dụng tài sản bộ phận sử dụng loại tài sản hồ sơ giấy tờ nhãn hiệu chức danh được sử dụng tài sản được giao diện chuyển sang các ứng dụng phần mềm quản lý Đăng ký tài sản phần mềm Kế toán nội bộ và phần mềm Tài chính nội ngành

74 5.6.4. Giới thiệu chương trình nén và giải nén văn bản tiếng Việt

a. Cửa sổ Form xây dựng bộ mã Huffman:

Hình CIII.VI.4.a – 1 Cửa sổ chức năng xây dựng bộ mã Huffman

Từ cửa sổ ứng dụng, chọn têm tin mẫu sẽ dùng dữ liệu mẫu phân tích tỷ lệ xuất hiện các từ.

Sau khi nhấp chuột vào nút “Đếm từ” hệ thống tiến hành phân thích tệp tin mẫu và xây dựng lên bộ mã Huffman.

Cây nhị phân Huffman và bộ mã Huffman được phần mềm lưu lại để sử dụng cho việc nén/giải nén văn bản tiếng Việt.

75

b. Nén văn bản tiếng Việt

Hình CIII.VI.4.b – 1 Cửa sổ chức năng mã hóa văn bản

Từ tab “Mã hóa”, người dùng nhấp chọn tệp tin cần nén (mã hóa), sau đó nhấp chuột vào nút “Mã hóa dữ liệu” để tiến hành nén văn bản.

Hệ thống sử dụng bộ mã Huffman đã được xây dựng để tiến hành nén văn bản, tệp tin nén được lưu cùng thư mục với tệp tin đầu vào.

76

c. Giải nén văn bản tiếng Việt.

Hình CV.VI.4.c – 1 Cửa sổ chức năng giải mã văn bản

Chọn tệp tin cần giải nén, sau đó nhấp nút “giải mã”, phần mềm sử dụng cây mã Huffman đã được xây dựng để tiến hành duyệt cây và giải mã tệp tin nén.

Sau khi giải nén, tệp tin gốc được lưu cùng thu mục với tệp tin mã hóa (tệp tin đầu vào).

77 KẾT LUẬN

Qua quá trình tìm hiểu, nghiên cứu, học hỏi từ các dự án mã nguồn mở về xây dựng search-engine cũng như các hệ thống kho lưu trữ, thư viện điện tử … cùng với sự hướng dẫn tận tình của giáo viên hướng dẫn, tôi đã hoàn thành luận văn với những kết quả như sau:

Luận văn đã nêu ra được giải pháp kỹ thuật, cài đặt thành công các thuật toán mã hóa và nén văn bản Tiếng việt, lựa chọn công nghệ điện toán đám mây và xây dựng thành công một hệ thống lưu trữ đám mây; Giúp giải quyết các bài toán về lưu trữ, bảo mật, tối ưu dung lượng lưu trữ cũng như tiết kiện kinh phí đầu tư, đáp ứng được nhu cầu tin học hóa tại các cơ quan, đơn vị và cả các doanh nghiệp lớn cũng như vừa và nhỏ.

Kết quả đạt được:

- Nghiên cứu, tìm hiểu cơ chế hoạt động, cách thức lưu trữ và chia sẻ dữ liệu, sử dụng tài nguyên phần cứng cũng như phần mềm trong công nghệ điện toán đám mây trên môi trường ảo hóa.

- Nghiên cứu và cài đặt lại các thuật toán Huffman, Vigenere cho việc mã hóa cũng như nén các văn bản tiếng Việt.

- Hoàn thành cơ bản việc xây dựng thử nghiệm hệ thống kho lưu trữ đám mây. - Hệ thống chạy trên môi trường web và thông qua phần mềm client bằng ngôn ngữ

Java. Hạn chế:

- Chưa đưa vào triển khai thực tế để kiểm tra hiệu năng phần mềm cũng như tính thân thiện với người sử dụng.

- Tốc đỗ sử lý với các văn bản tiếng Việt còn chậm.

- Chưa xây dựng hoàn thiện phần mềm phía client (cho việc mã hóa, nén và upload văn bản lên đám mây lưu trữ) để đáp ứng yêu cầu cài đặt trên các thiết bị di động hay thông qua trình duyệt web

78 TÀI LIỆU THAM KHẢO

- Nén dữ liệu:

o http://vi.wikipedia.org/wiki/N%C3%A9n_d%E1%BB%AF_li%E1%BB%8 7u

- Lý thuyết thông tin:

o http://vi.wikipedia.org/wiki/L%C3%BD_thuy%E1%BA%BFt_th%C3%B4 ng_tin - Claude Shannon: o http://vi.wikipedia.org/wiki/Claude_Shannon o http://vi.wikipedia.org/wiki/M%E1%BA%ADt_m%C3%A3_h%C3%B3a_ kh%C3%B3a_c%C3%B4ng_khai - HDFS: o http://www.ibm.com/developerworks/vn/library/data/2013Q1/dm- 1209hadoopbigdata/ o http://ciren.gov.vn/index.php?option=com_content&view=article&id=677:s -cn-thit-phi-m-nganh-ao-to-trinh-i-hclu-tr-tai-liu-in-t-nhm-ap-ng-nhu-cu-hi- nhp-ca-vit-nam-hin-nay&catid=47:tin-cong-nghe-thong-tin&Itemid=53 o http://kcntt.duytan.edu.vn/Home/ArticleDetail/vn/166/2306/bai-02-luu-tru- va-xu-ly-thao-tac-tren-mo-hinh-dien-toan-dam-may-kien-truc-dien-toan- dam-may o http://foxman.com.vn/vn/mot-so-van-de-an-toan-cho-dien-toan-dam- may_41.html o http://xahoithongtin.com.vn/cac-dich-vu-luu-tru-du-lieu-tren-may-pho- bien-nhat-hien-nay-d22245.html o http://expressmagazine.net/posts/view/2037/gioi-thieu-so-luoc-apache- hadoop

Một phần của tài liệu Xây dựng kho dữ liệu an toàn với mã huffman (Trang 63)

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

(78 trang)