Giai đoạn tiền xử lý và tìm mẫu của HCWM

Một phần của tài liệu Một họ thuật toán sánh mẫu Wu-Manber và thực nghiệm (Trang 33)

HCWM có hai giai đoạn, tiền xử lý và tìm kiếm các mẫu.

1) Giai đon tin x lý bao gm các công đon sau đây.

(1) Chia tất cả các mẫu thành bộ bốn mẫu "PS1-PS4".

(2) Xác định kích thước của cửa sổđối sánh cho "PS4".

(3) Thiết lập bảng HASH "HASH1-HASH4" cho mỗi mẫu.

(4) Thiết lập bảng SHIFT "SHIFT3", "SHIFT4" cho "PS3", "PS4".

(5) Thiết lập bảng PREFIX "PREFIX4" cho "PS4".

2) Giai đon tìm mu HCWM có thể tìm kiếm các mẫu như bộ mẫu "PS1-PS4" đồng thời. Đối với mỗi bộ mẫu, quá trình sánh mẫu khác nhau. a) Tìm kiếm "PS4", quá trình sánh mẫu của "PS4" giống như WM. b) Tìm kiếm "PS3", kích thước của cửa sổđối sánh là “m = 3", độ dài của khối ký tự " B = 2 ".

(1) Xác định cửa sổ đối sánh ở đầu văn bản "T". Con trỏ văn bản "Tp" trỏ đến hậu tố của cửa sổđối sánh.

(2) Nếu Tp>Tend, kết thúc việc tìm kiếm "PS3". Hoặc nếu không, chuyển tới bước (3).

(3) Tính toán giá trị băm "sh" các hậu tố của các ký tự văn bản bên trong cửa sổ đối sánh và tra cứu "SHIFT3", nếu "SHIFT3[sh]>0", Tp=Tp+ SHIFT3[sh], quay lại bước (2). Hoặc nếu không, chuyển tới bước (4).

(4) Tính toán giá trị băm "h" của các ký tự văn bản bên trong cửa sổ đối sánh, tra cứu "HASH3", nếu "HASH3[h]= null", mẫu phù hợp, ghi lại kết quả. Tp=Tp + 1, chuyển tới bước (2).

c) Tìm kiếm "PS2", kích thước của cửa sổ đối sánh là "m = 2", độ dài của khối ký tự "B = 2".

(1) Xác định cửa sổ đối sánh ở đầu văn bản "T". Con trỏ văn bản "Tp" trỏ đến hậu tố của cửa sổđối sánh.

(2) Nếu Tp>Tend kết thúc việc tìm kiếm cho "PS2". Hoặc nếu không, chuyển tới bước (3).

(3) Tính toán giá trị băm "h" của các ký tự văn bản bên trong cửa sổ đối sánh, tra cứu "HASH2", nếu "HASH2[h]=null", mẫu phù hợp, ghi lại kết quả. Tp=Tp + 1, chuyển tới bước (2). d) Tìm kiếm "PS1" Tìm kiếm "PS1", kích thước của cửa sổđối sánh là "m=1", độ dài của ký tự khối "B=1". Quá trình này giống như "PS2". 2.3.3. Ví d Giả sử chúng ta có dữ liệu sau đây.

Văn bản "T" = "The mild teacher always told her students to obey the

rules of school."

Mẫu, "P" = {"mild ", "tea", "told", "Micky", "ld", "tu "," t "," m "}

1) Tin x

(1) Phân loại các mẫu. "PS1" = {" t "," m "}, " PS2 "= {" ld "," tu "}, "PS3"= {" tea "}, " PS4 "= {" mild ", " told ", "Micky"}

(2) Xác định kích thước của cửa sổđối sánh cho "PS4", đó là "m = 4".

(3) Thiết lập bảng HASH, xem hình 1. (4) Thiết lập bảng SHIFT, xem hình 2. (5) Thiết lập bảng PREFIX, xem hình 3.

null

hash(m) m null

null hash(tea) tea

hash(t) t null

null

(a) HASH 1 (c) HASH 3

null null

hash(ld) ld hash(ck) micky null

null null

hash(tu) tu hash(ld) mild told null

null null

