Tải bản đầy đủ (.docx) (34 trang)

TÌM HIỂU VÀ CÀI ĐẶT CÁC THUẬT TOÁN XẾP HẠNG TRANG WEB

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (590.02 KB, 34 trang )

Tìm hiểu và cài đặt các thuật toán xếp hạng trang web
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
CAO HỌC CÔNG NGHỆ THÔNG TIN QUA MẠNG
CƠ SỞ DỮ LIỆU NÂNG CAO
BÀI THU HOẠCH:
TÌM HIỂU VÀ CÀI ĐẶT CÁC THUẬT TOÁN
XẾP HẠNG TRANG WEB
Giảng viên:
PGS. TS. Đỗ Phúc
Học viên thực hiện:
Huỳnh Tuấn Anh
CH1101004
Khóa 6
TpHCM, 08/2012
GV: PGS. TS. Đỗ Phúc HVTH: Huỳnh Tuấn Anh
Tìm hiểu và cài đặt các thuật toán xếp hạng trang web
Lời cám ơn.
Em xin chân thành cám ơn TS. Đỗ Phúc đã tận tình hướng dẫn, chỉ bảo chúng em trong
suốt thời gian học chuyên đề này.
Xin chân thành cám ơn quý thầy cô trong Trường Đại Học Công Nghệ Thông Tin, Đại
Học Quốc Gia Tp.HCM đã tận tình giảng dạy, trang bị cho em những kiến thức quý báu, tạo
mọi điều kiện tốt cho chúng em học tập và nghiên cứu.
Xin chân thành cám ơn gia đình và bạn bè đã ủng hộ, giúp đỡ và động viên em trong
thời gian học tập và nghiên cứu.
Mặc dù đã cố gắng hoàn thành bài luận nhưng chắc chắn không tránh khỏi thiếu sót. Em
kính mong nhận được sự thông cảm và tận tình chỉ bảo của quý thầy cô.
Học viên thực hiện
Huỳnh Tuấn Anh
TpHCM, 08/2012
GV: PGS. TS. Đỗ Phúc HVTH: Huỳnh Tuấn Anh
Tìm hiểu và cài đặt các thuật toán xếp hạng trang web


Mục Lục
GV: PGS. TS. Đỗ Phúc HVTH: Huỳnh Tuấn Anh
Tìm hiểu và cài đặt các thuật toán xếp hạng trang web
Chương 1: Thuật toán PageRank
I. Giới thiệu về PageRank:
1.1. Định nghĩa:
PageRank hay Ranking viết tắt là PR tạm dịch là thứ hạng trang. Khi nói đến
PageRank người ta thường nghĩ đến ngay Google PageRank. Đó là một hệ thống xếp hạng
trang Web của các máy tìm kiếm nhằm sắp xếp thứ tự ưu tiên đường dẫn URL trong trang
kết quả tìm kiếm.
PageRank™ là một thương hiệu của Google, được phát triển ở Đại học Stanford bởi
Larry Page và Sergey Brin (2 nhà đồng sáng lập Google Inc) trong một dự án về công cụ
tìm kiếm năm 1995.
PageRank là chỉ số xếp hạng của một trang web theo cách nhìn của Google có giá trị
thay đổi từ 0 đến 10 (0 là không quan trọng chút nào và 10 là rất, rất quan trọng).
Chỉ số PageRank của một website nào đó không chỉ phụ thuộc vào số liên kết ngược
(BackLink) tới website đó, mà còn nó còn dựa vào mức độ quan trọng của các liên kết
ngược đó. Nói một cách khác, chỉ số PageRank của một website nào đó là kết qủa bầu chọn
của tất cả các trang web khác trên toàn thế giới WWW cho website đó về mức độ quan
trọng của trang. Mỗi liên kết ngược là 1 phiếu bầu. Các phiếu bầu này có mức độ ảnh hưởng
khác nhau, sự khác nhau đó phụ thuộc vào chất lượng (hay tính quan trọng) của mỗi trang
đặt liên kết ngược. Website nào có chỉ số PageRank cao thì chứng tỏ đó là website chất
lượng quan trọng (High-quality, Important).
Google kiểm tra số lần mà từ khóa xuất hiện trên trang và xem xét tất cả các khía
cạch khác (Người ta thường gọi là yếu tố thứ n+1, vì Google từ lâu vẫn giấu kín thuật
toán xếp hạng trang web của mình và tất cả những gì mọi người biết là một điểm khá chung
chung: Nếu trang web của bạn càng được nhiều trang khác chỉ đến thì trang của bạn 'có lẽ'
sẽ được xếp hạng cao hơn.) về nội dung của trang (và cả nội dungtìm kiếm tốt nhất cho
người dùng của các trang liên kết tới nó) để xác định kết quả.
Kết luận, Google PageRank là hệ thống kiểm định giá trị liên kết nhận được, dựa vào

số lượng và chất lượng liên kết, để quyết định tầm quan trọng của trang web. Ngoài ra
PageRank còn tính dựa trên những yếu tố khác mà Google không công khai (vì e ngại
webmaster sẽ “chạy đua PageRank” một cách không công bằng).
1.2. Những lợi ích của PageRank:
Google PageRank hiện nay được coi là chỉ số đáng tin cậy nhất đánh giá giá trị mỗi
trang web. Một trang web có chỉ số Google PageRank cao sẽ đem lại ấn tượng đáng tin cậy
GV: PGS. TS. Đỗ Phúc 4 HVTH: Huỳnh Tuấn Anh
Tìm hiểu và cài đặt các thuật toán xếp hạng trang web
cho khách truy cập, điều này đặc biệt có ý nghĩa với các website kinh doanh thương mại
điện tử.
Google PageRank ảnh hưởng trực tiếp tới vị trí hiển thị của mỗi trang web khi cạnh
tranh thứ hạng hiển thị trong danh sách kết quả tìm kiếm của Google. Nếu bạn muốn
website của mình tăng thứ hạng trong danh sách kết quả tìm kiếm của Google, hãy nâng cao
Google PageRank cho các trang web trong website của bạn.
Google PageRank là một công cụ hỗ trợ các webmaster quản trị website. Đồng thời,
một trang web có Google PageRank cao phần nào chứng minh năng lực quản trị tốt của
webmaster website đó.
1.3. Làm thế nào để xem Google PageRank của một trang web?
Bạn có thể sử dụng Google Toolbar – thanh công cụ hỗ trợ người dùng duyệt web.
Hoặc bạn có thể kiểm tra Google PageRank trực tuyến tại các máy chủ của Google.
1.4. Làm thế nào để tăng Google PageRank?
Về cơ bản, theo các chuyên gia của Google: "Không được sử dụng các phương pháp
giả tạo, hãy tạo ra các trang web cho mọi người chứ không phải cho các công cụ tìm kiếm".
Cấu trúc website, cấp bậc cần rõ ràng, nội dung thông tin cần phong phú, hữu ích.
Website không được chứa các liên kết lỗi, các lỗi HTML, lỗi câu lệnh.
Đăng ký website vào Open Directory Project và Yahoo Directory!, cũng như các
website chất lượng khác.
II. Thuật toán PageRank
Page và Brin đã đưa ra một thuật toán nhằm giúp cho công việc tính toán hạng trang.
Thuật toán này dựa trên ý tưởng rằng: nếu có links từ trang A đến trang B thì có thể coi như

