Thuật toán PageRank Reviser (P2R):

Một phần của tài liệu Đồ án tốt nghiệp xếp hạng lại kết quả trả về từ máy tìm kiếm (Trang 26)

P2R được cải tiến từ thuật toán I-SPY: thay vì lưu trữ ma trận truy vấn, thuật toán lưu trữ ma trận các cụm từ thường xuyên.

Hình 5 – Ma trận cụm từ thường xuyên

Hij: số lần người dùng click vào urlj đối với truy vấn có chứa cụm từ pi

• Giảm kích thước của ma trận xuống nhiều lần

• Giải quyết vấn đề thưa thớt của ma trận

• Có thể sử dụng ma trận để gợi ý truy vấn cho người dùng

Thuật toán được chia làm 2 pha hoạt động độc lập và tách rời nhau. Các pha này đều được thực hiện online (thực hiện thời gian thực):

• Tách cụm từ từ truy vấn và lưu các cụm từ thường xuyên (có tần suất xuất hiện lớn hơn ngưỡng định trước) vào hit-matrix  sử dụng thuật toán OFSD để tìm các cụm từ thường xuyên (pha 1)

• Phân tích truy vấn và xếp hạng lại các kết quả tìm kiếm (pha 2).

4.3.2.1.Thuật toán P2R – Pha 1:

Nhiệm vụ của pha này là tách các cụm từ từ truy vấn và lưu trữ các cụm từ thường xuyên. Thuật toán được áp dụng ở đây là thuật toán OFSD (Online frequent sequence discovery): Thuật toán tách những cụm từ thường xuyên (frequent phrase) từ dòng dữ liệu (data stream) dựa trên tần suất xuất hiện của các cụm từ. Đặc điểm:

Dòng dữ liệu là không giới hạn, tăng lên sau mỗi giao dịch (transaction).

Cụm từ thường xuyên là các cụm từ có tần suất xuất hiện lớn hơn một ngưỡng định trước. Một cụm từ có thể là cụm từ thường xuyên trong khoảng thời gian này nhưng lại không thường xuyên trong khoảng thời gian khác.

Thuật toán được thực hiện online, đáp ứng yêu cầu thời gian thực.

Một số ký hiệu và định nghĩa:

• Ψ = { I1, I2,… Im } là tập các item

• Item I là đơn vị nhỏ nhất mà vẫn có khả năng đứng biệt lập của giao dịch.

• Giao dịch (transaction) T = Ii..Ij là một chuỗi các item

• DS = ( …, Ti, Ti+1-,…) là một dòng dữ liệu vô hạn tạo nên từ các transaction.

• T: Pi Pj nghĩa là cụm Pj tiếp nối ngay sau Pi trong giao dịch T

• Candidate set CS = {Pi, … Pj} là tập các cụm từ ứng viên (những cụm từ có khả năng là cụm từ thường xuyên ở thời điểm hiện tại).

Điều kiện tần suất của một cụm từ thường xuyên:

fp =

np

> fu

tc – tp + 1

với fp là tần suất cụm từ P, np số lần xuất hiện P trong DS, tc thứ tự giao dịch hiện tại, tp

là thứ tự giao dịch mà lần đầu tiên P xuất hiện và fu là ngưỡng tần suất cho trước. Tuy nhiên việc sử dụng công thức trên gặp một vấn đề: nếu ta chỉ đi tìm các cụm từ thường xuyên thỏa mãn điều kiện thì sẽ xảy ra trường hợp có rất nhiều cụm từ thường xuyên này các cụm từ thường xuyên khác. Cách thứ hai là ta sẽ chỉ tìm những cụm từ thường xuyên dài nhất: nếu một cụm từ thỏa mãn điều kiện thường xuyên nhưng lại nằm trong một cụm từ thường xuyên khác thì sẽ không được coi là cụm từ thường xuyên. Cách này lại làm số lượng cụm từ thường xuyên quá ít. Để giải quyết vấn đề này ta đưa ra một giá trị gọi là tần số lý thuyết (conceptual frequency rate):

cfp =

cnp

tc – tp + 1 (adsbygoogle = window.adsbygoogle || []).push({});

