4.1. Tính toán PageRank trong Vinahoo
Trong [1], tác giả đã trình bày kỹ về cấu trúc, CSDL, mã nguồn của máy tìm kiếm Vinahoo. Ở đây, chúng tôi tập trung trình bày về module đánh chỉ số trong đó thực thi tính toán PageRank.
4.1.1. Mô hình thực thi của module đánh chỉ số
Trong máy tìm kiếm Vinahoo, quá trình tính toán PageRank cho các trang web được tích hợp trong module index. Đầu tiên module này sẽ tiến hành quá trình crawler để tải nội dung các trang web. Quá trình này có tương tác với các đối tượng chính là Internet, hệ quản trị cơ sở dữ liệu SQL và cơ sở dữ liệu chứa các file nhị phân tạm.
Sau đó, quá trình index sẽ tiến hành đánh chỉ số ngược cho các url mới tải về và lưu trong các cấu trúc dữ liệu thuận tiện cho việc tìm kiếm các url theo từ khóa của module tìm kiếm sau này, cũng như tính giá trị PageRank cho các trang mới này. Quá trình này sẽ sử dụng đầu vào là nội dung các trang web mới cập nhật trong file nhị phân tạm, cùng các thông tin đã có trong file nhị phân cũ. Nó thực hiện việc sắp xếp các url theo từ khóa rồi kết hợp với nội dung cũ của các url trong file nhị phân, và cuối cùng là tính hạng cho các trang Web dựa vào các liên kết giữa các trang.
4.1.2. Quá trình tính toán PageRank trong Vinahoo 4.1.2.1. Cấu trúc hàng đợi các url trong Vinahoo
Vinahoo sử dụng một cấu trúc dữ liệu bảng băm để làm hàng đợi lưu các url cần được index. Lý do vì cấu trúc bảng băm rất thuận tiện cho việc tìm kiếm một phần tử trong danh sách. Vì vậy quá trình kiểm tra một URL đã có mặt trong hàng đợi hay chưa là rất dễ dàng. Các URL trong hàng đợi được nhóm theo site, các url thuộc cùng một site được nhóm vào một danh sách FIFO gọi là CSiteUrls. Việc nhóm các URL theo site có tác ưu điểm là làm giảm việc xử lý các tên miền DNS, giảm số lần phải kết nối tới server, cũng như làm giảm số lần phải duyệt file robots.txt. Do đó làm giảm đáng kể thời gian duyệt Web. Khi có một url thuộc vào một site cần đưa vào hàng đợi, url đó được thêm vào cuối danh sách url của site nó thuộc vào. Toàn bộ hàng đợi là một bảng băm các CsiteUrls và có một con trỏ trỏ tới site hiện tại đang được duyệt.
Khi cần lấy ra một url để duyệt tiếp, url ở đỉnh danh sách của site hiện tại sẽ được trích ra. Cấu trúc của hàng đợi này như sau:
Hình6: Cấu trúc hàng đợi CSiteQueue trong Vinahoo
Trong đó: mỗi CsiteUrls là một danh sách một chiều các mảng chứa url thuộc về cùng một site. Và CurlLinks là một mảng gồm 100 url liên tiếp.
Hình7: Cấu trúc một phần tử CSiteUrl
4.1.2.2. Qúa trình tính toán PageRank trong Vinahoo
Đối với máy tìm kiếm Vinahoo, sau khi đánh chỉ mục các trang Web trong cơ sở dữ liệu, quá trình tính toán PageRank được thực hiện. Trong Vinahoo, đại lượng PageRank được coi như chính giá trị hạng và giá trị PageRank được lấy trực tiếp để làm tiêu chí hiển thị có thứ tự các trang ra màn hình cho người dùng. Công thức tính PageRank được sử dụng là công thức tính PageRank đơn giản. Các trang được tính PageRank lần lượt, giá trị PageRank được lưu vào file nhị phân. Hạng trang trong Vinahoo được tính theo công thức đệ qui. Hàm thực hiện PageRank là: CalsRanks(
CSQLDatabase *database)
4.1.2.3. Nhu cầu đẩy nhanh tốc dộ tính toán PageRank
Như đã đề cập ở các chương trước, việc xếp hạng các trang Web trong CSDL là một bộ phận rất quan trọng trong một hệ thống tìm kiếm. Chất lượng của module này sẽ ảnh hưởng trực tiếp tới các bước sau của quá trình tìm kiếm. Một trong những tính chất quan trọng nhất của module này là tính hiệu quả về thời gian. Nếu quá trình tính PageRank không đủ nhanh, thì sẽ làm gia tăng thời gian chết của các bộ phận khác trong máy tìm kiếm. Như vậy hệ thống tìm kiếm sẽ không cung cấp được chất
m_current
CSiteUrls CSiteUrls ... CSiteUrls
m_last m_first
CUrlLinks CUrlLinks ... CUrlLinks
lượng tìm kiếm tốt cho người dùng. Việc nâng cao được tốc độ tính toán PageRank cũng có tác dụng tăng thêm mức độ tính toán các vectơ thành phần, hướng tới việc xếp hạng các trang Web quan tâm tới các tiêu chí của người dùng.
4.2.3. Đề xuất giải pháp
4.2.3.1. Cài đặt Modified Adaptive PageRank
Phần này trình bày các đề xuất cài đặt thuật toán tính hạng Modified Adaptive PageRank trên máy tìm kiếm Vinahoo. Hiện tại, trong modul index của Vinahoo chỉ cài đặt thuật toán tính PageRank đơn giản. Chúng tôi tiến hành thay modul tính toán PageRank bằng modul tương ứng với thuật toán Modified Adaptive PageRank, vì một số lý do sau:
- Modified Adaptive PageRank được phát triển dựa trên nền của thuật toán PageRank - thuật toán đã được cài đặt trong phần mềm Vinahoo. Khả năng tích hợp Modified Adaptive PageRank vào Vinahoo có độ thành công cao.
- Modified Adaptive PageRank đẩy mạnh tốc độ tính toán, giảm tính toán dư thừa.
Để tận dụng tối đa các lớp sẵn có của Vinahoo[1], chúng tôi [2] không xây dựng ma trận An x n như trong lý thuyết, mà vẫn áp dụng công thức đệ qui nhưng đưa thêm vào phương pháp Modified Adaptive PageRank.
Để đánh dấu sự hội tụ của một trang, chúng ta có hai cách:
- Cách thứ nhất: Thêm thuộc tính cho UrlRank cùng với tách các Url đã hội tụ- chưa hội tụ ra hai file riêng biệt khi lưu trữ.
- Cách hai: Khi lưu trữ sẽ lưu thêm thuộc tính hội tụ converged bằng 1 nếu hội tụ, bằng 0 nếu ngược lại.
Qua so sánh ưu nhược điểm của từng cách, chúng tôi thấy rằng việc lưu hạng của các trang ra hai file có vẻ sẽ tíết kiệm bộ nhớ hơn là lưu trữ thêm thuộc tính hội tụ.
Tuy nhiên, khilưu trữ chúng ta cần lưu trữ toàn bộ PageRank của các URL theo thứ tự lưu trữ là urlID, điều đó giúp quá trình đọc và ghi dữ liệu rất thuận tiện và đơn giản.
Do vậy, nếu lưu theo hai file khác nhau lại cần có thông số urlID đi kèm cùng với mỗi giá trị RageRank. Điều đó không hề tíết kiệm bộ nhớ, tính toán không đơn giản hơn đồng thời cũng không tận dụng tốt nhất mã nguồn hiện có của Vinahoo.
Do vậy, chúng tôi chọn cách thêm một thuộc tính đánh dấu sự hội tụ của một UrlRank và khi lưu PageRank của các Url ta sẽ lưu thêm giá trị converged - để đánh dấu nếu giá trị hạng của trang đó đã hội tụ.
nếu giá trị PageRank của trang đã hội tụ ngược lại
4.2. Kết quả thực nghiệm và đánh giá
a. Cách thức tiến hành thực nghiệm
Thực nghiệm được tiến hành với máy tìm kiếm Vinahoo, trên máy tính cấu hình Pentium 4HT 3.0GHz, 512MB RAM.
Các thực nghiệm được tiến hành trên môi trường Internet thực sự, với các trang Web được lấy từ website http://www.ets.org/ (đây là trang chủ của tổ chức giáo dục phụ trách thi chứng chỉ tiếng Anh TOEFL). Sau khi crawl dữ liệu, cơ sở dữ liệu lưu trữ 2368 trang Web với tổng số liên kết là 37490. Các thuật toán được thử nghiệm là PageRank bình thường, MAP và CCP.
b. Kết quả thử nghiệm
Sau đây là một số kết quả chạy thử nghiệm chương trình, các so sánh về thời gian và số vòng lặp chi phí được chọn sau khi chia trung bình của 3 lần thử nghiệm đối với mỗi thuật toán.
1 Converged ⎧0
= ⎨⎩
2.59
1.65
0 0.5 1 1.5 2 2.5 3 Thời gian(s)
PageRank MAP CCP
Thuật toán
Thời gian tính toán PageRank
Hình 8: Biểu đồ thể hiện thời gian tính toán PageRank của 3 thuật toán
Qua biểu đồ trên ta thấy thời gian tính toán PageRank theo thuật toán MAP đã giảm đi được 36% so với thuật toán toán PageRank thông thường.
Tiến hành thử nghiệm các câu truy vấn đối với 3 thuật toán, kết quả nhận được sau hai câu truy vấn: “TOEFL” và “TEST” được cho trong bảng dưới.
PageRank MAP
TOEFL
1 ets.org/stoefl.html ets.org/stoefl.html 2 ets.org/ellrsc/css/twocolumns.css ets.org/ellrsc/css/twocolumns.css 3 ets.org/toefl/contact.html ets.org/toefl/contact.html
4 ets.org/ell/testpreparation/toeflindex.html ets.org/ell/testpreparation/toeflindex.html
5 ets.org/itp/ ets.org/itp/
6 ets.org/toefl/nextgen/index.html ets.org/toefl/nextgen/index.html 7 ets.org/legal/copyright.html ets.org/legal/copyright.html 8 ets.org/scoreitnow/index.html ets.org/scoreitnow/index.html 9 ets.org/itp/academics/ ets.org/itp/academics/
10 ets.org/criterion/ell/academics/index.html ets.org/ell/testpreparation/toefl/
TEST
1 ets.org/ell/testpreparation/toeflindex.html ets.org/ell/testpreparation/toeflindex.html 2 ets.org/etseurope/testinfo.html ets.org/etseurope/testinfo.html
3 ets.org/praxis/prxdsabl.html ets.org/praxis/prxdsabl.html 4 ets.org/praxis/prxorder.html ets.org/praxis/prxorder.html
10
17
0 2 4 6 8 10 12 14 16 18 Số vòng lặp
PageRank MAP CCP Thuật toán
Vòng lặp tính toán PageRank
Hình 9: Biểu đồ thể hiện số vòng lặp cần thiết tính toán PageRank của 3 thuật toán
Bảng 7. Kết quảnhận được đối với hai truy vấn “TOEFL” và “TEST”ứng với các thuật toán