Thuật toán khai thác cây PLWAP là một thuật toán khai thác mẫu chuỗi mới cho các web log, nó dựa trên cây WAP, nhưng tránh đệ quy lại xây dựng cây WAP trung gian trong khai thác của cây WAP ban đầu cho mẫu phổ biến. Thuật toán PLWAP có thể nhanh chóng xác định các cây hậu tố của bất kỳ mẫu tiền tố phổ biến được xem xét bằng cách so sánh chỉ định mã nhị phân vị trí của các nút của cây. Do đó, thuật toán xác định mã nhị phân cho cây được sử dụng để chỉ định mã vị trí nhị phân duy nhất cho các nút của bất kỳ cây nói chung, bởi lần đầu tiên chuyển đổi cây này sang cây nhị phân tương đương và sử dụng một luật tương tự như được sử dụng trong mã hóa Huffman [12], để xác định một mã duy nhất cho mỗi nút.
Mã vị trí là một mã nhị phân được sử dụng để chỉ ra vị trí của các nút trong cây WAP. Trong cấu trúc dữ liệu [12], khi thực hiện một cấu trúc dữ liệu cây nói chung, một cây thường được chuyển thành cây nhị phân tương đương của nó, trong đó có một số các nút con cố định. Để chuyển đổi một cây T nói chung, với các nút ở mức n và gốc ở mức 0, các nút lá ở cấp (n - 1), các quy tắc chuyển đổi như sau: gốc của cây nhị phân là con ngoài cùng bên trái của gốc của cây T nói chung. Sau đó, bắt đầu từ cấp độ 1 của cây nói chung và thực hiện đến cấp n - 1 của cây, đối với mỗi nút: (1) con tận cùng bên trái của nút này trong cây nói chung là con trái của nút trong cây nhị phân, (2) nút anh chị em bên phải trung gian của nút này trong cây nói chung là các con phải của nút này trong cây nhị phân. Ví dụ, cho một cây như Hình 2.6 (a), nó có thể được chuyển đổi thành cây nhị phân tương đương của nó trong Hình 2.6 (b), trong đó mỗi nút có ít nhất hai liên kết, một là con trái của nó, và kia là anh chị em của nó.
Mã vị trí được ấn định cho các nút trên cây nhị phân tương đương của cây. Ở đây, luật chuyển nhượng mã, bắt đầu từ con tận cùng bên trái của nút gốc của cây nói chung, trong đó có một mã vị trí nhị phân là 1, bởi vì đây là gốc của cây nhị phân
tương đương của cây. Như vậy, cây nhị phân tương đương của một cây, từ nút gốc, luật chuyển nhượng mã vị trí tạm thời duy nhất gán 1 tới con trái của mỗi nút, và 0 được gán cho các con phải của mỗi nút. Mã vị trí tạm thời này được sử dụng để xác định mã vị trí nhị phân thực tế cho mỗi nút trong cây chung gốc. Việc chuyển đổi sang cây nhị phân tương đương được sử dụng chủ yếu để đưa ra kỹ thuật để xác định và gán mã số vị trí cho các nút của cây sẽ thực hiện việc nhận dạng cần thiết trong PLWAP khai thác cây. Thuật toán PLWAP không liên quan đến chuyển đổi vật lý của một cây WAP để một cây nhị phân trước khi khai thác. Sau khi quan sát sự ấn định mã vị trí với các nút trong Hình 2.6 (a) được xác định như sau:
Hình 2.6 - Ấn định mã nhị phân với các nút vị trí trong cây nhị phân [3]
Cho một cây WAP với một số nút, mã vị trí của mỗi nút chỉ có thể được chỉ định theo quy tắc sau: mã vị trí của nút gốc không có giá trị, và nút con ngoài cùng bên trái của gốc có một mã số 1, nhưng mã của bất kỳ nút khác được suy ra bằng cách thêm 1 vào mã vị trí của nút mẹ nếu nút này là con ngoài cùng bên trái, hoặc thêm 10 tới mã vị trí của nút cha nếu nút này là tận cùng bên trái nút con thứ hai, nút ngoài
Gốc a:3 1 b:3 11 a:2 111 c:2 1111 c:1 1110 a:1 11101 c:1 111011 b:1 10 a:1 101 b:1 1011 a:1 10111 c:1 101111 c:1 11111 a:3 b:3 a:2 a:2 c:1 c:1 a:1 c:1 b:1 a:1 b:1 a:1 c:1 1 1 1 1 1 1 1 0 0 1 1 1 1 (a) (b)
cùng bên trái thứ ba đã thêm 100, v.v… nói chung, cho nút con ngoài cùng bên trái thứ n, mã vị trí của nó thu được bằng cách thêm các số nhị phân cho 2n-1 mã của nút cha.
Mặt khác, nút α là tổ tiên của nút β khi và chỉ khi mã vị trí của α nối thêm 1 vào cuối mã sẽ thành x số bits đầu tiên của mã vị trí nút β, trong đó x bằng ((số bit trong mã vị trí của α) + 1). Cụ thể trong Hình 2.6 (a), (c: 1:1110) là một tổ tiên của (c: 1:111011) vì mã vị trí của (c: 1:1110) là 1110, và sau khi gắn thêm 1 ở cuối của 1110, ta nhận được 11101, đó là tương đương với 5 bit đầu tiên (tức là chiều dài của c + 1) (c: 1:111011). Mặt khác, (c: 1:1110) không phải là tổ tiên của (c: 1:101111), kể từ sau khi phụ thêm 1, đoạn mã sẽ được 11101 và không bằng 5 bit vị trí mã đầu tiên của (c: 1:101111). Với cách này, không những chúng ta có thể sử dụng mã vị trí để tìm tổ tiên và các mối quan hệ con cháu giữa các nút, mà chúng ta cũng có thể tìm xem một nút thuộc về cây bên phải hoặc cây bên trái hay không.
Thuật toán khai thác cây PLWAP là thuật toán đệ quy hiệu quả được đề xuất để liệt kê mẫu phổ biến truy cập web. Thực tế, thuật toán khai thác cây PLWAP chính là tìm kiếm chuỗi tiền tố chứ không phải là tìm kiếm hậu tố như thuật toán khai thác cây WAP. Thay vì tìm kiếm mẫu hậu tố phổ biến (mẫu phổ biến bắt đầu với sự kiện cuối cùng trong chuỗi và tiếp tục mở rộng chuỗi con hậu tố cho đến khi toàn bộ chuỗi được tìm thấy) như khai thác cây WAP, thuật toán khai thác PLWAP tìm kiếm mẫu tiền tố phổ biến trong cây PLWAP bằng cách tìm các sự kiện đầu tiên trong chuỗi và mở rộng chuỗi con tiền tố này cho đến khi toàn bộ chuỗi được tìm thấy.
Xây dựng và khai thác cây PLWAP:
Đầu tiên, thuật toán PLWAP là quét dữ liệu chuỗi truy cập web một lần để có được sự hỗ trợ của các sự kiện trong tập sự kiện E = {a, b , c, d , e, f} và lưu trữ 1- sự
kiện phổ biến trong danh sách tiêu đề, L như {a:4, b:4, c:4}. Các sự kiện d:1, e:2 , f:2 có hỗ trợ ít hơn sự hỗ trợ cực tiểu là 3 và do đó, không phải là sự kiện phổ biến .
Tiếp theo, thuật toán PLWAP tiếp tục quét cơ sở dữ liệu dữ liệu chuỗi truy cập web lần thứ hai, chỉ sử dụng các sự kiện phổ biến trong mỗi giao dịch, và xây dựng các mối liên kết thứ tự trước của các nút tiêu đề cho các sự kiện phổ biến a, b, c. Sau đó, nó tạo ra một nút gốc cho cây PLWAP, và cho mỗi chuỗi truy cập trong cột thứ hai của dữ liệu chuỗi truy cập web ở Bảng 2.4, nó loại bỏ tất cả các sự kiện không phổ biến d, e, f để tạo ra các sự kiện phổ biến trong các giao dịch trong chuỗi của nó hiển thị trong cột thứ ba của Bảng 2.4. Vì vậy, cho abdac chuỗi đầu tiên, chuỗi phổ biến abac thu được và cho chuỗi thứ hai, eaebcac, chuỗi phổ biến abcac thu được. Những chuỗi phổ biến của các giao dịch dữ liệu chuỗi truy cập web được sử dụng để xây dựng cây PLWAP. Do đó, thuật toán xây dựng cây PLWAP chèn chuỗi phổ biến đầu tiên abac trong cây PLWAP bằng cách kiểm tra xem nếu nút gốc tồn tại nút con a chưa. Nếu chưa, một nút a được chèn vào như con ngoài cùng bên trái của nút gốc như thể hiện trong Hình 2.7 (a). Số lượng của nút này là 1 và mã vị trí của nó là 1 vì nó là con ngoài cùng bên trái của nút gốc. Tiếp theo, nút b được chèn vào như con ngoài cùng bên trái của nút a vì không có nút b sau một nút a tồn tại được nêu ra. Vì nó là lần đầu tiên, số lượng của nó là 1 và mã vị trí của nó là 11. Sau đó, sự kiện thứ ba a được đưa vào như một con của nút b với số 1 và vị trí mã 111. Cuối cùng, sự kiện cuối cùng c được đưa vào với số 1 và vị trí mã 1111. Tất cả các nút chèn trên cây có thông tin “tên nút:số lượng:mã vị trí”. Tiếp theo, chuỗi phổ biến thứ hai abcac được chèn bắt đầu từ nút gốc như thể hiện trong Hình 2.7 (b). Từ nút gốc có một con được dán nhãn a, do đó số lượng của a được tăng thêm 1. Bây giờ nút (a:1:1) được thay đổi thành (a:2:1). Tương tự như vậy, chúng ta có (b:2:11). Sự kiện tiếp theo c không phù hợp với nút a hiện tại. Do đó, một nút mới được tạo ra. Nút mới không phải là con đầu của cha (b:2:11), do đó, mã vị trí của nó là mã vị trí của anh chị em bên trái gần
nhất của nó (a:1:111) với nối 0. Do đó, mã vị trí của nút mới là 1110. Cuối cùng, các nút mới có thể được biểu diễn như là (c:1:1110). Hai sự kiện tiếp theo mới được tạo ra như là (a:1:11101) và (c:1:111011) tương ứng. Quá trình này tiếp tục chạy cho đến khi không có chuỗi truy cập nhiều hơn trong dữ liệu chuỗi truy cập web. Hình 2.7 (c) và (d) cho thấy sau chuỗi babac và abacc đã được đưa vào cây PLWAP. Cuối cùng, cây PLWAP được xây dựng.
Thuật toán xây dựng cây PLWAP đi qua cây để xây dựng một mối liên hệ thứ tự trước của các nút tiêu đề phổ biến a, b và c. Bắt đầu từ nút gốc sử dụng cơ chế giao nhau thứ tự trước để tạo ra các hàng đợi, đầu tiên chúng ta thêm (a:3:1) vào a-hàng đợi. Sau đó, thuật toán đến thăm con trái của nó, (b:3:11) sẽ được thêm vào b-hàng đợi. Sau khi kiểm tra (b:3:11) của con bên trái, (a:2:111) được tìm thấy và được dán nhãn là a, và nó sẽ được thêm vào a-hàng đợi. Sau đó, (c:2:1111) và (c:1:11111) được đưa vào c-hàng đợi. Vì không có con trái nào khác sau (c:1:11111), thuật toán đi ngược lại, cho đến khi nó tìm thấy các anh chị em của (a:2:111). Do đó, (c:1:1110) được đưa vào c-hàng đợi. Thuật toán tiếp tục chạy cho đến khi toàn bộ cây PLWAP đã được đi qua. Hình 2.7 (e) cho thấy cây PLWAP hoàn toàn được xây dựng bằng các mối liên hệ thứ tự trước.
Gốc a:1 1 b:1 11 a:1 111 c:1 1111
(a) Cây PLWAP (Sau khi chèn abac)
Gốc a:2 1 b:2 11 a:1 111 c:1 1111 c:1 1110 a:1 11101 c:1 111011 (b) Cây PLWAP (Sau Khi chèn abcac)
Gốc a:2 1 b:2 11 a:1 111 c:1 1111 c:1 1110 a:1 11101 c:1 111011 b:1 10 a:1 101 b:1 1011 a:1 10111 c:1 101111 (c) Cây PLWAP (Sau khi chèn babac)
Hình 2.7 - Xây dựng cây PLWAP sử dụng giao nhau thứ tự trước [3]
Thuật toán:
Bảng 2.5 – Thuật toán cây PLWAP [3]
Thuật toán cây PLWAP()
Đầu vào: Dữ liệu chuỗi truy cập web WASD, hỗ trợ cực tiểu λ (0< λ≤1)
Đầu ra: Bộ mẫu phổ biến trong WASD Fi Bắt đầu:
(1)Quét WASD một lần, tìm tất cả các sự kiện cá nhân phổ biến
(2) Quét WASD lần nữa, xây dựng cây PLWAP qua bộ sự kiện cá nhân phổ biến sử dụng thuật toán xây dựng PLWAP
(3) Đệ qui khai thác cây PLWAP sử dụng thuật toán khai thác PLWAP tìm kiếm mẫu tiền tố chung
Kết thúc Gốc a:3 1 b:3 11 a:2 111 c:2 1111 c:1 1110 a:1 11101 c:1 111011 b:1 10 a:1 101 b:1 1011 a:1 10111 c:1 101111 c:1 11111 (d) Cây PLWAP (Sau khi chèn babacc)
Gốc a:3 1 b:3 11 a:2 111 c:2 1111 c:1 1110 a:1 11101 c:1 111011 b:1 10 a:1 101 b:1 1011 a:1 10111 c:1 101111 c:1 11111
(e) Cây PLWAP hoàn thành (Sau khi thêm liên kết thứ tự trước) a
b
Bảng tiêu đề
Bảng 2.6 - Thuật toán xây dựng cây PLWAP [3]
Thuật toán xây dựng cây PLWAP()
Đầu vào: Cơ sở dữ liệu chuỗi truy cập web WASD, hỗ trợ cực tiểu λ (0< λ≤1), 1- sự kiện phổ biến L
Đầu ra: Cây PLWAP T
Biến trung gian: Nút_tìm_thấy, nút_hiện_tại (con trỏ) Bắt đầu:
(1) Tạo ra nút gốc T, mã vị trí của nút gốc thiết lập là null, số lượng thiết lập là 0
(2) Cho mỗi chuỗi truy cập, s trong dữ liệu chuỗi, WASD, thực hiện
a. Trích xuất các chuỗi con phổ biến, s’ (s1 s2 … sn) từ s bằng cách gỡ bỏ tất cả các sự kiện trong s không có trong L. Thiết lập nút_hiện_tại trỏ đến con trái nhất của gốc trong cây T.
b. Chạy vòng lặp từ k=1 tới n (chiều dài của chuỗi s’) thực hiện i. Nếu nút_hiện_tại là null thì tạo ra nút con mới (sk:1) với mã
vị trí bằng 1 thêm tới mã vị trí của nút_hiện_tại, ngược lại nếu nút_hiện_tại có nhãn là sk thì thiết lập nút_tìm_thấy là đúng, đồng thời cho nút_hiện_tại trỏ tới nút_hiện_tại.anh chị em và kiểm tra liệu nút_hiện_tại có nhãn là sk, cho đến khi không còn anh chị em hoặc sk được tìm thấy.
ii. Nếu nút_tìm_thấy là đúng thì gia tăng số lượng sk lên 1 và thiết lập nút_hiện_tại trỏ tới sk , hoặc tạo ra nút con mới (sk:1) với mã vị trí của nút_hiện_tại.mã vị trí và 0 được thêm vào cuối cùng, thiết lập nút_hiện_tại trỏ tới nút mới tạo
(3) Từ gốc, thực hiện giao nhau thứ tự trước của T, viếng thăm gốc, sau đó cây con trái, sau đó cây con phải và tất cả các nút tới hàng đợi liên kết thích hợp
(4) Trở về T với bảng liên kết tiêu đề L Kết thúc
Bảng 2.7 - Thuật toán khai thác cây PLWAP [3]
Thuật toán khai thác cây PLWAP()
Đầu vào: Cây PLWAP T, bảng liên kết tiêu đề L, hỗ trợ cực tiểu λ (0< λ≤1), m- chuỗi F phổ biến. Gốc cây hậu tố thiết lập là R (R bao gồm gốc và lần đầu thuật toán gọi F là rỗng)
Đầu ra: (m+1)-chuỗi phổ biến F’
Các biến khác: S lưu trữ nếu nút là tổ tiên của nút theo sau trong hàng đợi, C lưu trữ số lượng các sự kiện ei trong cây hậu tố
Bắt đầu:
(1)Nếu R là rỗng, trở về.
(2)Lặp mỗi sự kiện, ei trong L, tìm cây hậu tố của ei trong T (ví dụ ee| cây hậu tố), thực hiện
a. Lưu sự kiện đầu tiên trong ei-hàng đợi tới S b. Theo ei-hàng đợi
Nếu sự kiện ei là con cháu của bất kỳ sự kiện nào trong R, và không phải con cháu của S
Chèn nó vào tiêu đề cây hậu tố thiết lập là R’ Thêm số lượng của ei tới C
Thay thế S với ei c. Nếu C lớn hơn λ
Thêm ei sau F tới F’ và xuất F’
Gọi lại thuật toán khai thác PLWAP() qua R’ và F’ Kết thúc
Không giống như khai thác cây WAP tìm kiếm các mẫu truy cập với hậu tố, PLWAP tìm thấy các chuỗi truy cập với tiền tố giống nhau.
Thuật toán bắt đầu tìm thấy những chuỗi phổ biến với 1-chuỗi phổ biến trong tập hợp các sự kiện phổ biến {a, b, c}. Đối với mỗi sự kiện phổ biến trong các sự kiện phổ biến và cây hậu tố của cây PLWAP điều kiện hiện tại được khai thác, nó theo mối liên kết của sự kiện này để tìm sự xuất hiện đầu tiên của sự kiện phổ biến trong mỗi cây hậu tố hiện tại đang được khai thác và thêm hỗ trợ số lượng của tất cả các sự kiện phổ biến xuất hiện đầu tiên của trong tất cả các cây hậu tố hiện tại. Nếu số lượng lớn hơn ngưỡng hỗ trợ cực tiểu, sau đó sự kiện này được nối vào danh sách cuối cùng của chuỗi phổ biến F. Cây hậu tố của những sự kiện này xuất hiện đầu tiên trong cây PLWAP hậu tố điều kiện khai thác trước bây giờ lần lượt được sử dụng để khai thác các sự kiện tiếp theo. Cây PLWAP hậu tố có điều kiện thu được trong quá trình khai thác không thực sự tồn tại. Để có được cây PLWAP có điều kiện này, ta chỉ cần nhớ những nút gốc của cây hậu tố hiện tại được lưu trữ khai thác vòng tiếp theo.
Cụ thể hơn, thuật toán bắt đầu khai thác các cây trong Hình 2.8 (a) cho các phần tử đầu tiên trong danh sách liên kết tiêu đề. Đầu tiên là a sau khi liên kết a để tìm sự xuất hiện đầu tiên của nút a trong a:3:1 và a:1:101 của cây hậu tố của nút gốc