Với cnp là số lần xuất hiện lý thuyết (conceptual occurrence number) của P, tính theo công thức:

cnp = np - cnpi

Pi∈ SSp

trong đó SSP là tập các cụm từ thường xuyên Pi thỏa mãn Pi ∈P. Và điều kiện tần suất của cụm từ thường xuyên chuyển thành:

cfp > fu

Giải thuật OFSD:

OFSD Algorithm

2. loop

3. get transaction T; // Lấy về nội dung của giao dịch T

4. increment tcby 1; // Tăng giá trị tc lên 1

5. parseTransaction(); // Cập nhật nội dung tập CS dựa vào T

6. prune(); // Loại bỏ các cụm từ không thỏa mãn điều kiện ứng viên trong CS

7. end loop

Trong giải thuật ta có thể coi CS là một đồ thị có hướng mà các nút là những cụm từ ứng viên (candidate phrase) và các cạnh l(i,j) có hướng từ nút Pi tới Pj thỏa mãn tồn tại giao dịch T mà T: Pi  Pj (Pj đi ngay sau Pi trong T). Tương tự như với cụm từ, một cạnh sẽ có tần suất xuất hiện được tính theo công thức:

fl(i,j) =

nl(i,j)

tc – t l(i,j) + 1

Với fl(i,j) tần suất của l(i,j), nl(i,j) số lần xuất hiện của l(i,j) trong DS, tc thứ tự giao dịch hiện tại và tl(i,j) là thứ tự giao dịch mà lần đầu tiên l(i,j) xuất hiện

5 bước chính để xử lý một giao dịch (parse transaction):

Bước 1: Mọi item của transaction đều được cho vào tập CS và được coi như

một phrase

Bước 2: Nếu phrase P của transaction T đã xuất hiện trong CS thì tăng np lên 1

Bước 3: Nếu với ∀ Pi T, ∀ Pj T, Pi,Pj CS ∧ T: Pi  Pj thì cạnh l(i,j) được khởi tạo và giá trị nl(i, j) = 1 nếu là lần đầu tiên hoặc tăng 1 nếu đã tồn tại.

Bước 4: Nếu với ∀ l(i, j) ở bước 3, fl(i,j) > fu thì l(i,j) sẽ bị xóa và cụm PiPj sẽ được cho vào CS

Bước 5: Từ giao dịch tìm cụm từ P dài nhất trong CS và tăng giá trị cnP lên 1. Trong cài đặt, thay vì sử dụng tần số lý thuyết, ta sẽ đánh trọng số cho cạnh l(i,j) bằng giá trị Wl(i,j) được tính theo công thức:

Wl(i,j) = nl(i,j) – (tc – tl(i,j) + 1) . fu

Ta sử dụng một giá trị ngưỡng CM và sử dụng điều kiện Wl(i,j) > CM thay vì fl(i,j) > fu để tạo một cụm từ mới Pij. CM và tl(i,j) đều là hằng số trong khi tc tăng lên qua từng giao dịch, do đó f(tc) (biểu diễn ở công thức dưới) sẽ tiến dần tới 0. Điều đó có nghĩa là nếu fl(i,j) > fu là đúng thì fl(i,j) > fu + f(tc) cũng là đúng khi tc tăng tới một giá trị nhất định.

Tương tự ta đánh trọng số cho cụm từ P bằng Wp theo công thức:

Wp = np – (tc – tp + 1) . fu

Và sử dụng điều kiện WP > CM thay vì fp > fu để xác định P có phải cụm từ thường xuyên hay không: từ tập CS ta tìm tất cả những cụm từ P thỏa mãn điều kiện WP > CM (adsbygoogle = window.adsbygoogle || []).push({});

đưa vào tập FS chính là tập những cụm từ thường xuyên.