(b) HASH 2 (d) HASH 4

2) Tìm kiếm mu

(1) Tìm kiếm "PS4"

Kích thước của cửa sổđối sánh là "4" và được đặt vào đầu của văn bản.

The mild teacher always told her student to obey the rules of school

Ký tự hậu tố bên trong cửa sổ đối sánh là "e". Tra cứu "SHIFT4". Khi không có ký tự nào xuất hiện trong bất kỳ mẫu nào trong "PS4", khoảng cách dịch chuyển là "3".

The mild teacher always told her students to obey the rules of school

Sử dụng giá trị băm của "il" tra cứu "SHIFT4", dịch chuyển cửa sổ đối sánh bên phải 1 ký tự.

The mild teacher always told her students to obey the rules of school

Sử dụng giá trị băm của "ld" tra cứu "SHIFT4", khoảng cách dịch chuyển là "0". Điều đó có nghĩa là có thể có 1 mẫu phù hợp ở đây. Tra bảng "HASH4" với hash(ld), lấy các mục của danh sách liên kết, HASH4[hash(ld)]. Tính toán

giá trị băm của tiền tố bên trong cửa sổđối sánh hiện tại, hash(mi). Xem xét toàn

bộ danh sách liên kết, tính toán giá trị băm các tiền tố của mỗi mẫu trong danh sách, so sánh giá trị với hash(mi), nếu chúng bằng nhau, có nhiều mẫu phù hợp hơn nữa. Hoặc nếu không, tiếp tục cho đến cuối danh sách. Trong ví dụ này, mẫu "mild" là mẫu phù hợp. Dịch chuyển cửa sổ bên phải "1" ký tự.

te ea … up pe yp ti il ll tr ri

1 0 2 2 1 0 1 0 2 1 3

(a) SHIFT 3 (b) SHIFT 4

Hình 2: bảng SHIFT null

hash(mi) micky mill null

null

hash(to) told null

null

The mild teacher always told her students to obey the rules of school The mild teacher always told her students to obey the rules of school The mild teacher always told her students to obey the rules of school The mild teacher always told her students to obey the rules of school The mild teacher always told her students to obey the rules of school

Tương tự như vậy, mẫu "told" cũng là 1 mẫu phù hợp. Khi cửa sổ đối sánh đi đến "scho", khoảng cách dịch chuyển là "3", thì cửa sổ đối sánh đã đến

đoạn cuối cùng của văn bản, kết thúc việc tìm kiếm. (2) Tìm kiếm "PS3"

Kích thước của cửa sổđối sánh là "3" và cửa sổđối sánh nằm ởđầu văn bản.

The mild teacher always told her student to obey the rules of school The mild teacher always told her student to obey the rules of school

Tương tự như vậy, tra bảng "SHIFT3", dịch chuyển cửa sổ đối sánh bên phải, bây giờ nó nằm ở "tea". Tính toán giá trị băm của các ký tự bên trong cửa sổ đối sánh, ta nhận được hash(tea). Tra bảng "HASH3" và

"HASH3[hash(tea)]" là không null. Có nghĩa là có mẫu phù hợp. Dịch chuyển cửa sổ bên phải "1" ký tự và tiếp tục tìm kiếm cho đến khi kết thúc văn bản.

(3) Tìm kiếm "PS2"

Tìm kiếm văn bản từđầu. Kích thước của cửa sổđối sánh là "2". Khoảng cách dịch chuyển luôn là "1". Tính toán giá trị băm của các ký tự văn bản bên trong cửa sổđối sánh và tra bảng "HASH2". Nếu giá trị bảng không phải là null, ta tìm thấy mẫu phù hợp. Tiếp tục tìm kiếm cho đến khi kết thúc văn bản.

(4) Tìm kiếm "PS1". Tương tự như "PS2".

Thuật toán WM đồng thời cao HCWM tiến hành chia tất cả các mẫu thành nhiều bộ mẫu khác nhau theo chiều dài của chúng và xử lý các bộ mẫu tương ứng, có tác động tích cực đến hiệu suất mẫu ngắn. Ngoài ra, cấu trúc dữ