là một sự tiến cử của trang A đối với trang B. Điều này cũng có thể thấy được một cách trực
quan rằng nếu một trang Web nào đó được liên kết với trang Yahoo thì chắc chắn sẽ quan
trọng hơn nêu nó được liên kết với một trang vô danh nào đó. Giả sử ta có một tập các trang
Web với các liên kết giữa chúng, khi đó ta có một đồ thị với các đỉnh là các trang Web và
các cạnh là các liên kết giữa chúng.
2.1. Thuật toán PageRank:
Trước tiên chúng ta giới thiệu một định nghĩa về PageRank thể hiện những điều ta
xem xét ở trên và bàn về khía cạnh tính toán nó trước khi đạt được một phương pháp có thể
được áp dụng trong thực tế. Công việc được tiến hành như sau:
GV: PGS. TS. Đỗ Phúc 5 HVTH: Huỳnh Tuấn Anh
Tìm hiểu và cài đặt các thuật toán xếp hạng trang web
+ Đánh số các trang Web có được từ 1,2 … đến n.
+ Gọi N(i) là số liên kết ra ngoài của trang thứ i.
+ Gọi B(i) là số các trang Web có liên kết đến trang i.
Giả sử rằng các trang Web tạo thành một đồ thị liên thông. Khi đó với công thức PageRank
thô, gọi r(i) là hạng tương ứng với trang i:


