Ứng dụng Dictionary Manager là ứng được xây dựng trên Desktop nhằm hỗtrợ
ho ứng dụng Mobile_Dict trên điện thoại di động. Vì hạn chếcủa thiết bịdi động
ng dụng Mobile_Dict không hỗtrợchức năng chỉnh sửa dữliệu từ điển nên mục
êu của Dictionary Manager là để đáp ứng nhu cầu này. Các chức năng chính của
Ditionary Manager là:
Import dữliệu từ điển trên điện thoại di động sang dữliệu từ điển dùng
trên Desktop.
Thực hiện thao tác dữliệu từ điển trên Desktop: thêm, xoá, sửa từ,
compact dữliệu từ điển.
Export dữliệu từ điển trên Desktop sang dữliệu từ điển trên điện thoại di
S DEMO
145 trang |
Chia sẻ: huong.duong | Lượt xem: 1262 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Đề tài Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
lưu trữ mảng chuỗi, trong đó ta có thể
dễ dàng thêm, cập nhật xóa và truy xuất các phần tử chuỗi trong mảng.
Mảng chuỗi cũng có các dạng: 16 bit, 8 bit và build independent type. Bao gồm
mảng chuỗi không thể chỉnh sửa (non-modifiable) và có thể chỉnh sửa (modifiable).
4.4.1.1 Mảng chuỗi không thể thay đổi
Dạng mảng này gồm các TPtrC (non-modifiable pointer descriptor). Mỗi
pointer descriptor này trỏ đến dữ liệu (chuỗi) của từng phần tử trong mảng.
Hình 4.13 Mảng chuỗi không thể thay đổi
Khi dùng mảng non-modifiable pointer descriptor array, dữ liệu được trỏ đến
nhờ các pointer descriptor TPtrC. Như vậy mảng chỉ cần số vùng nhớ rất nhỏ đủ
chứa các thành phần TPtrC (không có vùng nhớ cấp cho phần dữ liệu). Mặt khác,
khi sử dụng dạng mảng này, phải đảm bảo dữ liệu các thành phần (chuỗi) trong
mảng không được hủy hoặc thay đổi ngoài ý muốn.
Bao gồm các lớp: CPtrC16Array, CPtrC8Array và CPtrCArray
4.4.1.2 Modifiable descriptor array
Thành phần của mảng là con trỏ đến heap descriptor (HBuC*). Khi đưa một
descriptor vào mảng, một heap descriptor khác được cấp phát lấy dữ liệu từ
descriptor muốn đưa vào mảng; và phần tử mới của mảng chính là con trỏ đến heap
descriptor vừa được cấp.
Chương 4 . Kĩ thuật lập trình C++ trên Symbian
48
Hình 4.14 Mảng con trỏ chuỗi
Khi sử dụng dạng mảng chuỗi này, một heap descriptor được cấp cho mỗi phần
tử đưa vào mảng. Điều này làm tăng tổng số vùng nhớ yêu cầu cho mảng. Mặt khác
chuỗi sau khi đưa vào có thể bị hủy hoặc chỉnh sửa mà không ảnh hưởng đến các
phần tử trong mảng.
Cũng như mảng động bình thường, lập trình viên có thể sử dụng mảng chuỗi
với 2 loại vùng nhớ: vùng nhớ cấp phát liên tục (flat array buffer) và vùng nhớ cấp
phát phân đoạn (segmented array buffer)
Bao gồm các lớp cụ thể: CDesC16ArrayFlat, CDesC16ArrayFlat và
CDesCArrayFlat; CDesC16ArraySeg, CDesC16ArraySeg và CDesCArraySeg.
Chương 5 . Các giải pháp chính cho việc xây dựng từ điển trên điện thoại di động Series 60
49
Chương 5 Các giải pháp chính cho việc xây dựng từ
điển trên điện thoại di động Series 60
Trong chương 3 ta đã đề cập đến hai mâu thuẫn là:
Mâu thuẫn giữa khả năng lưu trữ của điện thoại di động và yêu cầu về dữ
liệu của từ điển.
Mâu thuẫn giữa tốc độ xử lý của điện thoại di động và tốc độ xử lý của
ứng dụng.
Đối với mâu thuẫn thứ nhất ta có thể giải quyết bằng cách: hoặc là gia tăng khả
năng lưu trữ của điện thoại di động bằng cách nâng cấp thẻ nhớ hoặc là tổ chức nén
dữ liệu (đồng thời phải cung cấp một cơ chế để có thể giải nén và truy xuất dữ liệu
nhanh). Tuy nhiên việc nâng cấp thẻ nhớ không nằm trong nội dung xây dựng từ
điển cho điện thoại di động.
Đối với mâu thuẫn thứ hai, bộ vi xử lý của điện thoại di động khó có thể nâng
cấp giống như máy tính cá nhân được do đó ta chỉ có thể tìm cách xây dựng cấu
trúc dữ liệu hỗ trợ tìm kiếm nhanh.
Như vậy ứng dụng không những cần tổ chức cấu trúc dữ liệu lưu trữ thích hợp
mà còn phải giải quyết các mâu thuẫn trên thông qua tổ chức nén dữ liệu và tổ chức
cấu trúc dữ liệu hỗ trợ cho việc tìm kiếm nhanh.
5.1 Tổ chức cấu trúc dữ liệu lưu trữ
Mỗi một mục từ trong từ điển cần lưu trữ các trường dữ liệu sau: từ gốc, từ loại,
ý nghĩa của từ. Bảng sau mô tả vắn tắt về các trường dữ liệu này.
STT Trường dữ liệu Ghi chú
1. Từ gốc Có kích thước biến động.
2. Từ loại Mỗi từ có thể thuộc về nhiều từ loại khác nhau:
9 Danh từ
9 Động từ
9 Tính từ
9 Trạng từ
9 Giới từ
9 Các từ loại khác
3. Ý nghĩa (các nghĩa
con của từ)
Có kích thước biến động, bao gồm:
9 Phiên âm quốc tế (nếu có)
9 Các nghĩa khác của từ.
Bảng 5.1 Bảng mô tả các trường dữ liệu
Chương 5 . Các giải pháp chính cho việc xây dựng từ điển trên điện thoại di động Series 60
50
Với các trường dữ liệu như vậy, ta có một số giải pháp tổ chức mục từ như sau:
Tổ chức các mục từ có kích thước bằng nhau.
Tổ chức các mục từ có kích thước biến động.
Ta sẽ đi vào xem xét kỹ hơn những ưu điểm và khuyết điểm của từng giải pháp
và chọn ra một giải pháp thích hợp.
5.1.1 Tổ chức các mục từ có kích thước bằng nhau
Ưu điểm:
Dễ dàng truy xuất ngẫu nhiên đến một mục từ khi biết vị trí của nó.
Khuyết điểm:
Gây lãng phí không gian lưu trữ vì các mục từ có kích thước biến động
nhiều. Nếu chúng ta tổ chức các mục từ cùng một kích thước thì sẽ có rất
nhiều mục từ không dùng hết kích thước đó, điều này dẫn đến bộ nhớ bị
lãng phí. Khuyết điểm này rất nghiêm trọng vì bộ nhớ lưu trữ của điện
thoại di động là rất hạn chế.
Kích thước tập tin dữ liệu khi chỉ có từ gốc của 3 loại từ điển thông dụng: Anh
– Việt (68998 từ), Việt – Anh (91146 từ) và Anh – Anh (121962 từ) được liệt kê
trong bảng sau:
Từ điển Ví dụ về từ có kích thước lớn nhất Kích
thước
Tổng
kích
thước
(KB)
Anh – Việt “ extra-sensory perception” 24 1617
Việt – Anh “không đúng với đặc tính của một ngôn ngữ” 40 3560
Anh – Anh “American Federation of Labor-Congress of
Industrial Organizations”
65 7741
Bảng 5.2 Tổ chức từ điển với cáctừ gốc có kích thước bằng nhau
Trong bảng trên ta phải sử dụng kích thước từ lớn nhất: xét trong điều kiện mỗi
ký tự được biểu diễn bởi 1 byte và kích thước mục từ ở mỗi từ điển khác nhau.
Quy định kích thước đồng nghĩa với việc hạn chế kích thước của mục từ, do đó
có thể không lưu được những mục từ thông dụng có kích thước từ gốc lớn và nghĩa
lớn. Khuyết điểm này cũng không kém phần nghiêm trọng vì làm hạn chế khả năng
lưu trữ của từ điển và cách thức tổ chức có vẻ không tự nhiên.
Chương 5 . Các giải pháp chính cho việc xây dựng từ điển trên điện thoại di động Series 60
51
5.1.2 Tổ chức các mục từ có kích thước biến động
Ưu điểm:
Tránh được sự lãng phí bộ nhớ lưu trữ do đó tối ưu bộ nhớ lưu trữ của
điện thoại di động.
Không hạn chế kích thước của các mục từ, cách thức tổ chức tự nhiên
hơn.
Khuyết điểm:
Do kích thước của các mục từ biến động nên cần phải tốn thêm thông tin
để có thể truy cập đến một mục từ bất kỳ, nói cách khác là chúng ta phải
tổ chức thêm cấu trúc dữ liệu hỗ trợ cho việc tìm kiếm nhanh.
Kích thước tập tin dữ liệu khi chỉ có từ gốc của 3 loại từ điển thông dụng: Anh
– Việt (68998 từ), Việt – Anh (91146 từ) và Anh – Anh (121962 từ) được liệt kê
trong bảng sau:
Từ điển Tổng kích thước (KB) Kích thước từ trung bình (ký tự)
Anh – Việt 610 9
Việt – Anh 1204 13
Anh – Anh 1334 11
Bảng 5.3 Tổ chức từ điển với cáctừ gốc có kích thước không bằng nhau
Trong bảng trên mỗi từ được lưu với kích thước thật và mỗi ký tự được biểu
diễn bởi 1 byte.
Như vậy giải pháp lưu trữ mục từ với kích thước khác nhau đã tiết kiệm được
rất nhiều không gian lưu trữ. (Nhỏ hơn từ 2.5 đến 7 lần).
Rõ ràng việc tổ chức các mục từ có kích thước bằng nhau đã bộc lộ nhiều
khuyết điểm mà một trong những khuyết điểm nghiêm trọng không thể chấp nhận
được đó là gây lãng phí không gian lưu trữ của điện thoại di động. Trong khi đó
việc tổ chức các mục từ có kích thước biến động đã thể hiện ưu điểm vượt trội của
mình là tránh được sự lãng phí không cần thiết đối với không gian lưu trữ . Do đó
dữ liệu của ứng dụng từ điển trong luận văn này sẽ được tổ chức theo cách tổ chức
tối ưu này.
Phần tiếp theo sẽ trình bày cách thức nén dữ liệu để sao cho có được kích thước
dữ liệu tối ưu nhất có thể có.
Chương 5 . Các giải pháp chính cho việc xây dựng từ điển trên điện thoại di động Series 60
52
5.2 Tổ chức nén dữ liệu
Việc tổ chức các mục từ có kích thước biến động vẫn chưa thể thực sự tối ưu
hóa không gian lưu trữ. Kích thước của dữ liệu từ điển vẫn còn lớn so với không
gian lưu trữ của điện thoại di động. Ngoài việc tổ chức các mục từ có kích thước
biến động ta chỉ có thể làm giảm kích thước dữ liệu bằng cách nén dữ liệu để lưu
trữ và khi cần truy xuất thì giải nén dữ liệu. Nhưng việc tổ chức nén và giải nén dữ
liệu khi cần thiết có thể làm giảm tốc độ truy xuất, do đó chúng ta cần phải lựa chọn
phương pháp nén và giải nén sao cho tốc độ truy xuất có thể chấp nhận được. Có
hai chiến lược nén dữ liệu là: nén toàn bộ dữ liệu và nén từng khối dữ liệu. Ta hãy
lần lượt phân tích mặt mạnh, mặt yếu của từng chiến lược nén để chọn ra chiến lược
nén thích hợp cho bài toán xây dựng từ điển trên thiết bị di động.
5.2.1 Nén toàn bộ dữ liệu
Ưu điểm:
Vì dữ liệu được nén toàn bộ nên nếu sử dụng thuật toán nén tốt ta có thể
nén nhỏ tối ưu.
Khuyết điểm:
Khi cần tra cứu một từ dữ liệu phải được giải nén toàn bộ kể cả những
phần không cần thiết. Việc giải nén toàn bộ làm cho ứng dụng chậm và
tốn không gian lưu trữ tạm không cần thiết.
5.2.2 Nén từng khối dữ liệu
Ưu điểm:
Dữ liệu được nén thành từng khối, khi cần truy xuất đển một mục từ nào
ta chỉ cần giải nén khối nén chứa dữ liệu tương ứng với mục từ đó. Nhờ
vậy mà thời gian giải nén và không gian lưu trữ tạm được giảm đáng kể.
Khuyết điểm:
Do dữ liệu được nén theo từng khối nên hiệu quả của việc nén từng khối
sẽ thấp hơn hiệu quả của việc nén toàn bộ.
Chương 5 . Các giải pháp chính cho việc xây dựng từ điển trên điện thoại di động Series 60
53
Như vậy chỉ có chiến lược nén từng khối với khuyết điểm có thể chấp nhận mới
có thể đáp ứng yêu cầu vừa có thể nén được dữ liệu vừa có thể truy xuất ngẫu nhiên
nhanh.
Chiến lược nén từng khối dữ liệu đòi hỏi phải tổ chức một cấu trúc lưu trữ thích
hợp để có thể truy xuất ngẫu nhiên nhanh. Cách thức nén và cấu trúc lưu trữ như thế
được gọi là chuẩn nén. Hiện nay, trên thế giới chuẩn nén Dictzip được sử dụng rộng
rãi nhất cho việc nén dữ liệu từ điển.
5.2.3 Chuẩn nén Dictzip
Chuẩn nén Dictzip được giới thiệu lần đầu tiên vào năm 1996 bởi Rickard
E.Faith, và được phát triển với nguồn mở. Chuẩn nén này có cách thức nén và cấu
trúc lưu trữ lần lượt như sau.
5.2.3.1 Cách thức nén
Dictzip dựa vào chuẩn nén Gzip với mục đích là các chương trình giải nén tập
tin Gzip đều giải nén được tập tin Dictzip. Dictzip khác Gzip ở chỗ một phần thông
tin mở rộng được thêm vào tập tin nén Gzip để lưu thêm thông tin về các khối nén.
Các chương trình giải nén tập tin Gzip sẽ bỏ qua phần thông tin mở rộng này. Các
chương trình đọc tập tin Dictzip sẽ đọc phần thông tin thêm này để có thể truy xuất
ngẫu nhiên trong tập tin.
5.2.3.2 Cấu trúc lưu trữ
Ý tưởng cơ bản của cấu trúc lưu trữ này là dữ liệu gốc sau khi nén sẽ thành các
khối nén có kích thước tối đa là 64 KB. Nghĩa là Dictzip nén các khối khối dữ liệu
(của tập tin ban đầu) không biết trước kích thước il thành các khối dữ liệu nén đã
biết kích thước bl (bl tối đa 64KB). Khối cuối cùng có thể không có cùng kích
thước với các khối trước. Kích thước của từng khối dữ liệu sau khi giải nén được
lưu ở phần thông tin mở rộng thêm vào nói trên. Khi cần truy cập ngẫu nhiên ta dựa
vào vị trí, kích thước cần đọc và thông tin đầu tập tin nén mà lấy ra các khối nén
tương ứng và giải nén chúng.
Chương 5 . Các giải pháp chính cho việc xây dựng từ điển trên điện thoại di động Series 60
54
Hình 5.1 Ý tưởng cấu trúc lưu trữ chuẩn Dictzip
5.2.4 Những khó khăn khi áp dụng Dictzip trên điện thọai di động
Tuy nhiên việc áp dụng chuẩn nén Dictzip cho dữ liệu trên điện thoại di động
gặp phải khó khăn sau:
Hiện tại chưa có bộ thư viện nén Dictzip hoàn chỉnh cho môi trường lập
trình trên điện thoại di động. Hầu hết các bộ thư viện nén này đều là mã
nguồn mở, tính đúng đắn còn hạn chế, thiếu nhiều hàm quan trọng, một
trong những hàm quan trọng là hàm nén các khối khối dữ liệu không biết
trước kích thước thành các khối dữ liệu nén đã biết kích thước.
Việc xây dựng bộ thư viện nén Dictzip hoàn chỉnh trên môi trường lập
trình cho điện thoại di động tốn nhiều thời gian cho phép, đòi hỏi các
thuật toán phức tạp.
Một cách tiếp cận để giải quyết khó khăn trên là xây dựng một chuẩn nén theo
từng khối khác. Chuẩn nén này được xây dựng với các hàm đơn giản hơn và phải
đảm bảo tối ưu được kích thước nén và tốc độ truy xuất ngẫu nhiên phải nhanh.
Chương 5 . Các giải pháp chính cho việc xây dựng từ điển trên điện thoại di động Series 60
55
5.2.5 Chuẩn nén Dictzip#
Chuẩn nén Dictzip# được chúng em đề nghị để giải quyết khó khăn khi áp dụng
Dictzip cho dữ liệu trên điện thoại di động. Chuẩn nén Dictzip# có cách thức nén và
cấu trúc lưu trữ như sau.
5.2.5.1 Cách thức nén
Tùy chọn bộ thư viện nén và giải nén. Trong chương trình ứng dụng của mình,
chúng em sử dụng bộ thư viện mã nguồn mở zlib version 1.1.4.
5.2.5.2 Cấu trúc lưu trữ
Hình 5.2 Ý tưởng cấu trúc lưu trữ chuẩn Dictzip#
Ý tưởng cơ bản của cấu trúc lưu trữ này là dữ liệu gốc được chia thành từng
khối có kích thước tối đa là 64 KB để nén. Kích thước của khối cuối cùng có thể
không bằng với kích thước của các khối trước. Dictzip# nén các khối dữ liệu đã biết
trước kích thước l ( l tối đa là 64KB) thành các khối nén có kích thước ibl (kích
thước các khối nén của chuẩn Dictzip# không biết trước được, kích thước các khối
nén của chuẩn Dictzip là một số cố định tối đa 64KB, đây chính là điểm khác nhau
cơ bản giữa Dictzip# và Dictzip). Kích thước sau nén của từng khối dữ liệu sẽ được
lưu vào thông tin đầu tập tin nén. Khi cần truy cập ngẫu nhiên ta dựa vào vị trí, kích
thước cần đọc và thông tin đầu tập tin nén mà lấy ra các khối nén tương ứng và giải
nén chúng.
Chương 5 . Các giải pháp chính cho việc xây dựng từ điển trên điện thoại di động Series 60
56
5.2.5.3 So sánh tỉ lệ nén giữa Dictzip và Dictzip#
So sánh kích thước tập tin dữ liệu đã nén của 3 loại từ điển thông dụng: Anh –
Việt (68998 từ), Việt – Anh (91146 từ) và Anh – Anh (121962 từ).
Các tập tin dữ liệu nén chuẩn DictZip lấy từ khóa luận “Xây dựng ứng dụng từ
điện trên Pocket PC” của Nguyễn Thiện Chương và Phạm Tuấn Sơn (Th.S Nguyễn
Tấn Trần Minh Khang và Th.S Trần Minh Triết hướng dẫn).
Mỗi bộ dữ liệu DictZip gồm 3 tập tin (1 tập tin nghĩa, 2 tập tin chỉ mục) trong
đó 2 tập tin chỉ mục chưa được nén. Để tiện so sánh, chúng em đã nén 2 tập tin chỉ
mục này theo chuẩn DictZip rồi cộng kích thước của cả 3 tập tin lại. Tỉ lệ % là tỉ lệ
kích thước tập tin nén so với tập tin gốc.
Từ điển Kích thước chưa
nén (KB)
Kích thước tập tin
DiztZip (KB)
Kích thước tập tin
DiztZip# (KB)
Anh – Việt 11505 3994 (34.7%) 4363 (37.9%)
Việt – Anh 5238 1827 (34.9%) 1993 (38.0%)
Anh – Anh 22180 7486 (33.7%) 8121 (36.6%)
Bảng 5.4 So sánh tỉ lệ nén giữa DictZip và Dictzip#
Như vậy có thể thấy chuẩn nén DictZip và DictZip# không có nhiều sự khác
biệt về tỉ lệ nén.
5.2.5.4 So sánh các khối nén trong chuẩn Dictzip#
5.2.5.4.1 Kích thước tập tin sau khi nén
Từ điển 8 KB 16 KB 32 KB 64 KB
Anh – Việt 4616 4363 4168 4029
Việt – Anh 2053 1993 1950 1916
Anh – Anh 8510 8121 7805 7558
Bảng 5.5 Kích thước tập tin sau khi dùng Dictzip# nén
5.2.5.4.2 Tốc độ truy xuất
Từ điển Anh – Việt: (thời gian tính bằng mili giây)
Khối nén Load
từ điển
Chuyển từ list
‘a’ sang ‘d’
Hiển thị nghĩa “a”
lần đầu
8 KB 734 109 2953
16 KB 734 125 2968
32 KB 781 171 2984
64 KB 953 250 3015
Bảng 5.6 Tốc độ truy xuất từ điển Anh-Việt khi sử dụng Dictzip#
Chương 5 . Các giải pháp chính cho việc xây dựng từ điển trên điện thoại di động Series 60
57
Từ điển Việt – Anh: (thời gian tính bằng mili giây)
Khối nén Load
từ điển
Chuyển từ list
‘a’ sang ‘d’
Hiển thị nghĩa “a”
lần đầu
8 KB 703 93 234
16 KB 718 109 250
32 KB 750 156 250
64 KB 953 218 281
Bảng 5.7 Tốc độ truy xuất từ điển Anh-Việt khi sử dụng Dictzip#
5.3 Tổ chức cấu trúc dữ liệu hỗ trợ cho việc tìm kiếm nhanh
Đến thời điểm này, ta đã giải quyết được hai vấn đề cơ bản: vấn đề tổ chức cấu
trúc lưu trữ và vấn đề nén dữ liệu. Ta vẫn còn một vấn đề nữa là tổ chức cấu trúc dữ
liệu hỗ trợ cho việc tìm kiếm nhanh. Một số cấu trúc tập tin hỗ trợ cho việc tìm
kiếm nhanh hiện nay là:
Tập tin tuần tự: tập tin này là một tập các mẫu tin lưu trữ các bản ghi liên
tiếp nhau. Việc tìm kiếm một mẫu tin có giá trị khoá K cho trước được
thực hiện bằng cách so sánh từng khoá của từng mẫu tin trong tập tin.
Tập tin chỉ mục: khi mẫu tin có kích thước lớn để làm tăng thêm hiệu
quả thao tác trên các mẫu tin người ta sử dụng tập tin chỉ mục. Tập tin
chỉ mục là tập tin chứa thông tin về vị trí của một mẫu tin trong một tập
tin khác. Một cách hình thức, có thể xem tập tin chỉ mục là một tập tin
phụ mà mỗi mẫu tin là một tập (K, i), với K là giá trị của khoá và i là địa
chỉ của mẫu tin trong tập tin chính. Ta còn có thể gia tăng tốc độ tìm
kiếm bằng cách xây dựng tập tin chỉ mục có thứ tự để tiến hành tìm kiếm
nhị phân trên tập tin chỉ mục này.
Tập tin băm: được sử dụng để giới hạn phạm vi tìm kiếm khi số lượng
mẫu tin lớn. Thao tác băm chính là thao tác phân loại các khoá có cùng
tính chất nào đó vào chung một cụm.
Ta còn có thể đọc tất cả các mẫu tin chỉ mục rồi phát sinh ra cây tìm
kiếm, sau đó lưu cây này lên một tập tin. Cách này khai thác được ưu
điểm về tốc độ tìm kiếm của các loại cây tìm kiếm nhưng có nhược điểm
Chương 5 . Các giải pháp chính cho việc xây dựng từ điển trên điện thoại di động Series 60
58
là chiếm nhiều bộ nhớ (kể cả bộ nhớ trong lần bộ nhớ phụ) cho việc lưu
trữ cây. Theo thông kê đối với dữ liệu từ điển Anh – Việt gồm 68.998 từ
thì ta cần khoảng 3,4 MB để tổ chức cây trong bộ nhớ.
Qua việc xem xét các cấu trúc tập tin hỗ trợ cho việc tìm kiếm nhanh, ta thấy
kết hợp phương pháp chỉ mục có thứ tự và băm tập tin nghĩa là thích hợp nhất cho
việc tìm kiếm nhanh nhất.
5.3.1 Tổ chức tập tin nghĩa
Như đã trình bày, phần nghĩa của từ sẽ có kích thước biến động. Để phần hiển
thị nghĩa thêm sinh động, ta thêm phần định dạng font chữ và màu sắc. Do đó mỗi
mẫu tin trong tập tin nghĩa sẽ bao gồm:
Phần nghĩa thực sự của từ gồm các nghĩa con. Các nghĩa con này gồm
phiên âm quốc tế (nếu có) và các nghĩa khác của từ.
Các byte định dạng (font chữ và màu sắc) tương ứng với từng nghĩa con.
Như vậy có bao nhiêu nghĩa con sẽ có bấy nhiêu định dạng tương ứng.
Hình 5.3 Tổ chức tập tin nghĩa
Chương 5 . Các giải pháp chính cho việc xây dựng từ điển trên điện thoại di động Series 60
59
5.3.2 Tổ chức tập tin chỉ mục
Trong phần này ta sẽ trình bày cách thức chỉ mục cho các mẫu tin nghĩa trong
tập tin nghĩa. Tập tin chỉ mục của tập tin nghĩa từ điển là một tập các mẫu tin chỉ
mục có khoá là từ gốc của từ, các khoá được sắp theo thứ tự tăng dần của bảng chữ
cái. Ngoài các thông tin về từ, từ loại, các mẫu tin chỉ mục còn phải lưu thêm thông
tin về vị trí bắt đầu và chiều dài mẫu tin nghĩa vì các mẫu tin nghĩa có kích thước
biến động.
5.3.2.1 Các trường dữ liệu trong mẫu tin chỉ mục
STT Trường dữ liệu Kiểu dữ liệu Kích
thước
Ý nghĩa
1. Word Mảng ký tự Biến
động
Từ gốc
2. Attribute Byte 1 byte Tổ hợp các cờ quy định từ
loại của từ:
9 Danh từ
9 Động từ
9 Tính từ
9 Trạng từ
9 Giới từ
9 Các từ loại khác
3. MeaningPosition Số nguyên
không dấu
4 byte Vị trí mẫu tin nghĩa trong
tập tin nghĩa
4. MeaningLength Số nguyên
không dấu
2 byte Kích thước mẫu tin nghĩa
Bảng 5.8 Các trường dữ liệu trong mẫu tin chỉ mục
Hình 5.4 Cấu trúc mẫu tin chỉ mục
Chương 5 . Các giải pháp chính cho việc xây dựng từ điển trên điện thoại di động Series 60
60
Khi tìm một từ, trước hết ta khoanh vùng phạm vi tìm kiếm (thao tác băm) để
lấy ra đoạn buffer rồi phân tích ra thành các mẫu tin chỉ mục sau đó tiến hành tìm
kiếm trên tập các mẫu tin chỉ mục đó. Theo bảng trên ta thấy trường dữ liệu Word
(từ gốc của từ) có kích thước biến động, ta không thể phân tích mẫu tin chỉ mục
bằng cách tạo thêm một tập tin chỉ mục nữa để lưu vị trí và chiều dài của mẫu tin
chỉ mục trên vì biện pháp này không khả thi. Ta chỉ có thể đánh dấu vị trí kết thúc
mỗi mẫu tin chỉ mục bằng một giá trị. Nếu ta chọn giá trị đánh dấu có kích thước là
1 byte thì mỗi từ trong từ điển sẽ được biểu diễn bởi 249 byte ( 256 trừ đi 1 byte
attribute, 4 byte MeaningPostion và 2 byte MeaningLength) thì mỗi từ trong từ
điển có không quá 120 ký tự nếu mỗi ký tự được biểu diễn bằng 2 byte. Việc phân
tích buffer chứa các mẫu tin chỉ mục bây giờ là công việc tìm vị trí kết thúc mỗi
mẫu tin chỉ mục.
Hình 5.5 Các giá trị cần thiết để phân tích mục từ
5.3.3 Tổ chức băm tập tin chỉ mục
Việc băm tập tin chỉ mục là nhằm mục đích thu nhỏ phạm vi tìm kiếm. Tiêu chí
chọn hàm băm trong bài toán xây dựng từ điển được đề nghị theo thứ tự ưu tiên
tăng dần trong bài viết này là:
Sau khi băm, nếu lần lượt gộp các cụm mẫu tin chỉ mục lại thì kết quả
phải là tập tin chỉ mục có thứ tự ban đầu.
Việc tính toán cho hàm băm phải nhanh.
Ít xảy ra đụng độ (giới hạn tốt không gian tìm kiếm).
Các khoá được phân bố đều trong bảng băm.
Chương 5 . Các giải pháp chính cho việc xây dựng từ điển trên điện thoại di động Series 60
61
Do tập tin chỉ mục của ta được tổ chức thành các mẫu tin tăng dần theo bảng
chữ cái nên ta sẽ băm theo các chữ cái đầu của từ. Như vậy theo cách này, hàm băm
của ta có thể đảm bảo được hai tiêu chí đầu tiên đã đề ra. Ta có thể băm một hay
nhiều cấp tương ứng với một hay nhiều ký tự đầu của từ để có thể đáp ứng được hai
tiêu chí còn lại.
Thực nghiệm trên máy điện thoại di động thật (Nokia NGate QD và Nokia
7610) cho thấy khi số mục từ nạp lên listbox có giá trị > 2000 thì ta bắt đầu cảm
nhận được thời gian nạp từ.
Gọi:
N là tổng số cụm.
minS là số mục từ nhỏ nhất trong một cụm.
_S là số mục từ trung bình trong một cụm.
maxS là số mục từ lớn nhất trong một cụm.
maxc là cụm ký tự xuất hiện nhiều nhất.
2000>S là số cụm có số mục từ > 2000.
Size là kích thước bộ nhớ bị chiếm dụng bởi bảng băm tính bằng byte.
Ta lần lượt xem xét các cách thức băm có thể được.
5.3.3.1 Băm cấp một
Các từ có cùng một ký tự đầu tiên sẽ thuộc một cụm. Bảng thống kê sự phân bố
các cụm trong bảng băm của các từ điển như sau:
Từ điển N minS _S maxS maxc 2000>S %1002000 ×>
N
S
Size (byte)
Tin học 56 1 246.39 1405 “s” 0 0 336
Anh – Anh 38 1 3209.53 1325 “s” 19 50 228
Anh – Việt 29 1 2379.24 9406 “s” 17 57 174
Việt – Anh 68 1 1340.38 12813 “c” 14 21 408
Bảng 5.9 Bảng thống kê sự phân bố các cụm trong bảng băm cấp 1
Theo bảng trên ta thấy trung bình phân bố nhỏ nhất và lớn nhất trong một cụm
là 246.39 và 12813. Phạm vi tìm kiếm vẫn còn rất lớn. Hơn nữa số cụm có số mục
từ > 2000 chiếm khoảng 21% đến 57%, đều này sẽ gây cảm giác ứng dụng chạy
chậm, ta cần phải phân hoạch nhỏ hơn nữa.
Chương 5 . Các giải pháp chính cho việc xây dựng từ điển trên điện thoại di động Series 60
62
5.3.3.2 Băm cấp hai
Các từ có cùng hai ký tự đầu tiên sẽ thuộc một cụm. Bảng thống kê sự phân bố
trong bảng băm của các từ điển như sau:
Từ điển N minS _S maxS maxc 2000>S %1002000 ×>
N
S Size (byte)
Tin học 802 1 17.20 506 “co” 0 0 6416
Anh – Anh 608 1 200.60 4186 “ge” 7 1 4864
Anh – Việt 198 1 138.55 2328 “co” 3 2 594
Việt – Anh 1050 1 86.81 7626 “ng” 7 1 8400
Bảng 5.10 Bảng thống kê sự phân bố các cụm trong bảng băm cấp 2
Theo bảng trên ta thấy trung bình phân bố nhỏ nhất và lớn nhất trong một cụm
là 17.20 và 7626. So với băm cấp một, phạm vi tìm kiếm và số cụm có số mục từ >
2000 đã giảm đáng kể. Tuy nhiên vẫn có thể gây cảm giác chậm đối với người sử
dụng khó tính.
5.3.3.3 Băm cấp ba
Các từ có cùng ba ký tự đầu tiên sẽ thuộc một cụm. Bảng thống kê sự phân bố
trong bảng băm của các từ điển như sau
Từ điển N minS _S maxS maxc 2000>S %1002000 ×>
N
S Size (byte)
Tin học 3991 1 3.46 211 “com” 0 0 39910
Anh – Anh 3906 1 31.22 3800 “gen” 1 0.03 39960
Anh – Việt 3211 1 21.49 752 “con” 0 0 32110
Việt – Anh 3755 1 24.27 5984 “ngư” 2 0.05 37550
Bảng 5.11 Bảng thống kê sự phân bố các cụm trong bảng băm cấp 3
Theo bảng trên ta thấy trung bình phân bố nhỏ nhất và lớn nhất trong một cụm
là 3.46 và 5984. So với băm cấp một và hai, phạm vi tìm kiếm và số cụm có số mục
từ > 2000 đã giảm đi rất nhiều. Số lần làm chậm ứng dụng không đáng kể.
5.3.3.4 Băm cấp bốn
Các từ có cùng bốn ký tự đầu tiên sẽ thuộc một cụm. Khi tiến hành băm theo
cách này, tập tin chỉ mục sẽ bị chia quá vụn, kích thước bộ nhớ bị chiếm dụng bởi
bảng băm sẽ gia tăng, điều này không cần thiết vì băm cấp ba đã dung hòa được
kích thước bộ nhớ và thời gian nạp từ.
Chương 5 . Các giải pháp chính cho việc xây dựng từ điển trên điện thoại di động Series 60
63
Từ điển N %1002000 ×>
N
S Size (byte)
Tin học >> 3991 > 39910
Anh – Anh >> 3906 > 39960
Anh – Việt >> 3211 > 32110
Việt – Anh >> 3755 > 37550
Bảng 5.12 Bảng thống kê sự phân bố các cụm trong bảng băm cấp 4
5.3.3.5 Kết luận
Như vậy, việc băm cấp một và cấp hai gây ra cảm giác ứng dụng chạy chậm khi
nạp từ. Việc băm cấp bốn sẽ chia quá vụn tập tin chỉ mục và gia tăng kích thước bộ
nhớ bị chiếm vụng một cách không cần thiết. Ta chỉ có thể băm cấp ba để có thể
dung hoà đượcthời gian nạp t
Các file đính kèm theo tài liệu này:
- CNTT1008.pdf