liệu độc lập được sử dụng cho các bộ mẫu khác nhau tạo ra sự tương tranh cao, tăng cường tốc độ sánh mẫu của HCWM rất nhiều. Baojun Zhang và cộng sựđã chứng tỏ bằng thử nghiệm rằng HCWM cho hiệu suất cao hơn nhiều so với WM

2.4. Thut toán WM s dng bng tin t

Đồng thời với thuật toán HCWM, Baojun Zhang và cộng sự, 2009 [ZCP09] đã đề xuất thêm một phiên bản cải tiến thuật toán WM dựa trên cơ chế

sử dụng bảng lọc mẫu tiền tốđể tăng tốc độ hoạt động của thuật toán; phiên bản này được gọi là thuật toán WM sử dụng bảng tiền tố (Address Filtering Based WM: AFWM).

2.4.1. Ci tiến ca thut toán

Trong WM, khi danh sách liên kết được tìm thấy qua bảng HASH, các con trỏ địa chỉ của mẫu trong danh sách liên kết phải thỏa mãn

HASH[hash(sbc)] p<HASH[hash(sbc) +1].

Cải tiến trong thuật toán AFWM là ở chỗ sử dụng giá trị hash của tiền tố

và một danh sách liên kết tiền tốđể tra tìm trong bảng PREFIX của WM. Trong danh sách liên kết tiền tố, tất cả các mẫu có cùng tiền tố sẽ được sắp xếp tăng dần theo con trỏđịa chỉ của mẫu. Vì vậy, chỉ cần so sánh những mẫu có con trỏ địa chỉ xác định trong phạm vi [HASH[hash(sbc), HASH[hash(sbc)+1]. Khi các

mẫu trong danh sách liên kết tiền tốđược sắp xếp tăng dần theo địa chỉ con trỏ, thì khi địa chỉ con trỏ ≥ HASH[hash(sbc) +1], quá trình tìm kiếm được hoàn thành ngay lập tức.

Cải tiến này có hai lợi thế. Đầu tiên, không cần phải tính toán giá trị băm của các tiền tố cho các mẫu trong danh sách liên kết hậu tố. Thứ hai, không cần phải xem xét toàn bộ danh sách liên kết tiền tố.

2.4.2. Giai đon tin x lý và tìm mu trong AFWM

AFWM có hai giai đoạn, tiền xử lý và tìm kiếm mẫu.

a) Quá trình tin x

Giai đoạn tiền xử lý bao gồm các công đoạn sau. (1) Thiết lập bảng HASH.

(2) Thiết lập bảng SHIFT.

(3) Thiết lập bảng PREFIX. Các mẫu trong danh sách liên kết được sắp xếp tăng dần theo con trỏđịa chỉ .

b) Quá trình tìm mu

Giả sử kích thước của cửa sổđối sánh là "m", độ dài của khối ký tự là "B = 2".

(1) Xác định vị trí cửa sổ so sánh ở đầu văn bản "T". Trỏ con trỏ "Tp" vào hậu tố của cửa sổđối sánh.

(3) Tính toán giá trị băm "sh" các hậu tố của các ký tự văn bản bên trong cửa sổđối sánh và tra bảng "SHIFT", nếu "SHIFT[sh]>0", Tp= Tp + SHIFT[sh],

quay trở lại bước (2). Nếu không, chuyển tới bước (4) .

(4) Tra bảng “HASH” với giá trị băm “sh”, tìm danh sách liên kết các mẫu có cùng hậu tố lại với nhau. Các con trỏ địa chỉ của những mẫu này thỏa mãn

điều kiện HASH[sh] p< HASH[sh+1].

(5) Tính toán giá trị băm“ph” các tiền tố của các ký tự văn bản bên trong cửa sổ so sánh và tra bảng “PREFIX”, tìm danh sách liên kết tiền tố, bắt đầu xem xét từ đầu danh sách, nếu con trỏ địa chỉ của mẫu đặt trong phạm vi