Ý nghĩa của việc sử dụng trọng số thay vì tần suất (hoặc tần suất lý thuyết): Như ta đã biết, tần suất của một cụm từ không phải tính bằng số lần xuất hiện của nó trong toàn DS mà chỉ trong khoảng thời gian từ khi nó xuất hiện lần đầu tới hiện tại (tc – tp

thay vì tc). Vì vậy theo công thức tính tần suất, các cụm từ xuất hiện mới nhất sẽ có khả năng tần suất cao (vì giá trị tc – tp nhỏ) trong khi số lần xuất hiện của chúng lại có thể không lớn. Để giải quyết vấn đề này, ta sẽ tính và sử dụng điều kiện trọng số thay vì điều kiện tần suất để xây dựng tập cụm từ thường xuyên.

Trong tập CS có những cụm từ khi sau một số giao dịch thì đã không còn thỏa mãn thỏa mãn điều kiện thường xuyên fp > fu nữa. Những cụm từ này sẽ bị loại bỏ bởi hàm

prune( ): những cụm từ hay cạnh nối sẽ bị loại khỏi CS nếu trọng số của chúng nhỏ hơn 0:

Wl(i,j) ≤ 0 f l(i,j) ≤ fu

4.3.2.2.Thuật toán P2R – pha 2:

Các bước thực hiện pha 2:

B1: Tách truy vấn thành tập các cụm từ thường xuyên dài nhất có thể

QFL = {P1, P2, …, Pn}

B2: Xây dựng các tập rankList(Pj) với Pj thuộc QFL bao gồm các URL được xếp theo số lượng click tương ứng giảm dần  tính được giá trị Rank (Pj, urli) = vị trí url i trong rankList(Pj)

rankList(Pj) = {urlk , urlr , …, urlm}

B3: Máy tìm kiếm trả về tập tài liệu được xếp hạng tương ứng với tập các url

 xây dựng rankList(url)

rankList(urli) = {Rank(P1, urli), … Rank(Pn, urli)}

B4: Tính ra giá trị Rank(url) và xếp hạng lại các kết quả tìm kiếm theo giá trị Rank(url) tăng dần.

PHẦN 2: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ I.Mô tả chung hệ thống:

Hệ thống thử nghiệm được xây dựng dựa trên máy tìm kiếm Nutch. Đây là một máy tìm kiếm mã nguồn mở nổi tiếng sử dụng thư viện tìm kiếm Lucene, có đầy đủ các thành phần cơ bản của một máy tìm kiếm: bộ thu thập dữ liệu (crawler), bộ đánh chỉ mục (indexer) và bộ tìm kiếm thông tin (searcher). Trên hệ thống thử nghiệm, các thao tác thu thập dữ liệu và đánh chỉ mục sẽ do người quản trị thực hiện sử dụng các module có sẵn của Nutch. Người dùng khi cần tìm kiếm sẽ nhập vào truy vấn thông qua giao diện hệ thống ở web browser, hệ thống sẽ tiến hành tìm kiếm và trả về tập kết quả đã được xếp hạng lại cho người dùng.

Yêu cầu về chức năng:

Nhiệm vụ chính trong hệ thống là đảm bảo việc tìm kiếm chinh xác và nhanh chóng. Việc xếp hạng lại kết quả tìm kiếm phải đáp ứng đòi hỏi yêu cầu thời gian thực, đồng thời kết quả được xếp hạng lại cũng phải tốt hơn lúc chưa xếp hạng, giúp giảm thiểu thời gian và công sức tìm kiếm của người dùng.

Yêu cầu về giao diện:

Trong việc phát triển phần mềm, xây dựng giao diện tương tác người máy là hết sức quan trọng. Giao diện cần đảm bảo tính đơn giản, thuận tiện, giúp người dùng dễ dàng sử dụng và tra cứu.

II.Phân tích hệ thống:

2.1.Biểu đồ phân rã chức năng:

Hình 7 – Mô hình phân rã chức năng

Như đã trình bày ở trên, hệ thống tìm kiếm được xây dựng thử nghiệm dựa trên máy tìm kiếm Nutch. Các chức năng thu thập tài liệu và lập chỉ mục cho tài liệu được Nutch cung cấp sẵn, đồ án ở đây chỉ nghiên cứu tích hợp chức năng xếp hạng lại kết quả tìm kiếm vào bên trong chức năng tìm kiếm và xếp hạng kết quả của Nutch.

