Giai đoạn tiền xử lý

Một phần của tài liệu (LUẬN văn THẠC sĩ) hệ thống tìm kiếm thông tin và thuật toán đối sánh đa mẫu trong hệ thống tìm kiếm (Trang 70 - 73)

3.4 Thuật toỏn đối sỏnh nhanh đa mẫu

3.4.2 Giai đoạn tiền xử lý

Trước hết xử lý độ dài của cỏc mẫu, gọi m là độ dài của mẫu mà cú độ dài ngắn nhất trong cỏc mẫu, và ở đõy chỉ xột m ký tự đầu tiờn của cỏc mẫu. Hay núi cỏch khỏc, xử lý trờn cỏc mẫu cú cựng độ dài. Trong trường hợp, nếu một mẫu trong số đú là quỏ ngắn chỉ cú 2 ký tự thỡ mỗi lần duyệt văn bản khụng thể nào được dịch vượt quỏ 2 vị trớ, vỡ thế với cỏc mẫu cú độ dài vốn ngắn thỡ ỏp dụng phương phỏp này khụng cú hiệu quả.

Thay vỡ kiểm tra từng ký tự một trong văn bản, thỡ ở đõy chỳng được xột từng khối cú kớch thước là B. Gọi M là tổng độ dài của cỏc mẫu: IM=k*m và c là số ký tự của tập chữ cỏi trong cỏc mẫu.

Bảng ISHIFT thực hiện cụng việc giống như ở thuật toỏn Boyer and Moore, ngoài ra, cũn quyết định dịch bao nhiờu cũn dựa trờn B ký tự tiếp theo. Chẳng hạn,

70

một chuỗi trong văn bản cú B ký tự khụng cú mặt trong mẫu văn bản nào thỡ dịch đi

m-B+1 ký tự. Gọi X=x1 .. xB là B ký tự trong văn bản mà đang duyệt đến , và X chỉ đến vị trớ i trong bảng SHIFT, khi đú cú hai trường hợp xảy ra:

1. Nếu X khụng xuất hiện như một chuỗi con trong trong mẫu nào trong tập mẫu P thỡ cú thể dịch qua m-B+1 ký tự trong văn bản và SHIFT [i] =

m-B +1

2. Nếu X xuất hiện trong một số mẫu nào đú trường hợp này đi xỏc định vị trớ xuất hiện phải nhất của X trong cỏc mẫu đú. Giả sử X kết thỳc tại vị trớ q trong mẫu

pj , và X khụng xuất hiện tại vị trớ nào lớn hơn (vị trớ sau) trong cỏc mẫu khỏc, khi đú: SHIFT[i]=m-q.

Để tớnh toỏn cỏc giỏ trị của bảng SHIFT, xột riờng mẫu pj =a1a2…am. Mỗi

chuỗi con pj cú kớch thước là B: aj-B+1 .. aj trong bảng SHIFT và tập cỏc giỏ trị

tương ứng, từ giỏ trị bộ nhất m-B+1 (giỏ trị khởi đầu của chỳng) đến giỏ trị lớn nhất cú thể m-j.

Cỏc giỏ trị trong bảng SHIFT là cỏc giỏ trị cú thể dịch xa nhất mà chắc chắn khụng bỏ qua một trường hợp khớp mẫu nào. Thay thế bất kỳ giỏ trị nào trong bảng

SHIFT bằng một giỏ trị nhỏ hơn thỡ khi thực hiện đối sỏnh sẽ mất nhiều thời gian nhưng vẫn đảm bảo an toàn tức là khụng bỏ qua một sự trựng khớp mẫu nào. Vỡ thế, bảng SHIFT cú thể nộn lại gọn hơn, những chuỗi con khỏc nhau cú cựng giỏ trị dịch như nhau thỡ chỉ cần ghi lại một lần.