([HASH[sh],HASH[sh+1]), thì dừng lại, hoặc nếu không, chuyển đến con trỏ kế

tiếp, tiếp tục như vậy cho đến khi con trỏ ≥ HASH[sh +1]. Trong quá trình sánh mẫu, nếu xuất hiện các mẫu phù hợp, ghi lại kết quả. Tp=Tp+1, chuyển tới bước (2).

2.4.3.Ví d

Giả sử kích thước của khối ký tự là B = 2 và ta có cặp dữ liệu như sau: Văn bản " T" = " We still use this machine though it is obsolete. " Mẫu "P " = {“still”, “student”, “trill”, “stupe”}

a) Tin x

(1) Xác định kích thước của cửa sổđối sánh là "m = 5 " . (2) Thiết lập bảng HASH, xem hình 4.

(3) Thiết lập bảng SHIFT, xem hình 5. (4) Thiết lập bảng PREFIX, xem hình 6.

… hash(dd) P hash(de) P student P+1 hash(df) P+1 P student … P+1 still hash(lk) P+1

P+2 trill hash(ll) P+1 still P+2 trill P+3

P+3 stupe hash(lm) P+3

P+4 stype …

hash(pd) P+3

hash(pe) P+3 stupe P+4 stype P+5

hash(pf) P+5 (a) cấu trúc lưu trữ mẫu (b) HASH Hình 4: Cấu trúc lưu trữ mẫu và bảng HASH st tu ud de up pe yp ti il ll tr ri … 3 2 1 0 1 0 1 2 1 0 3 2 4 Hình 5: bảng SHIFT null

hash(st) P student P+1 still P+3 stupe P+4 stype null null

hash(tr) P+2 trill null null

b) Tìm mu

Đầu tiên, cửa sổ so sánh nằm ởđầu văn bản.

We still use this machine though it is obsolete.

Ký tự hậu tố bên trong cửa sổđối sánh là "st". Tra bảng "SHIFT", khoảng cách dịch chuyển là "3".

We still use this machine though it is obsolete.

Sử dụng giá trị băm "ll" tra bảng "SHIFT", khoảng cách dịch chuyển là "0". Điều đó có nghĩa là vị trí hiện tại của cửa sổ đối sánh là một cổng vào so sánh. Tra bảng "HASH" với hash(ll), ta nhận được danh sách liên kết hậu tố, HASH[hash(ll)] (hình 4). Dãy con trỏ địa chỉ của danh sách liên kết hậu tố là [P+1, P+3]. Sử dụng các giá trị băm của tiền tố trong cửa sổ so sánh hiện tại “st”

để tra bảng "PREFIX", lấy danh sách liên kết tiền tố, PREFIX[hash(st)] (hình

6). Bây giờ ta sẽ so sánh các con trỏđịa chỉ .

Trong danh sách liên kết tiền tố, mẫu đầu tiên là "student". Con trỏđịa chỉ

của nó là "P". Bởi vì "P" không nằm trong phạm vi [P+1, P+3], không cần phải so sánh. Tiếp tục chuyển tới mẫu kế tiếp. Mẫu thứ hai là "still". Con trỏ địa chỉ

của nó là "P +1" nằm trong phạm vi địa chỉ [P+1, P+3], quá trình sánh mẫu diễn ra và ta tìm thấy mẫu phù hợp. Tiếp tục với mẫu tiếp theo. Mẫu thứ ba "stupe".

Con trỏ địa chỉ của nó là "P+3" nằm ngoài phạm vi [P+1, P+3], kết thúc tìm kiếm.

Ta dịch chuyển cửa sổ so sánh, và tiếp tục các thao tác như trên cho đến khi kết thúc văn bản.

Từ ví dụ trên, ta thấy rằng khi tìm kiếm các danh sách liên kết tiền tố, AFWM tránh việc tính toán băm và xem xét toàn bộ danh sách.

Theo Baojun Zhang và cộng sự, AFWM khắc phục một số hạn chế còn tồn tại trong WM, chẳng hạn như thông tin dư thừa và nhiều phép tính toán, tránh việc xuyên qua danh sách, đề xuất lọc địa chỉ dựa trên thuật toán WM. Bằng phân tích hiệu suất thông qua kết quả thử nghiệm, các tác giả đã minh chứng rằng AFWM tốt hơn so với WM .

CHƯƠNG 3: THC NGHIM

3.1. Gii thiu v agrep

