Khóa luận Giải pháp tính hạng trang khai thác cấu trúc Block của Web và áp dụng vào máy tìm kiếm

Mở đầu Ngày nay, với những tác động to lớn và mạnh mẽ của mạng Internet tới đời sống kinh tế, chính trị và văn hóa của con người, lĩnh vực khai phá dữ liệu Web đã và đang trở thành lĩnh vực nghiên cứu thời sự, thu hút được sự quan tâm của rất nhiều nhà nghiên cứu. Khai phá dữ liệu Web là điểm hội tụ của rất nhiều lĩnh vực nghiên cứu như: cơ sở dữ liệu, truy xuất thông tin (information retrival), trí tuệ nhân tạo, nó còn là một lĩnh vực nhỏ trong học máy (machine learning) và xử lý ngôn ngữ tự nhiên. Một trong những lĩnh vực nghiên cứu đang rất được quan tâm hiện nay trong khai phá Web là việc xây dựng các công cụ tìm kiếm trên Web. Bởi trong bối cảnh xã hội thông tin ngày nay, nhu cầu nhận được các thông tin một cách nhanh chóng, chính xác đang ngày càng trở nên cấp thiết. Để tìm ra được các thông tin có ích đối với mỗi người dùng, đặc biệt là với những người dùng thiếu kinh nghiệm hoàn toàn không phải là việc đơn giản. Với một công cụ tìm kiếm, khả năng người dùng có thể duyệt Web và định vị được các trang Web mình quan tâm đã trở nên dễ dàng hơn nhiều. Tuy nhiên hiện nay, do sự phát triển và thay đổi với tốc độ quá nhanh của Internet, các công cụ tìm kiếm đang phải đối mặt với những bài toán nan giải về tốc độ. Trong đó có bài toán về tốc độ tính toán hạng cho các trang Web, thực thi nhiệm vụ tính toán độ “quan trọng” cho các trang thông tin kết quả tìm được so với yêu cầu tìm kiếm của người dùng. Vì kích thước của World Wide Web là vô cùng lớn, lên tới hàng tỉ trang web, không những thế các trang Web này không ở trạng thái tĩnh mà luôn luôn thay đổi. Do đó tính hiệu quả về thời gian càng trở nên quan trọng. Nếu phép tính PageRank cho tập các trang web trong cơ sở dữ liệu không đủ nhanh, hệ thống tìm kiếm sẽ không cung cấp được chất lượng tìm kiếm tốt cho người dùng. Ý thức đây là một lĩnh vực nghiên cứu có nhiều triển vọng, chúng tôi đã chọn hướng nghiên cứu “Giải pháp tính hạng trang khai thác cấu trúc Block của Web và áp dụng vào máy tìm kiếm” cho đề tài khóa luận tốt nghiệp của mình. Khóa luận tập trung nghiên cứu bài toán tính hạng trang web (PageRank) trong các máy tìm kiếm: cấu trúc, thuật toán cũng như các tiêu chuẩn đánh giá quá trình này. Chúng tôi cũng đã áp dụng các lý thuyết trên để đi sâu phân tích mã nguồn, tìm hiểu cơ chế thực thi quá trình tính PageRank trong máy tìm kiếm Vinahoo, một máy tìm kiếm tiếng Việt mã nguồn mở với nhiều tính năng ưu việt. Từ việc nghiên cứu này, chúng tôi đã đề xuất một giải pháp áp dụng khái niệm thành phần liên thông trong ma trận liên kết Web trong Vinahoo, đồng thời thực hiện việc cài đặt thử nghiệm trên mã nguồn của máy tìm kiếm này. Nội dung của khóa luận được tổ chức thành bốn chương với nội dung được giới thiệu như dưới đây. Chương 1 với tên gọi “Tổng quan về khai phá dữ liệu web và máy tìm kiếm” trình bày về những nội dung nghiên cứu cơ bản của khai phá web, những thuận lợi và khó khăn trong lĩnh vực này. Phần cuối của chương này trình bày các thành phần cơ bản của một máy tìm kiếm. “Một số thuật toán tính hạng trang điển hình” là tiêu đề của chương 2. Phần đầu chương này giới thiệu tổng quan về bài toán xêp hạng trang Web trong máy tìm kiếm và thuật toán tính PageRank cơ bản. Việc phân tích nhu cầu tăng tốc độ tính toán PageRank trong máy tìm kiếm, một số thuật toán cải tiến từ phương pháp PageRank cùng với đánh giá được trình bày trong phần cuối của chương. Chương 3 với tên gọi “Thuật toán sử dụng cấu trúc Block theo thành phần liên thông” tập trung nghiên cứu về giải pháp khai thác cấu trúc Web. Chương này giới thiệu khái niệm, một số vấn đề về lý thuyết, chứng minh và đánh giá thuật toán CCP sử dụng cấu trúc này. Chương 4 với tiêu đề “Giải pháp tính hạng trang cải tiến cho máy tìm kiếm Vinahoo” giới thiệu thành phần tính PageRank trong module đánh chỉ số của Vinahoo, các cải tiến, cài đặt và đánh giá kết quả thực nghiệm.

