Tuy nhiên, khái niệm Search Engine từ lâu đã được gắn với việc tìm kiếm tài liệu dạng text Document Search trên mạng Internet và trên máy tính cá nhân Desktop Search Trong giai đoạn mà c
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Nguyễn Hoàng Trung
XÂY DỰNG SEARCH ENGINE
LUẬN VĂN THẠC SĨ
Hà Nội – 2009
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Nguyễn Hoàng Trung
XÂY DỰNG SEARCH ENGINE
Ngành: Công nghệ thông tin
Trang 4Tôi xin cam đoan đây là công trình nghiên cứu của bản thân Các số liệu, kết quảtrình bày trong luận văn này là trung thực Những tư liệu được sử dụng trong luận văn
có nguồn gốc và trích dẫn rõ ràng, đầy đủ
Nguyễn Hoàng Trung
Trang 5Trước hết, tôi xin được nói lời cảm ơn đến gia đình hai bên nội ngoại đã động viên tôi rất nhiều trong suốt thời gian học tập và nghiên cứu
Tôi xin được gửi lời cảm ơn tới bộ môn Công nghệ phần mềm, khoa Công nghệ thông tin trường Đại học Công nghệ - Đại Học Quốc Gia Hà nội đã tạo điều kiện cho tôi thực hiện đề tài này Tôi xin được cảm ơn TS Nguyễn Tuệ, người đã trực tiếp hướng dẫn tôi hoàn thành đề tài này
Tôi cũng xin được gửi lời cảm ơn tới Công ty NAiSCorp, những người đồng đội, đồng chí đã chiến đấu cùng tôi vì một mục tiêu mang tri thức đến với người Việt Tôi cũng xin được gửi lời cảm ơn tới bạn bè tôi, những người đã giúp đỡ tôi rất nhiều Mặc dù có nhiều cố gắng nhưng do đề tài này quá lớn nên chắc chắn luận văn này còn có nhiều thiếu sót Tôi rất mong nhận được những ý kiến đóng góp quý báu của những độc giả quan tâm Mọi góp ý xin gửi về trungnh@socbay.com.
Tác giả
Nguyễn Hoàng Trung
Trang 6MỞ ĐẦU GIỚI THIỆU LUẬN VĂN 1
1 MỤC ĐÍCH 1
2 LÝ DO LỰA CHỌN ĐỀ TÀI 1
3 BỐ CỤC LUẬN VĂN 2
CHƯƠNG 1 LÝ THUYẾT CHUNG VỀ SEARCH ENGINE 5
1.1 TỔNG QUAN VỀ MẠNG INTERNET VÀ SEARCH ENGINE 5
1.2 CÁC MÔ HÌNH KIẾN TRÚC CỦA SEARCH ENGINE 6
1.2.1 Mô hình kiến trúc chung 6
1.2.2 Mô hình agent 9
1.3 PHÂN LOẠI SEARCH ENGINE 10
1.4 INFORMATION RETRIEVAL VÀ SEARCH ENGINE 10
1.4.1 Định nghĩa và khái niệm 11
1.4.2 Kiến trúc của một hệ IR 11
1.4.3 Các độ đo (metrics) 13
1.4.4 Chỉ mục ngược (inverted index) trong tìm kiếm 14
1.4.5 Các mô hình IR trong tìm kiếm và đánh giá kết quả 16
1.4.6 Từ dừng 20
1.4.7 Stemming 20
1.5 WEB CRAWLER 21
1.5.1 Giới thiệu 21
1.5.2 Các chiến lược lựa chọn trang Web trong quá trình crawl 23
1.5.3 Tăng tốc độ crawl và crawl song song 28
1.5.4 Làm tươi trang Web (pages refresh) 31
1.6 LƯU TRỮ DỮ LIỆU 32
1.6.1 Giới thiệu 32
1.6.2 Khó khăn và thách thức 33
1.6.3 Lưu trữ phân tán (distributed repository) 33
1.7 XÂY DỰNG CHỈ MỤC TỪ 36
1.7.1 Giới thiệu 36
1.7.2 Chỉ mục ngược trong Search engine 37
1.7.3 Khó khăn, thách thức 40
1.7.4 Index partitioning 40
1.8 TÌM KIẾM 41
1.9 XẾP HẠNG KẾT QUẢ TÌM KIẾM 43
1.9.1 PageRank 44
1.9.2 HITS 46
1.9.3 Một số kỹ thuật dựa liên kết khác 49
CHƯƠNG 2 KHẢO SÁT MỘT SỐ SEARCH ENGINE 50
2.1 SEARCH ENGINE MÃ MỞ LUCENE 50
2.1.1 Giới thiệu Lucene 50
2.1.2 Các phiên bản ngôn ngữ khác của Lucene 51
2.1.3 Vòng đời kiến trúc phần mềm Lucene 52
2.1.4 Sơ đồ phụ thuộc của Lucene.Net 52
2.1.5 Các lớp của Lucene.Net 53
2.2 TIẾNG VIỆT TRONG XÂY DỰNG CÔNG CỤ TÌM KIẾM 55
2.2.1 Đặc điểm của ngữ âm và âm vị 55
2.2.2 Đặc trưng về từ pháp và hình thái 56
2.2.3 Đặc trưng về ngữ pháp 57
2.2.4 Sự phức tạp trong mã hoá tiếng Việt 58
2.2.5 Unicode và chuẩn hoá cách mã hoá tiếng Việt 58
2.3 KHẢO SÁT CÁC CÔNG CỤ TÌM KIẾM TIẾNG VIỆT HIỆN NAY 59
2.3.1 Search Engine Google 60
2.3.2 Search Engine Xalo (www.Xalo.vn) 60
2.3.3 Search Engine Baamboo (www.Baamboo.com.vn) 60
2.3.4 Search Engine Socbay(www.Socbay.com) 60
Trang 7CHƯƠNG 3 XÂY DỰNG CÔNG CỤ MP3 SEARCH 62
3.1 CRAWLER CHO TÌM KIẾM MP3 62
3.1.1 Các vấn đề đặt ra với crawler 62
3.1.2 Các chiến lược lựa chọn trang Mp3 trong quá trình crawl 63
3.1.3 Tăng tốc độ crawl và crawl song song 64
3.1.4 Làm tươi trang Mp3 (pages refresh) 64
3.1.5 Kho lưu trữ cho tìm kiếm MP3 64
3.1.6 Đánh chỉ mục cho tìm kiếm MP3 65
3.1.7 Chỉ mục trong từ điển âm nhạc 69
3.1.8 Chỉ mục ngược trong từ điển âm nhạc 70
3.1.9 Khó khăn, thách thức của việc đánh chỉ mục 72
3.2 TÌM KIẾM MP3 72
3.2.1 Phân tích truy vấn 72
3.2.2 Tìm kiếm 72
3.2.3 Xếp hạng cho MP3 73
3.2.4 Giao diện của MP3 74
3.2.5 Đánh giá phần mềm tìm kiếm MP3 75
PHẦN KẾT LUẬN 77
1 NHỮNG ĐÓNG GÓP CỦA LUẬN VĂN 77
2 HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI 77
TÀI LIỆU THAM KHẢO 79
Tiếng Việt 79
Tiếng Anh 79
PHỤ LỤC 81
PHỤ LỤC A KIẾN TRÚC GOOGLE 81
PHỤ LỤC B CÁC KHÁI NIỆM VỀ SEARCH ENGINE 83
PHỤ LỤC C THUẬT TOÁN VUN ĐỐNG HEAPSORT CHO TÌM KIẾM 88
PHỤ LỤC D BẢNG MÃ HOÁ CHỮ CÁI TIẾNG VIỆT 91
CHỈ MỤC TỪ 94
Trang 8Hình 1 Mô hình kiến trúc chung của Search engine[14] 7
Hình 2 Kiến trúc agent của Search engine 10
Hình 3 Mô hình đơn giản của một hệ IR 12
Hình 4 Mô hình đánh chỉ mục của hệ IR[14] 12
Hình 5 Mô hình truy vấn của hệ IR[14] 13
Hình 6 Minh họa precision/recall 14
Hình 7 Ví dụ cấu trúc của chỉ mục ngược 15
Hình 8 Giải thuật xây dựng chỉ mục ngược (1) 15
Hình 9 Giải thuật xây dựng chỉ mục ngược đầy đủ (2) 16
Hình 10 Ví dụ đơn giản về VSM 18
Hình 11 Chuẩn hóa độ dài của tài liệu 20
Hình 12 Mô phỏng tìm kiếm theo chiều rộng 27
Hình 13 Mô phỏng tìm kiếm theo chiều sâu 28
Hình 14 Kiến trúc chung của crawler song song 30
Hình 15 Tập gồm hai trang Web với tốc độ thay đổi khác nhau 32
Hình 16 WebBase repository architecture 35
Hình 17 PageRank đơn giản và PageRank có sửa đổi (d=0.8) 45
Hình 18 Ví dụ giải thuật HITS 49
Hình 19 Vòng đời của Lucene 52
Hình 20 Sơ đồ phụ thuộc của Lucene với môi trường 52
Hình 21 Biểu đồ phần trăm mã code cho module Lucene 53
Hình 22 Sơ đồ phụ thuộc module của Lucene 55
Hình 23: Mô hình tách từ khóa từ văn bản thô 69
Hình 24 Kiến trúc Google 81
Trang 9Bảng 1 Giải thuật xử lý truy vấn dạng AND 17
Bảng 2 Tổng kết hiệu năng của các phương pháp tổ chức lưu trữ vật lý Web .34 Bảng 3 Tách term từ tài liệu 38
Bảng 4 Sắp xếp lại các term 39
Bảng 5 Thành lập từ điển và file postings 40
Bảng 6 Ví dụ về tìm kiếm AND trong mô hình Boolean 42
Bảng 7 Danh sách phụ thuộc Module của Lucene 54
Bảng 8 Kết quả test từ trên các công cụ 61
Bảng 9 Cấu trúc các trường của MP3 66
Bảng 10 Tách term từ tài liệu 70
Bảng 11 Danh sách các term theo id văn bản 70
Bảng 12 Danh sách từ theo văn bản và tần số xuất hiện 71
Bảng 13 Danh sách từ và thông tin về từ theo văn bản và tần số xuất hiện 72
Bảng 14 Thuật toán Merge 2 danh sách đơn giản 73
Bảng 15 Danh sách các trường được Rank 74
Bảng 16 Mã hoá chữ cái tiếng Việt bằng các bộ mã khác nhau 91
Trang 10Viết tắt Cụm từ xuất phát
Trang 11MỞ ĐẦU GIỚI THIỆU LUẬN VĂN
1 MỤC ĐÍCH
Search Engine là một khái niệm dùng để chỉ chương trình tìm kiếm các tài liệu(thuộc các dạng khác nhau: text, video, MP3…) thoả mãn một số điều kiện nào đó mà
ta gọi là truy vấn (query) của người dùng Tuy nhiên, khái niệm Search Engine từ lâu
đã được gắn với việc tìm kiếm tài liệu dạng text (Document Search) trên mạng Internet
và trên máy tính cá nhân (Desktop Search)
Trong giai đoạn mà các nhu cầu tìm kiếm thông tin trên mạng Internet cũng nhưtìm kiếm tài liệu tiếng Việt nói chung đang được quan tâm, đề tài này được phát triểnvới mục đích chính là mô tả các thành phần chung của một hệ tìm kiếm và xây dựngmột Engine tìm kiếm MP3 trên Internet Engine này phải giải quyết được các vấn đềtìm kiếm trong tiếng Việt
2 LÝ DO LỰA CHỌN ĐỀ TÀI
Cùng với sự phát triển của Internet, lượng thông tin trên mạng ngày càng nhiều.Thậm chí, người ta ước tính sự tăng trưởng ấy là theo cấp số nhân Theo một nghiêncứu thì cứ khoảng 5 năm, trí tuệ nhân loại lại tăng lên gấp đôi Với lượng thông tinkhổng lồ trên mạng như hiện nay, Search Engine thực sự là một “công cụ” tối cần thiếtcho người dùng Internet khai thác, tìm kiếm thông tin Khái niệm về Search Engine đã
có từ khá sớm và trên thế giới đã có rất nhiều nghiên cứu về Search Engine và các vấn
đề liên quan, đặc biệt là lĩnh vực truy xuất thông tin, (Information Retrieval - IR) sẽ
được trình bày trong tài liệu này Một trong những nghiên cứu đó là nghiên cứu của
trường đại học Standford, Mỹ về Search Engine mà kết quả của nó là Google, một
trong số các Search Engine hàng đầu hiện nay
Để xây dựng một Search Engine cần phải biết rất nhiều vấn đề lý thuyết liênquan, trong đó có các lý thuyết về mạng máy tính, ngôn ngữ, lý thuyết về IR, cấu trúc
dữ liệu và giải thuật, cơ sở dữ liệu, tối ưu hóa, tính toán song song, xử lý phân tán…
Đề tài Search Engine là một trong những đề tài nghiên cứu mang tính lý thuyết cũngnhư thực tế cao Vì thế, đã có khá nhiều nghiên cứu trong và ngoài nước về SearchEngine
Tình hình nghiên cứu ở nước ngoài: Có khá nhiều công ty và tổ chức nghiêncứu về Search, nổi bật nhất là 3 công ty Google, Yahoo và Micrsoft Các sản phẩm mãnguồn mở thì nổi bật nhất là Lucene Chất lượng của các công cụ tìm kiếm này cũngrất khác nhau Các công cụ này luôn cố gắng xuất phát từ việc tìm kiếm tiếng Anh vàsau đó mở ra đa ngôn ngữ, trong đó có tiếng Việt Với tìm kiếm tiếng Việt thì tốt nhấtchính là Google Google có hệ thống máy chủ tốt, lượng dữ liệu khổng lồ, tốc độ cập
Trang 12nhật khá nhanh, thuật toán tìm kiếm tốt, vì thế nó được khá nhiều người Việt tin dùng.Sản phẩm có chất lượng tốt thứ hai là Bing của Microsoft thì đã đang được cải thiệnchất lượng và bắt đầu có những áp dụng với tiếng Việt Công ty Yahoo với sản phẩmYahoo Search thì chất lượng nói chung là kém hơn với 2 sản phẩm nói trên và sảnphẩm này vẫn còn kém hơn so với những sản phẩm của công ty Việt.
Tình hình nghiên cứu ở trong nước: Hiện tại ở Việt Nam, cũng có khá nhiềunhiều công ty làm về Search như Baamboo, Zing, Xalo Tuy nhiên, làm Search Webthực sự thì chỉ có 2 công ty là Tinh Vân và NaiSCorp Công ty Tinh Vân có truyềnthống làm Search với sản phẩm mã nguồn mở truyền thống là VinaSeek từ nhiều nămtrước đây nhưng bây giờ không còn sử dụng Sau đó, công ty Tinh Vân mua sản phẩmtìm kiếm Xalộ của công ty FastSearch, và có áp dụng những module tiếng Việt vào đểbiến công cụ này thành một Search Engine tiếng Việt NaiSCorp là công ty phát triển
từ một nhóm sinh viên nghiên cứu khoa học của trường ĐH Bách khoa Hà nội và ĐHCông nghệ - ĐH Quốc Gia Hà Nội Nhóm sinh viên này đã có nhiều giải thưởng vềnghiên cứu tìm kiếm tiếng Việt Tháng 7 năm 2006, công NaiSCorp được thành lập vànhanh chóng cho ra đời công cụ tìm kiếm Socbay.com Đây là một công cụ tìm kiếmtiếng Việt khá tốt, tỏ ra có hiểu tiếng Việt và thói quen sử dụng của người Việt Tuynhiên, những sản phẩm tìm kiếm của Việt nam vẫn chưa thể chiếm lĩnh được thịtrường và cạnh tranh được với Google
Với yêu cầu của thực tế đặt ra là rất cần thiết và cấp bách, chúng tôi tin rằngnghiên cứu tìm kiếm để sản phẩm Việt có thể chiếm lĩnh thông tin trên Internet để cóthể đem lại thông tin và tri thức cho người Việt là rất cần thiết Chúng tôi cho rằng,lĩnh vực này chính là công nghệ lõi để làm nền tảng xây dựng những công nghệ khácphía trên nó Đó là lý do chúng tôi chọn đề tài này để nghiên cứu
3 BỐ CỤC LUẬN VĂN
Luận văn gồm 3 chương, với nội dung cụ thể từng chương như sau:
Chương 1: Chúng tôi trình bày kỹ về các thành phần của một Search Engine.
Một Search Engine có thể coi là một dạng Information Retrieval (IR) tức là một hệtruy xuất thông tin, bao gồm các công việc như “thu thập thông tin” – tương ứng vớiSearch Engine chính là Crawler, “lưu trữ thông tin” – tương ứng với phần PageRepository, “khai thác thông tin” – tương ứng với phần phân tích câu truy vấn, tìmkiếm và xếp hạng để đưa ra kết quả Lý thuyết của phần IR có liên quan mật thiết tớiviệc xây dựng Search Engine Chi tiết phần thông tin này có ở mục 2.4
Search Engine bao gồm những thành phần chính là:
Crawler là chương trình có nhiệm vụ khai phá và tải dữ liệu các trang Web từ
mạng Internet về hệ thống Do đó, làm sao tải cho nhanh, nhiều, đủ, kịp thời đòi hỏiphải có một chiến thuật hợp lý Muốn nhanh, người ta có thể tăng số Crawler, như vậyphải giải quyết bài toán phân tán Muốn nhiều, người ta không chỉ giải quyết bài toán
Trang 13phân tán mà còn quyết định xem là cố gắng đi rộng ra cho được nhiều trang Web hay
đi sâu vào tận cùng của từng trang Web Có nhiều chiến thuật khác nhau đáp ứng yêucầu này Muốn đủ và kịp thời người ta phải quyết định tốc độ cập nhật của crawler đốivới từng trang Web Có rất nhiều nội dung chi tiết về lý thuyết Crawler nằm ở mục2.5
Page Repository là một hệ lưu trữ cho một bộ sưu tập khổng lồ các trang Web.
Về mặt bản chất, nó là hệ lưu trữ các đối tượng dữ liệu, tuy nhiên, khi số lượng trangWeb là vô cùng khổng lồ thì bài toán lại không hề đơn giản Người ta cố gắng phân tánhóa hệ thống, nhưng với phạm vi toàn cầu và lượng thông tin cập nhật khổng lồ tạimỗi thời điểm thì bài toán này cũng không hề dễ dàng Mục 2.6 nói rõ hơn về việc này
Index: Chính là chỉ mục từ Có thể coi đây là một cách tổ chức lại thông tin sao
cho nó tạo nên một bảng tra cứu mà từ các Url có thể biết được các từ nằm trong nó
Từ bảng chỉ mục này, người ta tạo ra một chỉ mục ngược (Invert List) Tức là với mỗi
từ, ta có thể biết được tất cả các URL chứa từ đó Nội dung này ở mục 2.7
Searching: Đây là công việc chính và quan trọng nhất của hệ thống Muốn
Search được, đầu tiên người ta phải phân tích truy vấn, sau đó dựa vào Invert List đểtìm ra những kết quả phù hợp Mục 2.8 nêu những vấn đề của Searching
Ranking: Nếu sau khi tìm kiếm, ta được quá nhiều kết quả nhìn chung là phù
hợp với truy vấn Vậy thì chọn kết quả nào cho đúng? Đưa kết quả nào ra đầu tiên chongười sử dụng? Đó là cả một bí mật công nghệ của các công ty Mục 2.9 giới thiệu qua
về Page Rank và giải thuật HITS là những cách tính rank thông dụng và được công bố
Những nội dung trong Chương 1 là rất quan trọng với chúng tôi Chúng tôi tìmhiểu những công nghệ Search nói chung ở mức khá sâu để có thể sử dụng những kiếnthức ấy để khảo sát một số Search Engine và xây dựng công cụ tìm kiếm Mp3 chomình
Chương 2: Khảo sát một số Search Engine.
Chúng tôi khảo sát một công cụ tìm kiếm tiếng Anh thuần túy, mã nguồn mở làLucene để biết kiến trúc phần mềm của nó So sánh các thành phần của nó, các nỗ lựcviết code cho mỗi phần so với cấu trúc chung về Search Engine cho chúng tôi thấy rõhơn về các phần của hệ thống
Ở phần 3.2 chúng tôi trình bày về các vấn đề liên quan đến tiếng Việt và sựkhác nhau của tìm kiếm tiếng Việt với tìm kiếm tiếng Anh Nội dung này làm tiền đề
để chúng tôi khảo sát 3 công cụ tìm kiếm tiếng Việt ở mục 3.3 Các công cụ chúng tôilựa chọn là Google, Xalo và Socbay Chúng tôi so sánh để thấy rằng các công cụ đượcnêu ở trên là chưa hoàn hảo Đấy là động lực để chúng tôi tiếp tục nghiên cứu một ứngdụng tìm kiếm để minh họa cho lý thuyết tìm kiếm đã nêu ở Chương 1
Trang 14Chương 3: Chúng tôi xây dựng một ứng dụng nhỏ là Mp3 Search Áp dụng
những kiến thức thu được từ việc nghiên cứu từ chương 1, chúng tôi bắt tay vào xâydựng một công cụ tìm kiếm thực sự Chúng tôi mô tả từng bước của quá trình xâydựng Mp3 và so sánh công việc đó so với những việc cần làm trong việc xây dựng mộtcông cụ tìm kiếm Web Vì trong chương 1, chúng tôi đã phân tích rất kỹ các thànhphần và độ phức tạp trong việc xây dựng của mỗi thành phần của công cụ Search nóichung rồi, nên khi áp dụng vào bài toán này, chúng tôi không gặp nhiều khó khăn Quaviệc xây dựng một công cụ nhỏ này, chúng tôi hiểu rõ hơn về sự phức tạp và khó khăncủa công việc xây dựng Search Engine cho Web
Trang 15CHƯƠNG 1
LÝ THUYẾT CHUNG VỀ SEARCH ENGINE
Không có định nghĩa chính xác nào về thông tin Khái niệm thông tin gắn liền
với sự ra đời của máy tính và ngành công nghệ thông tin Có thể hiểu thông tin là “tin
tức hay sự thật về một cái gì đó” Thông tin mang đến cho con người sự cảm nhận về
thế giới bên ngoài
Tùy theo kiểu mẫu, nội dung, chất lượng, cách thức lưu trữ, cách truyền đạt…
của thông tin mà ta có thể chia ra nhiều loại thông tin khác nhau Sự ra đời của mạng
Internet (mạng của các mạng máy tính) đã kéo theo một loại thông tin đó là thông tin
dễ chút nào Người dùng sẽ phải bắt đầu khai thác nguồn thông tin khổng lồ này nhưthế nào? Thông thường người dùng sẽ sử dụng một công cụ cho phép truy cập các
nguồn tài nguyên đó, gọi là trình duyệt Internet (Internet browser) Trình duyệt sẽ giao tiếp với các chương trình cung cấp thông tin dưới dạng trang Web gọi là Web server
được chạy trên các máy tính lớn (server) của các nhà cung cấp thông tin Trình duyệt
và Web server giao tiếp với nhau bằng giao thức HTTP (Hyper-Text Transfer
Protocol) là một giao thức truyền văn bản theo định dạng siêu văn bản Trong tình
huống này người dùng phải biết chính xác Web server nào có chứa thông tin mình cầnđến, hay nói cách khác là địa chỉ của trang Web mà người dùng muốn truy cập Mỗi
địa chỉ trang Web được gọi là một URL (Uniform Rescourse Locator).
URL có cấu trúc:
http://tên_máy_chủ.tên_miền/đường_dẫn_cục_bộ_đến_trang_Web Một tập
hợp các trang Web có chung tên miền được gọi là một Website (ví dụ như Website củatrường đại học Quốc gia Hà nội có tên miền là vnu.edu.vn) Người dùng viếng thămnhiều trang Web sẽ không thể nhớ hết các địa chỉ (thường là dài và khó nhớ) Hơnnữa, sự ra đời của các trang Web mới là đáng kể, trong khi đó người dùng không biết
Trang 16đến chúng nếu như không được chỉ dẫn Trong trường hợp người dùng không biết địachỉ của trang Web có chứa thông tin mà họ cần, họ sẽ phải bắt đầu như thế nào? Haicâu trả lời là danh bạ Web (Web directory) và mô tơ tìm kiếm thông tin trên mạng(Search engine).
Danh bạ Web là một Web site chứa các liên kết đến rất nhiều trang Web khácnhau trên thế giới, được sắp xếp theo các chủ đề Người dùng truy cập danh bạ Web vàlần theo các chủ đề, rồi các chủ đề con, … họ sẽ có được một danh sách các trang Web
về lĩnh vực mà họ quan tâm Một trong số các Website cung cấp danh bạ Web tốt nhất
hiện nay là Yahoo (http://www.yahoo.com) Chẳng hạn ta có thể tìm thấy địa chỉ trang
Web của hầu hết các trường đại học trên thế giới trong mục Education của Yahoo
Search Engine không cung cấp danh sách các trang Web như Web directory.Mỗi khi người dùng cần thông tin mà không biết địa chỉ trang Web, họ sẽ truy cậpSearch Engine ưa thích của họ bằng trình duyệt (bản thân Search Engine cũng là mộtWeb site), nói cho Search Engine biết họ cần thông tin gì bằng cách nhập vào các từkhóa cho thông tin cần tìm Từ khóa ở đây là từ ngữ thông thường có liên quan đếnthông tin cần tìm Chẳng hạn muốn tìm thông tin về Search Engine có thể sử dụng từkhóa “Search”, “Search engine”, … Search Engine sẽ tiến hành phân tích yêu cầu tìm
kiếm đó, thực hiện tìm theo sự hiểu biết của nó (tìm trên cơ sở dữ liệu về Web mà nó
có được) và trả lại cho người dùng danh sách các URL dẫn đến các trang Web mà nó
tìm được (đã có sự sắp xếp) và một phần nội dung được trích rút ra (extractor) từ trangWeb có chứa từ khóa cần tìm Đứng trên khía cạnh này thì Search Engine chính là một
Search Engine trả lời câu hỏi QAM (Question Answer Machine).
Ngày nay, khái niệm Search Engine đã trở nên khá phổ biến và Search Engine
là một trong số những công cụ (dịch vụ) được người dùng sử dụng nhiều nhất trên
mạng Internet Google (http://www.google.com) là một trong số các Search Engine cho
các kết quả tìm kiếm chính xác nhất hiện nay
1.2 CÁC MÔ HÌNH KIẾN TRÚC CỦA SEARCH ENGINE
1.2.1. Mô hình kiến trúc chung
Hình sau đây đưa ra kiến trúc mức cao của một Search Engine, trong đó cácthành phần của kiến trúc này đảm nhiệm các chức năng khá cụ thể:
Trang 17Hình 1 Mô hình kiến trúc chung của Search engine[14]
Crawler là chương trình có nhiệm vụ khám phá và tải về các trang Web từ mạng Internet Chúng dõi theo các trang Web giống như người dùng duyệt Web.
Crawler xuất phát với tập các URLs khởi đầu, sau khi tải các trang Web về, Crawler tách các URLs trong trang Web đó ra, chuyển cho Crawl Control (Bộ điều khiển
crawl) Bộ điều khiển sẽ quyết định liên kết nào sẽ được khám phá tiếp theo và trả lại
cho crawler (Một số chức năng của bộ điều khiển đôi khi được crawler tự thực hiện)
Crawler cũng đồng thời chuyển các trang Web đã khám phá được vào kho dữ liệu Web
(pages repository) và tiếp tục khám phá Web cho tới khi nào không còn gì để khám
phá hoặc bị cạn tài nguyên hay được lệnh dừng, …
Giải thuật cơ bản này có thể được sửa chữa nhằm đạt được hiệu quả tốt nhấttheo một nghĩa nào đó Ví dụ crawler của một Search Engine nào đó được thiết kế đểkhám phá càng nhiều Web site càng tốt, bỏ lại các trang Web bị “vùi sâu” trong mộtsite (đường đến các trang Web này dài và phức tạp) trong khi crawler của một SearchEngine khác lại được giao nhiệm vụ khám phá một vùng (domain) nào đó Bộ điềukhiển crawler nắm giữ vai trò điều khiển, hướng hoạt động cho các crawlers
Khi Search Engine ít nhất một lần hoàn thành một vòng crawl, bộ điều khiển có
thể nhận được thông báo bởi vài chỉ mục (indexes) được tạo ra trong quá trình khám
phá trước đó Bộ điều khiển căn cứ vào chỉ mục để quyết định xem những liên kết nàonên viếng thăm, những liên kết nào nên bỏ qua Bộ điều khiển đôi khi sử dụng thông
Trang 18tin phản hồi từ phía Query Engine để điều khiển crawler (được thể hiện qu mũi tên nốiQuery Engine và Crawl control trong mô hình kiến trúc).
Việc viếng thăm lại một trang Web nào đó để kiểm tra xem trang Web đó cócập nhật thông tin gì mới đòi hỏi tài nguyên khá lớn Nó sẽ bao gồm những công việckết nối đến Website, tải dữ liệu về và so sánh với dữ liệu cũ đã có để chống trùng Saukhi kiểm tra việc dữ liệu có bị lặp giữa một trang với nhau và các nguồn khác nhau,chương trình mới quyết định có cập nhật hay không Như vậy, việc này đòi hỏi tiêu tốn
cả CPU bên crawler, đường truyền mạng và cả thời gian trả lời của host chứa thôngtin, thời gian để kiểm tra xem dữ liệu có trùng không Trong lĩnh vực các trang Webdạng báo chí (news) hiện tượng trùng lặp thông tin do các báo dẫn lại thông tin củanhau hiện nay là rất nhiều Trong lĩnh vực hàng hóa hoặc rao vặt, việc request kiểm tracập nhật cho các trang con dễ làm Server bên phục vụ quá tải Bởi vì những trang Webnày có rất nhiều trang con vì mỗi sản phẩm được rao bán đòi hỏi phải có một trang conriêng biệt, và có rất nhiều sản phẩm được rao bán và do đó, mỗi khi Crawler gửi yêucầu (request) đến, các Website loại này đều phải tạo những trang con có nội dung đểtrả lời Nếu bên Crawler sử dụng quá nhiều server và gửi quá nhiều request thì nó cũngchẳng khác DDOS bao nhiêu
Tất nhiên, tốc độ cập nhật của các trang Web khác nhau cũng rất khác nhau.Với những trang báo như Vnexpress.net thì thời gian cập nhật sẽ nhanh hơn rất nhiều
so với những trang Web của các trường đại học như coltech.vnu.edu.vn Do đó, việccập nhật các trang Web với khoảng thời gian bao lâu, việc thỏa thuận giữa phíacrawler với bên server chứa thông tin cũng cần phải được tính toán và cân nhắc
Indexer module (mô-đun đánh chỉ mục) tách các từ cần thiết có trong mỗi trang
Web, ghi lại URL của trang Web có chứa chúng Kết quả là hình thành nên một bảng
tra cứu mà từ các URLs có thể biết được các từ có trong văn bản của URL đó Index
có thể coi là một cách tái tổ chức lại văn bản theo một cách riêng để phục vụ cho việctìm kiếm Với một cách tổ chức dữ liệu khác nhau, ta có thể có cách tìm kiếm khácnhau
Collection analysis module (mô-đun phân tích tập) Một module phân tích tập
các Index nhằm rút ra các thông tin quan trọng có thể tính off_line với mục đích choviệc tìm kiếm dễ dàng và nhanh chóng hơn
Utility index trong hình vẽ được tạo ra bởi collection analysis module Ví dụ
như utility index cho biết các trang Web có có chiều dài, mức độ quan trọng hay thậm
chí là số lượng ảnh có trong nó cho trước Collection analysis module sử dụng text
index và structure index để tạo ra utility index.
Trong quá trình khám phá Web và đánh chỉ mục, Search Engine có thể sẽ lưu
trữ lại các trang Web mà nó tải về từ mạng Kho dữ liệu trang Web (Page repository)
trong hình vẽ dùng để lưu trữ tập các trang Web này một cách tạm thời Đôi khi,
Trang 19Search Engine bảo lưu cả nội dung của trang Web mà nó viếng thăm (cache) ngoài
việc đánh chỉ mục các trang Web Cache sẽ giúp ích trong việc đưa ra các kết quảnhanh chóng và mang lại một số thuận lợi trong việc tìm kiếm
Query engine có nhiệm vụ nhận và thực hiện yêu cầu tìm kiếm từ phía người
dùng Nó phụ thuộc khá nhiều vào indexes và đôi khi phụ thuộc vào cả kho dữ liệutrang Web Kích thước của Web thì lớn trong khi người dùng chỉ gõ vào một vài từ để
tìm kiếm nên số lượng kết quả tìm được cũng sẽ lớn Mô-đun xếp hạng (ranking
module) sẽ thực hiện sắp xếp các kết quả tìm kiếm sao cho các kết quả gần với truy
vấn nhất được đưa lên đầu Mô-đun truy vấn là phần cần được quan tâm đặc biệt vì các
kỹ thuật truyền thống trong Information Retrieval được áp dụng vào trong tìm kiếm
cần phải có sự sửa đổi cho phù hợp Thông thường các kỹ thuật dựa trên sự so sánh
mức độ tương tự (relevancy) giữa yêu cầu tìm kiếm (query text) và tài liệu trong “bộ
sưu tập” của Search engine Một yêu cầu tìm kiếm “nhỏ bé” so với một bộ sưu tập
“cực lớn” sẽ hạn chế cách tiếp cận dựa trên độ tương tự văn bản nói trên
Có thể tham khảo thêm kiến trúc của Google tại phụ lục A để hiểu thêm về kiếntrúc của Search engine Chúng ta sẽ đi chi tiết vào từng thành phần trong SearchEngine sau đây
Mô hình được đưa ra sau đây là một trong số các mô hình tựa agent
(Agent-based model) của Search engine, trong đó:
Crawling Agent Community: Nhóm các agents có nhiệm vụ tải các trang
HTMLs về từ Web (tương đương với spiders hay robots).
URL Broker Agent: Quản lý các thông tin về Web và cung cấp cho các bots
dưới dạng các URLs
Filtering Agent Community: Mỗi khi một bot tải một trang một trang HTML,
filter agent sẽ thu nhận nó và thực hiện thao tác trích rút nội dung của nó Kết quả củaquá trình đó ở dạng text và được lưu trữ lại
Indexer Agent: Một khi số lượng các trang HTML đã được tách lọc (filter) bởi
Filtering Agent, Indexer Agent sẽ thực hiện đánh chỉ mục Kết thúc việc đánh chỉ mục
sẽ cho ra một cấu trúc dữ liệu đã được đánh chỉ mục, rất thích hợp cho việc tìm kiếm
và gọi ra thông tin cần thiết sau này
Query Agent Community: Một vài loại agent này khi cần sẽ truy cập cơ sở dữ
liệu đã được đánh chỉ mục để tìm kiếm ra các thông tin cần thiết, tương ứng với cácyêu cầu của người dùng
Interface Agent Community: Thực chất đây là mô-đun kiểm soát giao diện tìm
kiếm cho người dùng, thực hiện thao tác lấy yêu cầu tìm kiếm và trả về thông tin tìmđược
Trang 20Hình 2 Kiến trúc agent của Search engine.
1.3 PHÂN LOẠI SEARCH ENGINE
Tiêu chí phân loại được quan tâm ở đây là dựa trên kiến trúc của các hệ thống.Như đã trình bày ở trên, Search Engine khác với Web directory Danh bạ Web là mộtcông cụ tìm kiếm địa chỉ trang Web còn Search Engine là mô-tơ tìm kiếm thông tin.Web directory chứa một số lượng lớn các chủ đề được sưu tập, phân loại và sắp xếpbởi người quản trị thông qua công cụ quản trị của họ trong khi Search Engine phải tựđộng sưu tập thông tin và đánh chỉ mục Sự khác nhau giữa chúng là rõ ràng và tài liệunày chỉ tập trung nghiên cứu các lĩnh vực của Search engine
Người ta hay nhắc đến khái niệm meta-Search engine Thực chất meta-SearchEngine chỉ nhận các yêu cầu tìm kiếm của người dùng rồi gửi chúng tới các SearchEngine khác Sau đó nó nhận về các kết quả tìm kiếm và tổ chức lại và hiển thị các kếtquả này cho người dùng Meta-Search Engine cho nhiều kết quả hơn (tập hợp các kếtquả của các Search Engine khác) nhưng không cho phép người dùng làm mịn kết quảbởi các luật riêng mà các Search Engine thông thường có được
Information Retrieval [21] (IR) là một lĩnh vực rộng lớn Khái niệm
Information Retrieval tạm dịch sang tiếng Việt là “truy xuất thông tin”, bao gồm các công việc “thu thập thông tin”, “lưu trữ thông tin” và “khai thác thông tin” Thông
tin, như đã nói ở trên là vô cùng phong phú, đa dạng Vấn đề chúng ta quan tâm ở đây
Trang 21(trong phạm vi của Search engine) là thông tin lưu dưới dạng văn bản (text) Cho mộtkho tài liệu lớn, làm thế nào lấy được tài liệu mà ta cần, đó chính là chức năng chính
của một hệ IR Nó phải biểu diễn (represent), lưu trữ (store), tổ chức (organize) và
truy cập (access) các mục thông tin (item) mỗi khi cần Thông tin khác với dữ liệu (data) nên Information Retrieval khác với Data Retrieval (DR) Hệ DR chỉ thao tác
với dữ liệu (dạng thô của thông tin, ví dụ như các từ ngữ) còn hệ IR phải thao tác trênthông tin (phức tạp hơn dữ liệu rất nhiều) Chẳng hạn như hệ DR chỉ phải tìm kiếmchính xác các từ ngữ được yêu cầu (đưa ra danh sách các tài liệu có chứa các từ đó)trong khi hệ IR phải đưa ra danh sách các tài liệu có nội dung nói về một chủ đề (thôngtin) nào đó Như vậy cũng đủ thấy sự phức tạp hơn rất nhiều của IR so với DR
Search Engine là một hệ IR với đầy đủ các chức năng từ thu thập thông tin trênmạng, lưu trữ chúng, tổ chức chúng và tìm kiếm chúng theo yêu cầu của người dùng
Vì thế mà việc xây dựng một Search Engine đòi hỏi nhiều kiến thức của lĩnh vự IR.Sau đây là một số vấn đề lý thuyết của IR có liên quan tới việc xây dựng Searchengine
1.4.1. Định nghĩa và khái niệm
Sau đây là một số thuật ngữ, khái niệm được sử dụng thường xuyên trong các
hệ IR cũng như là trong Search engine:
Repository (kho dữ liệu): Là tập hợp các tài liệu (document) đã được lưu trữ Database (cơ sở dữ liệu): Dữ liệu được lưu vào file có cấu trúc chặt chẽ gọi là
database
Document (tài liệu): Là chuỗi các thuật ngữ (term) trình bày một nội dung, chủ
đề nào đó bằng ngôn ngữ tự nhiên
Term (từ ngữ, thuật ngữ): là một đơn vị có ngữ nghĩa, có thể là một từ, một cụm
từ, … Trong tiếng Việt, term có thể coi là một từ đơn hay từ ghép
Query (truy vấn): Là một yêu cầu tìm kiếm tài liệu liên quan đến một chủ đề
nào đấy
Result: Kết quả tìm kiếm (trả lời) truy vấn.
Revelancy: Mức độ tương tự của tài liệu và truy vấn.
Textual similarity: Một khái niệm tương tự về mức độ liên quan.
Similarity Coefficient: Hệ số tương tự giữa truy vấn và tài liệu.
1.4.2. Kiến trúc của một hệ IR
Với vai trò thu thập, lưu trữ và trả lời các câu hỏi liên quan đến thông tin mà nólưu trữ, các hệ IR có mô hình đơn giản được cho như hình vẽ sau:
Trang 22Hình 3 Mô hình đơn giản của một hệ IR
Với đầu vào là các tài liệu và truy vấn của người dùng, khối xử lý (processor) sẽ
cho kết quả về các tài liệu thoả mãn truy vấn Các kết quả này đôi khi được sử dụnglàm thông tin phản hồi cho hệ IR nhằm có được các kết quả tốt hơn trong các tìnhhuống tương tự sau này
Mổ xẻ các thành phần của những hệ thống phức tạp như Search engine, môhình IR của nó là khá phức tạp Vấn đề chúng ta quan tâm ở đây là việc tổ chức, sắpxếp tài liệu cũng như tìm kiếm như thế nào trên tổ chức đó để có được kết quả tốt nhất.Một trong những kỹ thuật được sử dụng trong việc tổ chức tài liệu đó là đánh chỉ mụctài liệu
Đánh chỉ mục là ghi lại nơi xuất hiện của các term (tài liệu nào?) Mỗi khi cần
tìm tài liệu liên quan đến term nào, ta sẽ tra cứu trong chỉ mục để biết được tất cả các
tài liệu có chứa term đó Cấu trúc chỉ mục được sử dụng trong hầu hết các hệ IR là chỉ
mục ngược (inverted index).
Sau đây là mô hình đánh chỉ mục (bao gồm 2 thành phần là mô-đun đánh chỉmục và mô-đun truy vấn):
Hình 4 Mô hình đánh chỉ mục của hệ IR[14]
Trang 23Document: Là đối tượng lưu trữ tất cả những gì liên quan của tài liệu, bộ phận
phân tích parser phân tích document và trả ra đối tượng tài liệu (document object) baogồm danh sách các term và sự xuất hiện của nó trong tài liệu
Inverted index: Là chỉ mục ngược cho biết một term xuất hiện trong tài liệu nào
tại vị trí nào (sẽ nghiên cứu sau)
StopWordList: Là danh sách các từ bị bỏ qua khi phân tích truy vấn (chẳng hạn
như “the”, “a” trong tiếng Anh)
Index builder: Là bộ phận chính, điều khiển quá trình đánh chỉ mục
Parser: Phân tích file và trả về các đối tượng tài liệu (document objects)
Tokenizer: Kiểm soát các dấu hiệu, ký hiệu đặc biệt (ví dụ: 12-20-1998) và kiểu
loại của chúng (ví dụ: ngày tháng, tiền tệ, …)
Tiếp đó là mô hình truy vấn:
Hình 5 Mô hình truy vấn của hệ IR[14]
Query: Truy vấn (chủ đề được thể hiện bởi các term trong yêu cầu)
Query processor: Với đầu vào là query và chỉ mục ngược, bộ phận này thực
hiện chức năng tìm kiếm ra các tài liệu liên quan
Result: Kết quả của quá trình truy vấn
1.4.3. Các độ đo (metrics)
Để đánh giá kết quả của quá trình tìm kiếm, người ta đưa ra hai độ đo cơ bản là:
độ chính xác (precision) và độ bao (recall) Độ chính xác là phần trăm tài liệu có liênquan đến chủ đề trong tổng số tài liệu tìm được, còn độ bao là phần trăm tài liệu cóliên quan đến chủ đề tìm được trong tổng số tài liệu liên quan đến chủ đề Độ đo đượcminh họa bởi hình vẽ sau đây:
Trang 24Hình 6 Minh họa precision/recall
Ví dụ, có tất cả z =10 tài liệu liên quan đến chủ đề trong tổng số 100 tài liệu.Thao tác tìm kiếm tìm ra y = 20 tài liệu trong đó có x = 5 tài liệu thực sự liên quan(nằm trong số 10 tài liệu liên quan đến chủ đề) Khi đó precision = 5/20 = 25% vàrecall = 5/10 = 50%
Để đánh giá mức độ liên quan của kết quả, người ta đưa ra khái niệm hệ số
tương tự SC (Similary Coefficient) dựa trên sự cân bằng giữa độ chính xác và độ bao.
1.4.4. Chỉ mục ngược (inverted index) trong tìm kiếm
Như đã trình bày ở trên, cần phải có một cấu trúc thích hợp để lưu trữ hiệu quả:Danh sách các tài liệu có sự xuất hiện của một term nào đó
Tần suất xuất hiện của term đó trong tài liệu (tf – term frequency)
Vị trí mà term xuất hiện trong tài liệu (vị trí có thể là phần nào đó, đoạn nào đó,câu nào đó, vị trí trong câu nào đó, … trong tài liệu)
Giả sử ti là các term, Di là các tài liệu (định danh của tài liệu – docID) và vị trítrong tài liệu được đánh dấu bằng các con số Hình vẽ sau đây minh hoạ cho cấu trúccủa chỉ mục ngược với thí dụ có 2 term và 3 tài liệu (t1 xuất hiện trong D1 tại vị trí số
5 và tài liệu D2 tại vị trí số 1; t2 xuất hiện trong tài liệu D1 tại vị trí thứ 5):
Trang 25Hình 7 Ví dụ cấu trúc của chỉ mục ngược
Danh sách các term được gọi là từ điển (dictionary) còn mỗi cặp (Di, vị trí)được gọi là post Mỗi danh sách post ứng với một term cho biết danh sách các tài liệu
và vị trí xuất hiện của term trong các tài liệu đó
Giải thuật xây dựng chỉ mục ngược [13] được mô tả như sau:
Với mỗi tài liệu trong bộ sưu tập
Với mỗi Term t trong tài liệu d
Tìm t trong từ điển Term
Nếu t tồn tại thêm nốt vào danh sách
Ngược lại, thêm t vào từ điển và thêm nút mới được trỏ bởi t
Sau khi mọi tài liệu được xử lý thì ghi ngược lên đĩa cứng
Hình 8 Giải thuật xây dựng chỉ mục ngược (1)
Giải thuật trên được sử dụng với giả thiết có đủ bộ nhớ cho các term Trongtrường hợp không biết trước có đủ bộ nhớ không, phải định kỳ ghi chỉ mục ngược lên
ổ cứng Giải thuật đầy đủ [13] sau đây giải quyết vấn đề này:
Với mỗi tài liệu trong bộ sưu tập
Begin
numSubSet =1;
Khi mà Bộ nhớ còn trống Với mỗi Term t trong tài liệu d Tìm t trong từ điển Term Nếu t tồn tại thêm nốt vào danh sách Ngược lại, thêm t vào từ điển và thêm nút mới đượctrỏ bởi t
Ghi SubSet của InvertIndex lên đĩa cứng
Trang 26numSubSet = numSubSet + 1 Giải phóng bộ nhớ
End
For I = 1 to numSubSet
Nhập chung các SubSet vơi InvertIndex
Hình 9 Giải thuật xây dựng chỉ mục ngược đầy đủ (2)
1.4.5. Các mô hình IR trong tìm kiếm và đánh giá kết quả
Đại số logic được đưa ra bởi nhà toán học người Anh Gorge Boole Mô hình
Boolean trong tìm kiếm và đánh giá kết quả được đưa ra dựa trên các cơ sở về đại số
logic trong đó sử dụng các toán tử logic trong các câu truy vấn Các toán tử cơ bảnđược sử dụng là AND, OR, NOT
Theo cách tiếp cận trên thì tài liệu D được coi như là tập các terms (có mặt hay không có mặt) còn truy vấn Q là một biểu thức logic của các terms R(D, Q) đánh giá tài liệu D có thoả mãn truy vấn Q hay không, nhận giá trị Boolean (R=true nghĩa là
thoả mãn và R=false là không thoả mãn) Tuỳ từng phép toán logic mà một tài liệu
được đánh giá là có thoả mãn truy vấn hay không, cụ thể như sau:
AND: Khi sử dụng AND, yêu cầu tìm kiếm phải có mặt tất cả các term trong
câu truy vấn Ví dụ “A AND B” là truy vấn đòi hỏi các tài liệu liên quan phải có sựxuất hiện của cả 2 term A và B
OR: Khác với AND, OR chỉ cần sự xuất hiện của một trong số các term có
trong truy vấn
NOT: NOT A có nghĩa là trong tài liệu không được có A mới thỏa mãn.
XOR: các term xuất hiện trong tài liệu với tích chất loại trừ nhau (có mặt term
này thì không có term kia)
Một truy vấn có thể dùng nhiều toán tử và ký hiệu “(” và “)” được sử dụng đểxác định thứ tự ưu tiên ngoài sự ưu tiên thông thường của các phép toán logic Hìnhsau đây mô tả giải thuật áp dụng cho các truy vấn sử dụng toán từ AND Đối với cácgiải thuật khác, cách tiếp cận là tương tự
1 Với mỗi term t trong query
Lấy về từ t
Lưu lại ft và địa chỉ của lt (Inverted List)
Trang 272 Sắp xếp các term giảm dần theo ft
3 Khởi tạo tập hợp C với danh sách term ft nhỏ nhất
4 Với mỗi phần tử t còn lại
Đọc lt
Với mỗi d thuộc C, nếu phần tử d không thuộc lt thì xóa d ra khỏi tập C Nếu C bằng rỗng, trả về kết quả là rỗng
5 Tìm tất cả d thuộc C và trả về cho người dùng
Bảng 1 Giải thuật xử lý truy vấn dạng AND
Đánh giá về mô hình Boolean:
Đơn giản, dễ hiểu và dễ thực hiện dựa trên các khái niệm về tập hợp
Chỉ tìm ra các tài liệu với các term xuất hiện chính xác trong tài liệu
Do R(D, Q) là giá trị logic nên không có sự so sánh để xếp hạng tài liệu
tìm kiếm được
Tuỳ thuộc truy vấn mà kết quả có thể rất nhiều hoặc rất ít
không như vậy
Mô hình không gian vector[13] (Vector Space Model –VSM) coi mỗi
tài liệu hay truy vấn như là một vector trong không gian vector n chiều với n là sốlượng term Độ tương tự giữa truy vấn Q và tài liệu D chính là khoảng cách Euclit
giữa Q và D: SC(Q, D i ) = QD i Góc cosin giữa Q và D cũng thường được sử dụng để
tính toán hệ số tương tự: SC(Q, D i ) = cos(Q, D i ) = QD i /|D i |.
Trang 28Hình 10 Ví dụ đơn giản về VSMCái khó trong mô hình VSM là xác định các thành phần của các vector Nó phảithể hiện được những đặc trưng nào của tài liệu được sử dụng để đại diện cho toàn bộtài liệu Một cách lý tưởng, chúng tả sử dụng một khái niệm nào đó giống như là
“nghĩa” (meaning) của tài liệu Như vậy thì hai tài liệu khác nhau về câu chữ nhưng cónghĩa như nhau sẽ được thay thế tương tự nhau Tuy nhiên, ngôn ngữ tự nhiên là mộtlĩnh vực rộng lớn và những nghiên cứu của nó vẫn chưa đáp ứng được yêu cầu trên.Chính vì thế mà ở đây, term được coi là các đặc trưng của tài liệu
Do chiều dài của các vector phải bằng nhau nên mỗi term riêng biệt xuất hiệntrong tài liệu được tương ứng với một thành phần của vector Giá trị của các thànhphần có thể thay đổi Với mô hình nhị phân (BVSM) thì giá trị của chúng là 0 hoặc là
1 (0- nếu term không xuất hiện trong tài liệu, 1- nếu term xuất hiện trong tài liệu)
Hướng tiếp cận BVSM đơn giản nhưng trong trường hợp có sự xuất hiện nhiềulần của một term trong tài liệu thì BVSM không thể hiện được
Ví dụ về ngôn ngữ loài voi: Các con voi chỉ dùng 3 từ A, B, C để giao tiếp Tàiliệu D1={A, A, B} được thay thế bởi vector (1, 1, 0) với thành phần thứ nhất, thứ hai,thứ 3 lần lượt đại diện cho A, B, C Truy vấn Q = {A, B} được thay thế bằng vector (1,
1, 0) Khi đó, Tích của Q và D1 là 1.1 + 1.1 + 0.0 = 2 Giả sử có tài liệu D2 ={A} sẽđược thay thế bằng vector (1, 0, 0) và sẽ có mức độ tương tự với Q là 1.1 + 1.0 + 0.0 =
1 D3 = {C} sẽ có độ tương tự với Q là 0
Như thí dụ nêu trên, D1 có 2 lần xuất hiện của term A nhưng BVSM không biểudiễn được Để biểu diễn số lần xuất hiện của term trong một tài liệu, người ta đưa ra
Trang 29khái niệm tần suất term Các tài liệu có sự xuất hiện nhiều lần của một term hơn thôngthường có mức độ liên quan cao hơn.
Hơn nữa, một term có thể xuất hiện nhiều lần trong một truy vấn và để biểu
diễn nó người ta đưa ra khái niệm “tần suất term trong truy vấn” (query term
frequency – qtf).
Quay lại thí dụ về ngôn ngữ loài voi, ta có D1 được thay thế bởi (2, 1, 0) và độtương tự của nó với truy vấn Q là 2.1 + 1.1 + 0.0 = 3, cao hơn so với trường hợp dùngBVSM
Nếu chỉ sử dụng tf sẽ không đánh giá được mức độ quan trọng của term trong
tài liệu (một số term trong tài liệu là quan trọng hơn hẳn các term khác) Vì thế mà cóthể một số term xuất hiện ít nhưng lại nói lên nội dung chính của tài liệu Để đánh giá
mức độ quan trọng của term, người ta gán cho chúng một trọng số (weight).
Ý tưởng của khái niệm idf là “các term xuất hiện trong ít tài liệu thường có
trọng số cao còn các term xuất hiện phổ biến có trọng số thấp” Chẳng hạn như từ
“the” xuất hiện trong hầu hết các tài liệu, nên hầu như không có ý nghĩa trong việc xácđịnh nội dung tài liệu (trọng số = 0)
Nếu tần suất xuất hiện của term trong toàn bộ bộ sưu tập tài liệu gồm N tài liệu
là df (document frequency) thì idf được tính như sau: idf = log 10 (N/df ) Để ý rằng nếu
term A chỉ xuất hiện trong 1 trên 1 triệu tài liệu thì trọng số của nó là
log 10 (1.000.000/1)=6, còn nếu term B xuất hiện trong mọi tài liệu thì trọng số của nó là log 10 (1.000.000/1.000.000)=0 Hàm logarit ở đây có nhiệm vụ giảm tỷ lệ các trọng số
để tránh thao tác với các con số quá lớn Ví dụ truy vấn “black microscope” sẽ gần vớicác tài liệu chỉ chứa term “microscope” hơn là các tài liệu chỉ chứa term “black”
Giá trị tf-idf được sử dụng để đánh giá các thành phần của vector tài liệu
(document vetor) vì nó là sự kết hợp ảnh hưởng của cả số lần xuất hiện của term vàmức độ quan trọng của term trong tài liệu
Quay lại thí dụ ngôn ngữ loài voi, giả sử idf (A) = 3 và idf(B) = 4 Lúc này D 1
= (A, A, B) được thay thế bằng (6, 4, 0) và Q = {A, B} Ta có : SC(Q, D 1 ) = 3.6 + 4.3 + 4.4 = 34.
Chiều dài tài liệu (Document length)
Các tài liệu dài với nhiều từ xuất hiện hơn có xu hướng được đánh giá cao hơncác tài liệu ngắn Tài liệu dài có nhiều từ ngữ phù hợp với truy vấn tất nhiên là sẽ đượcđánh giá cao hơn các tài liệu ngắn với ít từ ngữ Nhằm chuẩn hóa độ dài của tài liệu,
phương pháp cosine được ưa dùng Phương pháp này chia các độ đo mức độ tương tự
theo kích thước của vector tài liệu và cũng tính đến lĩnh vực của tài liệu để tránh việc
Trang 30các tài liệu dài được coi là khớp với truy vấn hơn chỉ đơn giản bởi kích thước củachúng.
Lược đồ sau đây cho ta thấy tỷ lệ tìm được ít hơn tỷ lệ tài liệu tương tự áp dụngcho tài liệu nhỏ, và ngược lại với tài liệu có kích thước lớn, tỷ lệ tìm được lại lớn hơn.Giao điểm trên trục ngang (pivot) cho ta tọa độ trên đường thẳng cần thiết cho việcđiều chỉnh các nhân tố chuẩn hóa Độ dốc (slope) của đường thẳng này cũng có thểđược tính ra
Hình 11 Chuẩn hóa độ dài của tài liệu
Từ dừng hay từ rác (stopword) là một khái niệm dùng để chỉ các từ không được
đánh chỉ mục bởi vì chúng xuất hiện rất nhiều và không nói lên ý nghĩa của tài liệu Ví
dụ như từ “the” trong tiếng Anh xuất hiện nhiều nhất và trong hầu hết các tài liệu hay
như từ “nhưng” trong tiếng Việt, cũng là một từ dừng Stoplist là danh sách các
Các phương pháp stem được liệt kê sau đây[24]:
Affix removing stemmers (loại bỏ các phụ tố): Tùy thuộc từng ngôn ngữ mà có
cách loại bỏ thích hợp Đối với tiếng Anh, phụ tố chính là các tiền tố hay hậu tố, …
a Dictionary lookup stemmers (tra cứu từ điển có sẵn).
Trang 31n-gram stemmers: Chia term thành các đoạn có n chữ cái cố định (n-gram), ví
dụ bigrams: Sea colony (se ea co ol lo on ny); trigrams: Sea colony (sea col ololon ony), hoặc là (#se sea ea# #co col olo lon ony ny#).se sea ea#se sea ea# #co col olo lon ony ny#) #se sea ea# #co col olo lon ony ny#).co col olo lon ony ny#se sea ea# #co col olo lon ony ny#).)
b Successor variety stemmers: Dựa vào cấu trúc ngôn ngữ.
Trong tiếng Việt, không có hiện tượng biến đổi từ dựa vào ngôi (người nói hayngười nghe, Chủ từ hoặc đối tượng), thời (quá khứ, hiện tại, tương lai) hoặc thể(chủđộng hoặc bị động), nên không có hiện tượng Stemming
Thông thường thì crawler bắt đầu với một tập các địa chỉ trang Web khởi điểm
(initial set of URLs) S 0 chẳng hạn Tập S 0 sẽ được đưa vào hàng đợi (queue), nơi màcác URLs được sắp xếp và crawl sau đó Crawler sẽ lần lượt lấy các URLs từ hàng đợitheo một thứ tự nào đó tùy thuộc vào cách cài đặt crawler rồi tải các trang Web tươngứng với các URLs đó về, cất giữ chúng (nếu cần thiết), tách các URLs khác trên trangWeb vừa được tải về rồi xếp vào hàng đợi Quá trình này cứ thế tiếp diễn cho tới khicrawler quyết định dừng lại (có thể do hết hàng đợi hoặc vì một lý do nào đó)
Đối với Search engine, đây là thành phần vô cùng quan trọng, dữ liệu đượccrawl về sẽ được sử dụng để tạo nên kho dữ liệu, đánh chỉ mục và phục vụ cho cácnhu cầu tìm kiếm sau này
Với một khối lượng thông tin khổng lồ và thay đổi với tốc độ chóng mặt nhưhiện nay, việc xây dựng Web crawler cho Search Engine phải đối mặt với nhiều vấn đềthách thức Một crawler tốt phải giải quyết tốt các vấn đề được đưa ra sau đây
Các vấn đề đặt ra với crawler
Trong hầu hết các trường hợp, crawler không thể tải về tất cả các trang Web.Ngay cả các Search Engine mạnh nhất hiện nay cũng chỉ đánh chỉ mục được một phầnnhỏ các trang Web trên mạng Internet Bởi vì, các trang Web luôn luôn được conngười trên toàn thế giới liên tục tạo ra Chính vì vậy, việc lựa chọn trang Web nàođược crawl trước (quan trọng hơn) là một vấn đề cần phải quan tâm và nó sẽ giúp chocác thông tin mà Search Engine xây dựng trở nên sát sao và có ý nghĩa
Trang 321.5.1.2. Trích rút liên kết từ các trang Web như thế nào?
Crawler giao tiếp với Web server bằng giao thức HTTP để lấy về các trang
Web Để thu được nhiều URLs nhất từ các trang Web đã lấy về, crawler hiểu rõ ngônngữ HTML Các thẻ HTML có chứa URL bao gồm các thẻ anchor (<a href=”URL”…
>), các thẻ option (<option value =”URL”…>, thẻ area (<area href=”URL”…>), …
Một khi crawler đã tải về số lượng lớn các trang Web, nó sẽ phải viếng thămcác trang Web đó thường xuyên để phát hiện sự thay đổi của các trang Web đó vớimục đích cập nhật thông tin về các trang Web, giữ cho các trang Web mà nó có đượccập nhật hơn (up-to-date) Do tốc độ thay đổi của các trang Web là khá cao và khácnhau đối với các Website khác nhau (có những Website được cập nhật hàng ngàynhưng cũng có những site từ lúc ra đời chưa hề được cập nhật) nên việc lựa chọn trangWeb nào để viếng thăm lại, trang Web nào có thể bỏ qua hoặc ít viếng thăm lại hơn làmột trong những nhân tố quyết định đến sự “cập nhật” của dữ liệu về các trang Web.Đương nhiên là các trang Web thay đổi thường xuyên sẽ phải được viếng thăm thườngxuyên hơn
Khi crawler thu thập các trang Web từ khắp nơi trên mạng Internet về, nó sửdụng các tài nguyên của các Web server thuộc về các tổ chức khác Các tài nguyên đóthông thường là CPU, bộ nhớ của các Web server cũng như đường truyền Internet củacác tổ chức đó (đường truyền thậm chí còn được chia sẻ với các tổ chức khác) Chính
vì vậy mà crawler phải hạn chế tối đa sự ảnh hưởng của nó lên các tài nguyên đó đểtránh sự than phiền của các tổ chức đó, thậm chí còn bị cấm truy cập (block) nếu nhưquá lạm dụng tài nguyên của họ
Do lượng thông tin trên mạng là khổng lồ mà crawler thường được thực thi trênnhiều máy tính và cùng một lúc tải về nhiều trang Web để tăng tốc độ cũng như tránhđược hiện tượng nhiều crawlers tập trung vào một site nào đó cùng lúc dẫn đến lạmdụng tài nguyên của Web server
Mobile crawling là một hướng tiếp cận khác Search Engine tung ra nhiều
crawler agents (các tác tử crawl) đến các Web server (các crawlers này có thể dichuyển qua các Web server khác nhau) Các crawlers này hoạt động trên đó và khi thuđược kết quả, chúng sẽ trả về cho crawler manager Mobile crawlers có nhiều ưu điểmnhư truy cập dữ liệu cục bộ (do chạy ngay trên Web server), lựa chọn, lọc, nén trangWeb từ xa (trên Web server), …
Trang 331.5.2. Các chiến lược lựa chọn trang Web trong quá trình crawl
Không phải mức độ cập nhật thông tin giữa các trang Web là như nhau Sẽ cónhững trang được nhiều người quan tâm và đọc nhiều, nó sẽ có nhiều thông tin, cậpnhật nhanh hơn và có doanh thu tốt hơn và đó lại chính là tiền đề để nó tiếp tục đầu tưServer, đường truyền mạng, người quản trị, người biên tập nội dung…để nó vẫn mãi lànhững trang quan trọng Ngược lại, có những trang ít quan trọng hơn vì nó có ít ngườiquan tâm hơn, ít thông tin hơn và do đó nó cũng chẳng cần phải được đầu tư nhiều vềmọi mặt
Trong khi đó, người ta không thể cập nhật toàn bộ các trang Web ngay lập tứcđược, bởi vì lý do chi phí, số Server dùng Crawler là hữu hạn, và chắc chắn, nó ít hơnrất nhiều số Website Do đó nó dẫn đến những điều sau:
Năng lực xử lý là hữu hạn Các Crawler chắc chắn phải được bố trí phân tán
[18] trên toàn cấu, chúng không chỉ phải xử lý việc phân tích các trang mà còn phảithực hiện các lệnh với một hệ thống phân tán
Băng thông là hữu hạn, bởi vì số máy là hữu hạn nên số Card mạng và đường
truyền cho chúng là hữu hạn Ngoài ra, băng thông đường truyền này còn phải được sửdụng cho việc chia sẻ thông tin giữa các cụm máy chủ Crawler
Dung lượng kho chứa cũng là một vấn đề khó khăn Tuy rằng, với sự phát triển
của công nghệ lưu trữ, giá thành trên một TB đã giảm xuống đáng kể, một dung lượngkho chứa để chứa toàn bộ dữ liệu trên thế giới này cũng không quá cao Tuy nhiên, đểquản lý một dung lượng dữ liệu khổng lồ như thế, quản lý số máy móc lớn như thế,cũng đòi hỏi rất nhiều kỹ thuật khó để vượt qua
Do đó người ta sẽ phải tính toán mực độ ưu tiên của các trang Web Các trangWeb “quan trọng” sẽ được quan tâm và Crawler về trước, được cập nhật thường xuyênhơn so với những trang ít quan trọng hơn Và chính điều này sẽ tác động lên “chấtlượng” (mức độ có ý nghĩa) của phần Web site được crawl so với toàn bộ Web sitetrên mạng
Không thể coi các trang Web có mức độ quan trọng như nhau, có thể hình dungmột cách đơn giản như sau, nếu như Search Engine thuộc về một chủ đề nào đó thì cáctrang Web thuộc về chủ đề đó đương nhiên phải quan trọng hơn các trang khác (ví dụnhư Search Engine tìm kiếm các bài báo khoa học thì các bài báo khoa học đươngnhiên là quan trọng) Một trong những cách đo độ quan trọng của các trang Web là đo,đếm số lượng các trang Web có liên kết đến trang Web hiện tại làm độ đo mức độquan trọng cho nó
Trang 34Giả sử trang Web cần đánh giá mức độ quan trọng là p, chúng ta có thể định nghĩa mức độ quan trọng của nó I(p) theo một trong các tiêu chí sau (các tiêu chí có
thể được kết hợp để tăng độ chính xác):
a Mức độ tương tự so với câu hỏi định hướng (driving query) Q:
Q được sử dụng để định hướng quá trình crawl I(p) được xác định dựa trên mức độ tương đương (textual similiraty, một khái niệm trong lý thuyết về Information Retrieval) giữa p và Q Ký hiệu mức độ quan trọng trong trường hợp này là IS(p) hoặc
là IS(p, Q)
Để tính toán mức độ tương tự, có thể xem mỗi tài liệu p như một vector n chiều
(w 1, w 2, … w n ) Trong đó w i là đại diện cho sự ý nghĩa của từ thứ i trong tài liệu Nếu như không có từ đó trong tài liệu thì w i =0 Một cách tính w i đơn giản đó là nhân số lần
xuất hiện của từ này trong tài liệu với tần số nghịch (chu kỳ) idf của từ đó trong tất cả các tài liệu (trong trường hợp của Search Engine là toàn bộ Web) idf có giá trị bằng nghịch đảo của số lần xuất hiện từ thứ i trong toàn bộ các tài liệu Như vậy các từ ít xuất hiện sẽ có giá trị idf cao còn các từ xuất hiện nhiều có idf thấp Ngoài ra, vị trí
xuất hiện của từ đó trong tài liệu cũng ảnh hưởng đến ý nghĩa của từ đó, chẳng hạnnhư các từ xuất hiện ở tiêu đề trang HTML được đánh giá cao hơn các từ khác Trong
trường hợp không sử dụng idf để tính toán mức độ tương đương, có thể sử dụng các thông tin mang tính chất “cục bộ” (local) chỉ gồm p và Q thay vì dùng các thông tin
mang tính chất “toàn cục” (global)
Trong quá trình crawl, crawler không thấy hết toàn bộ các trang Web Vì vậy,
chúng phải ước lượng giá trị của idf dựa trên những trang Web đã được tìm về hoặc dựa trên giá trị idf đã được tính toán trước đó tại một số thời điểm xác định Ước lượng mức độ quan trọng của p trong trường hợp này được ký hiệu là IS’(p) Dễ thấy được nếu như không sử dụng idf để tính toán mức độ quan trọng thì IS(p)=IS’(p).
b Backlink count[8]:
Giá trị của I(p) được tính bằng số lượng các liên kết đến p xuất hiện trên toàn
bộ Web Ký hiệu của I(p) sử dụng độ đo này là IB(p) Nghiễm nhiên là các trang Web
được tham khảo bởi nhiều Web site có mức độ quan trọng hơn các trang Web ít được
tham khảo IB(p) rất hữu ích cho việc xếp hạng các kết quả trong tìm kiếm (ranking) Cũng giống như IS(p), IB(p) có thể được tính dựa trên các trang Web đã được tìm về thay vì toàn bộ Web và lúc đó được ký hiệu là IB’(p).
c PageRank[9]:
Trong khi tính IB(p), các liên kết được đánh giá ngang bằng nhau, liên kết từ
trang chủ của Yahoo cũng được đánh giá ngang bằng với liên kết từ một trang Web cánhân nào đó Tuy nhiên Yahoo là một Web site quan trọng (có giá trị IB rất cao) nêncác trang Web mà nó liên kết tới thường là các trang Web quan trọng Với cách nhìn
Trang 35này thì các liên kết từ các trang Web quan trọng phải được coi trọng hơn các liên kết
khác trong quá trình tính IB(p) Hệ PageRank, định nghĩa một cách đệ quy mức độ
quan trọng của trang Web bởi mật độ tổng tất cả mức độ quan trọng của các trang Web
có liên kết đến nó Tương tự, IR’(p) tính toán dựa trên các trang Web đã được biết bởi
crawler
Nếu như một trang Web nào đó không có liên kết đến các trang khác thì mức độquan trọng của nó được chia đều cho các trang Web
Giả sử p được liên kết đến bởi các trang Web t 1 , t 2 , …, t n và c 1 , c 2 , …, c n là các
liên kết ra ngoài từ các trang Web tương ứng t i Gọi d là yếu tố damp (damping factor,
sẽ được trình bày chi tiết hơn trong mục) Khi đó IR(p) được tính như sau:
IR(p) = (1-d) + d [ IR(t1)/c1 + IR(t2)/c2 + + IR(tn)/cn ] (1)
Để tính toán được IR(p), ban đầu người ta coi tất cả các trang Web có IR như
nhau và bằng 1 Sau một vài bước tính toán làm mịn theo công thức trên sẽ cho ta giá
trị của IR(p).
Ý tưởng ra đời của PageRank là sự tưởng tượng cách một người dùng lướt Webnhư thế nào khi xuất phát từ một trang Web bất kỳ Người dùng sẽ lựa chọn các liênkết trên trang Web này một cách ngẫu nhiên và lần theo các liên kết đó Khi bắt gặpmột trang Web không có liên kết đến bất cứ trang nào thì người dùng sẽ lựa chọn mộttrang Web ngẫu nhiên khác Có một vài nhân tố quyết định đến sự ngẫu nhiên trong
việc lựa chọn trang Web kế tiếp và ở đây, giá trị damp d được xác định một cách trực
giác để đánh giá các nhân tố này Tuy nhiên, càng về sau này, các công cụ tìm kiếm tốtnhư Google có sử dụng chương trình Google Analytics, Alexa có cũng có những công
cụ để có thể tính toán, thống kê được một cách khá chính xác việc truy cập các trangWeb của người sử dụng
d Forward link count[17]
IF(p) đếm số liên kết đi ra từ trang Web IF(p) cũng quan trọng bởi vì một trạng
Web có nhiều liên kết ra ngoài có thể là một Web directory Khác với các hệ đo trước
đây, IF(p) có thể tính chính xác từ trang Web p, do vậy IF(p) = IF’(p).
e Location
IL(p) là một hàm tính toán độ quan trọng của p dựa trên vị trí của p (được thể
hiện qua URL của nó) Thông thường các trang Web có URL dạng “.com“ hay có chứa từ “home“ được đánh giá cao bởi vì nó thường là trang gốc Các URL có ít ký hiệu “/“ cũng vậy.
Các hệ đo trên có thể kết hợp với nhau theo nhiều cách để cho được kết quả sát
với yêu cầu cụ thể hơn Chẳng hạn có thể tính IC(p) = k1.IS(p, Q) + k2.IB(p), với k1,
k2 là các hằng số (trọng số).
Trang 361.5.2.2. Các kiểu crawlers (crawler models)
Mục đích của những người làm về Search Engine là thiết kế các crawler sao
cho nếu có thể thì viếng thăm các trang Web có giá trị I(p) cao hơn trước Tất nhiên là crawler chỉ có thể biết được I’(p) nhưng có thể căn cứ vào đó mà dự đoán được I(p).
Ba mô hình được đưa ra sau đây sẽ minh họa chi tiết hơn:
Crawl and Stop[9]: Với mô hình này, crawler C khởi đầu với trang p 0 và dừng
lại sau K trang Web được tìm về K là một con số cố định tùy thuộc vào số lượng các trang Web mà C có thể tải về trong một lần làm việc Crawler lý tưởng trong trường hợp này sẽ lần lượt viếng thăm r 1 , r 2 , …, r K , với r 1 là trang Web có giá trị mức độ quan
trọng cao nhất Các trang Web r 1 , r 2 , …, r K được gọi là các trang “hot” (hot pages) Thường thì chỉ có M trang Web trong số K trang ở trên có giá trị I(r) ≥ I(r K ) Giá trị
P CS (C) = M/K được gọi là hiệu năng (perforrmance) của crawler C Thực tế là không
thể biết chính xác giá trị xếp hạng của tất cả các trang Web nên M sẽ được tính toán dựa trên xếp hạng ước lượng của chúng Crawler lý tưởng sẽ có hiệu năng bằng 100%.
Crawler dù thế nào thì cũng có xu hướng viếng thăm toàn bộ Web, đôi khi viếng thăm
lại các trang Web đã qua, hiệu năng lúc này được tính bằng K/T với T là tổng số trang Web trên mạng (Mỗi trang Web được viếng thăm có xác suất K/T là trang hot, vì thế
số trang Web mong đợi khi mà crawler dừng lại là K 2 /T).
Crawl and Stop with Threshold[9] (ngưỡng): Vẫn giả sử rằng crawler C viếng
thăm K trang Web và G là một giá trị gọi là mục tiêu quan trọng (impotance target) Trang Web nào có I(p) ≥ G được coi là trang hot Giả sử H là số lượng các trang hot (H xác định với giả thiết biết được xếp hạng của tất cả các trang) Hiệu năng của C trong trường hợp này P ST (C) được tính bằng phần trăm số trang hot H mà C viếng
thăm trước khi kết thúc phiên làm việc Nếu K < H, hiệu năng của crawler lý tưởng sẽ
là K/H, còn nếu K ≥ H thì hiệu năng của crawler lý tưởng sẽ là 100% Crawler ngẫu
nhiên (purely random crawler) viếng thăm lại các trang Web với hy vọng sẽ viếng
thăm (H/T).K trang hot trước khi dừng lại Hiệu năng của nó là K/T.
Limited Buffer Crawl[9]: Giả sử crawler C có thể lưu trữ B trang Web trong bộ đệm (buffer) Khi bộ đệm đầy, crawler phải quyết định bỏ ra ngoài một số trang Web
để nhường chỗ cho các trang Web khác Crawler lý tưởng sẽ loại ra các trang có I(p) thấp nhất Cho phép crawler tiến hành crawl toàn bộ Web (T trang) Tới khi kết thúc quá trình crawl, phần trăm các trang hot trong bộ đệm cho ta hiệu năng P BC (C) Để xác
định một trang có phải là hot hay không có thể căn cứ vào giá trị G như ở trên hoặc dựa vào giá trị I(r B ) với r B là trang Web có mức độ quan trọng thứ B Hiệu năng của
crawler lý tưởng và ngẫu nhiên tương tự như trường hợp trên
Crawler cất các URLs mà nó bắt gặp trong quá trình crawl và hàng đợi rồi lầnlượt lấy chúng ra theo một quy tắc nào đó để tiến hành tải các trang Web tương ứng
Trang 37về Có bốn chiến lược crawl : crawl theo chiều rộng (breath-first crawling), crawl
theo chiều sâu (depth-first crawling), crawl ngẫu nhiên (random crawling) và crawl
có thứ tự (priority crawling).
a Crawl theo chiều rộng (Breath-first crawling)[5]
Crawl theo chiều rộng thực hiện tìm kiếm hết các trang Web gần, qua ít liên kếttrung gian từ trang xuất phát trước rồi mới đến các trang Web xa hơn Hình vẽ sau đâyminh họa cho quá trình crawl với trang xuất phát nằm ở trung tâm, trang nào đậm màuhơn có nghĩa là được tìm đến trước
Hình 12 Mô phỏng tìm kiếm theo chiều rộngTìm kiếm theo chiều rộng là phương pháp áp dụng cho hầu hết các crawler Khimột crawler thực hiện tìm và tải về song song trên nhiều server khác nhau, việc sửdụng tài nguyên của các Web server được chia đều, tránh hiện tượng tập trung vào mộtWeb server, gây nên một số vấn đề về lạm dụng tài nguyên của server
b Crawl theo chiều sâu (Depth-first crawling)[11, 12]
Theo phương pháp này crawler sẽ lần theo liên kết đầu tiên trên trang đầu tiên,sau đó đến liên kết đầu tiên trên trang tiếp theo và cứ như thế đến khi không còn liênkết nào nữa thì quay lại liên kết thứ hai trên trang đầu tiên Một vài crawler đơn giản
áp dụng phương pháp này bởi vì phương pháp này dễ lập trình Hình sau đây minh họacho phương pháp này:
Trang 38Hình 13 Mô phỏng tìm kiếm theo chiều sâu
Đối với phương pháp này, cần phải có một quy tắc rõ ràng để lấy các URLs ra
và các hệ thứ tự (orderring metrics) đã ra đời vì lý do này.Giả sử Crawler sử dụng hệ
O, crawler sẽ lấy URL u có giá trị sắp xếp (ordering value) O(u) cao nhất trước tiên.
Hệ thứ tự sử dụng các thông tin mà crawler đã biết (các trang Web đã được tìm về) để
tính O(u).
Thứ tự ở đây gắn liền với mức độ quan trọng của các trang Web mà URLs chỉ
tới Nếu ta sử dụng IB(p) để xác định thứ tự crawl thì O(u) = IB’(p) với u là URL chỉ đến trang Web p Khi đó crawler được gọi là backlink-based crawler Tương tự có
pagerank-based crawler, similarity-based crawler, …
1.5.3. Tăng tốc độ crawl và crawl song song
Làm thế nào để tăng tốc độ tải trang Web cho crawler? Đó chính là một trongnhững vấn đề quan trọng trong việc xây dựng crawler Không thể nào tải về toàn bộWeb chỉ với một tiến trình crawl Hầu hết các Search Engine hiện nay đều chạy songsong nhiều tiến trình crawl[18] Các nghiên cứu song song hóa quá trình crawl đangphải đối mặt với một số vấn đề:
Trang 39Overlap: Khi nhiều tiến trình crawl chạy cùng một lúc, sẽ xảy ra hiện tượng có
nhiều hơn một tiến trình cùng tải một trang Web về tại một thời điểm Một tiến trìnhkhông hề biết rằng có một tiến trình khác cũng đang tải (hoặc đã tải ) trang Web mà nóđịnh tải về Đây là một sự lãng phí tài nguyên và vấn đề đặt ra là làm sao để tránhđược sự lãng phí này
Quality: Chất lượng của từng tiến trình có cao hay không? Như đã trình bày ở
trên, crawler có xu hướng viếng thăm các trang Web quan trọng trước nhất Tuy nhiên,trong quá trình crawl song song, mỗi tiến trình không biết các kết quả crawl của cáctiến trình khác, và càng không thể biết hết toàn bộ Web Chính vì vậy mà những đánhgiá của nó dựa trên những kết quả nghèo nàn mà nó thu lượm được nên độ chính xáckhông cao Vấn đề đặt ra ở đây là làm thế nào để đảm bảo chất lượng của các trangWeb tải về trong trường hợp song song hóa và crawl đơn lẻ là tốt như nhau
Communication bandwith: Để giải quyết hai vấn đề nêu trên, các tiến trình phải
thường xuyên giao tiếp với nhau, cùng nhau hoạt động Quá trình giao tiếp này tănglên đáng kể khi số lượng tiến trình tăng Những gì mà các tiến trình cần giao tiếp vàlàm thế nào để giảm tối đa giao tiếp giữa chúng là vấn đề phải xem xét
Song song hóa quá trình crawl là một thách thức lớn Một khi đã song song hóacác tiến trình, những thuận lợi đem lại là không nhỏ so với crawl đơn lẻ Một vài thuậnlợi đó là:
Scalability: Do kích thước khổng lồ của Web mà, song song hóa crawl là cấp
bách nhằm đạt được tốc độ tải trang Web yêu cầu
Network-load dispersion (Sự phân tán tải cho mạng): Các tiến trình crawl có
thể được chạy tại các nơi có vị trí địa lý khác nhau, mỗi tiến trình thực hiện crawl cáctrang Web gần nó về mặt địa lý (chẳng hạn như các tiến trình ở Đức crawl các trangWeb ở châu Âu trong khi các tiến trình tại Nhật Bản tiến hành crawl các trang Web ởchâu Á) Như vậy tải mạng sẽ được phân tán cho nhiều vùng và nghiễm nhiên điều này
là cần thiết khi một mạng đơn không thể kiểm soát hay tải nổi thông lượng khổng lồ
do crawl với mật độ cao (large-scale crawl).
Network-load reduction: Cùng với việc phân tán tải, song song hóa cũng giảm
tải cho mạng Chẳng hạn như crawler tại Bắc Mỹ tiến hành crawl các Websites tạichâu Âu thì các Website trước tiên phải đi qua mạng “cục bộ” của châu Âu, sau đó đi
từ châu Âu sang châu Mỹ (liên lục địa) rồi qua mạng “cục bộ” châu Mỹ Nếu như cáccrawlers tại châu Âu crawl các Websites tại châu Âu và các crawlers tại châu Mỹcrawl các Websites tại châu Mỹ thì sẽ giảm được việc lưu chuyển các Websites giữacác châu lục Tất nhiên là sau này các trang Web phải được đưa về trung tâm lưu trữnào đó, tuy nhiên trong trường hợp này thì lưu lượng thông tin phải lưu chuyển cũng
sẽ nhỏ hơn do thông tin được nén lại, các thông tin gửi đi nhiều khi chỉ là sự khác nhau
Trang 40giữa các trang Web (cập nhật), hoặc là sự tổng kết các thông tin chính phục vụ cho quátrình đánh chỉ mục tại trung tâm lưu trữ.
Hình 15 minh họa kiến trúc chung của crawler song song hóa[10] Một crawler
song song bao gồm nhiều tiến trình crawlers (C-proc) Mỗi một C-proc thực thi các
công việc mà một crawler đơn lẻ kiểm soát Nó tải các trang Web về và lưu trữ cục bộ,
tách các URLs và lần theo các URLs đó Tùy thuộc vào cách mà các C-proc chia nhỏ các tác vụ tải trang Web mà một số URLs có thể được gửi cho các C-proc khác.
Hình 14 Kiến trúc chung của crawler song songCác C-proc có thể được phân tán trong mạng cục bộ (intra-site parallel crawler)hay các mạng có vị trí địa lý khác nhau, mạng WAN, Internet (distributed crawler).Đối với distributed crawler, việc giao tiếp giữa các crawlers sẽ gặp khó khăn do cáccrawlers ở xa nhau và tốc độ mạng giữa chúng bị giảm đáng kể và có giới hạn (tốc độmạng Internet) so với intra-site
Khi tải các trang Web, các crawlers có thể cùng nhau viếng thăm một trang
Web (hiện tượng overlap) Để hạn chế hiện tượng này, một số phương pháp được đưa
ra bao gồm:
Independent: Các C-proc crawl một cách độc lập với tập các URLs ban đầu
khác nhau Các C-proc không cần phải quan tâm đến các C-proc khác làm gì Như vậy
có thể dẫn đến overlap nhưng do tập các URLs ban đầu của các C-proc là các URLs có
nguồn gốc khác nhau nên hy vọng rằng hiện tượng overlap là không đáng kể Ưu điểm
của phương pháp này là sự giao tiếp và kết hợp các C-proc giảm tối thiểu.
Dynamic assignment: Là phương pháp mà trong đó bộ điều phối trung tâm (central coodinator) chia nhỏ Web thành các phần (partition) và giao cho các C-proc
tiến hành crawl vào bất cứ lúc nào (dynamic) Trong quá trình crawl, bộ điều phối sẽ quyết định sẽ crawl phần nào của Web tiếp theo (gửi URLs khởi đầu cho C-proc nào đó) Ngay sau khi nhận được URLs khởi đầu, C-proc sẽ thực hiện crawl phần tương ứng Khi gặp một URL của phần khác C-proc báo lại URL này cho trung tâm điều
phối và URL này được dùng làm URL khởi đầu cho vùng tương ứng