1. MỤC ĐÍC H
1.7.3. Khó khăn, thách thức
Về mặt khái niệm, xây dựng chỉ mục ngược kéo theo việc xử lý từng trang Web để tách ra các postings, sắp xếp chúng trước nhất theo các thuật ngữ và tiếp đến là theo
location, tạo thành các danh sách đảo đã sắp xếp và ghi lên đĩạ Đối các với bộ sưu tập
nhỏ và cố định (static), giống như môi trường mà các hệ thống IR nghiên cứu, thời
gian xây dựng chỉ mục không đáng ngạị Tuy nhiên, đối mặt với bộ sưu tập Web, xây dựng chỉ mục theo sơ đồ đơn giản sẽ trở nên không thể quản lý được và cần có tài nguyên khổng lồ, và thông thường mất hàng ngày đến vài ngày để hoàn thành.
Hơn nữa, do nội dung của Web thay đổi nhanh chóng, việc crawl định kỳ và xây dựng lại chỉ mục là cần thiết để đảm bảo sự tươi của dữ liệụ Xây dựng lại chỉ mục trở nên cần thiết vì các kỹ thuật cập nhật chỉ mục tăng nhanh nhất thực thi một cách chậm chạp khi đối mặt với sự thay đổi đồng loạt được giám sát bởi các lần crawl liên tiếp.
Cuối cùng, định dạng lưu trữ cho chỉ mục ngược phải được thiết kế cẩn thận. Một chỉ mục đã được nén nhỏ cải thiện hiệu năng truy vấn bằng cách cho phép các phần có kích thước lớn của chỉ mục có thể lưu lại trong bộ nhớ (cached in memory). Tuy nhiên, có sự cân bằng giữa hiệu năng đạt được và quá trình giải nén tương ứng tại thời điểm truy vấn. Để đạt được sự cân bằng là một thách thức lớn khi đối mặt với bộ sưu tập Web.
Xây dựng chỉ mục ngược cho Web cần phải có một kiến trúc đánh chỉ mục tỷ lệ và phân tán mức caọ Trong môi trường này, có hai chiến lược cơ bản cho việc phân
tán chỉ mục ngược giữa các tập các nút. Trong tổ chức file chỉ mục ảo cục bộ (Local
inverted file - IFL), mỗi nút đáp ứng cho một tập con rời rạc của các trang Web trong bộ sưu tập. Một yêu cầu truy vấn sẽ được gửi cho tất cả các nút, mỗi nút sẽ trả về kết quả là danh sách rời rạc các định danh của các trang Web chứa các thuật ngữ cần tìm.
Tổ chức file chỉ mục ngược toàn cục (Global inverted file - IFG) phân tán các
thuật ngữ sao cho mỗi máy truy vấn (query server) chỉ lưu trữ danh sách đảo của một
tập con các thuật ngữ trong bộ sưu tập. Ví dụ, trong hệ thống có 2 servers: A và B. A
lưu trữ danh sách đảo của tất cả các thuật ngữ bắt đầu với các chữ cái từ a-q trong khi
B lưu trữ danh sách của các thuật ngữ còn lạị Vì thế yêu cầu tìm kiếm thuật ngữ “process” (bắt đầu bằng chữ cái “p”) chỉ liên quan đến Ạ
1.8. TÌM KIẾM
Như đã trình bày trong hình 1, bộ máy truy vấn thực hiện việc thu thập các term do người dùng nhập vào thông qua giao diện của Search enginẹ Các truy vấn sẽ được tiền xử lý để tách ra các term rồi thực hiện tìm kiếm trên chỉ mục. Các kết quả thỏa mãn được xếp hạng và hiển thị cho người dùng. Công việc này thực hiện Online và đòi hỏi thời gian xử lý cho mỗi truy vấn là ngắn. Những công việc được làm trong suốt quá trình là
ạ Phân tích truy vấn:
Yêu cầu tìm kiếm (các từ khóa mà người dùng gõ vào) được phân tích trước khi tìm kiếm. Truy vấn có thể là một biểu thức logic của các term, có thể chứa các ký pháp đặc biệt của Search Engine nhằm khoanh vùng tìm kiếm (chẳng hạn như chỉ dẫn url: _URL_ sẽ tìm kiếm Web site có URL được chỉ sẵn). Phân tích truy vấn sử dụng một số giải thuật trong IR (ví dụ như giải thuật stemming) để thu được kết quả chính là danh sách các term. Việc phân tích câu truy vấn người sử dụng là rất quan trọng, bởi vì đó chính là yêu cầu của công việc tìm kiếm, là thước đo của cả công cụ. Với những ngôn ngữ là tiếng Ấn- Âu thì dấu cách chính là ký hiệu để phân biệt các từ khóa với nhau, còn với tiếng Việt, dấu cách không phải là dấu hiệu để phân biệt các từ khóạ Chi tiết về các vấn đề liên quan đến tìm kiếm tiếng Việt sẽ được trình bày ở mục sau
b. Tìm kiếm:
Với danh sách term thu được, bộ máy truy vấn thực hiện tra cứu trên chỉ mục ngược, tương ứng với một term được chọn, ta sẽ có một danh sách các văn bản có chứa term đó. Như vậy ta sẽ thu được một tập hợp các danh sách các văn bản có thể thỏa mãn yêu cầu truy vấn. Tuy nhiên, việc chọn ra một tập con các văn bản thực sự phù hợp với truy vấn trong danh sách các văn bản vừa thu được như thế nào được thì lại phụ thuộc vào cách chọn cách mô hình trong tìm kiếm. Như đã trình bày ở trên
(mục …) người ta có thể có các cách mô hình là boolean, vector… Với mỗi cách mô hình, ta sẽ kiểm tra xem văn bản vừa được chọn ra có phù hợp với truy vấn hay không ? Độ đo giữa sự phù hợp của chúng là thế nào… Từ đó ta tìm được một danh sách thường là rất dài những văn bản phù hợp với câu truy vấn người sử dụng
Bảng 6. Ví dụ về tìm kiếm AND trong mô hình Boolean
Ví dụ về truy vấn theo mô hình Boolean: Với term thứ nhất, ta có danh sách thứ nhất các document thỏa mãn yêu cầụ Với term thứ 2, ta cũng có một danh sách khác thỏa mãn yêu cầụ Một câu truy vấn chỉ có chứa term 1, sẽ cho ra kết quả là dòng thứ nhất. Truy vấn chỉ có chứa term 2, ta sẽ có dòng thứ 2. Nếu truy vấn là cả 3 term, tìm kiếm theo kiểu AND, ta sẽ có kết quả là dòng thứ 4, chỉ chứa có 3 term. Tương tự với những truy vấn khác
Yêu cầu công việc ở bước này là: Cần phải làm thật nhanh công việc tìm kiếm những văn bản phù hợp với câu truy vấn.
Như vậy, người ta sẽ đối mặt với các vấn đề là:
c. Độ dài Invert là quá lớn :
Nếu có quá nhiều văn bản có chứa một hoặc một số term nào đó mà những term này không phải là stopword để có thể bỏ đi được, lúc đó độ dài danh sách Invert với term đó sẽ rất lớn. Ta cần phải duyệt qua tất cả danh sách Invert này để tìm xem văn bản nào là phù hợp với yêu cầụ Do vậy, việc làm này sẽ mất rất nhiều thời gian. Người ta có thể giảm thời gian bằng cách chia các Invert ra nhiều phần để xử lý song song. Tất nhiên, việc ghép lại các kết quả cũng đòi hỏi những kỹ thuật lập trình nhất định. Khi chia ra thành các phần nhỏ hơn, người ta sẽ đưa chúng vào nhiều máy chủ khác nhau để xử lý. Bởi vì, Invert thường được lưu lên đĩa cứng và được đọc một ít lên Ram. Tốc độ của Chip có thể được cải thiện đáng kể bằng cách thêm Chip, nhưng tốc độ đọc ổ cứng lại bị hạn chế vì ổ cứng thuộc về cơ, điện. Khi đó, trong toàn hệ thống, bộ phận chậm nhất sẽ là ở ổ cứng. Dù tốc độ xử lý của Chip có lớn đến đâu mà tốc độ ổ cứng chậm thì thời gian tìm kiếm vẫn sẽ lớn. Nếu chia Invert ra nhiều máy, người ta
có thể sử dụng năng lực đọc, ghi của nhiều máy chủ đồng thời với mục tiêu là để thời gian tìm kiếm cho hệ thống giảm xuống. Có nhiều cách và nhiều nền tảng cho việc xử lý song song, công nghệ như phân tán là một công nghệ có thể được sử dụng trong trường hợp nàỵ.
d. Công thức chọn văn bản phù hợp tốn nhiều thời gian:
Ta cần phải duyệt qua toàn bộ các Invert để tìm ra văn bản phù hợp với truy vấn của người sử dụng. Với mỗi phần tử Invert có chứa số ID văn bản được duyệt qua, ta cần phải kiểm tra xem văn bản đó có phù hợp với truy vấn không? Tùy theo mô hình Search sử dụng mà ta sẽ phải có những công thức khác nhau để kiểm tra xem văn bản đó có phù hợp hay không. Nếu công thức tính điểm cho từng văn bản quá phức tạp, thời gian xử lý của mỗi văn bản cũng sẽ tăng lên và sẽ làm chậm hệ thống. Có một số mô hình, người ta không thể đưa toàn bộ giá trị của văn bản về một con số mà phải đưa cả 2 văn bản vào để tính độ tương quan giữa các văn bản với nhau trên cùng một truy vấn thì thời gian cho mỗi so sánh truy vấn lại càng tăng lên. Bởi vì, lúc đó để giảm độ dài Invert, người ta đã phân tán chúng ra nhiều Server khác nhau, cho nên việc gọi các văn bản và so sánh chúng cũng đòi hỏi tài nguyên và thời gian.
1.9. XẾP HẠNG KẾT QUẢ TÌM KIẾM
Kết quả thu được thường là rất nhiều do truy vấn của người dùng thường ngắn và ít term mà số trang Web có liên quan đến những term đó thì quá lớn. Việc đưa kết quả nào cho người dùng xem trước là công việc rất khó khăn và chính điều này là một trong các bí mật công nghệ của các công tỵ Có rất nhiều kỹ thuật để xếp hạng các kết quả nhưng ý tưởng chính của chúng xoay quanh một số tiêu chí như: số lần xuất hiện của term trong trang Web, vị trí xuất hiện, hạng của trang Web nói chung (căn cứ vào cấu trúc liên kết Web). Các kỹ thuật của IR được sử dụng ở đây khá nhiều (tất nhiên là có sự sửa đổi cho thích hợp). Đó là việc đánh giá mức độ liên quan giữa tài liệu và câu truy vấn (các mô hình đánh giá trong IR như mô hình không gian vector, mô hình xác suất, mô hình ngữ nghĩa, …)
Khi áp dụng IR, cần phải chú ý một số vấn đề như sau:
Kích thước của Web là rất lớn và luôn thay đổi
Nhiều khi nội dung các trang Web không đủ để mô tả đặc trưng của nó (ví dụ như trường hợp trang chủ của Search Engine không có từ “Search engine”. Hơn nữa, các nhà quản trị và thiết kế Web có xu hướng thêm các thông tin thừa vào Web để làm cho nó thỏa mãn tiêu chí tìm kiếm nào đó nhằm đạt được thứ hạng cao trong kết quả tìm kiếm. Vì thế chỉ dựa vào nội dung của trang Web để tìm kiếm sẽ chịu các ảnh hưởng trên.
Cấu trúc liên kết (link structured) của các trang Web chứa đựng nhiều thông tin quan trọng có thể giúp ích rất nhiều cho việc xếp hạng các kết quả. Có thể coi trang
Web A “tham khảo” trang Web B nếu A có liên kết đến B. Một vài giải thuật đã được
xây dựng dựa trên phát hiện này (Link analysis algorithms)
1.9.1. PageRank
PageRank[23] đã được trình bày ở phần crawler, nhưng đó là đánh giá hạng của các trang Web nói chung. Những vấn đề đã nêu hỗ trợ cho các chiến lược lựa chọn
trang Web của crawler để khám phá. PageRank được đưa ra bởi hai tác giả của Google
để đánh giá mức độ quan trọng của trang Web. Một cách trực giác thì trang Web
Yahoo có vẻ như quan trọng hơn trang Web của trang Web của nhóm cơ sở dữ liệu
trường đại học Standford (db.standford.edu).
1.9.1.1. PageRank đơn giản
Ký hiệu tập các trang Web là dãy số 1, 2, …, m. Gọi N(i) là tập các liên kết đi ra từ trang Web i và B(i) là tập các trang Web có liên kết đến trang Web i. Hạng của trang Web i được ký hiệu là r(i), được định nghĩa như sau:
∑ ∈ = ) ( ) ( / ) ( ) ( i B j j N j r i r (6)
Phép chia cho N(j) thể hiện rằng sự nổi tiếng, quan trọng của một trang Web
được chia đều cho các trang Web mà nó có liên kết tớị Biểu diễn bằng ngôn ngữ đại số tuyến tính, ta có:
r = ATr (7)
với r là vector m x 1(r = [r(1), r(2), …, r(m)]), còn A là ma trận với các thành phần aij = 1/N(i) nếu trang Web i liên kết đến trang Web j, ngược lại aij = 0. Khi đó,
vector hạng của các trang Web là một eigenvector của ma trận AT.
1.9.1.2. Random sufer model (RSM)
Định nghĩa của PageRank đơn giản kéo đưa đến một mô hình dựa trên các
bước đi ngẫu nhiên (random walks) mà người ta gọi là Random Surfer Model (RSM).
Tưởng tượng người dùng lướt Web bằng cách chọn ngẫu nhiên các liên kết trên các
trang Web mà họ viếng thăm. Cách lướt ngẫu nhiên này tương đương với việc di chuyển ngẫu nhiên trên một đồ thị có hướng. Đây là bài toán tổ hợp chính tắc. Nó thể hiện rằng vector PageRank là phân bố xác suất của di chuyển ngẫu nhiên. PageRank của một trang Web là xác suất để người duyệt Web ngẫu nhiên viếng thăm nó.
1.9.1.3. Tính toán PageRank
Như trên đã nói, việc tính toán PageRank tương đương với tính các thành phần
là phương pháp tương tác (power interaction). Trong phương pháp này, bất cứ vetor khởi đầu nào đều được nhân với ma trận đã cho một cách liên tục cho tới khi nó hội tụ. Phương pháp được diễn tả như sau:
1. s một vector bất kỳ 2. r AT x s
3. if ║ r – s║ < ε end. R là vector PageRank 4. s r, goto 2
Hình 17. PageRank đơn giản và PageRank có sửa đổi (d=0.8)
Hình 22(a) minh họa cho PageRank đơn giản. Rất dễ nhận ra nó thỏa mãn các định nghĩa PageRank. Chẳng hạn như, nút 2 có hạng là 0.286 và 2 liên kết ngoàị Một nửa hạng của nó (0.143) được truyền cho nút 1 và một nửa cho nút 3. Vì nút 3 không có liên kết từ nút nào khác nữa nên hạng của nó là 0.143. Nút 1 nhận được 0.143 từ nút 2, cộng thêm 0.123/2 từ nút 3 và 0.143/2 từ nút 5 nên hạng của nó là 0.286. Nút 1 có hạng cao nhất vì nó có nhiều liên kết đến nhất. Nút 2 có cùng hạng với nút 1 vì bất cứ ai viếng thăm 1 sẽ viếng thăm 2. Chú ý rằng tổng hạng của các trang Web = 1.0.
1.9.1.4. Practical PageRank
PageRank đơn giản là xác định khi đồ thị liên kết là kết nối vững chắc. Tuy
nhiên Web không đạt được điều đó. Có hai vấn đề liên quan nảy sinh là: rank sinks và
rank leaks.
Bất cứ chùm trang Web nào trong đồ thị Web mà không có liên kết nào trỏ ra ngoài tạo nên rank sink. Một trang Web riêng lẻ mà không có liên kết ra ngoài gọi là rank leak. Tuy nhiên, về mặt kỹ thuật mà nói, rank leak là trường hợp đặc biệt của rank sink. Rank leak mang đến một vấn đề khác. Trong rank sink, nút không nằm trong nó có hạng bằng 0, có nghĩa là không thể nhận ra mức độ quan trọng của những nút đó (radom surfer sẽ không viếng thăm được).
Để giải quyết vấn đề này, người ta đưa ra PageRank cải tiến. Loại bỏ hết các
nút leak với mức độ = 0 và gọi d là nhân tố phân rã (decay factor, damp factor) với 0
< d <1. Lúc này chỉ có d phần của hạng của trang Web được phân bố cho các trang Web mà nó chỉ tớị Phần còn lại được chia đều cho tất cả các trang Web. Từ đó, PageRank cải tiến được tính toán bởi công thức:
m d j N j r d i r i B j / ) 1 ( ) ( / ) ( * ) ( ) ( − + = ∑ ∈ (8)
với m là tổng số nút trong đồ thị liên kết. Cũng có thể thấy PageRank đơn giản
chỉ là trường hợp riêng của PageRank cải tiến (tổng quát) với d = 1.
Trong mô hình RSM, sự cải tiến dựa trên việc người duyệt Web cảm thấy chán một cách thường xuyên và nhảy sang một trang Web ngẫu nhiên khác thay vì tiếp tục theo các liên kết trên các trang đã viếng thăm. Nhân tố d ở trên cho biết người duyệt Web ngẫu nhiên hay chán như thế nào (càng nhỏ thì càng mau chán).
Hình 22 (b) minh họa cho PageRank cải tiến với d = 0.8. So với đồ thị (a) thì
liên kết 5 1 bị bỏ đị Nút 4 và 5 bây giờ có hạng cao hơn các nút khác, chứng tỏ
radom surfer có xu hướng viếng thăm 4 và 5. Tuy nhiên, các nút khác bây giờ đều có