Chuỗi con chung lớn nhất

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Giải quyết vấn đề nhận dạng tiếng Việt bằng phân tích cú pháp (Trang 45 - 50)

Chuỗi con chung (common substring) là cách mơ hình hố các chuỗi. Tập hợp các chuỗi có thể rất khác nhau do các yếu tố dư thừa hay cụ thể, nhưng phần cô đọng nhất và tổng quát nhất sẽ xuất hiện trong tất cả các chuỗi con. Do vậy, cách đơn giản nhất để mơ hình hố một tập các chuỗi là tìm ra chuỗi con chung của chúng.

Chúng ta đã từng biết đến khái niệm giả thuyết (hypothesis) trong lý thuyết học tự động (machine learning) như là một mơ hình được tổng qt hố từ các ví dụ hay các bộ giá trị cụ thể. Khái niệm chuỗi con chung lớn nhất có gì đó rộng hơn một

chút. Bản thân một chuỗi đã mở rộng hơn một bộ giá trị và có thể dùng để biểu diễn bộ giá trị, do đó khái niệm chuỗi con chung cũng có thể dùng để biểu diễn một giả thuyết theo nghĩa nào đó. Chúng tơi muốn trình bày phần này như một phương pháp mơ hình hố các chuỗi phát âm cũng như các tín hiệu.

2.6.1. Định nghĩa chuỗi con chung lớn nhất

Một chuỗi con chung của hai chuỗi là một chuỗi hình thành từ các ký tự của có mặt trong cả hai chuỗi theo đúng thứ tự. Ví dụ chuỗi "x1yy2zz3tt" và chuỗi "ab1c2de3" có chung chuỗi con "1", "12", "13", "23", "123". Và trong trường hợp này chuỗi con chung lớn nhất là "123" vì nó có độ dài lớn nhất. Vì vậy chúng ta hồn tồn có thể biểu diễn dạng chung của hai chuỗi trên là "*1*2*3*" trong đó các dấu sao thay thế cho một chuỗi bất kỳ kể cả rỗng. Chúng ta gọi hàm tìm chuỗi con chung là ánh xạ từ danh sách các chuỗi tới một chuỗi.

mcs(string s1, string s2) → (string s)

Số chuỗi càng nhiều thì chuỗi con chung càng ngắn. Đây cũng là đặc điểm chung của các mơ hình. Nếu chúng ta tìm đặc điểm chung của càng nhiều đối tượng thì số đặc điểm chung càng ít. Có thể biểu diễn hình thức tính chất này như sau

length(mcs(s1, s2)) ≤ length(mcs(s1, mcs(s2, s3)))

Chuỗi con chung của hai chuỗi giống hệt nhau chính là một trong hai chuỗi. Đây là đặc điểm được dùng để thử nghiệm các triển khai của chuỗi con chung

mcs(a, a) = a

Chuỗi con chung lớn nhất của hai chuỗi đối xứng. Nghĩa là khơng có chuỗi nào có vai trị lớn hơn trong q trình mơ hình hố. Đây cũng là tính chất dùng để kiểm chứng các cài đặt

mcs(a, b) = mcs(b, a)

Chuỗi con chung nên có tính chất kết hợp. Nếu chúng ta thực hiện thủ cơng, có thể tính chất này không đảm bảo do chúng ta chọn những chuỗi con lớn nhất khác nhau khi chúng có cùng độ dài. Nhưng trong cài đặt bằng thủ tục, tính chất kết hợp tồn tại do thủ tục tìm ln chọn chuỗi con chung lớn nhất đầu tiên.

mcs(a, mcs(b, c)) = mcs(mcs(a, b), c) = mcs(a, b, c)

2.6.2. Thuật tốn tìm chuỗi con chung lớn nhất

Để tìm được các mẫu chung, chúng ta cần thuật toán chuỗi con chung. Chuỗi con chung là chuỗi con dài nhất gồm các ký tự có chung của hai chuỗi theo đúng thứ tự từ trái sang phải. Ví dụ chuỗi bcaaa và chuỗi aaabc có chung aaa, hay chuỗi x12y3z và chuỗi a11b22c33 có chung 123. Chúng tơi tìm chuỗi con chung bằng thuật tốn sau

string mcs(string s1, string s2) { sconfgraph conf;

init_graph(conf, s1);

for(i=0; length(s2); i++) for(st ∈ conf)

if( found_char(s2[i], st) ) add_state(st, s2[i], conf);

st = find_longest_state(conf); return create_string(st, conf); }

Bảng 2-27. Thuật toán chuỗi con chung

Thuật toán này hoạt động bằng cách xây dựng chuỗi con cũng như phát triển chuỗi con từ các ký tự của một chuỗi dọc theo chuỗi còn lại. Sơ đồ chuyển hình trạng sẽ lưu giữ thơng tin cho phép ta xác định chuỗi con dài nhất. Ta sẽ duyệt dọc theo trạng thái dài nhất ngược về đầu để xây dựng chuỗi con chung. Dưới đây là ví dụ về thuật tốn chuỗi con chung

Chuỗi con

được duyệt

Đồ thị chuyển

hình trạng

b c a a a (*, aaabc, *) Ban đầu ta có hình trạng (*, aaabc, *) gồm ba thành phần. Phần đầu là con trỏ tới hình trạng sinh ra nó, phần hai là chuỗi còn lại, và phần ba là chuỗi con

c a a a (*, aaabc, *) (0, c, b)

Khi ký tự b được lấy, có một hình trạng duy nhất chứa và cũng chứa chữ b nên một hình trạng mới sinh ra đó là (0, c, b)

