Trong quá trình triển khai cũng như mơ hình hố bài tốn, chúng tơi sử dụng khái niệm từ điển như một ánh xạ giữa tập các ký hiệu vào và tập ký hiệu ra. Tuy nhiên ánh xạ này được lưu trữ mà khơng phải tính tốn. Thơng thường có thể có nhiều hơn một ký hiệu vào tương ứng với cùng một ký hiệu đầu ra, ví dụ hai mơ hình khác nhau của cùng một từ tương ứng với từ đó, nhưng dứt khốt khơng thể có một ký hiệu đầu vào tương ứng với hai từ khác nhau.
2.1.1. Định nghĩa hình thức từ điển mẫu
Thực chất từ điển là một ánh xạ từ tập ký hiệu đầu vào tới tập ký hiệu đầu ra, nhưng ánh xạ này có ba tính chất đặc trưng là rời rạc, hữu hạn, và được lưu trữ. Rời rạc vì các mẫu trong từ điển thường được trích ra một cách ngẫu nhiên trong khơng gian mẫu liên tục. Hữu hạn vì số phần tử trong từ điển là một con số hữu hạn khơng thể tính trên tồn trục số như các ánh xạ thông thường. Và được lưu trữ vì nói
chung khơng có quy tắc tính tốn nào giữa một mẫu với một ký hiệu ra (ví dụ một véc tơ tiếng nói và một từ tiếng Việt) mà chúng ta phải lưu trữ.
Tất nhiên mơ hình tốn học gần nhất của từ điển mẫu trong trường hợp này là quan hệ (relation) nhưng quan hệ lại là khái niệm quá rộng so với khái niệm ánh xạ, cho nên chúng tôi định nghĩa từ điển như sau
D = <Π, Σ, δ>
Π là một tập các mẫu, nghĩa là Π = { p1, p2, .., pk} Σ là một tập các ký hiệu, nghĩa là Σ = { s1, s2, .., sn } δ là ánh xạ từ Π vào Σ, nghĩa là δ(pi) = sj
Bảng 2-1. Định nghĩa từ điển mẫu
Dưới đây chúng tơi trình bày một ví dụ rất gần với triển khai của chúng tơi về từ điển. Trong ví dụ này mỗi mẫu được đặc trưng bởi ba con số và mỗi từ là một từ đơn trong tiếng Việt.
D = <Π, Σ, δ>
Π = { (1, 2, 3) , (1, 3, 3), (3, 2, 1), (4, 4, 2) } Σ = { tơi, nó, họ}
δ(1, 2, 3) = tơi, δ(1, 3, 3) = tơi, δ(3, 2, 1) = nó, δ(4, 4, 2) = họ
Bảng 2-2. Ví dụ về từ điển mẫu
Có lẽ cách biểu diễn này khơng đủ cơ đọng và hơi khó nhìn. Vì vậy trong q trình gỡ rối, chúng tôi thường sử dụng biểu diễn đơn giản là danh sách mẫu và theo sau là từ của mẫu đó
1, 2, 3 : tơi 1, 3, 3: tơi 3, 2, 1: nó 4, 4, 2: họ
2.1.2. Triển khai từ điển mẫu
Thơng thường từ điển được triển khai thành hai bảng. Một bảng chính lưu trữ các mẫu hay nguồn của từ điển. Mỗi phần tử trong bảng chính sẽ chứa một con trỏ tham chiếu tới bảng phụ. Bảng phụ thường chứa ký hiệu đầu ra được dùng làm kết quả cho quá trình nhận dạng hay nó chính là đích của từ điển. Ví dụ như một từ điển gồm tập hợp các mẫu, mỗi mẫu có một con trỏ tới một từ tương ứng, sẽ được định nghĩa như sau
struct dictionary_s { longnat_t m_patt_num; pattern_s **m_patt; longnat_t m_word_num; word_s **m_word; };
Bảng 2-4. Định nghĩa triển khai của từ điển mẫu
Mỗi một mẫu thường được coi như một véc tơ có nhiều thành phần (component) và trường quan trọng khơng thể thiếu được (khi nó là bộ phần của từ điển) là con trỏ tới một từ. Trong triển khai, chúng tôi dùng trường định danh của từ thay cho con trỏ tới từ trong khi mẫu đang được đọc lên. Sau khi hoàn tất việc đọc trường này khơng cịn ý nghĩa nữa
struct pattern_s {
longnat_t m_comp_num; real_t *m_comp;
union { word_t *m_word; longnat_t m_word_id; }; };
Một từ có thể hiểu đơn giản là một chuỗi ký tự. Nhưng gắn trong một từ điển với tư cách là một vật được tham chiếu đến, mỗi từ cần phải có một khố chính. Do đó định nghĩa từ như sau
struct word_s {
longnat_t m_id; string_t m_name; };
Bảng 2-6. Định nghĩa từ trong từ điển