Để tiện lợi cho người sử dụng, ứng dụng từđiển sẽ hiển thị sẵn danh sách các từ. Nhưng ứng dụng sẽ không nạp toàn bộ các từ có trong từđiển vào danh sách mà chỉ nạp một số từ ( tùy thuộc vào số lượng từ của từng cụm trong bảng băm, thường các từ được nạp lên thuộc 1 đến 3 cụm liên tiếp nhau trong bảng băm) sao cho lắp đầy listbox.
6.4.3 Tùy biến cách thức tra cứu của người sử dụng
Người sử dụng có thể chọn từ cần tra trong danh sách này bằng cách nhấn phím mũi tên lên xuống hoặc có thể gõ từ cần tra, ứng dụng sẽ tựđộng hiển thị danh sách các mục từ chứa từ cần tra và đưa vị trí focus đến từ có liên quan. Khi người dùng sử dụng phím mũi tên lên xuống để chọn từ cần tra thì sẽ tồn tại một thời điểm có vị trí focus nằm ở đầu hoặc cuối danh sách từ được nạp. Lúc này để có thể ấn tiếp phím mũi tên lên xuống ta phải tiếng hành nạp thêm từ vào danh sách hiển thị. Để thực hiện việc nạp tiếp từ ta phải biết được việc nạp tiếp từ bắt đầu từ cụm nào trong bảng băm. Điều này có nghĩa là ta phải lưu được vị trí của cụm bắt đầu nạp (biên dưới) và vị trí của cụm sau khi nạp (biên trên) trong bảng băm. Vị trí của cụm
trong bảng băm được xác định bởi bộ ba (i, j, k) tương ứng với vị trí của ba ký tự đầu trong bảng băm cấp 1, 2 , 3.
Giả sử tại một thời điểm nào đó ta nạp vào listbox hai cụm có các từ bắt đầu bằng “imm” và “imp”.
Hình 6.7 Nạp từ vào listbox
Sau khi nạp các từ vào listbox ta phải lưu lại biên dưới (i1, j1, k1) và biên trên (i2, j2, k2) để sau này khi nạp tiếp từ vào listbox, ta chỉ quan tâm đến nạp bắt đầu từ bộ (i, j, k) nào.
6.5 Kỹ thuật phát âm
6.5.1 Những giới hạn khi xây dựng thư viện phát âm
Căn cứ vào đặc điểm hiện nay của các ngôn ngữ đã biết các nhà ngôn ngữ học phân các ngôn ngữ thành các loại hình sau (phân loại ngôn ngữ theo loại hình):
Ngôn ngữ hòa kết (flexional): loại hình này bao gồm các ngôn ngữ: Đức, Latin, Hy Lạp, Anh, Pháp, Nga, Arập.
Ngôn ngữ chắp dính (agglutinate): loại hình này có hiện tượng cứ nối tiếp thêm một các máy móc, cơ giới vào căn tố nào đó của một hay nhiều phụ tố; mà mỗi phụ tốđó lại chỉ luôn mang lại một ý nghĩa ngữ pháp nhất định. Ví dụ: Thổ Nhĩ Kỳ, Mông Cổ, Nhật Bản, Triều Tiên, …
Ngôn ngữ đơn lập (isolate): còn gọi là ngôn ngữ phi hình thái, không biến hình, đơn tiết, phân tiết, … Loại hình này bao gồm các ngôn ngữ: Việt, Hán, một số nước ở vùng Đông Nam Á, …
Ngôn ngữđa tổng hợp (polysynthetic): còn gọi là ngôn ngữ hỗn nhập hay lập khuôn. Đây là loại mang những đặc điểm của các lọai hình nói trên.
Để nghiên cứu từ vựng của ngôn ngữ người ta đưa ra một bộ môn gọi là từ vựng học (lexicology).
Các loại hình ngôn ngữ và các từ vựng của từng ngôn ngữ rất phức tạp. Do vậy việc nắm được các quy luật của từng bộ từ vựng của từng ngôn ngữ là đều hết sức khó khăn. Việc phân tích một cụm từ để phát âm thì càng phức tạp hơn, liên quan đến lĩnh vực ngôn ngữ học và khoa học máy tính.
Đối với các ngôn ngữ thuộc loại hình đơn lập như tiếng Việt, một số từ điển được xây dựng trên Desktop hiện nay đã giải quyết phần phát âm cho ngôn ngữ thuộc loại hình đơn lập bằng cách thu âm từng tiếng riêng lẻ tạo thành một thư viện âm thanh (tiếng Việt khoảng 10.000 tiếng). Khi đó để phát âm một cụm từ ta sẽ phân tích cụm từ này thành những “tiếng” riêng lẻ rồi dựa vào thư viện âm thanh mà phát âm. Trong ứng dụng của chúng em sẽ sử dụng đến kỹ thuật phát âm này cho tiếng Việt.
Đối với các ngôn ngữ thuộc loại hình hòa kết như tiếng Anh, ta không thể làm giống như cách đã làm đối với tiếng Việt được vì số lượng từ rất lớn (tiếng Anh có khoảng 400.000 tiếng), hơn nữa tùy theo cấu trúc ngữ pháp mà cùng một từ có thể phát âm khác nhau. Ta phải sử dụng cách khác đó là dựa vào các quy tắc có được khi nghiên cứu về tự vựng học. Đây rõ ràng là công việc kết hợp giữa ngôn ngữ học và khoa học máy tính. Để phát âm được tiếng Anh, các từ điển trên Desktop (sử dụng hệ điều hành Microsoft Windows) hiện nay sử dụng bộ SDK Text To Speech
của Microsoft. Với bộ SDK này công việc lập trình phát âm đã trở nên đơn giản hơn rất nhiều. Tuy nhiên đối hệ điều hành Symbian, hiện nay chưa có bộ thư viện nào hỗ trợ phát âm giống như vậy. Chúng em đề nghị một giải pháp là trên máy chỉ lưu âm thanh của những “tiếng” thông dụng (kỹ thuật này được chúng em gọi là Text To Speech Offline), khi chương tình không tìm thấy âm thanh trên máy thì sẽ kết truy cập đến chương trình trên sever (xây dựng với bộ SDK Text To Speech của Microsoft) yêu cầu lấy dữ liệu âm thanh về (kỹ thuật này được chúng em gọi là Text To Speech Online).
6.5.2 Text To Speech Offline
Text To Speech Offline là một thuật ngữđược chúng em đề nghịđể đặt tên cho kỹ thuật phát âm mà dữ liệu âm thanh được lưu trữ ngay tại trên máy chạy chương trình phát âm.
Như đã trình bày ở phần trên, ta sẽ phát âm tiếng Việt bằng cách sử dụng các tập tin âm thanh riêng lẻ. Tiếng Việt có khoảng 10.000 tiếng trong đó có khỏang 8.200 tiếng thông dụng. Bộ thư viện mà chúng em sử dụng có khoảng 6623 tiếng thông dụng. Nhưng việc bộ thư viện này vào điện thoại di động là công việc tốn rất nhiều thời gian (do phải chép từng tập tin) và hao phí nhiều bộ nhớ. Chúng em đưa ra giải pháp là tạo ra một từ điển âm thanh dựa trên bộ thư viện này. Khi đó nội dung của tập tin âm thanh đóng vai trò giống như nghĩa của từ trong từđiển. Như vậy chúng ta vừa tiết kiệm được thời gian chép tập tin vừa tiết kiệm được không gian lưu trữ (vì thực hiện nén từng khối theo chuẩn Dictzip#).
Đối với tiếng Anh chúng em chỉ sử dụng khoảng 4.100 tiếng thông dụng.
Phát âm Tổng số tiếng Số tiếng trong thư
viện Kích th(MB) ước đã nén
Việt Khoảng 10.000 tiếng Khỏang 6623 tiếng 18 Anh Khoảng 400.000 tiếng Khoảng 4100 tiếng 21
Bảng 6.3 Kích thước của bộ thư viện Offline 6.5.3 Text To Speech Online
Kể từ phiên bản phiên bản 7.x, hệđiều hành Symbian đã hỗ trợ giao thức http, điều này có nghĩa là, một ứng dụng trên điện thoại thông minh Symbian Series 60
có thể nhận dữ liệu từ một trang web bất kì thông qua http. Đồng thời hiện nay các nhà cung cấp dịch vụđiện thoại di động ở Việt Nam đã cung cấp chính thức dịch vụ truy cập Internet qua điện thoại di động bằng PGRS. Dựa trên các điều kiện này, chúng em đã thực hiện chức năng phát âm trực tuyến cho từđiển như sau:
Xây dựng một website không có giao diện cho phép phát sinh âm thanh phát âm của một từ tiếng Anh bất kì.
Khi một ứng dụng nào đó (đóng vai trò client) gửi yêu cầu phát âm đến website. Website sẽ phát sinh dữ liệu phát âm có định dạng .wav và gửi về client đã yêu cầu dưới dạng dữ liệu nhị phân.
Khi ứng dụng nhận được toàn bộ dữ liệu sẽ gọi các hàm âm thanh sẵn có để phát nội dung .wav nhận được
Cụ thể, chúng em đã dùng bộ thư viện Microsoft Speech SDK 5.1 để xây dựng website phát âm. Đồng thời cài đặt các lớp client nhận và xử lý dữ liệu download từ website cho ứng dụng từ điển. Kết quả tất cả các từ tiếng Anh của mọi bộ từ điển đều có thể nghe phát âm trực tuyến.
Chương 7 Phân tích thiết kế ứng dụng từ điển
7.1 Giới thiệu
Ứng dụng từ điển Mobile_Dict xây dựng trên điện thoại thông minh Symbian Series 60; cho phép người dùng điện thoại chọn loại từđiển, tra từ và nghe phát âm tiếng Việt, Anh.
7.2 Mô hình Use-Case
7.2.1 Mô hình Use-Case
STT Actor Ý nghĩa
1 User Người sử dụng
Bảng 7.1 Danh sách Actor
STT Actor Ý nghĩa
1 InitApp Khởi động ứng dụng
2 ShowAboutAndHelp Hiển thị About và Help của ứng dụng 3 SelectNewDictonary Chọn một từ điển khác
4 Setting Thiết lập các thông số của ứng dụng 5 Pronounce Phát âm từ đang xem nghĩa
6 LookUpWord Tra từ
7 ViewOtherWord Tra từ khác trong màn hình xem nghĩa của một từ
Bảng 7.2 Danh sách Use-case 7.2.2 Đặc tả các Use-Case chính 7.2.2.1 Use-Case “InitApp” • Tóm tắt Người dùng khởi động chương trình; ứng dụng tìm kiếm các dữ liệu từđiển có trong máy và hiển thị bộ từđiển mặc định. • Dòng sự kiện o Dòng sự kiện chính
Người dùng khởi động chương trình trên điện thoại
Ứng dụng tựđộng tìm kiếm các tập tin dữ liệu từđiển có trong máy Hiển thị bộ từđiển được chọn mặc định
o Dòng sự kiện khác
Ứng dụng không tìm thấy tập tin dữ liệu từđiển nào: hiển thị màn hình About
Ứng dụng không tìm thấy thông tin về từđiển mặc định: hiển thị từ điển đầu tiên tìm được
• Các yêu cầu đặc biệt Không có
• Điều kiện tiên quyết Không có
• Điều kiện kết thúc
Nếu use-case thành công thì màn hình ứng dụng được hiển thị • Điểm mở rộng
Không có
7.2.2.2 Use-Case “SelectNewDictionary”
• Tóm tắt
Người dùng chọn từđiển khác trong các từđiển đã có trong máy. • Dòng sự kiện
o Dòng sự kiện chính
Người dùng chọn một từđiển khác trong số các từđiển (đã có trong điện thoại) để tra từ Ứng dụng nạp dữ liệu từđiển được chọn Hiển thị danh sách từ của từđiển mới o Dòng sự kiện khác Không có • Các yêu cầu đặc biệt Không có • Điều kiện tiên quyết
Có ít nhất hai bộ từđiển được cài vào máy điện thoại • Điều kiện kết thúc Không có • Điểm mở rộng Không có 7.2.2.3 Use-Case “Pronounce” • Tóm tắt
Người dùng nghe phát âm của từđang xem nghĩa. • Dòng sự kiện
o Dòng sự kiện chính
Người dùng chọn chức năng phát âm từ hiện hành
Ứng dụng tìm kiếm dữ liệu âm thanh của từđược chọn trong ngữ liệu tương ứng.
Nếu tìm thấy, ứng dụng phát ra âm thanh tìm được (phát âm của từ được chọn)
Nếu không tìm thấy thực hiện dòng sự kiện phụ “Pronounce Online”
o Dòng sự kiện phụ “Pronounce Online” Người dùng chọn điểm truy cập
Kết nối với website phát âm của ứng dụng yêu cầu phát sinh âm thanh cho từđược chọn.
Nhận dữ liệu âm thanh từ website Phát âm thanh nhận được
o Dòng sự kiện khác
Nếu không tìm thấy âm thanh của từđược yêu cầu và máy không có khả năng kết nối Internet: thông báo không phát âm được
Nếu quá trình giao tiếp với website bị lỗi: thông báo lỗi kết nối • Các yêu cầu đặc biệt
Không có
• Điều kiện tiên quyết
Từđiển đang tra phải có khả năng phát âm (Anh, Việt) Nghĩa của từ cần phát âm phải đang được hiển thị • Điều kiện kết thúc
Nếu use-case thành công thì người dùng nghe được cách phát âm của từđang xem nghĩa
• Điểm mở rộng Không có
7.2.2.4 Use-Case “LookUpWord”
Người dùng nhập từ cần tra và yêu cầu ứng dụng hiển thị nghĩa của từđó. • Dòng sự kiện o Dòng sự kiện chính Người dùng nhập từng ký tự của từ cần tra Dựa vào dữ liệu nhập, ứng dụng tìm và chọn ra từ gần đúng nhất trong danh sách từ.
Khi người dùng tìm thấy từ cần tra thì yêu cầu hiển thị nghĩa. (Lúc này từ cần tra chính là từđang được chọn trong danh sách từ)
Ứng dụng tìm nghĩa của từ trong dữ liệu và hiển thị nghĩa theo định dạng đã qui định
o Dòng sự kiện khác
Người dùng có thể dùng phím mũi tên lên, xuống để chọn trực tiếp từ cần tra trong danh sách từ trước khi yêu cầu hiển thị nghĩa
• Các yêu cầu đặc biệt Không có
• Điều kiện tiên quyết Không có
• Điều kiện kết thúc
Nếu use-case thành công thì người dùng xem được nghĩa của từ cần tra • Điểm mở rộng
Không có
7.2.2.5 Use-Case “ViewOtherWord”
• Tóm tắt
Người dùng yêu cầu hiển thị nghĩa của một từ khác khi đang xem nghĩa một từ nào đó.
• Dòng sự kiện
o Dòng sự kiện chính
Người dùng đang xem nghĩa của một từ thì yêu cầu hiển thị nghĩa của một từ khác có trong phần nghĩa hiện tại
Ứng dụng tìm nghĩa của từ mới được yêu cầu Nếu tìm thấy, hiển thị nghĩa từ mới
o Dòng sự kiện khác
Nếu không tìm thấy nghĩa từ mới: ứng dụng chọn từ gần đúng nhất trong danh sách từ; nhưng không hiển thị nghĩa của từ gần đúng này.
• Các yêu cầu đặc biệt Không có • Điều kiện tiên quyết Đang hiển thị nghĩa một từ nào đó • Điều kiện kết thúc Không có • Điểm mở rộng Không có
7.3 Thiết kế lớp đối tượng
STT Lớp đối tượng Loại Ý nghĩa
1 CMobile_DictApp Control Lớp Application cửa ứng dụng
2 CMobile_DictDocument Control Lớp Document của ứng dụng
3 CMobile_DictAppUi Control Lớp điều khiển chính của ứng dụng
4 CMobile_dict_list_view Boundary Lớp list view hiển thị danh sách, cho phép tra từ
5 CMobile_dict_list_view_container Boundary Lớp chứa các control của list view
6 CMyEikEdwin Boundary Lớp textbox dùng nhập từ cần tra (hỗ trợ nhập tiếng Việt)
7 CMobile_dict_setting_view Boundary Lớp setting view dùng thiết lập các thông số của ứng dụng
8 CAknExSettingListListbox Boundary Lớp listbox chứa các setting trong setting view 9 CAknExSettingItem Boundary Lớp item setting
10 CMobile_dict_text_view Boundary Lớp text view hiển thị nghĩa từ
11 CMobile_dict_text_view_container Boundary Lớp chứa các control của text view
12 CRichControl Boundary Lớp richtextbox hiển thị nghĩa từ (hỗ trợ tiếng Việt và các định dạng hiển thị) 13 CDict_handle Control Lớp xử lý tra từ
14 CDict_index_array Control Lớp xử lý mảng các mục từ được load lên danh sách 15 CDict_hash Control Lớp xử lý bảng băm dữ liệu
từ
16 RDict_hash_letter1 Control Lớp xử lý băm cấp 1 17 RDict_hash_letter2 Control Lớp xử lý băm cấp 2 18 RDict_hash_letter3 Control Lớp xử lý băm cấp 3 19 CWav_handle Control Lớp xử lý phát âm
20 CWav_index_array Control Lớp xử lý mảng các mục âm thanh tìm thấy
21 CWav_hash Control Lớp xử lý bảng băm dữ liệu âm thanh
22 TextToSpeech Control Lớp xử lý biến đổi từ thành dữ liệu phát âm
23 CClientEngine Control Lớp xử lý kết nối với website phát âm bằng giao thức http
24 MClientObserver Interface Lớp giao diện bắt các sự kiện khi kết nối với website 25 MyUtility Control Lớp chứa các công cụ, tiện
ích dùng chung cho ứng dụng
26 CMyZip Control Lớp xử lý nén dữ liệu theo chuẩn DictZip#
27 CZLib Control Lớp xử lý nén dữ liệu theo chuẩn Zip 28 TMyCharCollection Control Lớp xử lý so sánh ký tự theo chuẩn tiếng Việt Bảng 7.3 Danh sách các lớp chính 7.4 Thiết kế xử lý 7.4.1 Danh sách các xử lý chính
STT Xử lý Mô tả Use-Case tương ứng
1 XL1 Khởi động ứng dụng InitApp
2 XL2 Chọn từđiển mới SelectNewDictionany
3 XL3 Tìm kiếm từ LookUpWord
4 XL4 Hiển thị nghĩa từ LookUpWord
5 XL5 Xem nghĩa từ khác trong màn hình nghĩa ViewOtherWord
6 XL6 Nghe phát âm từ Pronounce
Chương 7 . Phân tích thiết kếứng dụng từđiển
7.4.2 Mô tả các xử lý chính
7.4.2.1 XL1 – Khởi động ứng dụng
TH2:
Chương 7 . Phân tích thiết kếứng dụng từđiển
7.4.2.2 XL2 – Chọn từđiển mới
7.4.2.3 XL3 – Tìm kiếm từ
TH1:
Hình 7.6 Sơđồ tuần tự Tìm kiếm từ 1
TH2:
Chương 7 . Phân tích thiết kếứng dụng từđiển
7.4.2.4 XL4 – Hiển thị nghĩa từ