0
Tải bản đầy đủ (.pdf) (76 trang)

Otomat mờ so mẫu

Một phần của tài liệu LUẬN VĂN:TÌM KIẾM MỜ VÀ ỨNG DỤNG TÌM KIẾM THÔNG TIN TRONG CÁC VĂN BẢN NÉN POTX (Trang 44 -76 )

Định nghĩa 2.3. Cho P là xâu mẫu độ dài m trên bảng chữ A. Ap là bảng các ký tự xuất hiện trong P. Otomat mờ so mẫu là A(P) = (Ak, Q, q0, F, ), trong đó:

+ Ak là bảng chữ vào, mỗi chữ là một xâu ký tự độ dài k trên A, k=m+1

+ Q là tập hữu hạn các trạng thái,

Q = {q=(n1,n2)| n1, n2  N, 0  n1  m, 1  n2  k}

 n1 gọi là độ mờ tại vị trí đang xét

 n2 gọi là bước nhảy tiếp theo vị trí đang xét + q0 là trạng thái khởi đầu, q0 = (0,1)

+ F là trạng thái kết thúc, F = (m,1) + Hàm chuyển : Q × Ak Qs

(q, w)  q‟ = (q, w)

Với q = (n1, n2) thì q‟ = (n1‟, n2‟) được xác định như sau:

 Nếu n2 > 1 thì đặt n1 = 0

 Tính n1‟ = TFuzz (n1, w1)

 Nếu n1‟ = m hoặc n1‟ > n1 thì n2‟ = 1, ngược lại (n1‟ < m và n1‟  n1) thì xét:

Nếu w1+m-n1‟  Ap thì n2‟ = 1, ngược lại n2‟=1+m-n1‟

ptr

P(n1) ptr+m-n1

1+m-n1 m+1

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

36 Hoạt động của otomat mờ so mẫu như sau:

Cho mẫu P độ dài m và xâu đích S độ dài n trên bảng chữ A. A(P)

là otomat được xác định theo định nghĩa 2.3. Ta sẽ dùng otomat A(P) để đoán nhận tất cả các vị trí xuất hiện mẫu P trong xâu S và tổng số lần xuất hiện mẫu. Thuật toán cơ bản dựa trên otomat được mô tả như sau:

Thuật toán 2.3.

Ta dùng các ký hiệu:

+ j là con trỏ quan sát trên S

+ q.n1, q.n2 là hai thành phần của trạng thái q

+ w là khối ký tự quan sát bắt đầu từ vị trí j trên xâu đích S, giả sử đã bổ sung thêm m ký tự # vào cuối S.

+ qold là trạng thái của otomat tại vị trí trước khi đọc w + q là trạng thái otomat sau khi tác động w, q = (qold, w) + Counter là biến đếm số lần xuất hiện mẫu.

Bước 1: Khởi tạo

j: = 0; counter := 0; qold.n1 :=0; qold.n2 :=1; Bước 2: While j

n do

j: = j + qold.n2

Đọc khối ký tự quan sát w; {w1

Sj} {Tính q =

(qold, w)}

if qold.n2 > 1 then qold.n1:= 0; endif; q.n1: = TFuzz (qold.n1, w1);

q.n2: = 1; if q.n1= m then

Ghi nhận vị trí xuất hiện mẫu là j - m + 1; Counter: = counter + 1;

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 37 if w1+m-q.n1

Ap then q.n2: = 1+m-q.n1; endif; endif; endif; qold := q; endwhile; 2.1.4.3. Thuật toán 2.4

procedure GFSearching (); {tìm kiếm mẫu dựa trên định nghĩa 2.3} var apr: array [1..N] of integer;

counter, j, n1, n2, n1’, n2’: integer; begin j:= 0; n1:= 0; n2 := 1; while j <= n do begin j := j + n2; if n2 > 1 then n1:= 0; n1’ := TFuzz [n1, index [S[j]]]; n2’: = 1; if n1’ = m then

begin counter := counter + 1; apr[counter]:= j - m + 1; end

else if n1’ < m and n1’ <= n1 then begin if j + m - n1’ > n then return;

