Nhận dạng dựa trên bộ phân tích cú pháp

Một phần của tài liệu Giải quyết vấn đề nhận dạng tiếng Việt bằng phân tích cú pháp (Trang 82)

Mặc dù thuật toán nhận dạng dựa trên bộ phân tích từ vựng hoạt động khá nhanh, nhưng nó sẽ không tốt khi không gian mẫu lớn. Chúng ta có thể dựa trên ngữ cảnh để phân chia không gian mẫu thành các không gian nhỏ hơn, do đó việc tìm kiếm sẽ chỉ dựa trên một phần của từ điển mẫu lớn. Hơn nữa khi nhận dạng được kết quả trước, chúng ta có thể dùng đó làm kết quả nhận dạng sau. Đây chính là điều xảy ra trong đầu óc con người khi nghe ngôn ngữ tự nhiên.

Chúng tôi muốn đưa ra ví dụ tiếng Anh để cho người đọc thấy rõ hơn vì tiếng Việt vốn quá quen thuộc nhưng quá trình nghe tiếng Anh và tiếng Việt đều diễn ra tương tự. Thông thường chúng ta có thể nghe từ trước và đoán từ sau. Ví dụ khi chúng ta nghe thấy từ “she”, chúng ta đoán đằng sau có thể là một từ nào đó như “has” hay “is” hay “looks” nhưng chúng ta không đoán rằng sẽ nghe thấy “have” hay “am” hoặc “blue” hay “green”. Các thông tin như thế được lưu thành mạng lưới các từ trước sau, một dạng đặc biệt của mô hình ngôn ngữ. Khi chưa có từ trước, tức là lúc bắt đầu nghe một câu nói, chúng ta cũng không nghe tất cả các từ mà chúng ta chỉ nghe những từ thường xuất hiện ở đầu câu ví dụ “hello …” hay “what …” hoặc “I …” hay “he …” cũng có thể là “go ..” nhưng chắc chắn chúng ta không nghe “goes…” hoặc “has…” Đôi khi chúng ta nghe câu trước đoán câu sau. Ví dụ như chúng ta nghe thấy “thứ nhất là …” chúng ta sẽ mong đợi “thứ hai là…” Các thông tin này không thể lưu trong sơ đồ chuyển trạng thái tuyến tính vốn chỉ lưu các

thông tin trước sau, mà chúng ta cần sử dụng sơ đồ chuyển trạng thái đẩy xuống (pushdown state transition diagram). Xem trong [12]

Sơ đồ chuyển trạng thái đẩy xuống không khác nhiều so với sơ đồ chuyển trạng thái tuyến tính mà chúng ta gặp ở trên ngoại trừ danh sách các phép rút gọn (reduce) và từ điển mẫu cục bộ (dictionary) được thêm vào mỗi trạng thái. Các phép rút gọn được dùng trong phân tích cú pháp nhằm xác định cấu trúc sau khi biết cấu trúc trước và các từ điển dùng để tìm các từ có thể tại trạng thái. Chúng ta hãy xem sơ đồ chuyển trạng thái đẩy xuống sau

Sơđồ chuyển trạng thái đẩy xuống Văn phạm tương

ứng t o i : t«i n n o o: nã 0 1 0 -> s 2 d d i i : ®i r e e : ra 3 n -> t«i 4 n -> nã 5 s -> n vp 6 c c d : chî c c i i : ch¬i 7 v -> ®i 8 v -> ra 9 vp -> v pl 10 pl -> chî 11 pl -> ch¬i s n t«i vp v ®i ra pl chî ch¬i * s = n vp; + n = tôi | ; vp = v pl; + v = đi | ra; + pl = chơi | chợ; Hình 4-5. Sơđồ chuyển trạng thái đẩy xuống