2.2.Mô hình hoạt động của chức năng tìm kiếm và xếp hạng kết quả:

Hình 8 – Mô hình hoạt động của chức năng tìm kiếm và xếp hạng kết quả

Trong pha xếp hạng lại kết quả tìm kiếm cho phép người dùng cấp cao lựa chọn cách thức xếp hạng lại kết quả tìm kiếm:

• Không xếp hạng lại kết quả tìm kiếm (adsbygoogle = window.adsbygoogle || []).push({});

• Xếp hạng lại dựa trên phương pháp hướng ngữ cảnh truy vấn

• Xếp hạng lại dựa trên phương pháp hướng phản hồi người dùng

• Xếp hạng lại bằng cả 2 phương pháp (hướng phản hồi người dùng trước, hướng ngữ cảnh truy vấn sau)

2.3.Phân tích hệ thống về mặt cơ sở dữ liệu:

Cơ sở dữ liệu bên trong hệ thống khá đơn giản, bao gồm 5 bảng phục vụ cho mục đích xếp hạng lại kết quả tìm kiếm:

Bảng queries:

No Tên trường Kiểu

dữ liệu

Kích thước

Miêu tả

1 id int 11 Khóa của bảng

2 session_id text Mã phiên người dùng

do hệ thống sinh ra cho từng phiên tìm kiếm của người dùng

3 ip_address char 15 Địa chỉ IP của người

dùng

4 query_content text Nội dung truy vấn do

người dùng nhập vào

Bảng hit_matrix:

No Tên trường Kiểu

dữ liệu

Kích thước

Miêu tả

1 id int 11 Khóa của bảng

2 phrase char 100 Cụm từ thường xuyên

được tách ra trong pha OFSD

3 url_hit text Địa chỉ IP của người

Bảng phrases:

No Tên trường Kiểu

dữ liệu

Kích thước (adsbygoogle = window.adsbygoogle || []).push({});

Miêu tả

1 id int 11 Khóa của bảng

2 content text Nội dung cụm từ thường

xuyên

3 phrase_index int 11 Thứ tự giao dịch mà cụm

từ lần đầu xuất hiện

4 num_of_occurences int 11 Số lần xuất hiện của cụm

từ

Bảng links:

No Tên trường Kiểu

dữ liệu

Kích thước

Miêu tả

1 id int 11 Khóa của bảng

2 phrase1 text Nội dung cụm từ thứ

nhất P1

3 phrase2 text Nội dung cụm từ thứ

hai P2

4 link_index int 11 Thứ tự giao dịch mà

cạnh được khởi tạo

5 num_of_occurences int 11 Số lần xuất hiện của

Bảng ofsd_information:

No Tên trường Kiểu

dữ liệu

Kích thước

Miêu tả

1 id int 11 Khóa của bảng

2 current_transaction_index int 11 Thứ tự giao dịch hiện tại

3 last_prune_index int 11 Thứ tự giao dịch lần

cuối gọi hàm prune() (loại bỏ các cụm từ không cần thiết trong CS) (adsbygoogle = window.adsbygoogle || []).push({});

4 last_prune_num_of_phrases int 11 Số lượng cụm từ còn lại sau khi gọi hàm prune() lần cuối

5 save_time text Thời gian thực hiện xếp

dữ liệu của thuật toán OFSD

Các bảng ofsd_information, phrases và bảng links được sử dụng để lưu trữ dữ liệu cho thuật toán OFSD. Thực chất thuật toán OFSD là thuật toán chạy online, không cần lưu trữ dữ liệu, nhưng để đề phòng các trường hợp xảy ra (server bị mất điện, gặp lỗi, bảo trì…) nên ta cũng cần xây dựng phương án cho phép thuật toán chạy lại bình thường ngay sau khi khắc phục sự cố cho server.

Bảng queries được sử dụng chủ yếu phục vụ thuật toán Q-rank, giúp thuật toán xây dựng ngữ cảnh cho truy vấn (đi tìm tập kề và tập mở rộng cho truy vấn).

Bảng hit-matrix chủ yếu phục vụ thuật toán P2R, giúp thuật toán lưu trữ dữ liệu về số lần click tương ứng giữa truy vấn – url.