if index [S[j + m - n1’]] = k then n2’ : = 1 + m - n1’; end;

n1:=n1’; n2: = n2’; end;

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

38

2.2. Bài toán so mẫu xấp xỉ 2.2.1. Đặt vấn đề 2.2.1. Đặt vấn đề

Để tìm kiếm xấp xỉ, cần sử dụng một hàm khoảng cách (distance function) đo độ tương tự giữa hai xâu. Tương tự ở đây được hiểu là giữa hai xâu kí tự có một vài sai khác ở những lỗi có thể nhận ra bằng mắt thường, không xét về khía cạnh ngữ nghĩa (OCR - optical character recognition errors), chẳng hạn “Việt Nam” và “Việt Nan” hay “Việtt Nan”,... Có thể kể ra một số kỹ thuật phổ biến đo độ tương tự giữa hai xâu: xâu con chung dài nhất, dãy con chung dài nhất, khoảng cách soạn thảo (Edit Distance).

Các kỹ thuật trên chủ yếu chỉ hiệu quả khi có những sai khác về mặt chính tả: có sự bổ sung, xoá hay thay thế một số kí tự. Trong nhiều tình huống, những kỹ thuật này chưa đáp ứng đầy đủ yêu cầu thực tế, như khi cần tìm kiếm theo tên người nước ngoài (chẳng hạn “christian Charras” và “Charas C”), khi có sự sai khác do biến đổi hình thái từ, cấu trúc câu (“approximate searching” và “search approximately”), một số trường hợp thứ tự ghép từ khác nhau nhưng mang ngữ nghĩa giống nhau (“toán logic” và “logic toán”) hoặc do thứ tự sai song vẫn hiểu được đúng nghĩa (“toán giải tích” và “giải tích toán”,...). Phương pháp xác định độ tương tự giữa hai xâu kí tự theo “độ gần tựa ngữ nghĩa” được đề xuất trong luận văn sẽ đáp ứng nhu cầu tìm kiếm như trên.

Xét một tình huống khác. Khi ứng dụng trong thực tế, mỗi từ theo nghĩa thông thường có thể xem là một kí tự hình thức. Chẳng hạn câu “bạn Minh giỏi Toán” được xem là một „xâu‟ gồm 4 „kí tự‟, có thể hình thức hoá là P = derq và S là “Ở trường tôi bạn Minh được đánh giá là một trong những sinh viên học Toán giỏi nhất", hình thức hoá là S = abcdefghiklmnopqrs.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

39

Tính độ tương tự giữa hai xâu bằng các kĩ thuật trên được kết quả như sau:

+ Độ dài dãy con chung dài nhất: 3, độ tương tự có thể xem là 3/18 + Độ dài xâu con chung dài nhất: 2, độ tương tự có thể xem là 2/18 + Khoảng cách Levenshtein: 14.

+ Khoảng cách Hamming: 18 (đúng bằng độ dài xâu S).

Độ tương tự giữa hai xâu kí tự P và S theo những độ đo kinh điển kể trên là rất nhỏ, mặc dù hai xâu rất gần nhau về mặt ngữ nghĩa. Để đáp ứng nhu cầu tìm kiếm trong những tình huống như trên, một mô hình lỗi phản ánh độ tương tự giữa hai xâu kí tự là “Độ bảo toàn thứ tự xuất hiện các kí tự” được đề xuất.

Do độ tương tự xác định theo hai cách này phản ánh được độ gần gũi ngữ nghĩa giữa hai xâu, xét về mặt thống kê, nên được gọi là “độ tương tự tựa ngữ nghĩa”.

Một mô hình lỗi kinh điển là dựa vào độ dài khúc con chung dài nhất song với cách tiếp cận otomat mờ được đề xuất ở đây sẽ đem lại một thuật toán nhanh, đặc biệt hiệu quả khi cần so mẫu P với rất nhiều xâu S.

2.2.2. Bài toán

Bài toán được phát biểu: Cho xâu nguồn P độ dài m và xâu đích S độ dài n. Xác định dộ tương tự giữa hai xâu P và S.