=
)(
)(/)()(
iBj
jNjrir
Ta có thể viết các phương trình này dưới dạng r =A
T
r trong đó:
+ r là vector [r(1),…,r(n) ] trong đó các thành phần tương ứng là các hạng của các trang
Web.
+ A là ma trận kích thước n.n trong đó các phần tử
jij

Na /1=
nếu có liên kết từ i đến j, và a
ij
= 0 nếu ngược lại. Như vậy có thể thấy vector PageRank r chính là vector riêng của ma trận
A
T
.
Như ta đã thấy ở trên việc tính toán mức độ quan trọng hay hạng trang theo thuật
toán PageRank có thể được thực hiện thông qua việc phân tích các liên kết của trang Web
đó. Nếu nó có những liên kết quan trọng trỏ tới thì rất có thể nó là quan trọng. Tuy nhiên
việc tính toán hạng trang lại phụ thuộc vào việc biết được hạng của các trang Web có liên
kết tới nó, và như vậy muốn tính hạng trang này lại phải xem trang liên kết tới nó có hạng là
bao nhiêu và có thể gây ra việc lặp vô hạn rất khó để giải quyết. Điều này được thực hiện
khi ta đưa về các vector hạng, ta có thể tính toán được các hạng trang thông qua việc tính
toán vector riêng của ma trận A
T
. Trong đại số tuyến tính có khá nhiều các phương pháp có
thể tính được vector riêng của ma trận, tuy nhiên có một phương pháp khá tiện và có thể
được áp dụng vào việc tính toán vector PageRank là phương pháp luỹ thừa. Các công việc
tính toán sẽ được làm như sau:
1. s← vector bất kỳ
2. r←A
T
s
3. Nếu
esr <−
thì kết thúc, khi đó ta nhận được r là vector PageRank.
sr −
phải tuân theo một chuẩn nào đó như chuẩn Euclide hay chuẩn bình phương.
4. Nếu không thì r←s, quay lại bước 2.

Trong thực tế không phải lúc nào chúng ta cũng gặp trường hợp các trang Web lập
thành một đồ thị liên thông. Trên WWW có rất nhiều các trang Web mà chúng không hề có
trang nào liên kết tới hay không liên kết tới trang Web nào khác cả. Đối với những trang
không có liên kết tới trang khác khi tính toán PageRank của nó sẽ rất khó được tính toán do
tập hợp các liên kết ra ngoài là N(i)=0, do vậy sẽ không tính được PageRank. Điều này có
thể làm cho quá trình tính toán gặp nhiều khó khăn. Một điều nữa là bất kỳ trang web nào ra
GV: PGS. TS. Đỗ Phúc 6 HVTH: Huỳnh Tuấn Anh
Tìm hiểu và cài đặt các thuật toán xếp hạng trang web
đời cũng đều có ý nghĩa của nó, không có trang nào có ý nghĩa (hạng) bằng 0 cả, cho dù
trang đó của cá nhân thì nó cũng có ý nghĩa riêng cho người đó. Do vậy cần phải cải tiến
công thức PageRank cho phù hợp với thực tế. Công thức PageRank được sửa đổi có dạng
như sau:


−+∗=
i
Bj
ndjNjrdir /)1()(/)()(
Việc thêm “hệ số hãm” d (thường được chọn d=0.85) có ý nghĩa như sau: bổ sung
thêm giá trị PageRank vào cho các trang không có link ra ngoài. Ta cũng nhận thấy khi d=1
thì công thức sẽ quay lại trường hợp PageRank thô.
Page và Brin [2] cũng đã chỉ ra rằng các giá trị này có thể hội tụ khá nhanh, trong
vòng khoảng 50 vòng lặp chúng ta có thể nhận được kết quả với sai số không lớn lắm.
2.2. Thuật toán Adaptive PageRank:
PageRank là một trong những thuật toán thịnh hành nhất và có hiệu quả nhất trong
công việc tìm kiếm các thông tin trên Internet hiện nay, và thuật toán đó cũng đang được
tìm kiếm trong máy Google. Như chúng ta đã xem xét ở trên, PageRank sẽ tìm cách đánh
giá hạng các trang thông qua các liên kết giữa các trang Web. Việc đánh giá này có thể
được thực hiện thông qua việc tính toán vector riêng của ma trận kề biểu diễn cho các trang
Web. Nhưng với kích cỡ khổng lồ của mình, WWW có thể làm cho công việc tính toán này

tốn rất nhiều ngày. Cần phải tăng được tốc độ tính toán này lên vì hai lý do:
+ Cần có được kết quả sớm để đưa được những thông tin sang các bộ phận khác trong cùng
máy tìm kiếm, việc tính toán nhanh vector PageRank có thể giúp giảm thiểu thời gian chết
của những bộ phận đó.
+ Hiện nay, các phương pháp nghiên cứu mới đều tập trung vào việc đánh giá dựa trên
những tiêu chí do cả người dùng quan tâm, do vậy cần phải tính toán nhiều vector
PageRank, mỗi vector hướng tới một tiêu đề khác nhau. Việc tính toán nhiều vector này
cũng đòi hỏi mỗi vector thành phần được tính toán nhanh chóng.
Việc tăng cường tốc độ tính toán có thể vấp phải nhiều khó khăn kích thước của
WWW. Vì vậy trong [3], đã giới thiệu một cách để giúp đỡ cho quá trình tính toán được
nhanh hơn. Phương pháp này xuất phát từ ý tưởng sau: khi cài đặt chương trình và chạy, các
trang Web có tốc độ hội tụ không giống nhau. Vậy chúng ta có thể tận dụng những trang hội
tụ trước và kết quả của những trang đã hội tụ đó có thể không cần phải tính lại nữa. Như vậy
ta có thể giảm được những tính toán dư thừa và làm tăng được hiệu suất tính toán của hệ
thống. Thực sự như vậy thuật toán này là một cải tiến của thuật toán PageRank, thuật toán
này có thể làm tăng được tốc độ tính toán bằng cách giảm đi những tính toán dư thừa.
GV: PGS. TS. Đỗ Phúc 7 HVTH: Huỳnh Tuấn Anh
Tìm hiểu và cài đặt các thuật toán xếp hạng trang web
2.2.1. Adaptive PageRank:
Giả sử việc tính toán vector PageRank của chúng ta đã được thực hiện đến vòng lặp
thứ k. Ta cần tính toán
)()1(
.
kk
rAr =
+
(*)
gọi C là tập hợp các trang Web đã hội tụ đến mức được chấp nhận nào đó và N là tập các
trang Web chưa hội tụ. Khi đó ta chia ma trận A ra làm hai ma trận con, A
N

cỡ m.n là ma
trận kề đại diện cho những liên kết của m trang chưa hội tụ, còn A
c
cỡ (n-m).n là ma trận kề
đại diện cho những liên kết của (n-m) trang đã hội tụ.
Tương tự, ta cũng chia vactor r
(k)
ra thành hai vector
)(k
N
r
tương ứng với những thành
phần của r
(k)
đã hội tụ còn
)(k
C
r
tương ứng với những thành phần của r
(k)
chưa hội tụ.
Vậy ta có thể viết lại ma trận A và r
(k)
dưới dạng như sau:









=
)(
)(
)(
k
C
k
N
k
r
r
r









=
C
N
A
A
A
ta có thể viết lại phương trình (*) như sau:

















=








+
+
)(
)(
)1(

)1(
.
k
C
k
N
C
N
k
C
k
N
r
r
A
A
r
r
Do những thành phần của
k
C
r
đã hội tụ do vậy ta không cần tính
1
+
k
C
r
nữa và như vậy
việc tính toán sẽ giảm đi do không phải tính toán

)(k
C
rA
nữa.
)()1(
)1(
*
k
C
k
C
k
NN
k
N
rr
rAr
=
=
+
+
2.2.2. Những cải tiến của phương pháp này:
Theo [3], việc giảm những tính toán của phương pháp PageRank giúp chúng ta có
thể tính toán nhanh hơn tuy nhiên đây chưa phải là đến đích cuối cùng cần đạt được.
2.2.2.1 Filter-Based Adaptive PageRank:
Vì ma trận A có kích cỡ cực lớn nên việc sắp xếp lại ma trận A để tạo ma trận con
A
N
sẽ khó có thể thực hiện được trong mỗi vòng lặp. Hơn nữa không có cách hiệu quả để
phớt lờ đi những đầu vào không cần thiết (những liên kết tới các trang đã hội tụ) do vậy

trong thực tế việc cài đặt thuật toán có thể được thực hiện như sau:
GV: PGS. TS. Đỗ Phúc 8 HVTH: Huỳnh Tuấn Anh
Tìm hiểu và cài đặt các thuật toán xếp hạng trang web
Do A
C
không được sử dụng trong việc tính toán PageRank nên ta có thể định nghĩa
một ma trận








=
0
'
N
A
A










=

k
C
k
C
r
r
0
. Với những định nghĩa này phương trình (*) có thể
được viết như sau:
k
C
kk
rrAr

+

=
+ )()1(
Những định nghĩa trên cũng có thể được mô tả theo một cách khác:
Định nghĩa ma trận A

như sau:







=
′′
ij
A
Ciif
A
0






=
′′
0
)(
Ciifr
r
k
k
C
Nghĩa là đối với ma trận A

nhận được thưa hơn rất nhiều so với ma trận A nên việc
tính toán sẽ trở nên nhanh hơn so với khi chúng ta sắp xếp lại ma trận đại diện cho các phần
tử đã hội tụ hay chưa hội tụ.
2.2.2.2 Modified Adaptive PageRank:
Trong thuật toán Adaptive PageRank tốc độ tính toán được tăng nhanh lên do đã
giảm đi được những tính toán dư thừa bằng cách không tính những giá trị đã hội tụ. Trong

[3] đã đưa ra những thử nghiệm tính toán dư thừa bằng cách không tính những giá trị đã hội
tụ.
Chúng ta có thể viết lại ma trận A một cách kỹ hơn như sau:








=
CCCN
NNNN
AA
AA
A
với A
NN
là ma trận kề đại diện cho những liên kết của các trang chưa hội tụ tới những trang
chưa hội tụ, A
CN
là ma trận kề đại diện cho những liên kết của các trang đã hội tụ tới những
trang chưa hội tụ và tương tự cho các phần tử khác A
NC
, A
CC
. Vì r
C
và A

NC
r
C
không thay đổi
sau vòng lặp thứ k vì chúng đã hội tụ, nên phương trình (*) có thể được viết lại:
)()()1( k
CCN
k
NNN
k
N
rArAr +=
+
Ma

trận

A

đã

được

chia

nhỏ

ra

đồng


thời

không phải

tính

lại

giá

trị

một

số
ma

trận

con

do

vậy

công việc

tính


toán

được

giảm

đi

đáng

kể.
2.3.
Topic-sensitive

PageRank
:
GV: PGS. TS. Đỗ Phúc 9 HVTH: Huỳnh Tuấn Anh
ngược lại
ngược lại
Tìm hiểu và cài đặt các thuật toán xếp hạng trang web
P
ageRank



phương

pháp

tìm


kiếm

hiện

đang

được áp

dụng

trên

máy

tìm

kiếm
Google.

Tuy

nhiên phương

pháp

này

chỉ


quan

tâm

đến

các

liên

kết

mà không

quan

tâm
đến

nội

dung

của

trang

Web




chứa liên

kết

đó,

do

vậy



thể

dẫn

tới

những

sai

lạc
trong thông

tin

tìm


kiếm

được.

Yêu

cầu

đặt

ra



cần

phải đưa

ra

một

phương

pháp


tốc

độ


nhanh

như

phương pháp

PageRank



lại



quan

tâm

đến

nội

dung

của trang
Web

thông


qua

"chủ

đề"

của

nó.

Hơn

nữa,

nếu khai

thác

được

mối

quan

tâm

của
người

dùng


đối

với các

trang

Web

trong

việc

tính

độ

phù

hợp

của

trang Web

với
câu

hỏi


người

dùng

thì

việc

đó

càng



ý nghĩa.

Taher

H.

Haveliwala

[5,6]

đề

xuất
phương pháp

mới


nhằm

đáp

ứng

yêu

cầu

trên,

đó



phương pháp

PageRank

theo
chủ

đề

(Topic

sensitive PageRank).


Các

tác

giả

sử

dụng

khái

niệm

"phạm

vi
ngữ
cảnh"

để

biểu

thị

mối

quan


tâm

của

người

dùng. Trong [4], thuật toán tìm kiếm trang
Web có nội dung tương tự cho một cách tiếp cận khác khi đề cập tới xem xét khía cạnh
nội dung trang Web trong bài toán tìm kiếm.
Thuật toán gồm hai bước được mô tả sơ bộ như dưới đây.
Tại bước đầu tiên, các trang Web trong cơ sở dữ liệu được phân thành các lớp
theo chủ đề
c
1
,c
2
, ,c
n
; gọi

T
j



tập

hợp

những


trang

Web

theo

chủ

đề

c
j
. Mỗi

lớp
tương

ứng

với

một

vector

PageRank

của chủ


đề



mỗi

thành

phần



giá

trị

PageRank
của mỗi

trang

trong

lớp.
Vector

PageRank

của


chủ

đề

được

tính

như

bình thường

tuy

nhiên

thay



sử

dụng
=[1/N], thuật toán sử dụng vector = trong đó:








=
j
jj
ij
Ti
TiT
v
0
||/1
Gọi là vector các từ khóa, gồm tất cả các từ khóa trong các tài liệu của các chủ đề;
D
jt
là số lần xuất hiện của từ khóa t trong tất cả các tài liệu của chủ đề c
j
.
Bước

thứ

hai

được

thực

hiện

trong


thời

gian

hỏi- đáp.

Giả

sử



truy

vấn

q,
gọi

q’



phạm

vi

ngữ cảnh

của


q

[4,

5].



tả



bộ

khái

niệm

phạm

vi ngữ

cảnh
như

sau.

Với


truy

vấn

thông

thường

(từ hộp

thoại)

thì

thì

q’

chính



q.

Trường

hợp
truy

vấn


q

được

đặt

bằng

cách



sáng

từ

khoá

q

trong

trang Web

u

thì

q’


sẽ

chứa

các

từ
khoá

trong

u

bao

gồm

cả q.

Sau

đó

tính

xác

suất


để

q’

thuộc

về

các

chủ

đề khác

nhau.
Sử

dụng

thuật

toán

phân

lớp

Bayes

với


(i)

Tập

huấn

luyện

gồm

những

trang

được
liệt

kê trong

các

chủ

đề;

(ii)

Đầu


vào



câu

truy

vấn

hoặc phạm

vi

ngữ

cảnh

của

câu
truy

vấn;

(iii)

Đầu

ra


là xác

suất

để

đầu

vào

thuộc

mỗi

chủ

đề.
GV: PGS. TS. Đỗ Phúc 10 HVTH: Huỳnh Tuấn Anh
Tìm hiểu và cài đặt các thuật toán xếp hạng trang web
Dưới

đây



một

số


công

thức

của

một

số

giá

trị

xác suất

nói

trên.

Gọi q
i



từ
khoá

thứ


i

trong

ngữ

cảnh q

. Với mỗi c
j,
xác suất đề q



c
j
là:
P(c
j
|q

) = ≈ P(c
j
).π.P(q
i

|c
j
)
Trong đó P(q

i

|c
j
) được tính từ vector các từ khóa
được xác định tại bước 1. Giá trị
P(c
j
) được xác định hoặc là các giá trị bằng nhau cho mọi chủ đề (các chủ đề đồng khả
năng) hoặc tính toán thống kê qua tham chiếu tới các trang Web thuộc mỗi chủ đề của tập
hợp người dùng.
Theo [5,6], với kí hiệu rank
jd
là hạng của văn bản d cho bởi vector PR(d, ) – vector
PageRank của chủ đề c
j
thì độ quan trọng s
qd
dựa theo câu truy vấn được tính toán như sau:
s
qd =

j
P(c
j
|q

).rank
jd
III. PageRank Example:

3.1. Example 1:
PageRank sau n bước lặp:
n A B C D E F G
0 0.150 0.150 0.150 0.150 0.150 0.150 0.150
1 0.150 0.214 0.214 0.214 0.214 0.214 0.214
2 0.150 0.214 0.214 0.241 0.241 0.241 0.241
3 0.150 0.214 0.214 0.241 0.241 0.241 0.241
PageRank:
Max: 0.241; Total: 1.541; Mean: 0.220
GV: PGS. TS. Đỗ Phúc 11 HVTH: Huỳnh Tuấn Anh
i
A
C
B
GFED
Tìm hiểu và cài đặt các thuật toán xếp hạng trang web
3.2. Example 2:
PageRank sau n bước lặp:
n A B C D E F G
0 0.150 0.150 0.150 0.150 0.150 0.150 0.150
1 0.405 0.405 0.405 0.150 0.150 0.150 0.150
2 0.839 0.405 0.405 0.150 0.150 0.150 0.150
3 0.839 0.405 0.405 0.150 0.150 0.150 0.150
PageRank:
Max: 0.839; Total: 2.248; Mean: 0.321
3.3. Example 3:
PageRank sau n bước lặp:
n A B C D E F G
0 0.150 0.150 0.150 0.150 0.150 0.150 0.150
1 0.235 0.469 0.469 0.193 0.193 0.193 0.193

GV: PGS. TS. Đỗ Phúc 12 HVTH: Huỳnh Tuấn Anh
A
C
B
GFED
A
C
B
GFED
Tìm hiểu và cài đặt các thuật toán xếp hạng trang web
2 0.416 0.577 0.577 0.283 0.283 0.283 0.283
10 0.919 1.386 1.386 0.534 0.534 0.534 0.534
20 1.070 1.630 1.630 0.610 0.610 0.610 0.610
52 1.107 1.689 1.689 0.629 0.629 0.629 0.629
100 1.107 1.689 1.689 0.629 0.629 0.629 0.629
PageRank:
Max: 1.689; Total: 7.000; Mean: 1.000
3.4. Example 4:
PageRank sau n bước lặp:
n A B C D E F G
0 0.150 0.150 0.150 0.150 0.150 0.150 0.150
1 0.277 0.277 0.277 0.277 0.277 0.277 0.277
2 0.386 0.386 0.386 0.386 0.386 0.386 0.386
10 0.833 0.833 0.833 0.833 0.833 0.833 0.833
20 0.967 0.967 0.967 0.967 0.967 0.967 0.967
48 1.000 1.000 1.000 1.000 1.000 1.000 1.000
100 1.000 1.000 1.000 1.000 1.000 1.000 1.000
PageRank:
GV: PGS. TS. Đỗ Phúc 13 HVTH: Huỳnh Tuấn Anh
A

C
B
GFED
Tìm hiểu và cài đặt các thuật toán xếp hạng trang web
Max: 1.000; Total: 7.000; Mean: 1.000
IV. Ưu điểm và nhược điểm của PageRank
4.1 Ưu điểm:
PageRank là một thuật toán tốt, tốc độ tìm kiếm rất nhanh, PageRank sẽ tính toán
một giá trị toàn cục cho tất cả các trang Web một cách độc lập với các câu truy vấn. Hơn
nữa quá trình tính toán lại được tiến hành một cách ngoại tuyến, nghĩa là tính toán trong cơ
sở dữ liệu của mình, do vậy sẽ đỡ mất thời gian. Đối với các câu truy vấn liên quan đến
khoa học hay nghiên cứu thì PageRank cho kết quả rất tuyệt vời vì những tài liệu này
thường được trích dẫn nhiều từ tài liệu khác.
Google nhấn mạnh rằng PageRank, được trao bằng sáng chế cho Đại học Stanford,
không phải là phương pháp duy nhất để xác định kết quả tìm kiếm. Thực vậy, Google cho
biết họ sử dụng kết quả của hơn 200 phương pháp khác nhau để đánh giá toàn thể cấu trúc
Web và xác định những trang nào là quan trọng nhất.
4.2 Nhược điểm:
Các vấn đề trên WWW không chỉ có về khoa học mà còn có nhiều chủ đề khác nữa,
do thuật toán PageRank không quan tâm đến nội dung của trang Web có chứa câu truy
vấn, nên đôi khi sẽ đưa ra những trang Web không phù hợp với yêu cầu của người dùng.
Hơn nữa, thuật toán này chỉ quan tâm đến các liên kết, vậy cứ trang nào có nhiều liên kết tới
thì trang đó có thể có thứ hạng cao. Điều này dẫn tới việc không chính xác thông tin, và có
thể có người thuê các trang Web danh tiếng liên kết đến trang Web của họ để họ được
hưởng chỉ số PageRank cao.
PageRank không tính đến độ tiếp cận thường xuyên và thời gian ở lại trang web của
người dùng.
PageRank của Google đánh giá độ quan trọng của một trang web dựa trên phương
pháp xử lí gọi là Thuật toán phân tích liên kết (Link Analysis Algorithm). Phương pháp này
đánh giá trang độ quan trọng của một trang web dựa trên những liên kết trên internet. Và

Google cho biết, "trang nào được chúng tôi đánh giá quan trọng sẽ được ưu tiên hiện trước
trong danh sách kết quả tìm kiếm. Chúng tôi luôn tìm cách đánh giá một cách hữu hiệu nhất
để tăng chất lượng kết quả tìm kiếm và tạo ra một sản phẩm có ích, và công nghệ PageRank
của chúng tôi sử dụng tính cộng đồng trên internet để xác định độ quan trọng của một trang
web."
Việc đánh giá thích đáng sự tìm kiếm trên internet rất quan trọng với những công ty
như Google, Yahoo và Microsoft bởi điều này cho phép những công ty tìm kiếm trực tuyến
hàng đầu này đặt quảng cáo của họ theo đúng như những gì người dùng tìm kiếm. Nhưng
Microsoft và những cộng sự cho rằng PageRank đã không làm tốt trong việc đánh giá độ
GV: PGS. TS. Đỗ Phúc 14 HVTH: Huỳnh Tuấn Anh
Tìm hiểu và cài đặt các thuật toán xếp hạng trang web
quan trọng của trang web do kết quả của PageRank có thể bị lợi dụng và thổi phồng một
cách không chính xác.
Ví dụ như trang Adobe.com được đánh giá rất cao bởi PageRank bởi trang này được
liên kết đến rất nhiều trên internet để tải về các sản phẩm Acrobat Reader và Flash Player.
"Tuy nhiên, người dùng internet không thực sự đến trang này một cách thường xuyên và nó
không thể được đánh giá cao hơn những trang như MySpace.com và Facebook.com."
Microsoft cho biết.
Chương 2: Hypertext Induced Topics Search (HITS)
I. Mô tả thuật toán HITS:
Thuật toán này dựa trên việc lựa chọn các trang Web và kết hợp chúng thành một đồ thị
các trang Web. Sau đó phân tích các liên kết trong đồ thị con đó để xác định được trang nào
là trang “authority”, trang nào là trang “hub” đối với truy vấn được đưa vào. Tập hợp các
trang Web này có thể được chọn bằng cách như sau: đầu tiên chọn một số trang web bất kỳ
có chứa xâu ký tự của truy vấn gọi là tập mở đầu, sau đó cứ loang dần ra những trang gần
kề, nghĩa là những trang có liên kết với những trang trong tập mở đầu, công việc kết thúc ta
sẽ nhận được một tập hợp các trang Web. Việc loang này sẽ được dừng khi vượt quá giới
hạn nào đó: như là kích cỡ cho trước của tập hợp các trang Web kết quả, hoặc nguồn các
trang trong tập mở đầu không còn nữa. Gọi tập kết quả nhận được là S.
+ Đánh số các trang trong tập kết quả S từ 1 đến n.

+ Gọi B(i) là số trang Web có liên kết tới trang i.
+ Gọi F(i) là số trang Web được trang i trỏ tới.
Các chỉ số “authority” a
i
và “hub” h
i
cho mỗi trang Web sẽ được tính trong các bước I và
O. Trong bước I: chỉ số a
i
của trang i sẽ được tính bằng tổng các chỉ số “hub” của những
GV: PGS. TS. Đỗ Phúc 15 HVTH: Huỳnh Tuấn Anh
Tìm hiểu và cài đặt các thuật toán xếp hạng trang web
trang trỏ tới i. Trong bước O: chỉ số h
i
của trang i sẽ được tính bằng tổng của các chỉ số
“authority” mà nó trỏ tới. Điều này phần nào thể hiện được ý tưởng ta nói ở trên về sự liên
quan giữa chỉ số “hub” và “authority”.
I:


=
i
Bj
ji
ha
O:


=
i

Fj
ji
ah
Trước tiên a
i
, h
i
sẽ được gán các giá trị bất kỳ sau đó các bước I, O sẽ được tính, quá
trình này sẽ được thực hiện cho đến khi các chỉ số a
i
và h
j
hội tụ.
Nếu ta gọi A là ma trận kề biểu diễn liên kết giữa các trang Web với a
ij
=1 nếu trang i
có liên kết đến trang j và bằng 0 nếu ngược lại. Như vậy các bước I và O có thể được viết lại
dưới dạng ma trận
a=Ah (1)
và h=A
T
a (2)
trong đó vector a=[a
1
,…,a
n
] có các thành phần đại diện cho các chỉ số “authority” của các
trang Web trong tập S còn vector h=[h
1
,…,h

n
] có các thành phần đại diện cho các chỉ số
“hub” của các trang Web trong tập S.
Từ (1) và (2) ta có thể thấy được a=AA
T
a và h=A
T
Ah nên vector a và h chính là các
vector riêng của ma trận AA
T
cùng ma trận A
T
A.
Thuật toán HITS dưới dạng mã giả như sau:
Cho 1 truy vấn tìm kiếm q, HITS xây dựng một tập hợp các trang web như sau:
1/ Dùng một search engine để tìm kiếm q.
2/ Lấy t (t=200 theo Kleinberg) trang webs có thứ hạng cao nhất. Tập các web này gọi là
Root Set W.
3/ Mở rộng W bằng cách lấy tất cả các trang web được bất kỳ một trang nào trong W trỏ
đến và bất kỳ một trang nào (d=50) trỏ đến một trang trong W. Tập các trang web này gọi là
Base Set W (1000-5000 trang).
4/ Mỗi trang web trong S được gán 1 authority score và 1 hub score, tất cả đều bằng 1.
5/ Xác định số phần tử n của S.
6/ Dùng đồ thị G=(V,E) để biểu diễn S, dùng ma trận kề L:







=
otherwise
Ejiif
L
ij
0
),(1
7/ Gọi authority score của trang i là a(i), và hub score của trang i là h(i)


=
i
Bj
ji
ha
GV: PGS. TS. Đỗ Phúc 16 HVTH: Huỳnh Tuấn Anh
Tìm hiểu và cài đặt các thuật toán xếp hạng trang web


=
i
Fj
ji
ah
Tất cả các a(i) sẽ được biểu diễn như các thành phần tương ứng thứ i trong vector cột a
a = (a(1),a(2), …,a(n))
T
Tương tự, vector cột h:
h = (h(1),h(2), …,h(n))
T

 a = L
T
h
h = La
8/ Ký hiệu a
k
và h
k
là vector authority và vector hub ở bước lặp thứ k
Cập nhật a
k
và h
k
:
a
k
= L
T
.L.a
k-1
, h
k
= L.L
T
.h
k-1
với: a
o
= h
o

= (1,…,1)
HITS-Iterate(G)
a
o
= h
o
= (1,…1);
k = 1;
Repeat
a
k
= L
T
.L.a
k-1;
h
k
= L.L
T
.h
k-1;
normalize a
k
;
normalize h
k
;
Until (a
k
và h

k
không còn thay đổi);
return a
k
và h
k
;
II. Argos - A Search Engine Interface:
2.1. Giới thiệu:
Argos là một Java based interface được thiết kế để cung cấp những phương thức cho
việc tìm kiếm trên internet thông qua search engine.
Website: />2.2. Những đặc trưng:
Dễ dàng sử dụng API. Bạn cung cấp một chuỗi truy vấn và sẽ được trả kết quả tìm
kiếm cho java.util.Iterator
Tiện lợi để mở rộng bằng các lớp đã được thiết kế.
GV: PGS. TS. Đỗ Phúc 17 HVTH: Huỳnh Tuấn Anh
Tìm hiểu và cài đặt các thuật toán xếp hạng trang web
Nhiều Search Engine được hỗ trợ trong Argos, bao gồm Blogdigger, Feedster,
Del.icio.us, Google, MSN và Yahoo.
Có thể kết hợp những kết quả tìm kiếm được từ nhiều Search Engine.
2.3. Status:
Phiên bản release gần đây nhất của Argos là 0.1 (April 2005), phiên bản này được
xem như là bản Alpha.
2.4. Terms of Use:
Argos có thể dùng dưới Apache Licence v2. Tuy nhiên mỗi search engine đều có
terms of use riêng.
2.5. Supported Search Engines:
2.5.1 Blogdigger:
Website: />Classname: org.jvnet.argos.blogdigger.BlogdiggerWebSearcher
Terms of Service: See for complete

details.
2.5.2 Del.icio.us:
Website:
Classname:
org.jvnet.argos.delicious.DeliciousPopularTagSearcher
org.jvnet.argos.delicious.DeliciousRecentTagSearcher
Terms of Service: See for complete details.
2.5.3 Feedster:
Website: />Classname: org.jvnet.argos.feedster.FeedsterSearcher
Tems of Service: See
for complete details.
2.5.4 Google:
GV: PGS. TS. Đỗ Phúc 18 HVTH: Huỳnh Tuấn Anh
Tìm hiểu và cài đặt các thuật toán xếp hạng trang web
Website: normal search: API information:
/>Classname: org.jvnet.argos.google.GoogleWebSearcher
You will need to create a Google API Key to use the Google Search.
The API key can be passed to the search object as follows:
Searcher searcher = new GoogleWebSearcher("api_key_string");
or
GoogleSearcher googleSearcher = new GoogleWebSearcher();
googleSearcher.setAppKey("api_key_string");
Tems of Service: See for complete
details.
2.5.5 MSN Search:
MSN Search is Microsoft's search engine.
Website:
Classname: org.jvnet.argos.msn.MSNWebSearcher
Terms of Service: />2.5.6 Yahoo:
Website: normal search: API information:

/>Classname: org.jvnet.argos.yahoo.YahooWebSearcher
You will need to create a Yahoo API Key to use the Yahoo Search. The API
key can be passed to the search object as follows:
Searcher searcher = new YahooWebSearcher("api_key_string");
or
YahooWebSearcher yahooSearcher = new YahooWebSearcher();
yahooSearcher.setAppKey("api_key_string");
Terms of Service: See for complete details.
2.6. Using Argos:
Thuận lợi của việc sử dụng Argos (so sánh với sử dụng mỗi search engines API) là
nó cung cấp sự phù hợp và dễ sử dụng API.
Một ví dụ cơ bản để sử dụng Argos như sau:
Tạo một instance của interface org.jvnet.argos.Searcher, mỗi search engine
được hỗ trợ sẽ có ít nhất một class implement từ interface này.
Tiếp theo chúng ta sẽ tạo một Searcher sử dụng MSN search engine:
Searcher searcher = new MSNWebSearcher();
GV: PGS. TS. Đỗ Phúc 19 HVTH: Huỳnh Tuấn Anh
Tìm hiểu và cài đặt các thuật toán xếp hạng trang web
Khi đã có một đối tượng Searcher chúng ta truy vấn sử dụng phương thức
search. Phương thức này trả về một java.util.Iterator của đối tượng
org.jvnet.argos.SearchResult:
Iterator<SearchResult> it = searcher.search("Argos java search");
Bây giờ chúng ta có một Iterator chúng ta có thể sử dụng nó để lấy những kết
quả tìm kiếm:
while (it.hasNext()) {
SearchResult result = it.next();
System.out.println(result.getTitle() + " Address: " + result.getAddress());
}
Java Iterators không thể throw checked exceptions từ .next() hoặc .hasNext()
methods. Argos có thể xử lý errors này khi những methods này được gọi, nếu 1

unchecked (runtime)SearchServiceException có thể được thrown. Có thể dễ dàng
catch và handle exception này một cách thích hợp.
try {
Searcher searcher = new MSNWebSearcher();
Iterator<SearchResult> it = searcher.search("Argos java search");
while (it.hasNext()) {
SearchResult result = it.next();
System.out.println(result.getTitle() + " Address: " +
result.getAddress());
}
} catch (SearchServiceException e) {
e.printStackTrace();
}
2.7. Download:
Argos có thể được download từ Argos downloads archive.
Chú ý rằng bạn phải download project dependencies để build và sử dụng Argos.
III. Dimensionality Reduction:
3.1. Why dimensionality reduction?
Do số lượng các trang web sử dụng trong thuật toán HITS rất lớn nên chúng ta phải
dùng phương pháp giảm kích thước ma trận kề của đồ thị để cho việc tính toán được nhanh
hơn với sai số có thể chấp nhận được.
GV: PGS. TS. Đỗ Phúc 20 HVTH: Huỳnh Tuấn Anh
Tìm hiểu và cài đặt các thuật toán xếp hạng trang web
Và phương pháp sử dụng để giảm kích thước của ma trận trong việc cài đặt thuật
toán HITS là Singular Value Decomposition.
3.2. Singular Value Decomposition (SVD):
3.2.1 Giới thiệu:
SVD dựa vào một định lý trong đại số tuyến tính được phát biểu rằng một ma trận A
có thể được chuyển hóa thành ba ma trận nhân với nhau, một ma trận trực giao U, một ma
trận đường chéo S, và một chuyển vị của ma trận trực giao V.

X
mn
= U
mn
S
mn
V
nn
T
với U
T
.U = I, V
T
.V = I. Ma trận trực giao U và V chứa những vector riêng (singular
vetors) trái và phải của X, và đường chéo của ma trận S chứa những giá trị riêng (singular
values) của X. Sử dụng phương pháp SVD, kích thước của dữ liệu có thể được giảm bằng
cách chiếu dữ liệu vào trong một không gian được nối bởi những vector riêng trái tương
ứng với k giá trị riêng lớn nhất:
X
SVD
= U
k
T
.X
với U
k
có kích thước dxk và chứa k singular vetors. SVD được tính qua rất nhiều giai
đoạn và theo [6] thì phương pháp SVD tính chính xác hơn khi giảm kích thước của dữ liệu
so với phương pháp Random Projection.
3.2.2 SVD - Example:

X = U.S.V
T
= x x
GV: PGS. TS. Đỗ Phúc 21 HVTH: Huỳnh Tuấn Anh
Tìm hiểu và cài đặt các thuật toán xếp hạng trang web
Dimensionality Reduction:
= x x
~ x x
GV: PGS. TS. Đỗ Phúc 22 HVTH: Huỳnh Tuấn Anh
Tìm hiểu và cài đặt các thuật toán xếp hạng trang web
1
1
1
0
0
2
2
2
0
0
1
1
1
0
0
5
5
5
0
0

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0


~
Chương 3: CÀI ĐẶT THUẬT TOÁN
I. Hướng dẫn sử dụng chương trình:
Để có thể chạy được chương trình, các bước cần phải thực hiện:
- Cài đặt IDE Netbeans và phần mềm Maple.
- Đặt biến môi trường để Java có thể kết nối với Maple (hình bên): Click chuột phải
vào MyComputer  Properties (có thể dùng phím tắt Windows+Break)  Advanced (nếu
là Win XP, còn Win Vista hay Win 7 thì chọn Advanced system settings) 
Environment Variables. Ở mục System Variables, tìm dòng có chữ “Path”  chọn dòng
này rồi click Edit  trên dòng có chứa “Variable Value” di chuyển đến cuối -> đặt dấu
chấm phẩy (;) rồi paste đường dẫn thư mục bin.win trong thư mục cải đặt của Maple vào
(thường là C:\Program Files\Maple 12\bin.win), chọn OK, sau đó khởi động lại máy
(chú ý bước khởi động lại máy quan trọng vì sau khi khởi động Windows mới nhận

được biến môi trường mới thêm vào).
Tạo thư mục HITS trong ổ C (C:/HITS). Sau đó mở file HITS.mw bằng Maple,
click vào nút có kí hiệu là “!!!” (Excute the entire worksheet) để Maple build thành
package HITS, sau khi build xong package sẽ nằm trong thư mục C:/HITS.
Dùng IDE Netbeans để mở project HITS (project Netbeans đính kèm), sau đó
nhấn F6 để Run project.
Giao diện của chương trình:
GV: PGS. TS. Đỗ Phúc 23 HVTH: Huỳnh Tuấn Anh
1 1 1 0 0
2 2 2 0 0
1 1 1 0 0
5 5 5 0 0
0 0 0 2 2
0 0 0 3 3
0 0 0 1 1
Tìm hiểu và cài đặt các thuật toán xếp hạng trang web
Trước tiên người dùng sẽ nhập vào chuỗi truy vấn, text field bên dưới chuỗi truy vấn
là kết quả các trang web tìm được của search engine (trong chương trình dùng search engine
là Live Search của Microsoft) và mỗi trang tìm được sẽ dùng search engine để tìm những
trang trỏ đến trang này đồng thời mỗi trang tìm được cũng sẽ được phân tích để trích xuất ra
các trang mà trang này trỏ đến.
Text field “Vertices & Adjacency Matrix of the Web Graph” hiển thị tất cả các trang
web trong đồ thị và ma trận kề của đồ thị. Dưới text field này label hiển thị thời gian thực
hiện quá trình thu thập các trang web.
Tiếp theo là các thông số do người dùng lựa chọn để giảm kích thước của ma trận
dùng phương pháp SVD. Label “original kxk-dimensional:” là ma trận ban đầu tính toán xử
lý trong đồ thị các trang web có kích thước kxk, label “projected to dxd dimensional:
k(k<=d):” là ma trận có kích thước kxk do người dùng chọn giảm xuốn để tính toán.
Sau khi click button “Compute Auths & Hubs Scores” sẽ thực hiện tính toán
authorities scores và hubs scores của các trang web và hiển thị kết quả lên text field

Authorities và Hubs, đồng thời 2 label Authorities và Hubs cũng hiển thị số vòng lặp tính
authorities scores và hubs scores đến khi hội tụ. Cuối cùng là hiển thị thời gian tính toán lên
lên label “Total Time:”.
II. Cài đặt thuật toán:
Chương trình cài đặt thuật toán HITS sử dụng ngôn ngữ Java và Maple, IDE
Netbeans. Dùng Maple để cài đặt những xử lý trong đồ thị và ma trận, giảm kích thước của
ma trận bằng phương pháp SVD (Maple có hỗ trợ tính toán sẵn các vector U, S, V
T
từ ma
trận X), tính vetor hubs, vector authorities, còn Java thì sử dụng Argos để triển khai các thủ
tục dùng Search Engine là Live Search của Microsoft để tìm kiếm truy vấn và tìm kiếm các
GV: PGS. TS. Đỗ Phúc 24 HVTH: Huỳnh Tuấn Anh
Tìm hiểu và cài đặt các thuật toán xếp hạng trang web
trang web như trong thuật toán HITS yêu cầu. Java sẽ kết nối với Maple để thực hiện các xử
lý trong Maple và lấy kết quả để hiển thị lên form.
Các hàm chính cài đặt thuật toán HITS trong Java (chủ yếu xử lý tìm kiếm truy vấn
và tìm kiếm các trang web) như sau:
- Dùng 1 search engine để tìm kiếm truy vấn query. Lấy t (t = 200 theo Kleinberg)
trang webs có thứ hạng cao nhất. Tập các web này gọi là Root Set W.
public void CollectRootSetW(String query)
{
try {
// search với câu truy vấn query được đưa vào, trả về kiểu Iterator của
SearchResult
Iterator<SearchResult> it = searcher.search(query);
// đếm số trang web đã thu thập được
int pageCount = 0;
// Thu thập 200 trang web có thứ hạng cao nhất, tập các trang này gọi là Root
Set W
while (it.hasNext() && (pageCount < t)) {

SearchResult result = it.next();
jTextArea1.append(++pageCount + " " + result.getTitle() + " Address: " +
result.getAddress() +"\n");
try {
// Thêm đỉnh là trang web vừa tìm được vào đồ thị
engine.evaluate("AddVertex(\""+result.getAddress()+"\"):");
// Tìm những trang trỏ đến trang result.getAddress() và
// những trang mà result.getAddress() trỏ đến
GrowRootSetW(result.getAddress());
} catch (MapleException me) {
System.out.println(me.getMessage());
}
}
} catch (SearchServiceException e) {
// Java Iterators không thể throw checked exceptions từ .next() hoặc
.hasNext() methods.
// Argos có thể xử lý errors này khi những methods này được gọi, nếu 1
unchecked (runtime)
// SearchServiceException có thể được thrown. Có thể dễ dàng catch và
handle exception này
// một cách thích hợp.
}
}
GV: PGS. TS. Đỗ Phúc 25 HVTH: Huỳnh Tuấn Anh

×