AGREP là một công cụ mạnh để nhanh chóng tìm kiếm một tập tin hoặc nhiều tập tin cho một chuỗi hoặc biểu thức chính quy, với khả năng kết hợp gần

đúng và có thể xác định hồ sơ người dùng. Agrep được Udi Manber và Sun Wu phát triển trong giai đoạn 1989-1991 [WM92] và sau đó được nhiều người khác cùng tham gia nâng cấp. AGREP tương tự như egrep (hoc grep hoc fgrep),

nhưng nó tổng quát hơn và thường nhanh hơn. Nó cũng hỗ trợ nhiều loại truy vấn, bộ mẫu, và biểu thức thông thường nói chung.

Như đã được giới thiệu, tìm kiếm một mẫu trong văn bản là một hoạt

động phổ biến trong các ứng dụng từ soạn thảo văn bản đến tìm kiếm cơ sở dữ

liệu cho các ứng dụng sinh học phân tử. Trong nhiều trường hợp mẫu có thể

xuất hiện hoặc không xuất hiện trong văn bản. Sai sót trong văn bản hoặc trong truy vấn có thể do lỗi chính tả hoặc từ những thực nghiệm sai lầm (ví dụ như khi văn bản là một chuỗi DNA). Việc sử dụng sánh mẫu xấp xỉ hạn chếđược một số

lỗi. Hầu hết các trình soạn thảo văn bản và các chương trình tìm kiếm không hỗ

trợ tìm kiếm với các lỗi do sự phức tạp liên quan đến việc thực hiện nó. Agrep dựa trên thuật toán hiệu quả và linh hoạt là sánh mẫu xấp xỉ.

So mẫu xấp xỉ cho phép tìm kiếm những thông tin “gần giống”, trong một số trường hợp các mẫu hoặc văn bản không chính xác. Ta không thể nhớ

chính tả chính xác của một tên mà ta đang tìm kiếm, tên có thể bị sai chính tả

trong văn bản, văn bản có thể tương ứng với một chuỗi các số nhất định và ta không có một mẫu chính xác, các văn bản có thể là một chuỗi phân tử DNA và ta đang tìm kiếm các mẫu gần đúng ...Vấn đề tìm kiếm xấp xỉđặt ra trong nhiều

ứng dụng khoa học kĩ thuật như: nhận dạng chữ viết, nhận dạng ảnh, đồ thị, so sánh xấp xỉ trong các xâu nén có độ dài không cố định, xác định cấu trúc con chung 3 chiều trong phân tử dược phẩm và protein, khám phá sự biến đổi trong chuỗi ADN,....và đặc biệt phổ biến trong các hệ thống trích rút văn bản.

Agrep không chỉ hỗ trợ một số lớn các tùy chọn, mà còn rất hiệu quả. Ví dụ, việc tìm kiếm tất cả các lần xuất hiện của Homogenos cho phép hai lỗi trong một 1 MB văn bản mất khoảng 0,2 giây trên một SUN SparcStation H. Sánh mẫu càng chính xác thì thời gian thực hiện càng nhanh.

3.2. Các thut toán s dng trong agrep

Agrep sử dụng một số thuật toán khác nhau để tối ưu hóa hiệu suất cho các trường hợp khác nhau. Đối với truy vấn đơn giản chính xác ta sử dụng một biến thể của thuật toán Boyer - Moore. Đối với các mẫu đơn giản với các lỗi, chúng tôi sử dụng một chương trình phân vùng, với chương trình Boyer -Moore.

Đối với các mẫu phức tạp hơn, ví dụ các mẫu với chi phí không đồng đều chỉnh sửa khác nhau, đa mẫu, biểu thức thông thường tùy ý, ta sử dụng thuật toán mới hoàn toàn.

3.2.1. Thut toán WM trong AGREP

Trong phần mềm Agrep, ưu điểm chính của chương trình này là các thuật toán sánh mẫu chính xác có thểđược điều chỉnh để hỗ trợ nó. Ta minh họa cho ý tưởng này với một ví dụ như sau.

Một phần của tài liệu Một họ thuật toán sánh mẫu Wu-Manber và thực nghiệm (Trang 33)