Nếu giỏ trị dịch lớn hơn 0 thỡ thực hiện duyệt và dịch một cỏch an toàn. Khi thực hiện đối sỏnh chuỗi con đang xột với cỏc mẫu trong tập mẫu P, vấn đề lỳc này là xỏc định mẫu nào được đối sỏnh? để trỏnh trường hợp phải đối sỏnh tất cả cỏc mẫu, ở đõy dựng kỹ thuật băm để chọn ra một số mẫu bộ nhất để đối sỏnh. Bằng cỏch chỉ ra cho B ký tự tương ứng với một số nguyờn, mà được gọi là chỉ mục trong bảng SHIFT. Và sử dụng số nguyờn đú để xõy dựng bảng khỏc, được gọi là HASH. Giỏ trị thứ i trong bảng HASH được viết HASH[i], chứa con trỏ trỏ đến danh sỏch

cỏc mẫu mà B ký tự của nú trỏ đến i.

71

Bảng HASH cú kớch thước khỏ bộ bởi nú chỉ chứa cỏc mẫu, cũn bảng SHIFT chứa tất cả cỏc chuỗi cú độ dài bằng B. Điều này dẫn đến việc sử dụng bộ nhớ kộm hiệu quả, bờn cạnh đú cú thể tỏi sử dụng hàm băm, theo cỏch này thời gian xử lý được rỳt ngắn.

Gọi h là giỏ trị hash của hậu tố so với ký tự hiện đang xột trong văn bản và

giả sử SHIFT[h]=0. Giỏ trị của HASH[i] là con trỏ p, một danh sỏch cỏc con trỏ trỏ đến cỏc mẫu, gọi là pattern_point, được sắp xếp bởi cỏc giỏ trị HASH của B ký tự

cuối của mỗi mẫu. Con trỏ p trỏ đến đầu của danh sỏch cỏc mẫu mà cú giỏ trị hash bằng h. Để tỡm đến cuối danh sỏch này thỡ xuất phỏt từ con trỏ này dũ theo con trỏ cho đến khi nú cú giỏ trị bằng HASH[h+i] (bởi danh sỏch này được sắp xếp theo

cỏc giỏ trị hash).

Chẳng hạn, nếu SHIFT[h]0 thỡ HASH[h] = HASH[h+1]

Văn bản ngụn ngữ tự nhiờn khụng ngẫu nhiờn, trong cỏc văn bản tiếng anh thường cú rất nhiều cỏc hậu tố là “ion”, “ing”. Những hậu tố đú khụng chỉ xuất hiện rất nhiều trong văn bản mà cả trong cỏc mẫu. Chỳng sẽ gõy ra sự xung đột trong bảng băm HASH. Vỡ thế cỏc mẫu cú cựng hậu tố thỡ được xếp cựng cựng mục trong bảng băm HASH. Khi gặp nhiều hậu tố giống nhau trong văn bản thỡ thỡ giỏ trị shift của nú bằng 0 (trong trường hợp nú là hậu tố trong nhiều mẫu) và sẽ phải kiểm tra độc lập tất cả cỏc mẫu cú hậu tố này xem chỳng cú trựng khớp với văn bản. Để việc này được thực hiện nhanh hơn, thực hiện xõy dựng một bảng khỏc gọi là PREFIX.

Bờn cạnh việc xem xột B ký tự cuối trong cỏc mẫu, xem xột B‟ ký tự đầu của

cỏc mẫu và sắp xếp chỳng vào bảng PREFIX. Khi giỏ trị shift bằng 0, chuyển sang

bảng HASH để lấy kết quả quyết định ở đõy, nếu cú sự trựng khớp thỡ kiểm tra trong bảng PREFIX. Bảng HASH khụng chỉ chứa mỗi hậu tố và tất cả cỏc mẫu cú chứa

hậu tố này mà cũn chứa cả tiền tố của chỳng. Cỏc tiền tố tương tự trong văn bản được xử lý bằng cỏch dịch qua m-B‟ ký tự sang trỏi và dựng nú để lọc cỏc mẫu mà chỳng cú hậu tố giống nhau, nhưng phần tiền tố thỡ khỏc nhau.

72

Đõy là phương thức lọc cú hiệu quả bởi chỳng khụng cú quỏ nhiều sự khỏc nhau giữa cỏc mẫu, mà chỳng cú thể cú cựng phần tiền tố hoặc hậu tố.

Một phần của tài liệu (LUẬN văn THẠC sĩ) hệ thống tìm kiếm thông tin và thuật toán đối sánh đa mẫu trong hệ thống tìm kiếm (Trang 70 - 73)

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

(81 trang)