Nhận thức được vai trò của các searchengine trong việc tìm kiếm và khai thác thông tin trong xã hội hiện đại nóichung và trong lĩnh vực công nghệ thông tin nói riêng, một số công ty lớn
Trang 1LỜI NÓI ĐẦU
Ngày nay, các thành tựu trong tin học được áp dụng rất nhiều trong các lĩnh vực của xã hội Thông tin đã trở thành một nhu cầu quan trọng, quan trọng đến mức trở nên thường xuyên, cấp thiết cho bất kỳ ai muốn thành công trong xã hội hiện đại Trước nhu cầu trao đổi, cung cấp thông tin nói trên hàng loạt các phương tiện truyền tải thông tin đã ra đời mà một trong những thành quả nổi bật nhất là mạng toàn cầu Internet Các kho dữ liệu trên Internet là một nguồn thông tin vô cùng to lớn Nhưng làm sao để có thể tìm được đúng thông tin mình cần trong biển thông tin có thể nói là vô tận như thế? Vấn đề đó đã được giải quyết với sự trợ giúp của các search engine.
Search engine là một vấn đề đã được các nhà khoa học và các công ty nổi tiếng trên thế giới quan tâm nghiên cứu Các search engine nổi tiếng trên thế giới hiện nay như: Goole, Yahoo!,… vẫn đang được bổ sung và phát triển không ngừng để có thể đáp ứng được nhu cầu tìm kiếm thông tin ngày càng gia tăng Tại Việt Nam, các search engine tiếng Việt cũng đã góp phần không nhỏ cho nhu cầu tìm kiếm thông tin tiếng Việt Để góp chút công sức cho việc
phát triển các search engine tại Việt Nam, tôi đã quyết định chọn đề tài: “Xây dựng hệ thống tìm kiếm thông tin hỗ trợ tiếng Việt” làm đề tài cho đồ án tốt
nghiệp của mình.
Trước hết, tôi xin chân thành cảm ơn các thầy cô giáo trường Đại học Bách Khoa Hà Nội đã truyền đạt kiến thức và giúp đỡ để tôi có được ngày hôm nay.
Tôi xin bày tỏ lòng biết ơn đến thày Huỳnh Quyết Thắng, Trưởng bộ môn Công nghệ phần mềm, khoa Công nghệ thông tin trường Đại học Bách Khoa Hà Nội, người đã trực tiếp hướng dẫn, giúp đỡ và tạo mọi điều kiện cho tôi thực hiện đề tài này.
Tôi xin cảm ơn GS.Nguyễn Văn Lợi, Viện phó Viện Ngôn ngữ đã giúp
đỡ và có những đánh giá để tôi ngày càng hoàn thiện phần tiếng Việt của mình.
Tôi xin cảm ơn công ty VDC ( 292 Tây Sơn) đã giúp đỡ tôi về mặt kỹ thuật để thử nghiệm BKSearcher trên môi trường Internet.
Trang 2Tôi xin cảm ơn công ty Multi-Tech, nơi tôi đã thực tập, tập thể công ty
đã luôn tạo mọi điều kiện để tôi hoàn thành đề tài này.
Và cuối cùng tôi xin được gửi lời cảm ơn đến gia đình và bạn bè, những người luôn ở bên và động viên, khích lệ tôi trong thời gian vừa qua.
Hà Nội, ngày 30 tháng 4 năm 2004
Sinh viên
Hoàng Minh Sơn
Trang 3MỤC LỤC
LỜI NÓI ĐẦU 1
MỤC LỤC 3
DANH MỤC HÌNH VẼ 5
PHẦN 1 6
ĐẶT VẤN ĐỀ 6
1.1 THÔNG TIN VÀ VẤN ĐỀ KHAI THÁC, XỬ LY THÔNG TIN 7
1.1.1 Sự bùng nổ thông tin 7
1.1.2 Khai thác và xử lý thông tin 7
1.2 MỤC ĐÍCH VÀ LÝ DO LỰA CHỌN ĐỀ TÀI 9
1.3 CÁC MỤC TIÊU CỤ THỂ 11
PHẦN 2 12
CƠ SỞ LÝ THUYẾT VÀ THIẾT KẾ HỆ THỐNG 12
2.1 MÔ HÌNH HỆ TRÍCH CHỌN THÔNG TIN 13
1.1 WEB CRAWLER I C RAWLER 16
2.1.1 Các vấn đề đặt ra với iCrawler 16
2.1.2 Các nghiên cứu đã có về Web Crawler 17
2.1.3 iCrawler – Cơ sở lý thuyết và triển khai 18
2.2 CÁC KỸ THUẬT LƯỢNG GIÁ ĐỘ TƯƠNG QUAN 32
2.2.1 Tổng quan về lượng giá độ tương quan 32
2.2.2 Mô hình Boolean 33
2.2.3 Mô hình Vector 34
2.2.4 Mô hình xác xuất sử dụng luật Bayes 35
2.2.5 Concept Indexing 37
2.3 THUẬT TOÁN TÁCH TERM TIẾNG VIỆT 43
2.4 KĨ THUẬT LẬP CHỈ MỤC 47
2.4.1 Tổng quan về lập chỉ mục 47
2.4.2 Xây dựng chỉ mục 48
2.5 CÁC CẢI TIẾN CHO CÁC KỸ THUẬT ĐÁNH GIÁ ĐỘ TƯƠNG QUAN 54
2.5.1 Mô hình Boolean 54
2.5.2 Mô hình Vector 57
2.5.3 Mô hình Bayes 58
2.5.4 Xây dựng bảng LUT 61
2.6 XÂY DỰNG HỆ THỐNG TÌM KIẾM CÓ SỬ DỤNG PHÂN LOẠI VĂN BẢN 63
2.6.1 Hướng tiếp cận 63
2.6.2 Phân tích 64
2.7 VẤN ĐỀ CẬP NHẬT 66
2.7.1 Những vấn đề đối với cập nhật 66
2.7.2 Phương án cập nhật 66
PHẦN 3 69
TỔ CHỨC CẤU TRÚC DỮ LIỆU PHỤC VỤ HỆ THỐNG 69
3.1 CÂY ĐỎ ĐEN (RED-BLACK TREE) 70
3.1.1 Khái niệm 70
3.1.2 Mục đích sử dụng và so sánh với một số lựa chọn khác 70
3.2 CÂY CÂN BẰNG NHIỀU ĐƯỜNG (MULTI-WAY BALANCED TREE - MWBT) 71
3.2.1 Giới thiệu 71
3.2.2 Lưu trữ vật lý của MWBT trên bộ nhớ 71
3.2.3 Các thao tác trên cây 72
3.2.4 Một số đặc điểm 74
3.2.5 Cây cân bằng nhiều đường cải tiến 74
3.3 BẢNG BĂM (HASH TABLE) 85
3.3.1 Khái niệm cơ bản về hàm băm 85
3.3.2 Khái niệm cơ bản về bảng băm 85
3.3.3 Phương pháp giải quyết xung đột 86
3.3.4 Mục đích sử dụng 88
Trang 4PHẦN 4 93
THỬ NGHIỆM, ĐÁNH GIÁ VÀ KẾT LUẬN 93
4.1 THỬ NGHIỆM VÀ ĐÁNH GIÁ 94
4.2 KẾT LUẬN 97
TÀI LIỆU THAM KHẢO 97
CHỈ MỤC TỪ 99
Trang 5DANH MỤC HÌNH VẼ
Hình 1 Mô hình kiến trúc chung của Search Engine 13
Hình 2: Kiến trúc MetaCrawler [19] 18
Hình 3: Tránh trùng lặp bằng MD5 23
Hình 4 Mười term có trọng số cao nhất trong trọng tâm của nhóm hai tập dữ liệu 40
Hình 5 Mô hình thuật toán 41
Hình 6: Quy trình xây dựng chỉ mục 49
Hình 7: Hoạt động của từ điển 50
Hình 8: Cấu trúc bộ đệm văn bản 50
Hình 9: Cấu trúc bộ đệm gói 51
Hình 10 : Mô tả cấu trúc vật lý của file tạm 51
Hình 11: Mô tả thô sơ của cấu trúc Lexicon 53
Hình 12: Cấu trúc Lexion và Inverted file 54
Hình 13: Định dạng của Rel 56
Hình 14: Kết quả tính Rel của truy vấn hai term với một văn bản 57
Hình 15: Cấu truc một Block của LUT 62
Hình 16: Mô hình tìm kiếm sử dụng phương pháp concept indexing 64
Hình 17: Cây đỏ đen 70
Hình 18: Cấu trúc một node của MWBT 71
Hình 19: Phương pháp tìm phần tử thay thế 74
Hình 20: Cấu trúc của MWBT cải tiến 75
Hình 21: Mô tả hoạt động của MWBT tối ưu tìm kiếm 78
Hình 22: Mô tả hoạt động cơ bản của Respository 81
Hình 23: Mô tả cơ chế hoạt động của cache 82
Hình 24: Giải thuật tìm kiếm Block có cache 83
Hình 25: Chống xung đột theo Chaining 87
Hình 26: Giải thuật chống xung đột Open Addressing 88
Hình 27: Hoạt động cơ bản của Lexicon và Inverted File 89
Hình 28: Cấu trúc vật lý của Lexicon và Inverted File 90
Hình 29: Cấu trúc một Block của Inverted File 90
Hình 30: Cấu trúc một phần tử của Lexicon 91
Hình 31: Giao diện BKSearcher lúc bắt đầu 94
Hình 32: Giao diện BKSearcher với truy vấn hội nghị khoa học 94
Trang 6PHẦN 1 ĐẶT VẤN ĐỀ
Trang 71.1 THÔNG TIN VÀ VẤN ĐỀ KHAI THÁC, XỬ LY THÔNG TIN 1.1.1 Sự bùng nổ thông tin
Kỷ nguyên thông tin đang tới và thế giới đang chuyển từ giai đoạnthiếu thốn sang giai đoạn tràn ngập thông tin Vì vậy, việc xử lý và tìm đượcthông tin cần thiết sẽ là chìa khoá để thành công Thông thường, đa số ngườidùng khai thác thông tin trên mạng không biết chính xác thông tin cần tìmnằm ở đâu trên biển thông tin mênh mông của Internet Chính vì thế, sử dụngnhững hệ thống tìm kiếm là giải pháp tốt nhất Trên thực tế, 77% công tác tìmkiếm được thực hiện bởi các hệ thống tìm kiếm
Theo các nghiên cứu mới nhất, cứ mỗi giây lại có thêm 40 trang Webmới bổ sung vào con số 6,4 tỷ trang đã có trên mạng Có nghĩa là để tìm đượctrang thông tin cần thiết, bạn phải "đãi cát tìm vàng" dù có rất nhiều công cụtìm kiếm Để giúp bạn, Google, Microsoft và Yahoo! đã cải tiến công cụ tìmkiếm của họ và hiện đang dẫn đầu xu hướng kết hợp sức mạnh của công nghệvới trí phán xét thông minh của con người để mang lại kết quả mong muốncho người dùng
Tìm kiếm thông tin không chỉ là vấn đề của toàn Internet, mà còn là củatừng website Sẽ rất khó khăn cho độc giả của những website có hàng trămhay hàng ngàn trang thông tin mà không có hệ thống tìm kiếm Do đó, ứngdụng hệ thống tìm kiếm cho website là phương thức nâng cao khả năngtruyền thông và quảng bá thông tin của website trên Internet Sau khi mỗiwebsite phải vất vả lôi kéo độc giả, thì sau đó lại phải giúp đỡ họ khỏi ngộpthở trong biển thông tin của chính mình
Một hệ thống tìm kiếm thông tin thực sự sẽ giúp tiết kiệm thời gian tìmkiếm thông tin, cũng có nghĩa là tiết kiệm: tiền bạc, sức lực, cơ hội kinhdoanh Thông tin đã trở thành một nhu cầu quan trọng, quan trọng đến mứctrở nên thường xuyên, cấp thiết cho bất kì ai muốn thành công trong xã hội
1.1.2 Khai thác và xử lý thông tin
Dựa vào những phân tích ở trên ta thấy nổi lên một vấn đề là: làm thếnào để khai thác, tìm kiếm thông tin từ rất nhiều nguồn dữ liệu lớn khác nhau?
Khai thác thông tin:
Khai thác thông tin được hiểu là quy trình tách, tạo ra những thông tinmới, có ý nghĩa từ các nguồn dữ liệu bao gồm các giao dịch, các tài liệu ,các
Trang 8email, trang web… và sử dụng thông tin này để đưa ra các quyết định kinhdoanh, sản xuất cụ thể
Dữ liệu, thông tin và các tính chất của nó:
Nguyên liệu cơ bản ban đầu của quá trình khai thác thông tin là dữ liệu.Tuy nhiên loại dữ liệu thường thấy hiện nay là các văn bản và các trang web,những loại tài liệu phi cấu trúc Các nhà phân tích công nghiệp ước lượng rằng
dữ liệu phi cấu trúc chiếm 80% thông tin doanh nghiệp so với 20% các dữ liệu
có cấu trúc, nó bao gồm dữ liệu dưới các dạng khác nhau như text, hình ảnh,video và âm thanh Trong đó, text là dữ liệu phi cấu trúc phổ biến nhất
Với sự bùng nổ thông tin như đã nói ở trên, chỉ riêng việc quản lý khốilượng thông tin khổng lồ đã là một khó khăn, ngay cả khi quản lý được khốilượng thông tin đó rồi thì khó khăn mới nảy sinh là làm thế nào để có thể trích
ra được trong đó những thông tin thật sự cần Có thể nói: khối lượng dữ liệu
khổng lồ mà người sử dụng có thể truy xuất nếu không được tổ chức lưu trữ tốt và kèm theo một phương thức xử lý hiệu quả để có thể khai thác được thông tin trên đó thì chúng cũng chỉ là những thông tin chết chứ không mang lại chút ích lợi nào cả.
Trang 91.2 MỤC ĐÍCH VÀ LÝ DO LỰA CHỌN ĐỀ TÀI
Sự phát triển vượt bậc của nền công nghệ thông tin thế giới và hiệntượng bùng nổ thông tin trong những năm gần đây đã khẳng định tầm quantrọng sống còn của các search engine Nhận thức được vai trò của các searchengine trong việc tìm kiếm và khai thác thông tin trong xã hội hiện đại nóichung và trong lĩnh vực công nghệ thông tin nói riêng, một số công ty lớn trênthế giới đã nhanh chóng xây dựng các search engine hỗ trợ cho việc tìm kiếm
trên mạng như: yahoo.com, google.com, panvietnam.com, vinaseek.com, …
Tác dụng của những hệ thống này đối với người sử dụng để tìm kiếm thông tintrên Internet là không thể chối cãi
Với lượng thông tin khổng lồ trên mạng như hiện nay, search enginethực sự là một công cụ tối cần thiết cho người dùng Internet khai thác, tìmkiế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à Information Retrieval) Một trong những nghiên cứu đó là của trường đạihọc Standford (Mỹ) và kết quả là search engine Google đứng đầu trên thế giớihiện nay
Để xây dựng một search engine cần phải biết rất nhiều vấn đề lý thuyếtliên quan, trong đó có các lý thuyết về ngôn ngữ, lý thuyết về informationretrieval, 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ánsong song,… Đề tài search engine là một trong nhứng đề tài mang tính lýthuyết cũng như có tính thực tế cao
Việt Nam cũng có hai search engine đáng kể là Vinaseek của công ty Tinh Vân, PanVietNam của NetNam Chúng ta không thể so sánh các search
engine này với các search engine nổi tiếng trên thế giới Đặc điểm của cácsearch engine này là khả năng tìm kiếm tài liệu tiếng Việt Tuy nhiên, ngườidùng vẫn chưa thực sự hài lòng với các kết quả tìm kiếm do các search enginenày mang lại do đã khá quen thuộc với các search engine của nước ngoài vớikết quả tìm kiếm (cả tiếng Anh và tiếng Việt) khá tốt
Ở Việt Nam, mặc dù số lượng thông tin tiếng Việt so với mỏ thông tinkhổng lồ trên Internet là rất nhỏ, nhưng dưới góc độ một con người thì lượngthông tin này vẫn còn là rất lớn và quá trình tìm kiếm thông tin trên đó bằngcách thủ công là không thể Trong giai đoạn mà các nhu cầu tìm kiếm thôngtin trên mạng Internet cũng như tìm kiếm tài liệu tiếng Việt nói chung đang
Trang 10được quan tâm, đề tài này được phát triển với mục đích chính nhằm vào việcxây dựng một search engine tiếng Việt cho người Việt Search engine này phảigiải quyết được các vấn đề tìm kiếm trong tiếng Việt và hỗ trợ tiếng Việt mộtcách hoàn thiện, đặc biệt là vấn đề font chữ tiếng Việt Nhận thức được tầmquan trọng của việc tìm kiếm thông tin tiếng Việt, những khó khăn chuyênmôn cũng như các vấn đề về cú pháp và ngữ nghĩa tiếng Việt nhưng tôi cũngxin mạnh dạn lựa chọn việc Xây dựng một search engine tiếng Việt làm đề tàicho đồ án tốt nghiệp lần này
Trang 111.3 CÁC MỤC TIÊU CỤ THỂ
Trong phạm vi đồ án tốt nghiệp này, tôi tập trung vào những mục tiêu
cụ thể để xây dựng hệ thống tìm kiếm thông tin tiếng Việt mà tôi đã tiến hànhcài đặt và thử nghiệm trên thực tế tại các trang web sau:
ý nghĩa tìm kiếm cao hơn [1] (được thày Nguyễn Đức Nghĩa phản biện,
đăng trên Tạp chí Khoa học và Công nghệ 2-2004)
tìm kiếm trên để dễ dàng cho việc tìm kiếm và cập nhật thông tin [18]
(đã được phản biện và sẽ đăng trên tạp chí Tin học và Điều khiển số
tới)
mặt ngữ nghĩa và tăng ý nghĩa tìm kiếm với văn bản tiếng Việt (đã
được GS.Nguyễn Văn Lợi, Viện Ngôn ngữ học đánh giá)
II - 2004
mọi mặt kỹ thuật
Trang 12PHẦN 2
CƠ SỞ LÝ THUYẾT VÀ THIẾT KẾ HỆ
THỐNG
Trang 132.1 MÔ HÌNH HỆ TRÍCH CHỌN THÔNG TIN
Hình sau đây đưa ra kiến trúc mức cao của một search engine, trong đócác thành phần của kiến trúc này đảm nhiệm các chức năng khá cụ thể:
Internet
Protocol Modules
HTTP FTP Other
Crawler Store server
Repository
Indexer
Anchor Lexicon Dictionary
URL Resolver Page Rank
Searcher Look up
Hình 1.1: Kiến trúc cấp cao một search engine
Hình 1 Mô hình kiến trúc chung của Search Engine
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 Thu thập
Control (Bộ điều khiển thu thập) 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ạntà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ốtnhất theo một nghĩa nào đó Ví dụ Crawler của một search engine nào đó đượcthiế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
Trang 14sâu” trong một site (đường đến các trang web này dài và phức tạp) trong khiCrawler của một search engine khác lại được giao nhiệm vụ khám phá mộtvùng (domain) nào đó Bộ điều khiển thu thập 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 thu thập, 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ào nê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 tin phản hồi từ phía mô-tơ truy vấn đểđiều khiển Crawler (được thể hiện qu mũi tên nối Query engine và Thu thậpcontrol trong mô hình kiến trú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ìnhthành nên một bảng tra cứu các URLs chỉ đến các trang web có chứa các từ
cho trước gọi là text index trên hình 1 Bảng này chỉ là kết quả dựa trên những
trang web đã được khám phá bởi Crawler Tuy nhiên để xây dựng index cho
cả web thì sẽ gặp khó khăn lớn do kích thước và sự thay đổi của web rất đáng
kể Hơn nữa, đánh chỉ mục web cần phải có một vài loại index đặc biệt khác
nữa Ví dụ như Indexer có thể tạo ra một số loại index có cấu trúc (structure
index), phản ánh các liên kết giữa các trang web Các loại index như vậy có
thể không thích hợp cho văn bản đơn thuần không có các liên kết Collection
analysis module (mô-đun phân tích tập) đáp ứng cho việc tạo các loại index
khác
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ọnghay 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, search 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ệctìm kiếm
Trang 15Query 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ệu trang 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
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 Query engine 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ộtyê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áchtiếp cận dựa trên độ tương tự văn bản nói trên
1.1 WEB CRAWLER iCrawler
2.1.1 Các vấn đề đặt ra với iCrawler
Trang 162.1.1.1 Lọc liên kết từ các trang web
iCrawler phải giao tiếp, tương tác với các web server trên Internet bằng giaothức phổ biến HTTP Để tách được URL từ trang web, iCrawler tiến hànhphân tích trang, hiểu được đặc điểm ngôn ngữ HTML, cấu trúc của URL vàđưa vào hàng đợi những địa chỉ URL dưới dạng tuyệt đối (sẽ giải thích ở phầnsau)
2.1.1.2 Chiến lược làm tươi (recrawl/refresh)
iCrawler không chỉ có nhiệm vụ tải một trang web về cơ sở dữ liệu mà cònphải cập nhật chúng sao cho nội dung là mới nhất có thể được Khi một trangweb nào đó được thăm và iCrawler phát hiện được sự thay đổi, nó phải cậpnhật ngay trang này trong cơ sở dữ liệu Tốc độ thay đổi của các trang web làkhác nhau, và do vậy với mỗi trang tần số thăm viếng của iCrawler cũng khácnhau
2.1.1.3 Tránh sử dụng quá nhiều tài nguyên của các máy chủ web
iCrawler cũng như bất kỳ một Web Crawler nào khác, nó sử dụng các tàinguyên của web server, và do vậy dĩ nhiên là nó sẽ làm cho máy chủ web bịảnh hưởng Tiêu tốn càng ít tài nguyên của web server thì càng tốt, nếu khôngiCrawler có thể bị cấm truy cập do ảnh hưởng xấu đến hiệu năng của các tổchức khác
Hơn nữa, ngay trên các máy mà iCrawler chạy, nó cũng phải chiếm càng ít tàinguyên thì càng tốt Giới hạn chấp nhận được là 60%-70% thời gian CPU, bộnhớ khoảng 100 MB cho mỗi phiên làm việc Trong phạm vi nghiên cứu,iCrawler được giả thiết chạy trên một máy đơn
2.1.1.4 Tốc độ
iCrawler phải có tốc độ tương đối nhanh, để đáp ứng được yêu cầu về cập nhật
và xây dựng được kho dữ liệu đạt yêu cầu Do yêu cầu này là một trong nhữngyêu cầu chủ yếu, nó được ưu tiên nghiên cứu hơn cả trong công trình này cùngvới lựa chọn trang web Để thực hiện được điều đó iCrawler lựa chọn phươngpháp thực thi song song đồng bộ iCrawler cố gắng sử dụng truy cập đĩa mộtcách hiệu quả, hạn chế nếu có thể
2.1.1.5 Mạnh mẽ (Robustness)
Vì phải tương tác với hàng ngàn, thậm chí hàng triệu máy chủ, iCrawlerphải có khả năng bỏ qua các lỗi HTML, lỗi URL, thậm chí bỏ qua các lỗi hệthống nếu có thể Đặc biệt là khi có lỗi mạng, iCrawler cố gắng làm sao cho
Trang 17việc mất mát dữ liệu là không lớn Như thế, iCrawler sẽ phải cập nhật trạngthái làm việc của nó ở trên đĩa một cách định kỳ Khi hệ thống có thể làm việctrở lại, trạng thái được giữ như khi nó bị hỏng.
2.1.1.6 Theo đúng quy ước về từ chối thu thập trang web
Có một điều rất quan trọng về chuẩn quy ước mà iCrawler phải theo, đó
là quy ước về việc từ chối Crawler Việc từ chối này được thực hiện bằng filerobot.txt hoặc các thẻ siêu dữ liệu (meta tag) Hơn nữa là tốc độ yêu cầu trangcũng không được quá lớn Ví dụ 30 giây chỉ được yêu cầu 1 trang hoặc ít hơn.Nếu không người quản trị máy chủ web có quyền khóa không cho iCrawlertruy cập các web site của họ
2.1.1.7 Có thể quản lý và cấu hình lại
Thông qua giao diện với người dùng, iCrawler phải đảm bảo việc cấuhình, theo dõi, quản lý nó là dễ dàng Ví dụ, đáp ứng các thay đổi tốc độ thămviếng, thứ tự thăm viếng, dừng lại hoặc tiếp tục, xóa khỏi danh sách thămviếng, cấm thăm viếng một web site, nhận phản hồi người dùng,
2.1.2 Các nghiên cứu đã có về Web Crawler
Trên thế giới đã có nhiều công trình nghiên cứu về Web Crawler Một
số trong chúng đã được áp dụng trong thực tế và rất thành công Tuy triển khaitheo nhiều hướng khác nhau, nhưng nói chung các công trình đó đều phải giảiquyết những vấn đề căn bản nêu trên
Một trong những nghiên cứu thành công là MetaCrawler của đại họcWashington sau này chuyển sang cho AOL Kiến trúc của MetaCrawler nhưsau:
Hình 2: Kiến trúc MetaCrawler [19]
Trang 18MetaCrawler đã được một số trang web sử dụng vào mục đích thươngmại như Go2Net Mercator là một Web Crawler có kiến trúc rõ ràng Sử dụngnhững kỹ thuật như thu thập có ưu tiên, chống lỗi, hàm băm trên xâu.
Qua quá trình nghiên cứu chúng tôi thấy có nhiều cách tiếp cận để thựchiện một Web Crawler như Agent, Multithreading, Distributed Các công trìnhnghiên cứu này tập trung chủ yếu vào các công việc như tăng hiệu năng, giảmtrùng lắp, sắp xếp liên kết
2.1.3 iCrawler – Cơ sở lý thuyết và triển khai
2.1.3.1 Chiến lược lựa chọn trang web
Vì tài nguyên mà iCrawler được sử dụng là giới hạn, do vậy nó buộc phải lựachọn một số lượng hạn chế trong số những địa chỉ mà nó biết để thăm Nếukhông, cơ sở dữ liệu sẽ bị quá tải, hơn nữa hoạt động của iCrawler sẽ khônghiệu quả
2.1.3.1.1 Đánh giá mức độ quan trọnng (impotance metrics) của một trang
Có rất nhiều cách để xác định độ quan trọng của một trang nhưng đểđáp ứng yêu cầu về tốc độ iCrawler chỉ lựa chọn chiến lược đếm liên kếtngược (backlink count) Ở đây ta gọi I(p) là độ quan trọng của trang p
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 đếm liên kết ngược là IB(p) Thực tếcho thấy các trang web được tham khảo bởi nhiều web site có mức độ quantrọng hơn các trang web ít được tham khảo IB(p) rất hữu ích cho việc xếphạng các kết quả trong tìm kiếm (ranking) IB(p) được tính dựa trên các trangweb đã được tìm về thay vì toàn bộ web và lúc đó được ký hiệu là IB’(p) Nếugiả sử trong trường hợp lý tưởng iCrawler duyệt được toàn bộ web, thìIB’(p)=IB(p)
2.1.3.1.2 Phương pháp hoạt động
iCrawler được hi vọng là sẽ viếng thăm các trang web có giá trị I(p) cao.Nhưng do hạn chế kỹ thuật, iCrawler không có kiến thức về toàn bộ web, chonên nó phải sử dụng I’(p) tức là giá trị tính trên kho dữ liệu mà nó có Thường
có ba cách để thu thập web:
Thu thập và dừng: Với mô hình này, Web Crawler C khởi đầu với
trang p0 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
Trang 19lần làm việc Web Crawler lý tưởng trong trường hợp này sẽ lần lượtviếng thăm r1, r2, …,rK, với r1 là trang web có giá trị mức độ quantrọng cao nhất Các trang web r1, r2,…,rK đượ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(rK) Giá trị PCS(C) = M/K được gọi là hiệu năng(perforrmance) của Web Crawler C Thực tế là không thể biết chính xácgiá trị xếp hạng của tất cả các trang web nên M sẽ được tính toán dựatrên xếp hạng ước lượng của chúng Web Crawler lý tưởng sẽ có hiệunăng bằng 100% Web Crawler dù thế nào thì cũng có xu hướng viếngthăm toàn bộ web, đôi khi viếng thăm lại các trang web đã qua, hiệună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 tốt, vì thế sốtrang web mong đợi khi mà Web Crawler dừng lại là K2/T).
Thu thập và dừng có ngưỡng: Vẫn giả sử rằng Web Crawler C viếng
thăm K trang web và G là một giá trị mục tiêu Trang web nào có I(p) ≥
G được coi là trang tốt Giả sử H là số lượng các trang tốt (H xác địnhvớ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 Ctrong trường hợp này PST(C) được tính bằng phần trăm số trang tốt 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ệunăng của Web Crawler lý tưởng sẽ là K/H, còn nếu K≥H thì hiệu năngcủa Web Crawler lý tưởng sẽ là 100% Web Crawler ngẫu nhiên viếngthăm lại các trang web với hy vọng sẽ viếng thăm (H/T).K trang tốttrước khi dừng lại Hiệu năng của nó là K/T
Thu thập với vùng đệm giới hạn: Giả sử Web Crawler C có thể lưu
trữ B trang web trong bộ đệm Khi bộ đệm đầy, Web Crawler phảiquyết định bỏ ra ngoài một số trang web để nhường chỗ cho các trangweb khác Web Crawler lý tưởng sẽ loại ra các trang có I(p) thấp nhất.Cho phép Web Crawler tiến hành thăm toàn bộ web (T trang) Tới khikết thúc quá trình thăm, phần trăm các trang tốt trong bộ đệm cho tahiệu năng PBC(C) Để xác định một trang có phải là tốt 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(rB) với rB làtrang web có mức độ quan trọng thứ B Hiệu năng của Web Crawler lýtưởng và ngẫu nhiên tương tự như trường hợp trên
2.1.3.1.3 Thứ tự thăm các URLs
Trang 20iCrawler sẽ thăm các trang web theo thứ tự có ưu tiên (Prioritycrawling) iCrawler tính toán độ quan trọng của một trang và định kỳ sắp xếplại thứ tự của chúng trong hàng đợi Tất nhiên, những trang được coi là quantrọng hơn sẽ được ưu tiên xử lý trước những trang ít quan trọng.
Kiến trúc của iCrawler cho phép có nhiều hàng đợi, trong đó có một hàng đợichính Tại hàng đợi chính, các trang sẽ được sắp xếp lại một cách định kỳ theothứ tự độ quan trọng giảm dần Và tất nhiên, các trang quan trọng sẽ được lấy
ra trước
2.1.3.2 Tốc độ thu thập trang Web
Tăng tốc độ tải trang là một trong những khó khăn lớn nhất mà bất kỳ WebCrawler nào cũng phải đối mặt Nếu chỉ có một tiến trình, việc tải về một sốlượng khổng lồ các trang web là điều bất khả thi trong giới hạn thời gian Hầuhết các search engine đều chạy song song nhiều tiến trình Web Crawler.BKSearcher có kiến trúc chỉ sử dụng một Web Crawler nhưng bản thâniCrawler gồm rất nhiều tiến trình song song hoạt động Cũng như bất kỳ mộtWeb Crawler nào, iCrawler phải giải quyết các vấn đề nảy sinh khi xử lý songsong:
Tải trang trùng nhau (Overlap): Khi nhiều tiến trình thu thập 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ùngtải một trang web về tại một thời điểm Một tiến trình không hề biếtrằ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
Chất lượng (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, web crawler có xu hướng viếngthăm các trang web quan trọng trước nhất Tuy nhiên, trong quá trình
xử lý song song, mỗi tiến trình không biết các kết quả thu thập củacác tiế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 đánh giá 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ác không cao
Băng thông (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ùngnhau hoạt động Quá trình giao tiếp này tăng lên đáng kể khi sốlượng tiến trình tăng Do vậy số lượng dữ liệu lưu chuyển nên ít nhất
có thể được
Trang 21Song song hóa quá trình thu thập là một thách thức lớn iCrawler là mộtcrawler song song so với tiến trình đơn iCrawler hoạt động hiệu quả hơn rấtnhiều.
BKSearcher hướng tới kiến trúc phân tán (distributed) nhằm tăng hiệunăng, giảm tải mạng nhưng hiện tại BKSearcher chỉ hoạt động trên một servernên iCrawler chọn giải pháp đa tiến trình
Để giải quyết vấn đề tải trang trùng nhau phổ biến có các phương pháp sau:
Độc lập (Independent): Các tiển trình thu thập một cách độc lập với
tập các URLs ban đầu khác nhau Các tiến trình không cần phải quantâm đến các tiến trình khác làm gì Như vậy có thể dẫn đến trùngnhau nhưng do tập các URLs ban đầu của các tiến trình là các URLs
có nguồn gốc khác nhau nên hy vọng rằng hiện tượng trùng nhau làkhông đáng kể Phương pháp này làm giảm tối thiểu sự giao tiếpgiữa các tiến trình
Kết gán/ủy quyền động (Dynamic assignment): Là phương pháp
mà trong đó tiến trình chính chia nhỏ web thành các phần và giao
cho các tiến trình tiến hành thu thập vào bất cứ lúc nào (dynamic).
Trong quá trình đó, bộ điều phối sẽ quyết định sẽ thu thập phần nàocủa web tiếp theo (gửi URLs khởi đầu cho tiến trình nào đó) Ngaysau khi nhận được URLs khởi đầu, tiến trình sẽ thực hiện thu thậpphần tương ứng Khi gặp một URL của phần khác thì báo lại URLnà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
Kết gán/ủy quyền tĩnh (Static assignment): Không giống như kết
gán động, các phần của web được giao cho các tiến trình trước khibắt đầu quá trình thu thập Như vậy mỗi tiến trình biết được tiếntrình nào đáp ứng cho trang nào trong quá trình thu thập, do đókhông cần phải có bộ điều phối trung tâm
iCrawler sử dụng phương pháp thực thi song song đồng bộ có bộ điều
phối trung tâm với phương pháp ủy quyền động Tuy nhiên với mỗi tiến
trình lại chỉ thực hiện trên một vùng web nhất định giống như ủy quyền tĩnh.Việc chia phần web được thực hiện theo kiểu cấu trúc cây web Mỗi tiến trình
Trang 22sẽ được gán hoạt động với com, net, gov, info, org, edu, Như vậy việcchia phần web là rất rõ ràng, không lầm lẫn giữa các tiến trình.
Tuy nhiên nếu chỉ sử dụng phương pháp trên, iCrawler vẫn gặp phải vấn
đề tải trang trùng nhau, xảy ra khi một tiến trình tải hoặc các tiến trình tải
những trang có địa chỉ khác nhau nhưng nội dung giống nhau Rõ ràng điềunày sẽ không thuận lợi cho việc lưu trữ và làm nặng nề thêm cho quy trìnhđánh chỉ mục Để giải quyết triệt để vấn đề này iCrawler sử dụngMD5(Message Digest)
Việc kiểm tra xem nội dung có trùng lắp hay không được thực hiện bởi việckiểm tra “dấu vân của văn bản” (fingerprint/message digest) thông qua mộtcấu trúc dữ liệu được tổ chức là một tập hợp các “dấu vân của văn bản” Nếu
“dấu vân của văn bản” đang được kiểm tra trùng với một trong số các văn bản
đã có thì nó sẽ không được lưu trữ Có nhiều cách tính “dấu vân của văn bản”như thuật toán của Rabin thể hiện bởi Broder (64 bit), MD5 (128 bit),MD4(128 bit), SHA(Secure Hash Algorithm-160 bit)
2.1.3.3 Tính dấu vân của văn bản
2.1.3.3.1 Giới thiệu MD5 và đặc trưng MD5
MD4, MD5 và SHA-1 đều là các thuật toán có chức năng của hàm băm bảomật Thao tác trên một chuỗi văn bản đầu vào, và tạo ra một con số chiều dài
cố định-128 bit đối với MD4, MD5; 160 bit đối với SHA-1 Con số này là mộthash của đầu vào-chỉ cần một thay đổi rất nhỏ của đầu vào cũng sẽ tạo nênmột sự thay đổi lớn ở đầu ra Con số này được coi như bảo mật tuyệt đối bởi
vì việc giải mã nó đòi hỏi một sức mạnh tính toán cực lớn Nói cách khác,chẳng có cách nào để tìm được văn bản cũ từ con số dài 128 bit hoặc 160 bitđó
Điều quan trọng đối với iCrawler không phải là tính bảo mật của MD5, mà làtính chất độc nhất của nó đối với từng văn bản Nếu văn bản chỉ cần thay đổimột ký tự, MD5 cũng sẽ thay đổi theo
Ví dụ với đoạn văn bản sau:
TS.Huỳnh Quyết Thắng, Hoàng Minh Sơn, Nguyễn Xuân Tài
Sẽ có MD5 là: 877e082f9ed224af880a6d8b5be20ee5
Thay đổi từ TS thành Ts:
Ts.Huỳnh Quyết Thắng, Hoàng Minh Sơn, Nguyễn Xuân Tài
Sẽ có MD5 là: df31417881babd98a197a225f262b45c
Trang 23Như chúng ta đã thấy MD5 thay đổi rất lớn sau khi chỉ thay một ký tự.
Số MD5 (dấu vân) đã có trong kho chưa?
Tập hợp MD5 (dấu vân) của các văn bản trong kho dữ liệu
Tiếp tục công việc
lấy văn bản từ
Internet
Lưu MD5 văn bản này vào kho
Lưu văn bản này vào đĩa
Có rồi
Chưa có
Hình 2.1: Tránh trùng lắp văn bản bằng MD5 (dấu vân văn bản)
Hình 3: Tránh trùng lặp bằng MD5
2.1.3.4 Làm tươi các trang web (Recrawl/ Refessh)
Sau khi các trang web mà iCrawler cho là quan trọng đã được tải về vàđánh chỉ mục Nó có nhiệm vụ làm tươi các trang web đó một cách định kỳ đểđảm bảo sự cập nhật của chúng Có nhiều cách thức để thực hiện điều này vàcác chiến lược sử dụng khác nhau sẽ có các kết quả khác nhau về mức độ tươicủa các trang web Ví dụ hai chiến lược sau đây là minh chứng cho điều này:
Làm tươi các trang với tần số như nhau: Crawler không quan tâm
đến tốc độ thay đổi khác nhau của các trang web khác nhau mà tiếnhành làm tươi các trang web mà nó có được với tần số giống nhau
Làm tươi với tần số khác nhau: Crawler viếng thăm lại các trang
web với tần số khác nhau, tùy thuộc vào tốc độ thay đổi của chúng.Các trang web hay thay đổi sẽ được viếng thăm thường xuyên hơn
Giả sử λ i là tần số thay đổi của trang web e i và f i là tần số mà crawler
viếng thăm trang web đó Khi đó tỷ số λ i /f i có giá trị như nhau đốivới mọi trang web mà crawler biết Một trang web có tốc độ thay đổi
Trang 24nhanh gấp 10 lần trang khác thì tần số viếng thăm nó cũng phải lớngấp 10 lần tần số viếng thăm trang web kia.
2.1.3.4.1 Các hệ đo mức độ tươi (refresh metrics)
Một tập trang web được coi là tươi hơn tập khác nếu nó chứa nhiều trang webcập nhật hơn Giả sử có hai tập A và B cùng chứa 20 trang web Tập A cótrung bình 10 trang web cập nhật còn tập B có 15 trang web cập nhật thì ta nóiràng B tươi hơn A Tương tự như vậy, khái niệm độ cũ hay tuổi (age) của mộttập trang web dùng để ám chỉ mức độ “hiện thời” (vừa mới cập nhật hay lâurồi không cập nhật) của một tập trang web Hai khái niệm mức độ tươi(freshness) và mức độ “hiện thời” (age) là hai khái niệm quan trọng trong cácchiến lược làm tươi
Độ tươi:
Gọi S = {e1, e2, …, eN} là tập hợp N trang web cục bộ Mức độ tươi của Sđược định nghĩa như sau:
Định nghĩa: Mức độ tươi của trang web ei tại thời điểm t là:
F(ei;t) = 1 nếu ei cập nhật tại thời điểm tF(ei;t) = 0 trong các trường hợp còn lại
1)t,S(FNhư vậy, độ tươi của tập S có giá trị trong đoạn [0;1] Nếu F(S) = 0 có nghĩa
là tất cả các trang web của S đã không còn cập nhật, còn nếu F(S)=1 thì tất cảcác trang web của S đều cập nhật
Age:
Khái niệm tuổi được sử dụng để biểu thị độ cũ của trang web hay tập trangweb, được định nghĩa như sau:
Định nghĩa: Độ cũ của trang web ei tại thời điểm t là:
A(ei;t) = 0 nếu ei là cập nhật tại thời điểm tA(ei;t) = t (khoảng thời gian ei được sửa chữa mà S
chưa cập nhật) trong các trường hợp khác
i t)e(AN
1)tS(AA(S, t) là giá trị trung bình về độ cũ của các trang web trong S Ví dụ như cáctrang web trên toàn thế giới được thay đổi một ngày trước đây mà S chưa đượccập nhật thì giá trị của A(S, t) với t là hôm nay sẽ là một ngày
Trang 25Rõ ràng là các giá trị F(S,t) hay A(S,t) chỉ có ý nghĩa tạm thời tại các thờiđiểm xác định F(S, t), A(S,t) có giá trị khác nhau tại những thời điểm khácnhau Khái niệm độ tươi, độ cũ trung bình trong một khoảng thời gian dàiđược định nghĩa như sau:
Định nghĩa: Độ tươi trung bình của trang web ei , F(ei) và tập S, F(S) là:
2.1.3.4.2 Chiến lược làm tươi
``iCrawler chỉ có một tài nguyên giới hạn, do vậy phải thiết lập tần số làm tươicho từng trang sao cho phù hợp Với mỗi trang web tương ứng với nó có mộttrị số nhằm biểu diễn tần số mà nó được làm tươi Có một tiến trình dành riêng
để làm việc này Đồng thời iCrawler tự động cập nhật tần số làm tươi cho từngtrang web
2.1.3.5 Quy ước từ chối Web Crawler
Chỉ có duy nhất một file robots.txt với mỗi máy chủ web, và phải đặt ở thư mục gốc,
ví dụ: www.Sample.com/robots.txt Cú pháp của file này có thể hiểu thông qua bảngsau:
Cú pháp của file robot.txt
Trang 26Không có gì ngăn cấm.
* có nghĩa là tất cả cácrobot
Cấm các robot truy cập
một phần nào đó
User-agent: *Disallow: /cgibin/
Disallow: /tmp/
Disallow: /private/
* có nghĩa là tất cả cácrobot
Disallow: *User-agent: *Disallow: /priv/
Cấm một robot truy cập
file
User-agent: WeirdBotDisallow: /links/listing.html
User-agent: *Disallow: /tmp/
Disallow: /private/
2.1.3.5.2 Thẻ siêu dữ liệu
Thêm vào việc điều khiển Web Crawler của server, những người tạo lập trangweb cũng có thể chỉ định một trang cụ thể nào đó sẽ không bị đánh chỉ mụcbởi search engine, hoặc liên kết ở trong trang đó không được sử dụng Điềunày rất có lợi khi tác giả của trang không có quyền thay đổi file robot.txt
Một thẻ siêu dữ liệu Web Crawler, đặt trong phần <HEAD> của trang, có thểchỉ định một trong hai hoặc cả hai việc nói trên Nhiều, nhưng không phải làtất cả các Web Crawler sẽ nhận ra thẻ này và theo đúng các luật cho từngtrang Nếu một trang nào đó không được đánh chỉ mục hãy kiểm tra phần đầucủa trang để thấy những thẻ cấm này
Web Crawler sẽ vẫn đọc cả trang đó, hoặc ít ra cũng là phần thẻ cấm, và nhật ký củaweb server sẽ cho thấy trang đó đã được gửi cho Web Crawler, mặc dù nó khôngđược đánh chỉ mục
Cú pháp của thẻ siêu dữ liệu Web Crawler
Trang 27Trang này sẽ không đượcđánh chỉ mục, cũng nhưkhông được sử dụng các liênkết của nó.
Đây là thẻ ngầm định, cáctrang không có thẻ này sẽ coinhư được đánh chỉ mục và sửdụng liên kết
2.1.3.6 Cấu trúc một URI tuyệt đối và cách lọc liên kết từ trang đã tải 2.1.3.6.1 Cấu trúc một URI tuyệt đối
URI (Uniform Resource Identifier) được mô tả trong [6] Cú pháp và thànhphần của URI cần phải hiểu rõ để bóc tách được liên kết trong trang web
Ở mức cao nhất URI có cú pháp như sau:
[scheme:]scheme-specific-part[#fragment]
Quy ước rằng những gì viết trong [ ] là thành phần tùy chọn, có thể có hoặckhông, ký tự # có nghĩa là chỉ đến một phần của tài nguyen mà URI trỏ tới.Một URI tuyệt đối chỉ rõ một scheme; một URI mà không tuyệt đối được gọi
là tương đối URI cũng được chia ra thành các loại tùy vào nó rõ ràng hay theothứ bậc
Một URI không rõ ràng là một URI tuyệt đối có phần scheme-specific không
bắt đầu với ký tự sổ chéo ‘/’ Các URI không rõ ràng không được phân tách ởđây Một vài ví dụ về URI loại này:
Trang 28mailto:java-net@java.sun.com news:comp.lang.java
urn:isbn:096139210xMột URI có thứ bậc (hierarchical URI) là một URI tuyệt đối có phần scheme-specific bắt đầu với một ký tự sổ chéo ‘/’, hoặc một URI tương đối (không cóphần scheme) Ví dụ:
http://home.vnn.vn/
docs/guide/collections/designfaq.html#28 / / /demo/Set2/src/somefile.cc
file:///~/calendar Một URI có thứ bậc được phân tách ra có cú pháp như sau:
[scheme:][//authority][path][?query][#fragment]
Các ký tự :, /, ?, và # nghĩa là URI này trỏ vào chính nó, không sang chỗ khác.
Phần scheme-specific của URI loại này bao gồm các ký tự giữa scheme vàfragment Nếu phần scheme-specific không bắt đầu với ký tự sổ chéo ‘/’ cónghĩa đây là một URI tương đối
Trang 29(i) Các thao tác trên URI
Thao tác chuẩn hóa thao tác phân tách, và thao tác tương đối hóa
Chuẩn hóa tức là xóa tất cả các dấu "." và " " không cần thiết trong URI
Phân tách sẽ làm cho các URI tương đối trở thành tuyệt đối dựa trên một URI
cơ sở nào đó
Tương đối hóa ngược lại với phân tách sẽ làm cho các URI tuyệt đối trở thànhtương đối
(ii) Các loại ký tự được sử dụng
RFC 2396 mô tả chính xác những ký tự nào được sử dụng
Phân loại các ký tự
alpha Ký tự thuộc ASCII 'A' đến 'Z' và 'a' đến 'z'
unreserved Tất cả các ký tự chữ và số cung với các ký tự khác "_-!.~'()*"
punct Các ký tự ",;:$&+="
reserved Các ký tự chấm câu với "?/[]@"
escaped Ký tự escaped, bao gồm ký tự ('%') Theo sau bởi một số cơ
số 16 ('0'-'9', 'A'-'F', và 'a'-'f')
không phải là ký tự điều khiển và ký tự trốngTập hợp ký tự hợp lệ đối với URI là unreserved, reserved, escaped, khác
2.1.3.6.2 Lọc liên kết từ trang web
Qua nghiên cứu ngôn ngữ HTML chúng tôi đã phân tích tất cả các thẻ có khảnăng giữ liên kết Các thẻ đó như sau:
Thẻ neo: <a href=“URL” … > … </a>
Thẻ tùy chọn: <option value=“URL”…> … </option>
Thẻ bản đồ (map): <area href=“URL” …>
Trang 30 Liên kết tới ảnh: <img src=“URL” …>
Các đường dẫn tương đối và tuyệt đối: <base href= …>
Tuy nhiên iCrawler không chỉ nhận các file HTML mà còn các file Text Hơnnữa còn hướng tới việc phân tích các tài liệu PDF, DOC Do vậy iCrawler pháttriển phương pháp dựa trên biểu thức chính quy để lọc liên kết chứ không chỉ
có phân tích các thẻ như trên Việc phân tích URL của iCrawler luôn luônthành công và đạt hiệu quả cao
2.1.3.7 Nhận dạng bảng mã tiếng Việt và chuyển đổi sang Unicode
iCrawler là một robot tự động đi tìm văn bản trên Internet Như nhiềubáo cáo về phông chữ đã nêu hiện tại vẫn chưa thống nhất được hoàn toàn bộ
mã, cho nên rất có thể iCrawler sẽ bắt gặp nhiều bộ mã khác nhau nhưUnicode, UTF-8, TCVN3, VNI, VIQR, VPS, VISCII iCrawler phải tự độngnhận dạng bảng mã mà văn bản đang dùng và chuyển sang mã Unicode sau đómới ghi tất cả văn bản vào kho
Một ví dụ đối chiếu các bộ mã khác nhau với chữ “À”
Nếu iCrawler nhận ra một văn bản đã là unicode thì không cần có chuyển đổi
gì thêm Nhưng nếu nó thuộc kiểu khác thì sẽ phải tiến hành chuyển đổi Phépchuyển đổi rất đơn giản là phép thay thế ký tự đang xét với ký tự unicodetương ứng Có một phép tương ứng một-một để thực hiện việc này iCrawler
áp dụng thuật toán đoán nhận bộ mã của VietUni [10]
Trang 312.2 CÁC KỸ THUẬT LƯỢNG GIÁ ĐỘ TƯƠNG QUAN
2.2.1 Tổng quan về lượng giá độ tương quan
Phương pháp lượng giá độ tương quan giữa một văn bản và một truy vấn
là cơ sở lý thuyết quan trọng nhất, là nền tảng để xây dựng một hệ trích chọnthông tin Chính nó sẽ tác động đến hầu hết thiết kế của toàn bộ hệ thống tríchchọn và nó cũng sẽ quyết định hiệu quả cũng như độ tin cậy trong kết quả trả
về của hệ thống Thực chất độ liên quan giữa một văn bản và truy vấn là mộtkhái niệm trừu tượng và không thể lượng giá, nó chỉ được quyết định bởi chủ
ý của người viết truy vấn, và độ liên quan này được hiểu là tương quan về mặtngữ nghĩa của cả văn bản với ngữ nghĩa của truy vấn Tuy nhiên nhữngphương pháp biểu diễn ngữ nghĩa của văn bản hiện nay vẫn chưa thực sự hiệuquả và triệt để, những phương pháp này đều đòi hỏi một số lần tìm kiếmkhổng lồ với một lượng bộ nhớ khổng lồ để có thể biểu diễn ngữ nghĩa củavăn bản
Bởi vậy, hiện nay tất cả các hệ trích chọn thông tin thế giới mà có sốlượng văn bản được quản lý tương đối đều biểu diễn văn bản và truy vấn như
là một túi của các term thay vì biểu diễn ngữ nghĩa của văn bản tức sẽ bỏ qua
sự liên hệ về vị trí giữa các term Trên cơ sở biểu diễn văn bản thành một túicác term, thì tương ứng có ba mô hình khôi phục thông tin chính được thừa
nhận và áp dụng rộng rãi là mô hình boolean, mô hình không gian vector,
mô hình xác xuất Nói chung, các mô hình này đều lượng giá tương quan dựa
trên sự chung nhau các term giữa văn bản và truy vấn
Theo phương pháp truyền thống trên, thông tin được trích chọn bằngcách tìm những term phù hợp giữa văn bản với truy vấn người dùng Thậtkhông may là những phương pháp dựa trên sự phù hợp về từ này sẽ làm chohiệu suất trích chọn thông tin kém bởi hai lý do Thứ nhất, bởi hầu hết cácterm đa nghĩa, nhiều văn bản không liên quan những vẫn có thể nằm trong tậpkết quả trả về bởi chúng chứa một vài term trong truy vấn Thứ hai, bởi mỗikhái niệm đều có thể biểu diễn bởi các term khác nhau, những văn bản liên
Trang 32quan mà không chứa các term trong truy vấn sẽ không được trích chọn Nhữngvấn đề này nảy sinh từ thực tế, những nội dụng trong một văn bản thường liênquan đến những khái niệm được mô tả trong chúng hơn là những term được sửdụng để biểu diễn chúng Vì vậy, những phương pháp trích chọn hiệu quả phảiphù hợp được khái niệm biểu diễn trong truy vấn với khái niệm biểu diễntrong văn bản Điều này sẽ cho phép sự trích chọn các văn bản sẽ chỉ quan tâmđến những văn bản có nội dung liên quan thậm chí chúng không chứa bất kỳmột term nào trong truy vấn, và sẽ loại bỏ những văn bản không có nội dungliên quan thậm chí chúng chứa một vài term trong truy vấn Ở cuối phần nàytôi sẽ giới thiệu phương pháp lượng giá độ tương quan dựa trên nội dung
Concept Indexing, đây là phương pháp mới và cho kết quả rất tốt.
2.2.2 Mô hình Boolean
Do khái niệm tập hợp (set) là hoàn toàn thuộc về trực giác, kiểu logic cung cấpmột khung cấu trúc mà một người sử dụng của hệ thống thu hồi thông tin rất
dễ dàng hiểu được Hơn nữa, các câu hỏi được biểu diễn bởi các biểu thứclogic mà có ngữ nghĩa của nó Do có được tính đơn giản và tính phổ biến, kiểulogic đã thu hút được sự chú ý rất lớn trong nhiều năm qua và đã được các hệthống thư mục thương mại lúc ban đầu làm theo
Không may là, kiểu logic đang có những trở ngại rất lớn Trước tiên,chiến lược thu hồi của nó dựa trên một tiêu chuẩn quyết định nhị phân (cónghĩa là một tài liệu được dự đoán là phù hợp hoặc không phù hợp) , không
có bât cứ một quan niệm nào về phạm vi phân loại, do đó cản trở những việcthu thập tốt Do đó, kiểu logic thực sự là một kiểu thu hồi dữ liệu (thay vì thuhồi thông tin) Thứ hai, mặc dù các biểu thức logic có ngữ nghĩa, nhưngthường không đơn giản để dịch một thông tin cần thiết trở thành một biểuthức logic Thưc tế, hầu hết người sử dụng cảm thấy khó khăn khi chuyển cácyêu cầu truy vấn của họ thành dưới dạng các biểu thức logic Các biểu thứclogic mà được người sử dụng áp dụng thường rất đơn giản Bất chấp nhữngbất lợi này, kiểu logic vẫn là kiểu thông trị trong các hệ thống cơ sở dữ liệu tàiliệu thương mại và cung cấp một sự khởi đầu tốt đẹp cho những ai mới bướcvào nghề
Trang 33Kiểu logic xem rằng các thuật ngữ chỉ mục lục là xuất hiện hoặc khôngxuất hiện trong một tài liệu Kết quả là các trọng lượng của các thuật ngữ chỉmục lục đều có giá trị nhị phân, có nghĩa là (i,j ({0,1} Một câu hỏi q bao gồmcác thuật ngữ chỉ mục lục được liên kết bởi ba từ nối : not, and và or Do đó,một câu hỏi thực sự là một biểu thức logic thông thường mà có thể được biểudiễn như là một sự tách rời ra của các vector liên kết (có nghĩa là dưới dạngliên từ thông thường- Disjunction Normal Form - DNF)
2.2.3 Mô hình Vector
Ý tưởng chính của phương pháp lượng giá độ liên quan theo mô hìnhkhông gian vector là phương pháp biểu diễn văn bản và truy vấn thành haivector và việc lượng giá thu về việc tính tích hoặc tính góc giữa hai vector
Kế thừa các kết quả đã trình bày trong [1,3], độ liên quan giữa truy vấn Qvới văn bản Dd được cho bởi công thức sau:
t d t q q d
d
.
| D
||
Q
|
Q.D )
D Cosine(Q, )
2 t d,
trên các term t có trong từ điển
W
1
2 , trọng số của truy vấn Q tính theo khoảng cách Euclideantrên các term t có trong từ điển
t
d,
w là trọng số của term t đối với văn bản Dd và w q, t là trọng số củaterm t đối với truy vấn Q
Theo phương pháp TFxIDF (Term Frequency times Inverse Document
Frequency) [1,3] trọng số của term tỷ lệ thuận với số lần xuất hiện của nó
trong văn bản, truy vấn và tỷ lệ nghịch với số lượng văn bản chứa nó, nên:
t d
t t
f
N
{Dd}
Trang 34t d t
t q, t
t q, ,
f max
f
Từ các công thức trên, chúng ta có công thức cụ thể sau:
t d q
N f
W
f 5 0 5 0 )(
1 ( log ) log 1 (
1 ) D
M(Q,
t q, t
t q, 2
2 , 2
2.2.4 Mô hình xác xuất sử dụng luật Bayes
Phương pháp này có sử dụng mô hình xác suất cho các văn bản Quátrình tìm kiếm luôn cho kết quả đưa ra các văn bản với hy vọng rằng nó vẫnđạt được những đặc trưng quan trọng nhất
Trong các mô hình unigram dựa vào từ của văn bản sẽ được sử dụngsau đây, chẳng hạn các từ được giả thiết xuất hiện độc lập với các từ kháctrong văn bản Sau đây tôi sẽ mô tả một phương pháp lượng giá đọtương quan P ( dj | q ) : xác suất lựa chọn văn bản d j khi cho truy vấn q (xác
văn bản chính xác liên quan đến truy vấn nhất thì q sẽ đưa ra văn bản d j sao
cho P(d j |q) là cao nhất.
) q
| d ( P ) q , d ( sim j j
P(d j |q) có thể tách ra bằng cách xét các lựa chọn văn bản riêng biệt theo
độ dài l của truy vấn
j | q ) P ( d | q l ) P ( l | q ) d
( P
1 nếu l là độ dài của q
P ( l | q )
0 nếu l không là độ dài của q
Sau khi áp dụng luật Bayes với P(dj|q, l) ta có:
P ( q | d l ) P ( d | l )
) l
| d ( P ).
l d
| q ( P ) q
| d ( P
k k
j j
j
) l , d
cho truy vấn độ dài l
Trang 35Giả thiết các văn bản lựa chọn không phụ thuộc vào độ dài truy vấn thì:
) d ( P )
d t d t t d t j
f
f P
, ,
,
) d (
Công thức sau chứng tỏ rằng các văn bản dài hơn sẽ chứa nhiều thông tinhơn và do vậy sẽ có xác suất chứa thông tin hữu ích với người dùng là cao hơn
tuy nhiên việc lựa chọn công thức này đòi hỏi nhiều tính toán đặc biệt
k k
d t d t
f
, ,
là một con số khổng lồ chỉ có INT64 mới chứa được nên chúng ta chấp nhậnchọn công thức ( d ) | 1 |
D
P j Như vậy việc lựa chọn ngẫu nhiên một văn bản bằng cách lựa chọn ngẫunhiên một term từ tập hợp các từ và văn bản chứa term là văn bản liên quanđược chọn
Việc đánh giá P ( q | dj, l ) là phức tạp hơn Để đánh giá xác suất này, tôi
sử dụng mô hình unigram, mô hình đã chỉ ra sự xuất hiện của một từ chỉ phụthuộc vào văn bản chứa nó, nhưng nó xuất hiện độc lập với các từ khác trongvăn bản và do đó xác suất này không phụ thuộc vào độ dài truy vấn
| ( )
, d
| q (
q i
j i
P
|q|: độ dài truy vấn (số lượng các từ trong q)
ti là các term trong truy vấn q và là phần tử của vector đặc trưng F.
) d
j
j i j
i
t TF F
t TF t
P
) d , (
|
|
) d , ( 1 ) d
|
Trang 36j i
F t
j
i j i j
i j i j
i
t TF F
t TF t
P t P
t P t P P
t P t P t
P
) d , (
|
|
) d , ( 1 )
| d ( ).
(
)
| d ( ).
( )
d (
)
| d ( ).
( ) d
|
Giả thiết việc quan sát mỗi từ là một tiên nghiệm đồng khả năng Quathực nghiệm [1] khẳng định rằng công thức Bayes cho kết quả rất tốt trongthực tế, vì nó không xảy ra trường hợp xác suất bằng 0
Kết hợp các công thức và thu được kết quả là luật quyết định sau:
j
t P P
t P P
sim
' d
| q
|
1
| q
|
1
)'d
|()
'd(
)d
|()
d()
q,d(
F
t
t TF j j
t P P
t P P
d'
) q , (
) q , (
)'d
|()
d'
(
)d
|()
Gần đây những kỹ thuật dựa trên sự giảm chiều (dimensionality
reduction) đã được nghiên cứu để lấy được nội dung biểu diễn trong một tập
hợp Ý tưởng chính của những kỹ thuật này là ánh xạ mỗi văn bản (và truy vấnhoặc một văn bản thử) vào một không gian các term ít chiều hơn mà chỉ có sựphù thuộc giữa các term Các tập hợp biểu diễn trong không gian ít chiều đó
có thể được sử dụng để làm tăng hiệu suất trích chọn hoặc phân loại văn bản
Trang 37Những kỹ thuật giảm chiều đó có thể được chia làm hai lớp chính là lớp có
giám sát (supervised) và không có giám sát (unsupervised) Giảm chiều có
giám sát (Supervised dimensionality reduction) là các kỹ thuật lấy những đặctrưng thông tin tốt nhất của các phần tử trong lớp để thực hiện giảm chiềukhông gian cho lớp đó Mặt khác, giảm chiều không có giám sát(Unsupervised dimensionality Reduction) là các kỹ thuật thực hiện giảm chiềukhông gian mà không sử dụng bất kỳ thông tin về các phần tử trong lớp
Một thuật toán giảm chiều mới rất nhanh là concept indexing(CI) có
thể sử dụng cho cả giảm chiều có giám sát và không có giám sát Ý tưởngchính trong kế hoạch giảm chiều là biểu diễn mỗi văn bản dưới dạng một hàmcác biến khái niệm mà đã được biểu diễn trong tập hợp cho trước Điều nàythực hiện bằng cách tìm những nhóm các văn bản giống nhau trước, mỗi nhóm
sẽ biểu diễn những khái niệm khác nhau trong tập hợp, và sau đó sử dụngnhững nhóm này để tạo thành các trục tọa độ của không gian giảm chiều.Trong trường hợp giảm chiều có giám sát, CI tìm những nhóm từ những lớpvăn bản đã cho trước, còn trong trường hợp giảm chiều không có giám sát, CItìm những nhóm này bằng cách sử dụng thuật toán phân loại văn bản Nhữngnhóm tìm được bằng sử dụng thuật toán phân loại văn bản thời gian tuyến tínhnày sẽ phân bổ cho các yêu cầu của tính CI
2.2.5.2 Concept Indexing
Thuật toán concept indexing thực hiện với không gian chiều thấp bằng cáchtìm các nhóm các văn bản giống nhau và sử dụng chúng làm tọa độ cho khônggian chiều thấp đó Phần này sẽ giới thiệu chi tiết thuật toán giảm chiều CI cho
cả phương pháp có giám sát và không có giám sát, đồng thời phân tích ý nghĩacủa các thành phần
2.2.5.2.1 Giảm chiều không có giám sát (Unsupervised Dimentionality Reduction)
CI tính không gian chiều giảm không có giám sát theo các bước sau Nếu k là
số chiều, CI thực hiện , và sau đó sử dụng các vector trọng tâm tương ứng vớicác trục của không gian k chiều Cụ thể, D là ma trận n x m văn bản-term (với
n là số văn bản, m là số term khác nhau trong tập hợp) , với dòng thứ i củakhông gian vector D biểu diễn văn bản thứ i (ví dụ D[i, *] = di) CI sử dụng
Trang 38thuật toán phân loại văn bản để phân các văn bản thành các tập không giaonhau S1, S2 , , Sk Với mỗi tập Si, vector trọng tâmCi được tính như sau:
không gian giảm chiều sẽ được tính bằng công thức cosin giữa hai vector giảmchiều này
1) Giảm chiều có giám sát(Supervised Dimentionality Reduction)
Trong trường hợp giảm chiều có giám sát, CI sử dụng thuật toán tiền phân loạivăn bản (ví dụ những lớp hoặc chủ đề mà những văn bản đó thuộc về) để tìmnhững nhóm văn bản giống nhau Trong trường hợp đơn giản nhất, mỗi mộtnhóm sẽ tương ứng với một lớp trong tập dữ liệu Trong trường hợp này hạngcủa không gian giảm chiều sẽ là số các lớp Một không gian có chiều thấp hơnvới hạng k sẽ lớn hơn số lượng các lớp l, và sẽ được tính như sau CI bắt đầutính phân loại l-luồng bằng cách tạo nhóm cho mỗi một lớp văn bản, và sau đó
sử dụng thuật toán phân nhóm để nhóm k-luồng bằng cách lặp lại sự phân chiađối với một số nhóm Sau khi kết thúc phân nhóm k-luồng, mỗi nhóm sẽ chỉchứa những văn bản thuộc một lớp đó
Giảm chiều có giám sát rất tốt để làm tăng hiệu suất trích chọn trong tiền phânloại thu thập văn bản, hoặc tăng tốc độ của giải thuật phân loại văn bản
2) Phân tích
Để nắm được quá trình hoạt động giảm chiều, cần có hai phần Thứ nhất, cầnhiểu được sự tóm lược trong vector trọng tâm là gì và thứ hai là cần hiểu được
ý nghĩa của biểu diễn giảm chiều đối với mỗi văn bản
Với mỗi tập các văn bản, vector trọng tâm cung cấp một kỹ thuật để tổng hợpnội dung của chúng Cụ thể, làm nổi lên trong không gian vector những term
có “trọng số” cao nhất, tương ứng với những term mà chúng là quan trọng vớitập này Hai ví dụ điển hình về vector trọng tâm với hai tập hợp văn bản khácnhau minh hoạ trong bảng dưới đây:
Trang 39Hình 4 Mười term có trọng số cao nhất trong trọng tâm của nhóm hai tập dữ liệu
Với mỗi tập phân nhóm 20-luồng, và với mỗi nhóm ta tính hệ số dàicủa vector trọng tâm Với mỗi vector đó, hình trên thể hiện 10 term có trọng
số lớn nhất Số các term trong bảng cũng chính là số các term trong vectortrọng tâm
Ta có thể thấy có những term xuất hiện trong nhiều trọng tâm Trướchết, chú ý tới trọng lượng của các term, có thể thấy với mỗi trọng tâm sẽ cómột số term liên quan với tỷ lệ phụ thuộc vào chiều dài của nó Hơn nữa, tacòn có thể tính tỷ lệ độ dài trọng tâm cho những term này Điều này thể hiệntrong cột cuối của mỗi bảng Ví dụ, 10 term cao nhất cho trọng tâm re1 là 67%
độ dài của nó, cho trọng tâm tiếp theo là 54% độ dài của nó Như vậy mỗi
trọng tâm có thể mô tả bởi một số lượng nhỏ các term chính (keyword terms).
Đây là kết quả trực tiếp trong thực tế - mỗi trọng tâm tương ứng với nhữngnhóm văn bản giống nhau
2.2.5.3 Hybird Categorization Algorithm CKNN
Trang 40Thuật toán lai phân loại văn bản CKNN kết hợp trọng tâm (the centroid) vàthuật toán k-NN, nó có được những ưu điểm của cả 2 thuật toán trên và tănghiệu suất hệ thống
Hình 5 Mô hình thuật toán
Cho văn bản d, CKNN áp dụng theo 3 bước sau:
1 Thuật toán tính trọng tâm (the centroid algorithm) được thực hiện đểtìm m tập đề cử cho văn bản d Trong bước này sẽ lọc ra những văn bảnkhông liên quan và giảm nhiễu to những bước tiếp theo, nó giới hạnkhông gian tìm kiếm cho thuật toán k-NN
2 Thuật toán k-NN sẽ bỏ qua hoàn toàn các văn bản mẫu (trainingdocuments) của các tập ứng cử và k hàng xóm gần nhất được tìm thấy
3 Văn bản sẽ tính điểm cho các tập ứng cử và sẽ quyết định tập nào cóđiểm cao hơn so với các tập còn lại hoặc nằm trong top những tập cóđiểm cao nhất
Thuật toán CKNN có thể tiếp tục mô tả kỹ qua các bước sau:
1 Nhập vào một văn bản d mới
2 Cả tập c1, c2, , cl và vector trọng tâm đều được biểu diễn c1, c2, , cl
3 Tính độ giống nhau giữa d và mỗi cj: simil(d, cj) j =1,2, ,l
4 Xắp xếp các tập với simil(d, *) theo chiều giảm dần