Bài toán này có thể coi là cốt lõi để cài đặt tính năng tìm kiếm xấp xỉ tựa ngữ nghĩa trong cơ sở dữ liệu và trong các hệ thống trích rút văn bản. Trường hợp S là một dòng dữ liệu văn bản (trong các máy tìm kiếm của hệ thống khai phá text, khai phá web,...), xâu mẫu P thường ngắn còn xâu đích S dài hơn rất nhiều so với P nên để phản ánh ngữ nghĩa được tốt cần phải chặt khúc dòng dữ liệu S và sánh từng khúc với P

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

40

(chẳng hạn, việc ngắt câu có thể xem là một cách chặt khúc). Khi đó độ tương tự sẽ được tổng hợp từ các kết quả so sánh P và các khúc của S.

Khi áp dụng trong các hệ thống xử lý văn bản, rất hay gặp những lỗi nhỏ về mặt chính tả (như: “Việt Nam” và “Việt Nan”, “vật lý” và “vật lí” ...) hoặc do dùng các từ đồng nghĩa hay có nghĩa tương tự nhau (như „yêu‟ và „thích‟, „mê‟,...) do sự biến đổi về hình thái từ (trong một số ngôn ngữ: Anh, Pháp, ... “approximate” và “aproximately”). Để đáp ứng nhu cầu tìm kiếm được tốt hơn, có thể dùng các thuật toán tìm kiếm xấp xỉ nhưng tính tới độ tương tự của các kí tự, về mặt chính tả hoặc về mặt ngữ nghĩa. Khi đó khái niệm “xuất hiện” hay “thuộc xâu P” của một kí tự c được hiểu như sau:

- Sử dụng một hàm đo độ tương tự với ngưỡng mờ  nào đó do người sử dụng chọn.

- Tìm kí tự hình thức trong P có độ tương tự cao nhất so với c và nằm ở bên trái nhất.

- Nếu độ tương tự đó lớn hơn ngưỡng  thì coi như c chính là kí tự tương ứng trên P, nếu không thì coi như c không xuất hiện trên P.

2.2.3. Độ tương tự dựa trên độ dài khúc con chung của hai xâu

2.2.3.1. Phát biểu bài toán

Bài toán: Cho xâu mẫu P = P1P2 ...Pm (độ dài m) và xâu đích S = S1S2 ... Sn (đo độ dài n) trên bảng chữ A. Tìm khúc con chung dài nhất giữa hai xâu P và S.

Bài toán có thể hiểu là tìm khúc con dài nhất của P xuất hiện trên S.

Để giải quyết bài toán, trước hết ta đưa vào một số ký hiệu.

Cho bảng chữ A, với mỗi xâu u = u1u2...uk, uiA:

+ prefm(u) = u1u2..um (hay gọn hơn là u(m), là khúc đầu gồm m chữ của u. + sufm(u) = uk-m+1uk-m+2...uk là khúc cuối gồm m chữ của u.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

41 + Quy ước pref0(u) = suf0(u) =  (từ rỗng)

+ Với hai số tự nhiên f, d, ||u||  d  f  0, đặt u(f,d) = suff(prefd(u)) là khúc cuối độ dài f của một khúc đầu gồm d kí tự của u. Quy ước u(0,d) = . + Với mỗi xâu y là khúc con của u, đặt lid(y,u) = (|y|, Min {dN| f  0: u(f,d) = y}).

+ Cho hai xâu u, v, kí hiệu lfact(v, u) là khúc cuối y dài nhất của v mà y là khúc con nào đó của u, độ dài của xâu y như vậy được ký hiệu là lfuz(v, u).

Ví dụ 2.2. Cho u = drabcgaba, pref6(u) = drabcg, suf2(drabcg) = cg, do vậy u(2,6) = cg, lid(ab, u) = (2,4) vì ab là khúc con trái nhất của u kết thúc tại vị trí 4 trên u và ab có độ dài 2.

Cho v = ghbacabc, lfact(v,u) = abc, lfuz (v,u) = 3, lfact (u,v) = ba, lfuz(u,v) = 2.

Với xâu P độ dài m đã cho, trên các cặp số (f,d), với m  d  f  0, xác định một quan hệ tương đương như sau: (f,d) tương đương với (f‟,d‟) nếu P(f,d) = P(f‟,d‟) (khi đó hiển nhiên f = f‟). Lớp tương đương của một cặp (f,d) được kí hiệu là [f,d]. Cặp số (f,d) được gọi là có nghĩa (với P) nếu (f,d) là cặp có d nhỏ nhất trong lớp, nghĩa là có khúc con y của P sao cho lid(y,P) = (f,d).

Ví dụ 2.3. Cho u = drabcgaba, các cặp (2,4), (2,8) tương đương vì u (2,4) = u(2,8) = ab, cặp (f,d) = (2,8) là không có nghĩa vì y = ab có vị trí kết thúc trái nhất trên u là ở vị trí 4, không phải ở vị trí 8 mặc dù u (2,8) = y = ab.

Phương pháp giải quyết

Độ mờ xuất hiện mẫu P tại vị trí j trên S là lfuz(S(j),P) (chính là độ dài khúc cuối dài nhất w của S(j) mà w là khúc con nào đó của P). Bản chất thuật toán cần được xây dựng là: duyệt S từ trái sang phải, ở vị trí thứ j, sau khi đọc được kí tự Sj, cho biết ngay cặp giá trị (f,d) có nghĩa

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

42

của P, sao cho P(f,d) = lfact (S(j), P), do đó f = lfuz (S(j), P). Sử dụng biến LenMax để đánh dấu độ dài của khúc con dài nhất tìm được, tính tới vị trí j trên S. Sau khi duyệt xong S, LenMax cho biết độ dài khúc con chung dài nhất của P và S. Thuật toán 2.4 (Mục 2.2.3) được xây dựng dựa trên một mô hình otomat mờ sẽ đáp ứng được yêu cầu trên.

Để xây dựng thuật toán chi tiết, sau đây ta sẽ xét hai hệ hình thức otomat, hệ hình thức thứ nhất đóng vai trò bổ trợ nhằm giúp thể hiện bản chất của hệ thức sau.

2.2.3.2. Otomat so mẫu

Định nghĩa 2.4. Otomat trạng thái các khúc con của P có:

+ Bảng chữ vào A = Ap

{#}, Ap gồm các ký tự xuất hiện trong mẫu P và ký tự #

Ap đại diện cho các ký tự không có mặt trong P,

+ Tập trạng thái là tập tất cả các khúc con của P, mỗi trạng thái là một khúc con của P (bao gồm cả xâu rỗng),

+ Với mỗi chữ a, mỗi khúc con u của P, hàm chuyển T cho bởi: T(u,a):= lfact(ua,P)

Ta mở rộng tác động cho xâu w=a1a2...ak tuỳ ý

T(u,w):= T(..T(T(T(u,a1),a2),a3),...ak), quy ước T(u,

) = u.

Ví dụ 2.4. P = bcgabcdbabed

T(ab, c) = abc, T(ab, e) = abe, T(ab, z) = , T(ab, zebcd) = bcd.

Dựa vào các tính chất đã được chứng minh trong [11], chúng ta có thuật toán sau:

Thuật toán 2.5. Tìm khúc con chung dài nhất giữa hai sâu Vào: Mẫu P độ dài m; xâu đích S độ dài n

Dựa vào thông tin trên P, đã xây dựng otomat mờ so mẫu với hàm chuyển TFuzz.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

43

+ LenMax: độ dài của khúc con chung dài nhất + LF_P: vị trí (kết thúc) xuất hiện trên P

+ LF_S: vị trí (kết thúc) xuất hiện trên S Phương pháp

(f,d) := (0,0); f_max := 0; LenMax := 0; LF_P := 0, LF_S := 0; for j:=1 to n do

(f’,d’) := TFuzz((f,d),Sj); (f,d):= (f’,d’);

if f > f_max then f_max := f

else {đã tìm được một khúc con dài nhất của P độ dài f_max và là khúc cuối của S(j)}

if LenMax < f_max then

LenMax := f_max; LF_P := d; LF_S := j; endif; f_max := f; endif; endfor; Return(LF_P, LF_S, LenMax); 2.2.4. Độ gần tựa ngữ nghĩa 2.2.4.1. Ý tưởng về độ gần

Độ gần của xâu S so với xâu P được xác định thông qua số khúc con của P xuất hiện trong S.

Bài toán: Cho xâu kí tự P (xâu nguồn hay mẫu) độ dài m (P = P1P2..Pm) và S (xâu đích) độ dài n (S = S1S2...Sn). Hãy xác định độ gần tựa ngữ nghĩa của S so với P. Độ gần ở đây được hiểu là giá trị thực nằm trong khoảng [1,0] thoả mãn:

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

44 + độ gần bằng 1 nếu xâu P xuất hiện trong S

+ độ gần bằng 0 nếu không có một phần nào của P xuất hiện trong S.

2.2.4.2. Thuật toán sơ bộ tính độ gần 2.2.4.2.1. Ý tưởng 2.2.4.2.1. Ý tưởng

Hình 2.3. Một ví dụ với các khối độ dài t = 3

- Gọi PiPi+1...Pi+t-1 là một khối độ dài t của mẫu P và kí hiệu khối này là (t,i). - Lần lượt xét tất cả các khối độ dài t, t = 1,2,..,m, và kiểm tra xem khối đó có xuất hiện trong S hay không (xem Hình 2.3).

- Tính hàm giá H(S, P) =

m t t k 1

* , trong đó k là số khối độ dài t có xuất hiện trong xâu đích S.

- Gọi M là giá trị cực đại của hàm giá (khi S = P),

M = H(P, P) =

 

  m 1 t t * 1 t m (2.1). - Độ gần của s so với P là tỷ số H/M

2.2.4.2.2. Thuật toán chi tiết

Thuật toán 2.6. Tính độ gần tựa ngữ nghĩa của xâu S độ dài n so với mẫu P độ dài m.

{Tính độ gần tối đa M = Hmax = H(P, P)}

(3,1) (3,3) (3,5) (3,2) (3,4) P (3,2) (3,1) S (3,5) (3,1)

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 45 M= H(P,P) =

 

  m 1 t t * 1 t m ; {Xây dựng hàm giả H(P, S) H:=0; for t:=1 to m do for i:=1 to m - t + 1 do

if (khối (t, i) xuất hiện trong S) then H:=H + t; (2.2)

{Tính độ gần của S so với P} F := H/M;

2.2.4.3. Giải thích độ mờ của mô hình

Giá trị mờ P(S) = H/M cho biết độ gần tựa ngữ nghĩa của P trong S. Tập nền X là tập rõ bao gồm tập tất cả các xâu S trong cơ sở dữ liệu. Khi P(S) = 1 nghĩa là có mẫu P trong S hay toàn bộ thông tin của P được phản ánh trong S. Khi P(S) = 0 thì không có bất kỳ một phần nào của mẫu P trong S (xem Hình 2.4).

Hình 2.4. Tập mờ mô tả độ gần tựa ngữ nghĩa của mẫu P so với xâu đích S Độ phức tạp khi so sánh mỗi khối (t,i) của mẫu được cắt với S có thể sử dụng thuật toán theo tiếp cận mờ xác định nhiều lần lặp mẫu (xem

S1 S S2 S3 độ gần 1,0 0,8 0,4 0,0 0(S)

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

46

mục 2.1.3), cỡ là n, chưa tính khâu tiền xử lý cho cấu trúc bảng chuyển của otomat.

Số khối được xét với mọi t là: m+(m-1) + ... + 1 = m(m+1)/2. Vì mẫu đưa vào thường ngắn từ 3 đến 30 ký tự nên giá trị này có thể coi là hằng số C.

Do đó độ phức tạp thời gian của thuật toán là T = n.m(m+1)/2+Tpt,

Một phần của tài liệu LUẬN VĂN:TÌM KIẾM MỜ VÀ ỨNG DỤNG TÌM KIẾM THÔNG TIN TRONG CÁC VĂN BẢN NÉN POTX (Trang 44 -76 )

×