III.Thiết kế hệ thống:

3.1.Module xếp hạng lại kết quả tìm kiếm hướng ngữ cảnh truy vấn:

Hình 9 – Xếp hạng lại kết quả tìm kiếm hướng ngữ cảnh truy vấn

Khi người dùng đệ trình truy vấn, hệ thống sẽ tiến hành lưu trữ truy vấn vào trong Query Logs, đồng thời máy tìm kiếm cũng trả về một tập kết quả đã xếp hạng dựa trên sự tương thích với truy vấn. Từ Query Logs và nội dung truy vấn, hệ thống đi tìm ngữ cảnh của truy vấn và xây dựng được 2 tập Query extensionsAdjacent queries. Khai thác 2 tập này, kết hợp với tập kết quả đã xếp hạng, áp dụng thuật toán Q-rank hệ thống sẽ tiến hành xếp hạng lại kết quả tìm kiếm và hiển thị kết quả đó cho người dùng.

Q-rank algorithm: Input:

Initial query q // Truy vấn đầu vào q

Options op, c, n, u // Các giá trị

Ranked document set D = {d1,…,dc’} with c’ ≤ c //Tập kết quả đã xếp hạng

Output:

Re-ranked document set D’ = {d’1,…,d’c’} //Tập kết quả đã xếp hạng lại

Operation:

Construct Qext(q) and Qadj(q) from Q, q, op // Xây dựng 2 tập ngữ cảnh truy vấn

foreachd D

scored RS(d,q) // Tính điểm mới cho các tài liệu

if u = 0

// Xếp hạng lại mọi tài liệu trong D

D’ Sort (decending) the documents d by scored

else

// Xếp hạng lại một số tài liệu trong D

D’ Sort (decending) the documents du+1,…,dc’ by scored

endif returnD’

Trong thuật toán, giá trị op xác định kích thước của 2 tập QextQadj, giá trị c

xác định xem bao nhiêu tài liệu có thể được xếp hạng lại và giá trị n xác định xem có bao nhiêu tài liệu được xếp hạng lại được trả về (n ≤ |D| ≤ c). Giá trị u xác định bao nhiêu tài liệu thuộc tốp trong tập kết quả trả về được giữ nguyên thứ hạng (không cần tính lại điểm). Nếu u = 0 thì tất cả mọi tài liệu đều được tính lại điểm để xếp lại thứ hạng.

Tài liệu d được sử dụng để tính độ thích hợp với ngữ cảnh truy vấn có thể là đoạn mô tả (snippet) của kết quả, hoặc là toàn bộ văn bản tài liệu gốc. Trong cài đặt thử nghiệm, để đảm bảo độ chính xác cho việc xếp hạng lại kết quả, hệ thống sử dụng toàn bộ văn bản tài liệu gốc làm đầu vào cho thuật toán. (adsbygoogle = window.adsbygoogle || []).push({});

3.2.Module xếp hạng lại kết quả tìm kiếm hướng phản hồi người dùng:

Hình 10 – Xếp hạng lại kết quả tìm kiếm hướng phản hồi người dùng

Khi người dùng đệ trình truy vấn, truy vấn sẽ được tiến hành phân tích và sử dụng để cập nhật tập CandidateSet (tập các cụm từ ứng viên có khả năng là cụm từ thường xuyên). Từ tập CandidateSet ta có thể trích rút ra được tập cụm từ thường xuyên thỏa mãn điều kiện tần suất xuất hiện lớn hơn ngưỡng định trước. Kết hợp tập cụm từ thường xuyên này và nội dung truy vấn, ta tách truy vấn thành tập QFL gồm những cụm từ thường xuyên dài nhất có thể.

Khi người dùng nhấn lên liên kết tới các tài liệu gốc, dựa vào tập QFL ta sẽ tiến hành cập nhật ma trận cụm từ thường xuyên hit-matrix. Kết hợp ma trận cụm từ

Một phần của tài liệu Đồ án tốt nghiệp xếp hạng lại kết quả trả về từ máy tìm kiếm (Trang 26)