Thuật toán cải tiến sẽ sử dụng sơ đồ chuyển trạng thái đẩy xuống như trên để nhận dạng. Đầu tiên từ điển cục bộ trong trạng thái ban đầu 0 sẽ được sử dụng để tìm ra các từ trong tập tin âm thanh. Trong trường hợp cụ thể của chúng ta, chúng ta chỉ dự định nghe thấy từ “tôi” và “nó” ở đầu câu. Khi một từ đã được nhận ra bởi bộ phân tích từ vựng sử dụng từ điển cục bộ, từ đó sẽ được đưa vào đồ thị chuyển hình trạng đẩy xuống (pushdown configuration transition graph) và một trạng thái mới sẽ

xuất hiện. Trạng thái mới lại xác định một từ điển cục bộ mới và danh sách các từ kế tiếp mới. Chúng ta có thể mô tả thuật toán nhận dạng dựa trên sơ đồ chuyển trạng thái đẩy xuống như sau

void recognize(speakingfile inf, writingfile outf, pstategraph kbf) { pconfgraph conf;

init_graph(conf, get_first_state(kbf) ); while( ! is_end_of(inf) ) {

sym = get_symbol(inf, current_dictionary(conf) ); shift_symbol(conf, sym);

while( reduceable(conf) ) reduce(conf);

if( has_sentence(conf) ) { print_sentence(outf, conf); reset_network(conf); } }

}

Bảng 4-11. Thuật toán nhận dạng dựa trên phân tích cú pháp

Trong đó thủ tục get_symbol chính là thủ tục nhận dạng ở mức từ vựng hoạt động với từ điển được lấy trong trạng thái cũng là hình trạng hiện tại. Vì vậy thủ tục nhận dạng ở mức cú pháp sẽ sử dụng thủ tục nhận dạng ở mức từ vựng. Nó không có vai trò nhận dạng mà chỉ định hướng và giới hạn quá trình nhận dạng nhằm làm quá trình nhận dạng nhanh hơn và chính xác hơn. Chúng ta xét ví dụ nhận dạng sử dụng thủ tục trên

Tập tin đầu vào Sơđồ chuyển hình trạng Tập tin đầu ra

t o i - - - d d i i - - c c d - - 0

trạng thái ban đầu của bài toán

- - - d d i i - - c c d - - 0 t«i 3

khi đã nhận được từ tôi và đưa vào đồ thị

- - - d d i i - - c c d - -

0 t«i 3

2

n

- - c c d - -

0 t«i 3

2

n ®i 7

từđi được nhận ra và chuyển vào

- - c c d - - 0 t«i 3 2 n ®i 7 6 v có một phép rút gọn 7 thành 6 - - 0 t«i 3 2 n ®i 7 6 v ch¬i 11

từ chơi được nhận ra và chuyển vào

- - 0 t«i 3 2 n ®i 7 6 v ch¬i 11 9 pl 5 vp 1 s có ba phép rút gọn liên tiếp 11 thành 9, 9 thành 5, và 5 thành 1 có cây vì có ký hiệu khởi đầu s do đó kết quả in ra tập tin đầu ra tôi đi chơi

Bảng 4-12. Ví dụ về thuật toán nhận dạng dựa trên phân tích cú pháp

Nhược điểm cơ bản của thuật toán này là câu nói phải đúng cú pháp thì câu nói mới có kết quả và khi huấn luyện chương trình nhận dạng chúng ta bắt buộc phải biên soạn một bộ phân tích cú pháp. Nhưng nói chung nhược điểm này không phải vấn đề lớn với các hệ tương tác. Chúng ta vẫn thường nhận được thông báo “Bad command or filename” mỗi khi chúng ta đánh một lệnh sai cú pháp trong DOS hoặc thông báo “Syntax error” mỗi khi chúng ta đánh sai lệnh trong FoxPro. Trong thực tế, mỗi khi thiết kế một hệ tương tác mới, chắc chắn chúng ta phải biên soạn một bộ văn phạm mới và yêu cầu người dùng phải ra lệnh theo văn phạm này.

Một phần của tài liệu Giải quyết vấn đề nhận dạng tiếng Việt bằng phân tích cú pháp (Trang 82)

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

(107 trang)