pdf35 trang | Chia sẻ: maiphuongtl | Lượt xem: 1812 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Khóa luận Giải pháp tính hạng trang khai thác cấu trúc Block của Web và áp dụng vào máy tìm kiếm, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ăn. Đối với mỗi người dùng chỉ một phần rất nhỏ thông tin là có ích, chẳng hạn có người chỉ quan tâm đến trang Thể thao, Văn hóa mà không mấy khi quan tâm đến Kinh tế. Người ta không thể tìm tự kiếm địa chỉ trang Web chứa thông tin mà mình cần, do vậy đòi hỏi cần phải có một trình tiện ích quản lý nội dung của các trang Web và cho phép tìm thấy các địa chỉ trang Web có nội dung giống với yêu cầu của người tìm kiếm. Định nghĩa [14]:Máy tìm kiếm (search engine) là một hệ thống được xây dựng nhằm tiếp nhận các yêu cầu tìm kiếm của người dùng (thường là một tập các từ khóa), sau đó phân tích yêu cầu này và tìm kiếm thông tin trong cơ sở dữ liệu được tải xuống từ Web và đưa ra kết quả là các trang web có liên quan cho người dùng. Cụ thể, người dùng gửi một truy vấn, dạng đơn giản nhất là một danh sách các từ khóa, và máy tìm kiếm sẽ làm việc để trả lại một danh sách các trang Web có liên quan hoặc có chứa các từ khóa đó. Phức tạp hơn, thì truy vấn là cả một văn bản hoặc một đoạn văn bản hoặc nội dung tóm tắt của văn bản. Một số máy tìm kiếm điển hình hiện nay: Yahoo, Google, Alvista, ASPSeek... 1.2.2. Cấu trúc cơ bản và hoạt động của một máy tìm kiếm Một máy tìm kiếm có thể được xem như là một ví dụ của hệ thống truy xuất thông tin Information Retrival (IR)[14]. Một hệ thống truy xuất thông tin IR thường tập trung vào việc cải thiện hiệu quả thông tin được lấy ra bằng cách sử dụng việc đánh chỉ số dựa trên các từ khóa (term-base indexing)[11] và kỹ thuật tổ chức lại các câu truy vấn (query refomulation technique)[12]. Quá trình xử lý các văn bản dựa trên từ khóa ban đầu trích ra các từ khóa trong văn bản sử dụng một từ điển được xây dựng 9 trước, một tập các từ dừng, và các qui tắc (stemming rule)[14] chuyển các hình thái của từ về dạng từ gốc. Sau khi các từ khóa đã được lấy ra, các hệ thống thường sử dụng phương pháp TF-IDF (hoặc biến thể của nó) để xác định mức độ quan trọng của các từ khóa. Do đó, một văn bản có thể được biểu diễn bởi một tập các từ khóa và độ quan trọng của chúng. Mức độ tương tự đo được giữa một câu truy vấn và một văn bản chính bằng tích vô hướng giữa hai vector các từ khóa tương ứng. Để thể hiện mức độ hợp lệ của các văn bản và câu truy vấn, các văn bản được lấy ra được biểu diễn dưới dạng một danh sách được xếp hạng dựa trên độ đo mức độ tương tự giữa chúng và câu truy vấn. Hình 3 miêu tả cấu trúc cơ bản của một máy tìm kiếm. Mặc dù trong thực tế, mỗi máy tìm kiếm có cách thực thi riêng, nhưng về cơ bản vẫn dựa trên cơ chế hoạt động như được mô tả. Hình 3: Mô hình cấu trúc của một máy tìm kiếm - Module dò tìm (crawler): là các chương trình có chức năng cung cấp dữ liệu cho các máy tìm kiếm hoạt động. Module này thực hiện công việc duyệt Web, nó đi theo các liên kết trên các trên Web để thu thập nội dung các trang Web. Các chương trình dò tìm được cung cấp các địa chỉ URL xuất phát, đọc các trang web tương ứng, phân tích và tìm ra các URL có trong các trang web đó. Sau đó bộ tìm duyệt cung cấp các địa chỉ URL kết quả cho bộ điều khiển dò tìm (crawl control). Bộ điều khiển này sẽ quyết định xem URL nào sẽ được duyệt tiếp theo và gửi lại kết quả cho bộ dò tìm. Kho trang web Bé t×m duyÖt 10 Các bộ dò tìm sau khi tải các trang web sẽ lưu kết quả vào kho trang web (page repository). Quá trình này lặp lại cho tới khi đạt tới điều kiện kết thúc. - Module đánh chỉ mục (indexing): module này có nhiệm vụ duyệt nội dung các trang web đã được tải về, đánh chỉ mục cho các trang này bằng cách ghi lại địa chỉ URL của các trang web có chứa các từ trong cơ sở dữ liệu. Kết quả sinh ra một bảng chỉ mục rất lớn. Nhờ có bảng chỉ mục này, máy tìm kiếm cung cấp tất cả các địa chỉ URL của các trang web theo các truy vấn bằng từ khóa của người dùng. Thông thường bộ tạo chỉ mục tạo ra chỉ mục nội dung và chỉ mục cấu trúc (structure index). Chỉ mục nội dung chứa thông tin về các từ xuất hiện trong các trang web. Chỉ mục cấu trúc thể hiện mối liên kết giữa các trang web, tận dụng được đặc tính quan trọng của dữ liệu web là các liên kết. Nó là một dạng đồ thị gồm các nút và các cung, mỗi nút trong đồ thị tương ứng với một trang web, mỗi cung nối từ nút A tới nút B tương ứng là siêu liên kết từ trang web A đến trang web B. - Module phân tích tập (Collection Analysis Module) hoạt động dựa vào thuộc tính module truy vấn. Ví dụ nếu bộ truy vấn chỉ đòi hỏi việc tìm kiếm hạn chế trong một số website đặc biệt, hoặc giới hạn trong một tên miền thì công việc sẽ nhanh và hiệu quả hơn. Module này sử dụng thông tin từ hai loại chỉ mục cơ bản (chỉ mục nội dung và chỉ mục cấu trúc) do module đánh chỉ số cung cấp cùng với thông tin các từ khóa trong trang web và các thông tin tính hạng để tạo ra các chỉ mục tiện ích. - Module truy vấn (query engine): module này chịu trách nhiệm nhận các yêu cầu tìm kiếm của người sử dụng. Module này thường xuyên truy vấn cơ sở dữ liệu đặc biệt là các bảng chỉ mục để trả về danh sách các tài liệu thỏa mãn một yêu cầu của người dùng. Do số lượng các trang web là rất lớn, và thông thường người dùng chỉ đưa vào một vài từ khóa trong câu truy vấn nên tập kết quả thường rất lớn. Vì vậy bộ xếp hạng (ranking) có nhiệm vụ sắp xếp các tài liệu này theo mức độ hợp lệ với yêu cầu tìm kiếm và hiển thị kết quả cho người sử dụng. Khi muốn tìm kiếm các trang web về một vấn đề nào đó, người sử dụng đưa vào một số từ khóa liên quan để tìm kiếm. Module truy vấn dựa theo các từ khóa này để tìm kiếm trong bảng chỉ mục nội dung địa chỉ các url có chứa từ khóa này. Sau đó, module truy vấn sẽ chuyển các trang web cho module xếp hạng để sắp xếp các kết quả theo mức độ giảm dần của tính hợp lệ giữa trang web và câu truy vấn rồi hiển thị kết quả cho người sử dụng. 11 Chương 2. Một số thuật toán tính hạng trang điển hình 2.1. Bài toán xếp hạng trang Web trong máy tìm kiếm Trong chương này, phần đầu chúng tôi sẽ giới thiệu tổng quan về bài toán xếp hạng trang Web trong các máy tìm kiếm, phần sau, chúng tôi sẽ tập trung phân tích nội dung các thuật toán PageRank, Modified Adaptive PageRank và Topic-sensitive PageRank ứng dụng trong bài toán tính hạng cho các trang Web. 2.1.1. Nhu cầu Ngày nay, người sử dụng có thể tìm kiếm thông tin đa dạng về mọi mặt của xã hội loài người trên Internet. Tuy nhiên, do lượng thông tin trên Internet là khổng lồ, đang từng ngày từng giờ tăng trưởng với tốc độ cao, cho nên việc giải bài toán tìm và cung cấp thông tin được người dùng thực sự quan tâm trong thời gian cho phép đã trở thành công việc hết sức cấp thiết. Công nghệ xây dựng công cụ tìm tin trên Internet (điển hình là máy tìm kiếm - search engine) cần không ngừng được cải tiến nhằm bảo đảm thoả mãn yêu cầu người dùng cả theo khía cạnh thời gian tìm kiếm nhanh lẫn tính sự phù hợp cao giữa các trang thông tin kết quả tìm được với yêu cầu tìm kiếm của người dùng. Khi người dùng nhập vào một nhóm từ khóa tìm kiếm, máy tìm kiếm sẽ thực hiện nhiệm vụ tìm kiếm và trả lại một số trang Web theo yêu cầu người dùng. Nhưng số các trang Web liên quan đến từ khóa tìm kiếm có thể lên tời hàng vạn trang, trong khi người dùng chỉ quan tâm đến một số ít trang trong đó, vậy việc tìm ra các trang đáp ứng nhiều nhất yêu cầu người dùng để đưa lên đầu là cần thiết. Đó chính là công việc tính hạng của máy tìm kiếm - sắp xếp các trang kết quả theo thứ tự giảm dần của độ quan trọng. Cần thiết phải xác định phép đo về "độ phù hợp" của một trang Web tìm được với yêu cầu người dùng [1,10]. Liên quan tới việc xác định phép đo như vậy, người ta quan tâm tới hai hướng giải quyết.. Hướng thứ nhất sử dụng độ quan trọng (được xác định qua một đại lượng được gọi là hạng trang - page rank) của trang Web làm độ phù hợp với yêu cầu người dùng. Hầu hết các nghiên cứu đều thừa nhận một giả thiết là nếu một trang Web mà có nhiều trang Web khác hướng (link) tới thì trang Web đó là trang Web quan trọng. Trong trường hợp này, hạng trang được tính toán chỉ dựa trên mối liên kết giữa các trang Web với nhau. Hầu hết các máy tìm kiếm sử dụng hạng trang làm độ phù hợp của kết quả tìm kiếm với các thuật toán điển hình là PageRank, 12 Modified Adaptive PageRank [10]. Hướng thứ hai coi độ phù hợp của trang Web với câu hỏi của người dùng không chỉ dựa trên giá trị hạng trang Web như trên mà còn phải tính đến mối liên quan giữa nội dung trang Web đó với nội dung câu hỏi theo yêu cầu của người dùng mà thuật toán điển hình là Topic-sensitive PageRank [15,16]. Một số nghiên cứu khai thác khía cạnh nội dung của trang Web đối với độ phù hợp của trang Web tìm kiếm với câu hỏi người dùng cũng được đề cập trong một số công trình [4,7]. 2.1.2. Độ quan trọng của trang web Một số phương pháp được sử dụng để đo độ quan trọng của các trang web. a. Các từ khóa trong văn bản: Một trang web được coi là hợp lệ nếu nó có chứa một số hoặc tất cả các từ khóa trong câu truy vấn. Ngoài ra, tần số xuất hiện của từ khóa trong trang cũng được xem xét. b. Mức độ tương tự với câu truy vấn: một người dùng có thể chỉ định một thông tin cần tìm bởi một câu truy vấn ngắn hay bằng các cụm từ dài hơn. Mức độ tương tự giữa các mô tả ngắn hay dài của người dùng với nội dung mỗi trang web được tải về có thể sử dụng để xác định tính hợp lệ của trang web đó. c. Mức độ tương tự với trang hạt nhân: Các trang tương ứng với các URL hạt nhân được sử dụng để đo mức độ hợp lệ của mỗi trang được tải. Các trang hạt nhân được kết hợp với nhau thành một văn bản lớn duy nhất và mức độ gần nhau của văn bản này với các trang web đang được duyệt được sử dụng làm điểm số của trang đó. d. Điểm số phân lớp: một bộ phân lớp có thể được huấn luyện để xác định các trang phù hợp với thông tin hoặc nhiệm vụ cần làm. Việc huấn luyện được tiến hành sử dụng các trang hạt nhân (hoặc các trang web hợp lệ được chỉ định trước) như là các ví dụ dương. Các bộ phân lớp được huấn luyện sau đó sẽ gán các điểm số nhị phân (0,1) hoặc liên tiếp cho các trang web được duyệt dựa trên các ví dụ huấn luyện. e. Đánh giá độ quan trọng dựa trên liên kết: Một crawler có thể sử dụng các thuật toán như PageRank hoặc HITS, để cung cấp một sự đánh giá độ quan trọng của mỗi trang web được duyệt. Hoặc đơn giản hơn là chỉ sử dụng số lượng các liên kết tới trang web đó để xác định thông tin này. 13 2.2. Thuật toán PageRank cơ bản Trong [8], Page và Brin đã đưa ra một phương pháp nhằm giúp cho công việc tính toán hạng trang. Phương pháp này dựa trên ý tưởng rằng: nếu có liên kết (links) từ trang A đến trang B thì độ quan trọng của trang A cũng ảnh hưởng đến độ quan trọng của trang B. Điều này ta cũng có thể thấy được một cách trực quan rằng, nếu trang Web bất kì được link đến bởi trang Yahoo! chắc chắn sẽ quan trọng hơn nếu nó được link bởi một trang Web vô danh nào đó. Giả sử ta có một tập hợp các trang Web với các liên kết giữa chúng, khi đó ta coi tập hợp các trang Web như là 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.2.1. PageRank thô Trước tiên ta sẽ giới thiệu một định nghĩa về PageRank đơn giản thể hiện độ quan trọng của mỗi trang Web dựa vào các liên kết, trước khi tìm hiểu một phương pháp được áp dụng trong thực tế. Giả sử rằng các trang Web tạo thành một đồ thị liên thông, nghĩa là từ một trang bất kì có thể có đường liên kết tới một trang Web khác trong đồ thị đó. Công việc tính PageRank được tiến hành như sau: Ta đánh số các trang Web có được từ 1, 2,…,m. 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. Khi đó giá trị PageRank r(i) ứng với trang i được tính như sau ∑∈= )( )()()( iBj jNjrir Nếu gọi r = [r(1),r(2), ... , r(n)] là vector PageRank, trong đó các thành phần là các hạng tương ứng của các trang Web, ta viết lại các phương trình này dưới dạng ma trận r = ATr trong đó: A là ma trận kích thước n x n trong đó các phần tử 14 aij = N j 1 nếu có liên kết từ i đến j aij = 0 nếu ngược lại Như vậy ta có thể thấy vectơ PageRank r chính là vectơ riêng của ma trận AT Như ta đã thấy ỏ trên, việc tính toán mức độ quan trọng hay hạng trang theo phương pháp PageRank có thể được thực hiện thông qua việc phân tích các liên kết tới trang Web đó. Nếu nó có những liên kết quan trọng trỏ tới thì rất có thể trang đó là trang 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 ta phải biết được hạng của trang liên kết tới nó, điều này có thể gây ra việc lặp vô hạn rất tốn kém. Khắc phục bằng cách đưa về các vectơ hạng, ta có thể tính toán được các hạng trang thông qua việc tính toán vectơ riêng của ma trận AT. Trong đại số tuyến tính có khá nhiều các phương pháp có thể tính được vectơ 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 vectơ PageRank là phương pháp lặp. Các công việc tính toán sẽ được làm như sau: 1. s Å vector bất kì 2. r Å AT s 3. nếu ||r-s||<e thì kết thúc, khi đó ta nhận được r là vector PageRank nếu không thì sÅr, quay lại bước 2. Diễn giải thuật toán trên như sau: bước đầu tiên ta sẽ gán cho vectơ PageRank toàn cục một giá trị bất kì, sau đó lấy vectơ đó nhân với ma trận AT được một vectơ mới giả sử là r(1), lại tiếp tục nhân r(1) với ma trận AT, tiếp tục quá trình này cho đến khi dãy {r(i)} hội tụ – nghĩa là tất cả các phần tử của r(i) thay đổi với một sai số nhỏ hơn một giá trị e bất kỳ. Khi đó ta có thể nhận được một vectơ PageRank “tương đối” đại diện cho các trang Web ta xét. 15 2.2.2. PageRank trong thực tế 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 (Web leak) hay không liên kết tới trang Web nào khác (Web sink). Đối với những trang không có liên kết tới trang khác, như ví dụ ở hình vẽ 3, cụm (4,5) là Websink, người dùng khi đi đến nút (4,5) sẽ bị tắc, khi đó các trang Web sẽ có hạng r1=r2=r3=0, r4=r5=0.5, còn nếu bỏ nút 5 cùng các liên kết thì trang 4 là Web leak, dẫn đến hạng của mọi trang dẫn đến 4 đều = 0. Điều này không phù hợp thực tế, vì bất kì trang Web nào ra đời cũng đều có tính quan trọng của nó, cho dù trang đó của một cá nhân thì nó cũng quan trọng với riêng người đó. Do vậy cần phải sửa đổi công thức PageRank bằng cách thêm vào một hệ số hãm d, công thức PageRank được sửa đổi có dạng như sau: nd B jNjrdir i j /)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 [8] cũng đã chỉ ra rằng các giá trị này có thể hội tụ khá nhanh, trong vòng khoảng 100 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. 1 4 2 3 5 Hình 4: Một ví dụ liên kết Web 16 2.3. Một số thuật toán khác Phần này chúng tôi xin đề cập tới vấn đề liên quan tới hiệu năng tính toán của thuật toán PageRank bao gồm khả năng tăng tốc độ tính toán và một trong các phương pháp tăng tốc độ tính toán hiện nay là Modified Adaptive PageRank. 2.3.1. Nhu cầu tăng tốc độ tính toán PageRank PageRank là một trong những phương pháp 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. 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 vectơ 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 vectơ 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 vectơ PageRank, mỗi vectơ hướng tới một tiêu đề khác nhau. Việc tính toán nhiều vectơ này cũng đòi hỏi mỗi vectơ 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 [11], đã 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, độ quan trọng các trang Web có tốc độ hội tụ không giống nhau, có những trang Web độ quan trọng hội tụ nhanh có trang lại có độ hội tụ chậm. Vậy chúng ta có thể tận dụng những trang hội tụ trước và kết quả độ quan trọng của những trang đã hội tụ đó có thể không cần phải tính 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. Phương pháp này là một cải tiến của phương pháp PageRank. 17 2.3.2. Thuật toán Modified Adaptive PageRank 2.3.2.1. Thuật toán Adaptive PageRank Giả sử việc tính toán vectơ 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 x(k+1) = Ax(k), (*) Gọi C là tập hợp các trang Web đã hội tụ đến mức e nào đó và N là tập hợ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, AN cỡ mxn 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 AC cỡ (n-m)xn 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 vectơ x(k) ra thành 2 vectơ x kN )( tương ứng với những thành phần của x(k) đã hội tụ còn x kC )( tương ứng với những thành phần của x(k) chưa hội tụ. Vậy ta có thể viết lại ma trận A và x(k) dưới dạng như sau : ⎟⎟⎠ ⎞ ⎜⎜⎝ ⎛ = x xx k C k Nk )( )( )( và ⎟⎟⎠ ⎞ ⎜⎜⎝ ⎛= A AA C N Ta có thể viết lại phương trình (*) như sau: ⎟⎟⎠ ⎞ ⎜⎜⎝ ⎛ •⎟⎟⎠ ⎞ ⎜⎜⎝ ⎛=⎟⎟⎠ ⎞ ⎜⎜⎝ ⎛ + + x x A A x x k C k N C N k C k N )( )( )1( )1( Do những thành phần của x kC )( đã hội tụ do vậy ta không cần tính x kC )1( + nữa và như vậy việc tính toán sẽ được giảm đi do không phải tính toán xA kC )( nữa mà chỉ cần thực hiện xN(k+1)= ANx(k) 2.3.2.2 . Thuật toán Modified Adaptive PageRank Trong thuật toán Adaptive PageRank tốc độ tính toán được tăng nhanh lên do ta đã 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 phần này ta sẽ nghiên cứu sâu hơn về cách giảm đi những tính toán dư thừa. Chúng ta có thể viết ma trận A một cách rõ ràng hơn như sau ⎟⎟⎠ ⎞ ⎜⎜⎝ ⎛= AA AAA CCCN NCNN 18 Với ANN 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ụ, ACN 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 khác ANC,ACC.Vì xC và ANCxC không thay đổi sau vòng lặp thứ k vì chúng đã hội tu, nên phương trình (*) có thể được viết lại : xAxAx kCCNkNNNkN )()()1( +=+ Ma trận A đã được chia nhỏ ra do vậy công việc tính toán có thể được giảm đi một cách đáng kể. Những kết quả thực nghiệm trong [11] cho thấy tốc độ tính toán có thể được cải thiện khoảng 30%. Theo [11], 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à đích đến cuối cùng cần đạt được. 2.3.3. Topic-sensitive PageRank PageRank là 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 có chứa liên kết đó, do vậy có 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 là cần phải đưa ra một phương pháp có tốc độ nhanh như phương pháp PageRank và lại có 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 có ý nghĩa. Taher H. Haveliwala [15,16] đề xuất phương pháp mới nhằm đáp ứng yêu cầu trên, đó là 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 các chủ đề c1,c2,...,cn ; gọi Tj là tập hợp những trang Web theo chủ đề cj. Mỗi lớp 19 tương ứng với một vector PageRank của chủ đề mà mỗi thành phần là 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 vì sử dụng [ ]Nv n/1 1×→ = thuật toán sử dụng vector jv v= r uur trong đó (1) Gọi → jD là vector các từ khoá, gồm tất cả các từ khoá trong các tài liệu của các chủ đề; Djt là số lần xuất hiện của từ khoá t trong tất cả các tài liệu của chủ đề cj. Bước thứ hai được thực hiện trong thời gian hỏi-đáp. Giả sử có truy vấn q, gọi q’ là phạm vi ngữ cảnh của q. Mô tả sơ 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ì q’ chính là q. Trường hợp truy vấn q được đặt bằng cách tô 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 là 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ủ đề. Dưới đây là 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 là từ khoá thứ i trong ngữ cảnh q’. Với mỗi cj, xác suất để q’∈cj là: )'()( )'( )'()( )'( . . ∏≈= i jij jj j cqPcPqP cqPcP qcP (2) Trong đó ( )' |i jP q c được tính từ vector các từ khoá →jD được xác định tại bước 1. Giá trị P(cj) đượ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 [15,16], với ký hiệu rankjd là hạng của văn bản d cho bởi vector PR(d, → jv ) - vector PageRank của chủ đề cj thì độ quan trọng sqd dựa theo câu truy vấn được tính toán như sau: ∑= j jdjqd rankqcPs .)'( (3) 1 | | 0 jT jiv ⎧⎪= ⎨⎪⎩ ji T∈ ji T∉ 20 Chương 3. Thuật toán sử dụng cấu trúc Block theo thành phần liên thông Phần đầu chương này trình bày một số khái niệm cơ bản trong tính toán hạng trang PageRank tại mục 2, từ đó đề xuất phương pháp mà chúng tôi gọi phương pháp mới này là CCP (Connected Components in PageRank). Những lý thuyết, chứng minh hình thành gắn liền với phương pháp sẽ được đề cập kĩ trong tại mục 3. 3.1. Khái niệm cấu trúc Block theo thành phần liên thông 3.1.1.Phân tích thuật toán PageRank Chương 2 của khoá luận đã trình bày phương pháp tính toán hạng trang PageRank. Phần này chúng tôi sẽ đi sâu phân tích thuật toán PageRank diễn tả theo ngôn ngữ đồ thị. Phương pháp này dựa trên ý tưởng đã được thừa nhận là nếu có liên kết từ trang A tới trang B thì độ quan trọng của trang A cũng ảnh hưởng tới độ quan trọng của trang B. Giả sử ta có tập hợp gồm n trang Web trong cơ sở dữ liệu được đánh số từ 1 tới n. Đối với trang u bất kì, gọi )(uBI là tập hợp những liên kết tới trang u, gọi Nu là số liên kết tới trang u. Gọi uπ là hạng trang của u (PageRank), khi đó công thức tính PageRank cho trang u như sau: ∑ ∈ = )(uBi i i u I N ππ (1) Nếu diễn tả với ngôn ngữ đồ thị thì ta có thể đặt G = (V, E) với V là tập các trang Web cần tính hạng trang (V có n trang, được đánh chỉ số 1, 2, ... n), còn E là tập cạnh đồ thị, E = {(i, j) | nếu có liên kết từ trang i tới trang j}. Thuật toán giả thiết rằng đồ thị trang Web là liên thông theo nghĩa với cặp hai trang Web i, j bất kì luôn có đường đi từ i tới j và ngược lại. Khi đó có thể xây dựng được ma trận kề biểu diễn đồ thị G như sau: nxnijpP )(= (2) Trong đó (3) Khi đó phương trình (1) được viết lại dưới dạng ma trận sẽ được: nếu có liên kết từ i đến j nếu không có liên kết từ i đến j ⎩⎨ ⎧= 0 1 i ij N p 21 Pππ = (4) Nói cách khác đây chính là việc tính vector riêng của ma trận P, và vector riêng này ứng với giá trị riêng λ=1. Tuy nhiên việc tính vector riêng này chỉ được đảm bảo khi ma trận P thoả mãn một số tính chất chặt chẽ đối với ma trận chuyển Markov. Trong thực tế các trang Web, việc giả thiết đồ thị liên thông là không hợp lí vì bao giờ cũng tồn tại trang không có liên kết tới trang nào khác. Do vậy, hàng ứng với trang Web đó trong ma trận kề P sẽ bao gồm toàn những số 0, nên trong điều kiện đó không tồn tại một phân phối xác suất dừng ổn định của P hay nói cách khác là vector riêng PageRank. Chính vì vậy, để tồn tại một xác suất dừng ổn định đối với ma trận Markov P (xem thêm trong [12]) thì cần phải sửa đổi ma trận P sao cho phù hợp. Định nghĩa ma trận J n PP )1(~ αα −+= (5) trong đó 10 << α (α thường được chọn là 0.85) và J là ma trận gồm toàn phần tử 1. Khi đó, thay vì tính vector riêng của ma trận P ta tính vector riêng ),...,( 1 nπππ = của ma trận P~ được cho bởi công thức P~ππ = (6) Và tổng các thành phần của vector ),...,( 1 nπππ = : 1 1 =∑ = n i iπ (7) Hay nói cách khác 11 =π trong đó 1 là vector cột gồm toàn phần tử 1. Ta có được điều này vì vector π chính là một phân bố xác suất dừng của ma trận chuyển Markov, do vậy bắt buộc tổng các thành phần trong vector phải bằng 1. Trong quá trình tính toán vector riêng, phương pháp lặp đơn được sử dụng và phương pháp này có thể cho kết quả khả quan sau hơn 20 vòng lặp [1,2]. Với phương pháp ở trên, chúng ta dễ dàng nhận thấy ma trận P là ma trận rất thưa, do vậy công việc tính toán sẽ có nhiều thao tác thừa. Trong mục tiếp theo chúng ta sẽ bàn về khái niệm cấu trúc Block theo thành phần liên thông trong ma trận liên kết Web và việc sử dụng thành phần liên thông để giảm đi những tính toán dư thừa này. 22 3.2. Một số vấn đề lý thuyết Khi khảo sát mô hình Markov [13], chúng tôi nhận thấy rằng trong lý thuyết xác suất, các trạng thái có thể được chia ra những lớp khác nhau. Những trạng thái có thể chuyển qua lại nhau được coi như là trong cùng một lớp. Khái niệm lớp các trạng thái trong mô hình Markov khá giống với khái niệm thành phần liên thông trong lý thuyết đồ thị. Hơn nữa, việc sử dụng ma trận kề biểu diễn đồ thị các trang Web đã dẫn tới ý tưởng sử dụng khái niệm cấu trúc Block (khối) theo thành phần liên thông trong tính toán hạng trang với một số lợi thế sau: - Khi chúng ta sử dụng toàn bộ ma trận P để tính toán vector riêng như trong phương pháp PageRank [1,2], số phép tính chi phí là khá lớn. Như đã biết, với phép nhân ma trận thì thời gian tính toán là O(n3) trong đó n là số trang Web. Nhưng khi chúng ta đưa ma trận kề biểu diễn đồ thị về dạng các khối biểu diễn cho từng thành phần liên thông thì thời gian tính toán sẽ giảm đi rất nhiều. Thật vậy, giả sử chúng ta có k thành phần liên thông, khi đó với mỗi khối, thời gian tính toán nhỏ hơn )( 3 maxnO trong đó nmax=max{n1,…,nk}và tổng thời gian tính toán sẽ nhỏ hơn )( 3 maxnkO , nhỏ hơn nhiều so với thời gian tính toán khi ta sử dụng toàn bộ ma trận lớn. Như vậy, phương pháp đề xuất có thời gian tính toán lý thuyết hiệu quả hơn đối với phương pháp PageRank. Hơn nữa, nếu kết hợp phương pháp này với những phương pháp hỗ trợ tính toán như MAP hay phương pháp ngoại suy [9,10] thì thời gian tính toán sẽ được giảm đi đáng kể. - Sử dụng thành phần liên thông chúng ta có thể “thực sự” làm giảm đi số vòng lặp tính toán không giống như phương pháp tính toán ma trận theo từng khối hoặc phương pháp ma trận ra các thành phần nhỏ hơn dựa trên tiêu chí cùng host [11]. Phương pháp tính toán ma trận theo khối giúp giảm được thời gian tính toán do sử dụng kĩ thuật tính toán để có thể song song hoá mà không làm giảm được số vòng lặp. Phương pháp chia ma trận thành các Block thành phần theo tiêu chí cùng host có thể giảm số vòng lặp nhưng lại được chia làm hai bước và mất thêm chi phí xử lý theo khối, hơn nữa khối được chia theo host vẫn khá lớn. Phương pháp CCP khắc phục được các điểm trên: cài đặt không cần sử dụng nhiều kĩ thuật như trong tính toán ma trận theo khối; hơn nữa, giảm được số vòng lặp do các khối thành phần liên thông có cỡ nhỏ hơn khối được chia theo tiêu chí host [11]. 23 - Trong phương pháp được đề xuất, cần phải tìm kiếm các thành phần liên thông và việc tìm thành phần liên thông của đồ thị có thể tiến hành dễ dàng với thời gian đa thức O(n+m) với n là số đỉnh và m là số cạnh của đồ thị [8]. Do vậy, thời gian chi phí với việc tìm kiếm thành phần liên thông là không đáng kể. - Khi chúng ta đưa về tính toán với mỗi khối thành phần liên thông thì chúng ta có thể song song hoá quá trình tính toán. Với những thành phần liên thông khác nhau được tính toán, chúng ta có thể giao cho những bộ xử lý khác nhau. Việc song song hoá này có thể được tiến hành rất tự nhiên mà không cần phải áp dụng một kỹ thuật nào phức tạp, hơn nữa, khi song song hoá, chúng ta có thể đẩy nhanh được thời gian tính toán lên. Nhận xét Như vậy, phương pháp đề xuất có một số lợi điểm cơ bản sau (so với một số phương pháp đã nghiên cứu): • Giảm được thời gian tính toán do việc lặp tính toán trên ma trận được giảm đi dựa trên việc phân chia đồ thị các trang Web ra các thành phần liên thông. • Có thể kết hợp dễ dàng với các phương pháp hỗ trợ tính toán trên ma trận. • Có thể được áp dụng song song hoá một cách tự nhiên mà không cần phải sử dụng quá nhiều những kĩ thuật lập trình. Khi sử dụng phương pháp chia ma trận kề thành những khối ma trận nhỏ hơn đại diện cho từng thành phần liên thông thì trong quá trình tính toán chúng ta phải giải quyết một số vấn đề sau: - Tính toán hạng trang như thế nào để kết quả đạt được là đúng đắn? - Việc tính toán trên các thành phần liên thông như thế nào là hiệu quả? Chúng ta sẽ xem xét việc giải quyết những vấn đề trên trên khía cạnh lý thuyết ở mục sau. 3.2.1. Tính toán hạng trang với các Block theo thành phần liên thông Như đã đề cập ở trên, khi tính toán trên các thành phần liên thông thì giá trị hạng trang PageRank hay nói cách khác là vector riêng đối với các trang được tính thế nào? 24 Giả sử đồ thị G có k thành phần liên thông, khi đó ma trận P có thể được viết dưới dạng k khối được đặt trên đường chéo chính như sau: ⎟⎟ ⎟ ⎠ ⎞ ⎜⎜ ⎜ ⎝ ⎛ = kP P P L MOM L 0 01 (8) trong đó Pi là ma trận kề cỡ nixni ứng với thành phân liên thông thứ i, ki ,1= ; nn k i i =∑ =1 Định nghĩa các ma trận i i ii Jn PP )1(~ αα −+= với ki ,1= và Ji là ma trận cỡ nix ni (9) Công thức tính vector riêng với từng khối ma trận Pi là iii P ~ππ = (10) Định lý: Với những giả thiết ở trên (5,6,7,8,9,10), ta có ),...,( 11 kk n n n n πππ = (11) chính là vector riêng của ma trận P ~ . Chứng mình: Để chứng minh ),...,( 11 kk n n n n πππ = là vector riêng của ma trận P ~ thì ta phải chứng minh: π thoả mãn phương trình vector riêng (6). Thay (11) vào phương trình (6), ta được: ⎥⎥ ⎥ ⎦ ⎤ ⎢⎢ ⎢ ⎣ ⎡ −+ ⎟⎟ ⎟ ⎠ ⎞ ⎜⎜ ⎜ ⎝ ⎛ =⎥⎦ ⎤⎢⎣ ⎡ −+== J n P P J n PP k ααπααπππ 1 0 0 )1(~ 1 L MOM L 25 (12) trong đó ji xnnij J )1(= là ma trận gồm toàn phần tử 1 và có cỡ nixnj. Nhân vế phải của (12), và xét thành phần thứ nhất, ta được: 121 22 111 1111 1...1)1( k kk J nn n J nn nJ n P n n n n απαπααππ −++−+−+= (13) Mà với mỗi khối Pi có vector riêng tương ứng là iπ thoả mãn phương trình (10) ⎥⎦ ⎤⎢⎣ ⎡ −+== i i i i i ii J n PP ααπππ 1~ (14) ⎥⎦ ⎤⎢⎣ ⎡ −+=⇔ i i i iiii J n P n n n n ααππ 1 (15) Xét trường hợp cụ thể i=1, ta được: ⎥⎦ ⎤⎢⎣ ⎡ −+=⇔ 1 1 1 1111 1 J n P n n n n ααππ (16) Từ (13,16) ta được: 121 22 111 11 1 1 1 11 1...1)1(1 k kk J nn n J nn nJ n P n nJ n P n n απαπααπααπ −++−+−+=⎥⎦ ⎤⎢⎣ ⎡ −+ (17) 111 11 11 1 ... 111 k kk JJ J n n J n nJ πππ ++=⇔= n n k i i nn ∑ ==⇔ 1.11 11 mà nn k i i =∑ =1 , 1 1n là vector hàng n1 cột gồm toàn phần tử 1 11 11 nn =⇔ ⎥⎥ ⎥⎥ ⎥⎥ ⎥ ⎦ ⎤ ⎢⎢ ⎢⎢ ⎢⎢ ⎢ ⎣ ⎡ −+− −−+− −−−+ =⇔ kkkk k k kkkk J n PJ n J n J n PJ n J n J n J n P n n n n n n n n ααα αααα αααα ππππ 11 111 111 ),...,(),...,( 1 222221 112111 1111 LL MOMM L L 26 Vậy ta được (13) đúng. Tương tự, ta xét với các thành phần tiếp theo, iπ với ki ,2= cũng thoả mãn (đpcm) 3.2.2 Thuật toán CCP Phương pháp sử dụng cấu trúc Block theo thành phần liên thông trong bài toán tính hạng trang có thể được chia làm các bước: - Bước 1: Chia đồ thị ra các thành phần liên thông với các ma trận kề tương ứng. - Bước 2: Tính toán PageRank cho các trang trong mỗi thành phần liên thông dựa trên việc tính toán vector riêng của ma trận kề của thành phần liên thông đó. - Bước 3: Tổ hợp hạng trang cuối cùng dựa trên hạng trang nhận được sau bước 2 như trong công thức (11). Trong quá trình tính toán, để được hiệu quả, chúng ta sẽ coi như chỉ làm việc với trường hợp trung bình, có nghĩa là xét các thành phần liên thông với số đỉnh trung bình. Do vậy chúng ta cần giải quyết hai trường hơp: đó là thành phần liên thông có số đỉnh vượt quá hoặc nhỏ hơn ngưỡng trung bình. Để giải quyết các trường hợp này, cần đưa ra hai số để làm ngưỡng, gọi là min và max. Khi đó, iP∀ ki ,1= ta cần maxmin ≤≤ in ; nếu min≤in thì sẽ ghép những thành phần liên thông có số đỉnh tương tự để được một thành phần liên thông có số đỉnh thoã mãn điều kiện, nếu max≥in thì cần phải tách thành phần liên thông này ra thành những thành phần liên thông nhỏ hơn để thoả mãn điều kiện. Tuy nhiên khi tách và hợp các thành phần liên thông, hạng của các trang sẽ thay đổi và chúng ta sẽ phải xử lý vấn đề này. Từ đây đề xuất cách giải quyết như sau đối với hai trường hợp: - Trường hợp gộp: Đây là trường hơp đơn giản, PageRank của các trang sẽ được tính toán và lấy ra từ thành phần liên thông sau khi được gộp. Trong trường hợp này, chúng ta chỉ cần gộp sao cho số đỉnh của thành phần liên thông vừa đủ lớn hơn min. (min ở đây có thể thử nghiệm với nhiều số để đưa ra được số min tối ưu nhất). - Trường hợp tách: Đối với trường hợp này, vấn đề lý thuyết sẽ khó khăn hơn so với trường hợp trên. Khi chúng ta tách một thành phần liên thông lớn thành một thành phần liên thông nhỏ, thì giữa những thành phần nhỏ này có những liên hệ nhất định với nhau, và ta cần phải thể hiện hoặc sử dụng những liên hệ này để kết quả nhận được cuối cùng là chính xác. Giả sử từ một thành phần liên thông chúng ta tách ra 27 thành m khối (mỗi khối đều tự liên thông) và giữa các khối này có những liên kết nào đó tới nhau (vì được tách ra từ một thành phần liên thông lớn). • Bước 1: Chúng ta tính hạng cho tất cả các trang trong mỗi thành phần liên thông nhỏ như bình thường. • Bước 2: Coi mỗi thành phần liên thông nhỏ như một nút của đồ thị, chúng ta sẽ được một đồ thị gồm m nút và số liên kết tới mỗi nút cũng như tổng số liên kết có trong đồ thị. Hạng của mỗi nút trong đồ thị mới được xây dựng này sẽ bằng số liên kết tới chính nút đó chia cho tổng số liên kết trong đồ thị. Tại sao lại chọn hạng trang cho mỗi nút trong đồ thị như vậy? Khi ta chọn giá trị như vậy thì tổng tất cả các hạng trong đồ thị mới này sẽ bằng 1 (thoả mãn điều kiện là tổng các xác suất). • Bước 3: Do trong m khối, mỗi khối có vector PageRank riêng, và tổng các thành phần của vector PageRank của mỗi khối này đều bằng 1, do vậy khi gộp lại tổng các thành phần của m vector ứng với các khối sẽ bằng m. Do vậy, để tổng thành phần của các vector PageRank của m khối bằng 1, ta sẽ lấy PageRank đại diện của mỗi khối nhân với PageRank thành phần. Hệ số min, max cũng như số đỉnh trung bình của mỗi khối sẽ được thử nghiệm để tìm ra được hệ số tối ưu. Chương tiếp theo giới thiệu mô hình máy tìm kiếm Vinahoo và áp dụng thử nghiệm thuật toán Modified Adaptive PageRank cho bài toán tính hạng trang trong máy tìm kiếm Vinahoo. 28 Chương 4. Giải pháp tính hạng trang cải tiến cho máy tìm kiếm Vinahoo 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. 29 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 ...... 30 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, khi lư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. 31 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 (đâ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 0 Converged ⎧= ⎨⎩ 2.59 1.65 0 0.5 1 1.5 2 2.5 3 Thời gian(s) PageRank MAP CCPThuậ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 32 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 5 ets.org/criterion/elementary.html ets.org/criterion/elementary.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 33 Kết luận 1. Kết quả đạt được của khóa luận Thông qua việc tìm hiểu, nghiên cứu các công trình nghiên cứu liên quan về bài toán tính hạng trang trong máy tìm kiếm, khóa luận đã hoàn thành một số kết quả sau đây: - Trình bày và phân tích chi tiết thuật toán PageRank cơ bản áp dụng trong bài toán tính hạng trang trong máy tìm kiếm. - Trình bày những nội dung cơ bản bao gồm cả việc phân tích hai thuật toán Modified Adaptive PageRank và Topic-sensitive PageRank nhằm nâng cao hiệu năng tính toán PageRank. - Phân tích chi tiết cơ chế hoạt động của máy tìm kiếm tiếng Việt mã nguồn mở Vinahoo. - Một kết quả quan trọng của khóa luận là đã đề xuất một giải pháp sử dụng cấu trúc Block theo thành phần liên thông trong ma trận liên kết Web trong việc tính PageRank trong máy tìm kiếm Vinahoo. - Hơn thế nữa, khóa luận cài đặt thuật toán Modified Adaptive PageRank trên vào máy Vinahoo và đạt được một số kết quả bước đầu tương đối khả quan. Tuy nhiên do hạn chế về thời gian hoàn thành khóa luận nên chương trình cài đặt chưa cài đặt hoàn chỉnh thuật toán CCP sử dụng cấu trúc Block theo thành phần liên thông trong ma trận liên kết Web trong việc tính PageRank trong máy tìm kiếm Vinahoo . 2. Hướng phát triển tiếp theo Khai phá cấu trúc web vào máy tìm kiếm trong bài toán tính hạng trang đang ngày càng trở thành các lĩnh vực nghiên cứu đầy tiềm năng, hướng nghiên cứu tiếp theo của khóa luận là: - Tiếp tục hoàn thiện chương trình cài đặt thuật toán CCP sử dụng cấu trúc Block theo thành phần liên thông trong ma trận liên kết Web trong việc tính PageRank trong máy tìm kiếm Vinahoo. - Nghiên cứu sâu về tối ưu min, max, trung bình, cách chia các block cũng như phát triển phương pháp theo hướng song song hoá. 34 Tài liệu tham khảo [1]. Bùi Quang Minh. Máy tìm kiếm Vinahoo. Báo cáo kết quả nghiên cứu thuộc Đề tài khoa học đặc biệt cấp ĐHQGHN mã số QG-02-02, 2002. [2] Đỗ Thị Diệu Ngọc, Nguyễn Hoài Nam, Nguyễn Yến Ngọc, Nguyễn Thu Trang. Giải pháp tính hạng trang cải tiến cho máy tìm kiếm Vinahoo. Chuyên san “Các công trình nghiên cứu - triển khai Viễn thông và CNTT”, Tạp chí Bưu chính - Viễn thông, 14, 4-2005, 65-71 [3] Phạm Thị Thanh Nam, Bùi Quang Minh, Hà Quang Thụy. Giải pháp tìm kiếm trang Web tương tự trong máy tìm kiếm Vinahoo. Tạp chí Tin học và Điều khiển học, 20(4), 293-304, 2004. [4] Andrew Y. Ng, Alice X. Zheng, and Michael I. Jordan. Stable algorithms for link analysis. In Proceedings of the 24th Annual International ACM SIGIR Conference. ACM, 2001. [5] Jon Kleinberg. Authoritative sources in a hyperlinked environment. Journal of the ACM, 46(5):604-632, November 1999. [6] Jiawei Han, Micheline Kamber, Data Mining: Concepts and Techniques. Morgan Kaufmann Publishers, 2001, trang 435-443. [7] Kir Kolyshkin. Vinahoo Manual. Cung cấp tại 2002.The Anatomy of large scale Hypertextual Web Search Engine. [8] Page, L., Brin, S., Motwani, R. and Winograd, T. 1998 The PageRank citation ranking: bringing order to the Web. Technical report, Stanford University. [9] Raymond Kosala, Hendrik Blockeel. Web Mining Research: A Survey. Department of Computer Science, Katholieke Uiniversiteit Leuven, Heuverlee, Belgium, trang 601-602. [10] Sepandar Kamvar, Taher Haveliwala, and Gene Golub (2003). Adaptive Methods for the Computation of PageRank. Technical report, Stanford University. [11] Sepandar D. Kamvar, Taher H. Haveliwala, Christopher D. Manning Gene H. Golub (2003). Exploiting the Block Structure of the Web for Computing PageRank. Technical report, Stanford University 35 [12] S. D. Kamvar, T. H. Haveliwala, C. D. Manning, and G. H. Golub. Extrapolation methods for accelerating PageRank computations. In Proceedings of the Twelfth International World Wide Web Conference, 2003. [13] Sheldon Ross. Introduction to probability models, 8th Edition. Academic Press, January 2003. [14] Shian - Hua Lin, Meng Chang Chen, Jan-Ming Ho, ACIRD: Intelligent Internet Document Organization and Retrival. IEEE transaction on knowledge and data engineering VOL 14, NO 3 May/June 2002. [15] Taher H. Haveliwala. Topic-Sensitive PageRank. WWW2002, May 7–11, 2002, Honolulu, Hawaii, USA (ACM 1581134495/02/0005). [16] Taher H. Haveliwala. Topic-Sensitive PageRank: A Context-Sensitive Ranking Algorithm for Web Search, 2003. [17] Taher H. Haveliwala. Efficient Computation of PageRank. Technical report, Stanford University, 1999. [18]

Các file đính kèm theo tài liệu này:

  • pdfK46_Nguyen_Yen_Ngoc_Thesis.pdf
Tài liệu liên quan