(0, c, b) (1, *, bc)

cùng hình trạng (1, *, bc) nên chỉ một hình trạng được thêm vào a a (*, aaabc, *)

(0, c, b) (1, *, bc) (0, aabc, a)

Khi ký tự a được lấy, chỉ có hình trạng ban đầu chứa chữ a nên chúng ta chỉ thêm được một hình trạng (0, aabc, a)

a (*, aaabc, *)

(0, c, b) (1, *, bc) (0, aabc, a) (3, abc, aa)

Khi ký tự a tiếp theo được lấy, có hai hình trạng chứa chữ a nên chúng ta có hai hình trạng mới. Tuy nhiên (*, aaabc, *) sinh (0, aabc, a) đã có, nên chúng ta chỉ thêm được (3, abc, aa)

* (*, aaabc, *) (0, c, b) (1, *, bc) (0, aabc, a) (3, abc, aa) (4, bc, aaa)

Khi ký tự a cuối cùng được lấy, có ba hình trạng chứa chữ a tuy nhiên (*, aaabc, *) sinh (0, aabc, a) đã có và (0, aabc, a) sinh (3, abc, aa) đã có nên chúng ta chỉ thêm (4, bc, aaa)

Dựa vào danh sách hình trạng ta có danh sách các chuỗi con, đó là *, b, bc, a, aa, aaa và tìm thấy aaa là lớn nhất.

Bảng 2-28. Ví dụ về thuật toán chuỗi con chung

Để nhận dạng được mẫu tổng quát trong tập tin, ta cần bỏ qua một số véc tơ thừa và chỉ để lại các véc tơ gần với mẫu. Điều này có thể được thực hiện bằng cách giữ nguyên trạng thái khi gặp một véc tơ khơng mong muốn thay vì chuyển về trạng thái ban đầu như bình thường. Hầu hết các chương trình dịch vẫn dùng chiến lược này để phân tích tiếp tập tin.

2.6.3. Vai trò của chuỗi con chung

Trong thực tế các mẫu phát âm của cùng một đơn vị diễn đạt, từ hay câu, thường rất khác nhau ngay cả khi chúng được ghi âm cách nhau vài giây. Chúng ta có thể kiểm tra điều này bằng một chương trình ghi âm và một chương trình phân tích giọng nói. Do vậy để nhận dạng được các mẫu ghi âm khác nhau của cùng một từ, chúng ta cần tạo ra một mẫu tổng qt hay mơ hình của từ đó. Bằng cách trích chọn các đặc trưng chung nhất của các mẫu ghi âm khác nhau của cùng một từ,

chúng ta sẽ tạo ra một mơ hình cho từ đó. Mơ hình này sau đó được sử dụng để so sánh với các mẫu mới ghi âm để tìm ra từ.

Nói chung chúng ta khơng phải thay đổi trên tầng phân tích cú pháp vì vai trị định hướng và giới hạn của nó khơng ảnh hưởng tới các mẫu mà chỉ ảnh hưởng tới không gian mẫu. Do đó các thủ tục huấn luyện và nhận dạng ở tầng phân tích từ vựng bị tác động.

Để huấn luyện được một bộ nhận dạng mẫu tổng quát, chúng ta cần tạo ra các mẫu tổng quát sau đó thêm vào bộ nhận dạng. Mẫu tổng quát sẽ được tạo ra bằng thuật tốn tìm chuỗi con chung. Vì chúng ta khơng thêm tất cả các mẫu mà chúng ta chỉ thêm vào một mẫu chung nhất do đó số lượng mẫu thêm vào ít hơn và độ dài của mỗi mẫu thêm vào cũng ngắn hơn.

Việc nhận dạng hay khớp mẫu giữa mẫu tổng quát và mẫu cụ thể được thực hiện bằng cách khớp có lựa chọn các ký hiệu giống nhau nhất trong từ điển. Chúng ta thường gặp điều này trong các bộ tìm kiếm từ vựng ví dụ như Google. Khi người dùng đánh sai một từ ví dụ “persiten” chương trình tìm kiếm sẽ hỏi lại người dùng có phải định đánh từ “persistence” hay khơng. Do đó chúng ta có cơ sở thuật toán để thực hiện việc khớp mẫu cụ thể (mẫu thiếu hoặc thừa) với mẫu tổng quát. Và mẫu chuẩn của chúng ta không phải do một ai quy định mà được thống kê và trích chọn trên một lượng lớn các mẫu.

Chương 3

TÍN HIỆU TIẾNG NĨI

Trong phần trước, chúng ta đã xem xét tín hiệu như đầu vào của bài tốn nhận dạng tiếng nói. Trong phần này chúng ta sẽ làm chi tiết ý nghĩa của tín hiệu và các thao tác trên tín hiệu.

Phần tín hiệu sẽ bao gồm các thuật tốn biến đổi các tín hiệu thành một bộ tham số hoặc một quan sát. Đây là phần quan trọng tương đương với phần lý thuyết nhận dạng vì nó đóng một nửa vai trò trong tốc độ cũng như độ chính xác của cả hệ thống huấn luyện và nhận dạng tiếng nói.

Khái niệm tín hiệu (signal) trong tài liệu này đồng nghĩa với tín hiệu tiếng nói (speech signal) hoặc tín hiệu âm thanh (sound signal), có nghĩa tín hiệu là một chiều và tuần tự.

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Giải quyết vấn đề nhận dạng tiếng Việt bằng phân tích cú pháp (Trang 45 - 50)

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

(107 trang)