Thu thập và lưu trữ thông tin tuyển dụng trên mạng internet Thu thập và lưu trữ thông tin tuyển dụng trên mạng internet Thu thập và lưu trữ thông tin tuyển dụng trên mạng internet luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Trang 2TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-NGUYỄN THỊ HIỀN
THU THẬP VÀ LƯU TRỮ THÔNG TIN TUYỂN DỤNG
TRÊN MẠNG INTERNET
Chuyên ngành: CÔNG NGHỆ THÔNG TIN
LUẬN VĂN THẠC SĨ KHOA HỌC KHOA HỌC VÀ KỸ THUẬT TÍNH TOÁN
NGƯỜI HƯỚNG DẪN KHOA HỌC:
TS NGUYỄN HỮU ĐỨC
Trang 3LỜI CAM ĐOAN
Tôi, Nguyễn Thị Hiền, xin cam đoan luận án là công trình nghiên cứu của bản thân tôi dưới sự hướng dẫn của TS Nguyễn Hữu Đức
Các kết quả nêu trong báo cáo luận án là trung thực, không sao chép của bất kỳ công trình nào khác
Hà Nội, ngày tháng năm 2019
HỌC VIÊN
NGUYỄN THỊ HIỀN
Trang 4LỜI CẢM ƠN
Để hoàn thành luận án này, trước hết tôi xin bày tỏ lòng kính trọng và biết ơn tới TS Nguyễn Hữu Đức, người thầy đã trực tiếp hướng dẫn, giúp đỡ tôi trong quá trình học tập và thực hiện luận án
Tôi xin chân thành cảm ơn các thầy cô của Viện Nghiên cứu quốc tế về Khoa học và Kỹ thuật tính toán, các đồng nghiệp khoa Cơ bản-Kỹ thuật cơ sở, trường Cao đẳng Công nghệ và Kỹ thuật Ô tô đã giúp đỡ, tạo điều kiện để tôi có thể hoàn thành luận án này
Cuối cùng tôi xin cảm ơn gia đình và những người bạn vì sự động viên trong suốt thời gian thực hiện luận văn
Trang 5MỤC LỤC
LỜI CAM ĐOAN i
LỜI CẢM ƠN ii
DANH MỤC BẢNG v
DANH MỤC HÌNH VẼ, BIỂU ĐỒ vi
MỞ ĐẦU 1
CHƯƠNG 1: SỬ DỤNG INTERNET ĐỂ THU THẬP VÀ LƯU TRỮ THÔNG TIN TUYỂN DỤNG 3
1.1 Thông tin và thu thập thông tin 3
1.2 Thông tin tuyển dụng 3
1.3 Kiến trúc hệ thống Crawling và các thuật toán 6
1.3.1 Kỹ thuật tiếp cận dữ liệu lớn 6
1.3.2 Kiến trúc tổng quát về một crawling system 6
1.3.3 Các yêu cầu của một hệ thống crawling 17
1.3.4 Các chiến lược trong các hệ thống Crawling 20
1.3.5 Các thuật toán crawling 25
1.4 Các công cụ crawling hiện nay 33
1.4.1 Nutch Apache 33
1.4.2 Newspaper 34
1.4.3 Event Registry 34
1.4.4 SearchBlox 34
1.4.5 Scrapy 34
Kết luận chương 1: 35
CHƯƠNG 2: XÂY DỰNG HỆ THỐNG THU THẬP VÀ LƯU TRỮ THÔNG TIN TUYỂN DỤNG TRÊN INTERNET 36
2.1 Xác định mục tiêu 36
Trang 62.2 Các công cụ trong giải quyết yêu cầu trong mục tiêu 36
2.2.1 Công cụ scrapy [22] 37
2.2.2 XPATH [22] 43
2.2.3 D3.js 45
2.3 Phân tích yêu cầu 46
2.4 Thiết kế hệ thống 47
2.4.1 Kiến trúc hệ thống 47
2.4.2 Cơ sở dữ liệu cho chứa tệp 48
2.4.3 Thiết kế chi tiết 49
Kết luận chương 2 54
CHƯƠNG 3: MÔ PHỎNG THỰC NGHIỆM CHƯƠNG TRÌNH 55
3.1 Môi trường cài đặt và công cụ lập trình 55
3.2 Demo chương trình 57
3.3 Đánh giá với sự thay đổi tham số tùy chỉnh 60
3.3.1 Thay đổi với sự thay đổi tham số tùy chỉnh CONCURRENT_REQUEST 60
3.3.2 Thay đổi tham số Download_Delay 61
Kết luận chương 3 62
CHƯƠNG 4: KẾT LUẬN VÀ PHƯƠNG HƯỚNG NGHIÊN CỨU, PHÁT TRIỂN 63
4.1 Kết luận 63
4.2 Các mục tiêu đã và chưa đạt được 63
4.3 Nghiên cứu trong tương lai 64
TÀI LIỆU THAM KHẢO 65
Trang 7DANH MỤC BẢNG
Bảng 1.1 Kết cấu bản tin tuyển dụng 3
Bảng 1.2 So sánh các công cụ crawling điển hình hiện nay 33
Bảng 2.1 Thử nghiệm thay đổi tham số 42
Bảng 2.2 Thuộc tính Xpath selector 44
Bảng 2.3 Bảng các cột dữ liệu chính 48
Bảng 3.1 Thử nghiệm ảnh hưởng của tham số CONCURRENT_REQUEST 60
Bảng 3.2 Thử nghiệm ảnh hưởng của tham số DOWNLOAD-DELAY 61
Trang 8DANH MỤC HÌNH VẼ, BIỂU ĐỒ
Hình 1.1 Mô hình khung dữ liệu lớn [1] 6
Hình 1.2 Các mô hình điện toán dữ liệu lớn [1] 7
Hình 1.3 Biểu đồ Flowchart của một Crawler điển hình [7] 8
Hình 1.4 Mô hình Crawler của Google thời kỳ đầu [23] 9
Hình 1.5 Các luồng của crawler kết nối với frontier [7] 10
Hình 1.6 Các Thẻ HTML và cây thẻ tương ứng [7] 15
Hình 1.7 Mô hình Multi-threading Crawler [7] 16
Hình 1.8 Đặc điểm của hệ thống thu thập dữ liệu web [8] 18
Hình 1.9 Kiến trúc tuần hoàn cho các công cụ tìm kiếm [7] 19
Hình 1.10 Các con số hiển thị đường dẫn của Breath -First Crawling [7] 20
Hình 1.11 Các số hiển thị đường dẫn của Thu thập thông tin đầu tiên [7] 21
Hình 1.12 Thu thập dữ liệu lặp đi lặp lại [7] 22
Hình 1.13 Nguyên mẫu mô hình Hiwe [5] 24
Hình 1.14 Các liên kết ngoài trỏ đến trang web khác [3] 25
Hình 1.15 Crawler với chiến lược ngữ cảnh tập trung [7] 31
Hình 2.1 Kiến trúc tổng thể của scrapy [22] 37
Hình 2.2 Luật Little, hệ thống xếp hàng và đường ống [22] 39
Hình 2.3 Cấu hình và các thành phần ảnh hưởng đến hiệu năng của Scrapy [22] 40
Hình 2.4 Mô hình hiệu năng tiêu chuẩn của Scrapy [22] 41
Hình 2.5 Thành phần hệ thống D3.js [4] 46
Hình 2.6 Lược đồ Use Case 47
Hình 2.7 Kiến trúc hệ thống 48
Hình 2.8 Các loại biểu đồ trong Module hiển thị 53
Hình 3.1 Các tệp trong dự án thử nghiệm 55
Hình 3.2 Dữ liệu thu được sau khi crawl 58
Hình 3.3 Giao diện ban đầu trong thử nghiệm 58
Hình 3.4 Dropdown-Box lựa chọn các ngành trong lĩnh vực cần khảo sát 59
Trang 9Hình 3.5 Hiển thị phân tích về các khu vực được tuyển dụng (Đà Nẵng, Hà Nội…) và lĩnh vực tuyển dụng (công ty sản phẩm hay dịch vụ) 59
Hình 3.6 Số năm kinh nghiệm cho yêu cầu tuyển dụng kỹ năng Linux 60
Biểu đồ 3.1 Kết quả Ảnh hưởng của tham số CONCURRENT_REQUEST đối với hiệu năng Scrapy 61
Biểu đồ 3.2 Kết quả ảnh hưởng của tham số DOWNLOAD_DELAY 62
Trang 10MỞ ĐẦU
Trong thời đại ngày nay, với sự hỗ trợ rất nhiều từ mạng Internet, các ứng viên có thể tìm hiểu thông tin nhà tuyển dụng rất nhanh chóng, ngược lại phía doanh nghiệp cũng tương tác gần hơn với ứng viên thông qua website tuyển dụng, email, các trang mạng xã hội, … qua đó giúp doanh nghiệp tuyển dụng nhân sự được nhanh chóng, tiết kiệm và hiệu quả Theo khảo sát của JobStreet.com [19], triển vọng thị trường việc làm tại Việt Nam được nhìn nhận khá tích cực từ cả hai phía:Ứng viên (người lao động – 4.50) và Nhà tuyển dụng (4.57), một tín hiệu đầy lạc quan so với các nước trong khu vực Đông Nam Á với mức trung bình từ Ứng viên là 3.46, Nhà tuyển dụng là 3.16 Trong thị trường lao động đang bùng nổ, các ứng viên Việt Nam cho thấy họ chủ động nắm bắt các cơ hội việc làm thông qua các nguồn việc làm trực tuyến Những kênh tìm việc được ưa thích đang chiếm lĩnh trên internet như mạng việc làm, trang mạng tuyển dụng của doanh nghiệp và mạng xã hội với 47% Ứng viên sử dụng (tỷ lệ thấp nhất khu vực, Malaysia đứng đầu với 54%) bên cạnh các phương pháp truyền thống như người quen giới thiệu và các công ty tuyển dụng
Lượng thông tin tuyển dụng và tìm kiếm việc làm trên mạng Internet ngày càng tăng là cơ sở để thu thập và lưu trữ thông tin tuyển dụng trên mạng Internet,
từ đó làm cơ sở để phân tích xu hướng nghề nghiệp dựa trên các thông tin tuyển dụng này
Lượng thông tin về tuyển dụng hiện nay rất lớn, quý giá mà nếu trích xuất thành công, nó sẽ giúp rất nhiều cho việc kinh doanh, nghiên cứu khoa học, dự đoán xác định xu thế tuyển dụng, xu thế việc làm, thực trạng mức lương Chính vì thế, những dữ liệu này phải được thu thập, tổ chức, lưu trữ, tìm kiếm, chia sẻ theo một cách khác so với bình thường
Xuất phát từ nhu cầu này, trong khuôn khổ luận văn thạc sỹ, học viên đề xuất
thực hiện đề tài "Thu thập và lưu trữ thông tin tuyển dụng trên mạng Internet", với
mục tiêu chính là nghiên cứu và thử nghiệm các kỹ thuật thu thập thông tin tuyển
Trang 11dụng trên mạng Internet, tổ chức lưu trữ chúng nhằm phục vụ các mục đích tìm kiếm và phân tích về sau
Đề tài nghiên cứu, tìm hiểu các nguồn thông tin tuyển dụng trên mạng Internet, các thuật toán thu thập dữ liệu trên Web; Xây dựng công cụ thu thập dữ liệu
từ các nguồn khác nhau; trực quan hóa dữ liệu của các thông tin tuyển dụng này
Đối tượng nghiên cứu của đề tài là các thuật toán crawler và khung Scrapy Phạm vi nghiên cứu: Website tuyển dụng được lựa chọn ở đây là Itviec.com trong thời gian tính đến tháng 3/2019
Trong luận văn, tác giả nghiên cứu lý luận; các yếu tố ảnh hưởng đến hiệu năng của Scrapy Tác giả cũng đã tạo ra một hệ thống thu thập thông tin tuyển dụng
về các công việc về IT sử dụng khung Scrapy Ngoài ra, tác giả đã xây dựng thử nghiệm một website để trình diễn dữ liệu được trích xuất với các chức năng chính như sau:
Lựa chọn theo kỹ năng xem mức lương mà nhà tuyển dụng đăng tuyển
Hiển thị phân tích về các khu vực được tuyển dụng theo tỉnh thành
Lĩnh vực công ty tuyển dụng bao gồm dạng dịch vụ hay làm sản phẩm IT
Số năm kinh nghiệm cho yêu cầu tuyển dụng kỹ năng được chọn
Nội dung của luận văn được chia làm 4 chương với nội dung như sau:
Chương 1 đưa ra cái nhìn tổng quan về kiến trúc hệ thống, thuật toán và các công cụ thu thập thông tin trên mạng Internet
Chương 2 nghiên cứu công cụ thu thập dữ liệu web Scrapy; thể hiện các bước xây dựng hệ thống thu thập và lưu trữ thông tin trên Internet
Chương 3 đưa ra những kết quả thực nghiệm và trực quan dữ liệu thu được cũng như đánh giá hiệu năng thu thập dữ liệu
Chương 4 kết luận và phương hướng nghiên cứu, phát triển
Trang 12CHƯƠNG 1: SỬ DỤNG INTERNET ĐỂ THU THẬP VÀ LƯU TRỮ
THÔNG TIN TUYỂN DỤNG 1.1 Thông tin và thu thập thông tin
Thu thập thông tin Internet là việc sử dụng mạng Internet để thu thập thông tin Ngày nay, với sự phát triển mạnh mẽ của Công nghệ thông tin – truyền thông, đặc biệt là sự bùng nổ của mạng Internet, đã tạo ra một kho thông tin khổng lồ Thông tin trên Internet rất đa dạng và phong phú Thu thập thông tin bằng cách sử dụng mạng Internet giúp cho quá trình thu thập thông tin trở nên nhanh hơn, dễ dàng hơn
1.2 Thông tin tuyển dụng
Qua thu thập và khảo sát các thông báo tuyển dụng trên báo các website tuyển dụng như Vietnamworks, JobStreet, ITViec.com… vào tháng 11/2018, có thể
nhận thấy cấu trúc chung của một tin tuyển dụng như sau:
Bảng 1.1 Kết cấu bản tin tuyển dụng
STT Tên tiêu chí Ý nghĩa tiêu chí Ví dụ cụ thể
Tên chủ thể Trình bày tên chủ thể
trong thông báo
"Công ty cổ phần Taxi SASCO tuyển dụng lái xe Taxi"
Lôgô
In Lôgô của chủ thể tuyển dụng trong thông báo
Lôgô của Shell
Hình ảnh
kèm theo
Minh hoạ bằng hình ảnh trong thông báo tuyển dụng
Hình ảnh ô tô trong thông báo tuyển lái xe Taxi
Yêu cầu giới Giới tính cần cho vị trí
tương ứng "Nam", "Nữ", "Nam/Nữ"
Yêu cầu tuổi Tuổi cần tuyển cho vị
trí tương ứng "Tuổi từ 35 trở xuống"
Chuyên
ngành
Chuyên ngành cần tuyển cho vị trí tương ứng
"Tốt nghệp cao đẳng trở lên ngành điện cơ, cơ khí, điện lạnh" Trình độ của ứng viên
Trang 13STT Tên tiêu chí Ý nghĩa tiêu chí Ví dụ cụ thể
Loại bằng Yêu cầu xếp loại tốt
nghiệp
"Tốt nghiệp từ hạng trung bình - khá trở lên"
Ngoại ngữ Yêu cầu trình độ ngoại
ngữ "Biết Anh ngữ"
Tin học Yêu cầu trình độ tin
học
"Sử dụng thành thạo các phần mềm Corel, photoshop"
Kinh nghiệm Yêu cầu kinh ngiệm
"ưu tiên cho ứng viên đã từng làm cho công ty Nhật"
"Có kinh nghiệm về các bản vẽ chuyên ngành cơ điện lạnh, nước, kiến trúc ít nhất 3 năm"
Kỹ năng Yêu cầu kỹ năng
"Communication, analytical and training skills", “Ability to work
in a multicultural team”
“Biết đo đạc”
Phẩm chất Yêu cầu phẩm chất
"Đạo đức nghề nghiệp", "thật thà, trung thực", "có tinh thần trách nhiệm"…
Ngoại hình Yêu cầu ngoại hình
"Không bị dị tật", "Dễ nhìn"
"Ngoại hình phù hợp với nghề lái
xe taxi"
Sức khỏe Yêu cầu sức khỏe "Sức khỏe tốt"
Hộ khẩu Yêu cầu hộ khẩu "Hộ khẩu thường trú tại thành phố
Hồ Chí Minh"
Hồ sơ Yêu cầu và chỉ dẫn hồ
sơ
"Tải đơn xin việc từ trang web…"
"Hồ sơ (không cần công chứng):
- Đơn dự tuyển (viết tay), yêu cầu nêu rõ vị trí dự tuyển, tóm tắt quá trình làm việc, kỹ năng kinh nghiệm và mức lương đề nghị…" Phương tiện Yêu cầu phương tiện "Có xe gắn máy riêng"
Số lượng
tuyển
Số lượng cần tuyển cho 1 vị trí đăng thông báo
"Phiên dịch tiếng Hoa: 10 người"
Vị trí tuyển
Tên, chức danh mà chủ thể tuyển dụng dùng
Coi là vị trí quản lý khi: chủ thể tuyển dụng gọi là chức danh quản lý, tên các chức danh có từ "quản lý", hoặc có chứa từ chỉ
"Nhân viên thiết kế mẫu"
"Kỹ sư xưởng"
"Giám sát bán hàng (Account Manager)"
"Giám đốc điều hành"
Trang 14STT Tên tiêu chí Ý nghĩa tiêu chí Ví dụ cụ thể
chức năng của người quản lý
Địa điểm Địa điểm ứng viên sẽ làm việc nếu trúng
tuyển
"Bệnh viện Pháp Việt cần tuyển"
"Nhân viên làm việc tại Bình Dương"
Thời gian
Thời gian trong ngày ứng viên sẽ làm việc khi được nhận
"ca nguyên ngày", "ca nửa ngày"
Mô tả
Mô tả công việc của vị trí mà ứng viên phải đảm nhiệm nếu trúng tuyển
"Vẽ bản vẽ thi công (Shopdrawing) các hệ kỹ thuật cơ điện lạnh, nước, kiến trúc cho các công trình xây dựng"
"Lập kế hoạch thực hiện bản vẽ, triển khai cho các kỹ sư, giám sát, kiểm tra bản vẽ"
Lương Đề cập lương có thể được hưởng
"Lương thoả thuận"
"Mức ăn chia theo ca"
"Lương căn bản 2,269 USD/năm"
Quyền lợi
khác
Hứa hẹn về các quyền lợi khác khi trúng tuyển
"Được hưởng các chế độ BHYT
và BHXH theo luật định; Có các chế độ phúc lợi tốt và môi trường làm việc năng động"
"Có cơ hội phát triển nghề nghiệp tương xứng với trình độ chuyên môn và kinh nghiệm"
"Ngoài lương hàng tháng, được hưởng thêm lương kinh doanh tuỳ theo kết quả công việc thực tế; Được đào tạo"
Trên đây là cấu trúc chung Một số bản tin tuyển dụng có thê thiếu hoặc khác những thông tin ở trên
Trang 151.3 Kiến trúc hệ thống Crawling và các thuật toán
1.3.1 Kỹ thuật tiếp cận dữ liệu lớn
Hình 1.1 Mô hình khung dữ liệu lớn [1]
Theo một số nghiên cứu gần đây về việc phân tích dữ liệu qua mạng xã hội như của tác giả Aftab Ahmed Chandio và cộng sự (2015) [1], một mô hình thu thập
và xử lý dữ liệu lớn được đề xuất như Hình 1.1 Một số phương pháp và công cụ hỗ trợ xử lý dữ liệu lớn được phân loại và trình bày như trong Hình 1.2
Như vậy có rất nhiều kỹ thuật trong cách tiếp cận dữ liệu lớn mà tùy từng phương pháp sẽ có những cách tiếp cận khác nhau
1.3.2 Kiến trúc tổng quát về một crawling system
Với nguồn thông tin mở và miễn phí trên Internet, các hệ thống Crawling, hay còn gọi là hệ thống thu thập thông tin tự động từ Internet, đang là công cụ hữu ích cho việc thu thập dữ liệu phục vụ cho các hệ thống Dữ liệu lớn Quy trình thu thập dữ liệu tự động điển hình được mô tả như trong Hình 1.3
Trang 16Hình 1.2 Các mô hình điện toán dữ liệu lớn [1]
Trang 17Hình 1.3 Biểu đồ Flowchart của một Crawler điển hình [7]
Quy trình này mô tả hoạt động của một Crawler điển hình Những crawler nhƣ vậy xuất hiện trong các công cụ tìm kiếm nhƣ Bing hay Google Các cỗ máy tìm kiếm này bắt đầu quá trình thu thập và tìm kiếm từ một số trang web “mồi”, sau
đó dò theo các liên kết trên những trang web này để phát hiện những trang cần tìm mới Ví dụ, phiên bản đầu của Google sử dụng mô hình crawler nhƣ đƣợc minh họa trong Hình 1.4
Trang 18Hình 1.4 Mô hình Crawler của Google thời kỳ đầu [23]
Hoạt động cơ bản của một crawler như sau:
1 Khởi tạo URL hoặc URL đầu tiên;
2 Thêm nó vào danh sách xử lý;
3 Chọn URL từ những trang danh sách cần xử lý;
4 Tìm nạp trang web tương ứng với các URL đó trong danh sách;
5 Phân tích cú pháp trang đã truy xuất để trích xuất các URL của những trang liên kết;
6 Thêm tất cả các liên kết chưa được truy cập vào danh sách URL, tức
là vào danh sách;
7 Một lần nữa bắt đầu với bước 2 và lặp lại cho đến khi danh sách trống
Trang 19Hoạt động của trình thu thập dữ liệu web cho thấy rằng nó được đệ quy tiếp tục thêm các URL mới hơn vào kho lưu trữ cơ sở dữ liệu của công cụ tìm kiếm Điều này cho thấy chức năng chính của trình thu thập dữ liệu web là thêm liên kết mới vào một tập chờ (frontier) và chọn URL gần đây từ nó để xử lý tiếp sau mỗi bước đệ quy Luồng trình thu thập thông tin cơ bản được hiển thị trong Hình 1.3
Hình 1.5 Các luồng của crawler kết nối với frontier [7]
Frontier có thể được xây dựng như một hàng đợi FIFO (Hình 1.5) URL của những trang web “mồi” được đưa vào đầu hàng đợi URL để thu thập thông tin tiếp theo được lấy từ phần đầu của hàng đợi và các URL mới được thêm vào phần đuôi của hàng đợi Có thể xây dựng hàng đợi này một cách độc lập với các công cụ thu thập hoặc phân tích khác Việc tra cứu sự tồn tại của một URL trong hàng đợi có thể được thực hiện thông qua mảng băm (với URL là khóa) nhằm tăng hiệu quả tìm kiếm Mảng băm phải được giữ đồng bộ với frontier thực tế
Trang 20Cấu trúc dữ liệu frontier được xây dựng như một hàng đợi ưu tiên Hàng đợi
ưu tiên là một mảng động luôn được sắp xếp theo số điểm ước tính của các URL Ở mỗi bước, URL tốt nhất được chọn từ đầu hàng đợi Khi một trang tương ứng được tìm nạp, các URL được trích xuất từ trang đó và được tính điểm dựa trên một giá trị heuristic Sau đó, chúng được thêm vào frontier theo cách thứ tự của hàng đợi ưu tiên được duy trì Chúng ta có thể tránh các URL trùng lặp ở frontier bằng cách giữ một bảng băm riêng để tra cứu Khi vượt quá kích thước tối đa của frontier (MAX), chỉ các URL MAX tốt nhất được giữ ở frontier
Đôi khi, trình thu thập thông tin có thể gặp “bẫy nhện” (vì một số trang không muốn bị thu thập thông tin) dẫn đến một số lượng lớn các URL khác nhau tham chiếu đến cùng một trang Một cách để giảm bớt vấn đề này là giới hạn số lượng trang mà trình thu thập thông tin truy cập từ một tên miền nhất định Bằng cách này, crawler hạn chế không truy cập cùng một trang Web quá thường xuyên và
do vậy các trang được thu thập thông tin có xu hướng đa dạng hơn
b) Lịch sử thu thập
Lịch sử thu thập thông tin là danh sách các URL được đóng dấu thời gian theo thời điểm chúng được tìm nạp Lịch sử được sử dụng phục vụ cho quá trình phân tích thu thập và đánh giá
Cũng giống như với frontier, chúng ta giả định Lịch sử được xây dựng dưới dạng một cấu trúc dữ liệu trong bộ nhớ Điều này cho phép tra cứu nhanh để kiểm tra xem một trang đã được thu thập thông tin hay chưa Kiểm tra này rất quan trọng
để tránh truy cập lại các trang và cũng để tránh thêm URL của các trang được thu thập thông tin vào frontier có giới hạn kích thước Vì những lý do tương tự, cần kiểm tra URL trước khi thêm chúng vào lịch sử nếu nội dung trang không thay đổi trong lần thu thập tiếp theo
Khi một trang được tìm nạp, nó có thể được lưu trữ / lập chỉ mục cho ứng dụng chính (như công cụ tìm kiếm) Ở dạng đơn giản nhất, kho lưu trữ trang có thể lưu trữ các trang được thu thập thông tin dưới dạng các tệp riêng biệt Trong trường hợp đó, mỗi trang phải ánh xạ tới một tên tệp duy nhất Một cách để làm điều này là
Trang 21ánh xạ mỗi trang URL thành một chuỗi nhỏ gọn bằng cách sử dụng một số dạng hàm băm với xác suất va chạm thấp (đối với tính duy nhất của tên tệp) Cơ chế này
hỗ trợ việc tìm kiếm nhanh trên các tài liệu đã được lưu trữ
c) Fetching (Tìm nạp)
Để tìm nạp một trang Web, chúng ta cần một máy khách HTTP gửi yêu cầu HTTP tới URL của trang và đọc phản hồi Client cần đặt một ngưỡng hạn chế thời gian chờ (timeout) để đảm bảo không tiêu phí quá nhiều thời gian vào các máy chủ chậm hoặc các trang lớn Trên thực tế, có thể hạn chế dung lượng tải của mỗi trang (10- 20KB đầu tiên) Khi đó client cần phân tích header của trang để nhận biết mã trạng thái và ra quyết định tìm kiếm tiếp Header của trang cũng cung cấp thông tin
về thời gian sửa đổi cuối cùng của trang để xác định tuổi của tài liệu Kiểm tra lỗi
và xử lý ngoại lệ rất quan trọng trong quá trình tìm nạp trang vì chúng ta cần xử lý rất nhiều máy chủ từ xa với cùng một client Ngoài ra, số liệu thống kê về thời gian chờ và mã trạng thái cũng có thể có ích cho việc xác định sự cố hoặc cập nhật thay đổi cho nhãn thời gian của URL Các ngôn ngữ lập trình hiện đại như Java và Perl thường cung cấp sẵn các giao diện lập trình và thư viện để tìm nạp các trang từ Web Tuy nhiên, cần thận trong việc sử dụng các giao diện cấp cao, vì chúng thường dẫn đế việc khó phát hiện các vấn đề ở cấp độ thấp hơn Ví dụ, với Java, người ta có thể muốn sử dụng lớp java.net.Socket để gửi các yêu cầu HTTP thay vì
sử dụng lớp java.net.HttpURLConnection dễ đọc hơn
Việc thu thập dữ liệu từ các trang web từ Web cũng cần lưu ý tới kỹ thuật robot Giao thức robot cung cấp một cơ chế cho các quản trị viên máy chủ Web thể hiện chính sách truy cập tệp của họ; cụ thể hơn để xác định các tệp có thể không được truy cập bởi trình thu thập thông tin
Kỹ thuật này thực hiện bằng cách tạo một tệp có tên robot.txt trong thư mục gốc của máy chủ Web (chẳng hạn như http://www.abc.edu/robots.txt) Tệp này cung cấp chính sách truy cập cho các người dùng khác nhau (rô bốt hoặc trình thu thập thông tin) Giá trị „*‟ biểu thị chính sách mặc định cho bất kỳ trình thu thập thông tin nào không khớp với các người dùng được định nghĩa trong tệp Khi trình
Trang 22thu thập thông tin muốn truy xuất một trang từ máy chủ Web, trước tiên, nó phải tìm nạp tệp robot.txt thích hợp và đảm bảo rằng URL cần tìm nạp không bị vô hiệu hóa Thông tin chi tiết về giao thức loại trừ này có thể được tìm thấy tại [20] Có thể lưu trữ lại các tệp robots.txt của những máy chủ được truy cập gần nhất nhằm hạn chế việc truy cập chúng mỗi lần cần tìm nạp URL
Các URL khác nhau tương ứng với cùng một trang Web có thể được ánh xạ lên một dạng chính tắc duy nhất Điều này rất quan trọng để tránh tìm nạp cùng một trang nhiều lần Dưới đây là một số bước được sử dụng trong quy trình chuẩn hóa URL điển hình:
1 Chuyển đổi giao thức và tên máy chủ thành chữ thường Ví dụ: HTTP: // www.abc.edu được chuyển đổi thành http://www.abc.edu
2 Xóa phần „anchor‟, hoặc "reference" của URL Do đó, http: // abc.edu/faq.html#what được chuyển thành http://abc.edu/faq.html
3 Thực hiện mã hóa URL cho một số ký tự thường được sử dụng, chẳng hạn như “~” Điều này sẽ ngăn trình thu thập thông tin xử lý http://abc.edu/~opt/ như một URL khác với http://abc.edu/%7Eopt /
Trang 234 Đối với một số URL, hãy thêm dấu "/" Chẳng hạn http://abc.edu và http://abc.edu/ phải ánh xạ tới cùng một hình thức chính tắc
5 Sử dụng phương pháp phỏng đoán để nhận ra các trang Web mặc định Tên tệp như index.html hoặc index.htm có thể bị xóa khỏi URL với giả định rằng chúng là các tệp mặc định Nếu đó là sự thật, chúng sẽ được truy xuất bằng cách sử dụng URL cơ sở
6 Xóa “ ” và thư mục mẹ của nó khỏi đường dẫn URL Do đó, đường dẫn URL /%7Eopt/lampp/Seed/ /wins.part được chuyển thành /%7Eopt/lampp/wins.part
7 Chuyển lại số cổng trong URL trừ khi đó là cổng 80 hoặc 8080 (mặc định của HTTP) Chẳng hạn như web abc có cổng là 8018 thì nên chuyển tất thành 8018
Điều quan trọng là phải nhất quán trong khi áp dụng các quy tắc chuẩn hóa
Có thể hai quy tắc dường như trái ngược nhau hoạt động tốt như nhau (chẳng hạn như đối với số cổng) miễn là áp dụng chúng một cách nhất quán trên các URL Như
đã lưu ý trước đây, “bẫy nhện” đặt ra một vấn đề nghiêm trọng đối với trình thu thập thông tin Các URL giả được tạo bởi bẫy nhện ngày càng có kích thước lớn hơn Một cách để giải quyết các bẫy như vậy là việc giới hạn kích thước URL, ví dụ: 128 hoặc 256 ký tự
Khi phân tích một trang Web để trích xuất thông tin nội dung hoặc để chấm điểm các URL mới được đề xuất bởi trang, nên xóa các từ hoặc từ khóa thường được sử dụng, chẳng hạn như "it" và "can" Quá trình loại bỏ từ khỏi văn bản được gọi là danh sách dừng Lưu ý một số hệ thống nhận không quá chín từ (“an”, “and”,
“by”, “for”, “from”, “of”, “the”, “to”, and “with”) làm từ dừng Ngoài danh sách dừng, người ta cũng có thể chuẩn hóa các từ được tìm thấy trong trang bằng cách chuyển một số từ tương tự về hình thái với một dạng gốc Ví dụ, “connect”,
“connected” and “connection” sử dụng trong các ngôn ngữ lập trình
Trang 24Hình 1.6 Các Thẻ HTML và cây thẻ tương ứng [7]
e) Cây HTML
Trình thu thập thông tin có thể xác định một URL hoặc một từ nội dung bằng cách kiểm tra ngữ cảnh thẻ HTML mà nó nằm trong đó Để làm được điều này, một trình thu thập thông tin cần phải sử dụng thẻ cấu trúc cây hoặc DOM của trang HTML Hình 1.6 cho thấy một cây thẻ tương ứng với một nguồn HTML Thẻ
<html> tạo thành gốc của cây và các thẻ và văn bản khác nhau là các nút của cây Tuy nhiên có nhiều trang web chứa nội dung HTML không hoàn chỉnh Ví dụ: có thẻ bắt đầu mà không có thẻ kết thúc (có thể do đặc tả HTML), hoặc các thẻ không được lồng đúng cách Trong nhiều trường hợp, thẻ <html> hoặc thẻ <body> bị thiếu hoàn toàn từ trang HTML Do đó, việc phân tích dựa trên cấu trúc thường yêu cầu bước làm sạch (cleaning) nhằm chuyển đổi một tài liệu HTML không hoàn chỉnh thành một hình thức hoàn chỉnh Bước này có thể bao gồm cả việc chèn các thẻ bị thiếu và sắp xếp lại các thẻ trong trang
Việc làm sạch một trang HTML là cần thiết để ánh xạ nội dung của trang lên cấu trúc cây với tính toàn vẹn, trong đó mỗi nút có một cha/mẹ duy nhất Do đó, đây là bước tiền xử lý thiết yếu để phân tích trang HTML dưới dạng cây thẻ Lưu ý rằng việc phân tích cấu trúc DOM chỉ cần thiết nếu trình thu thập thông tin cục bộ
có ý định sử dụng cấu trúc tài liệu HTML theo một cách không tầm thường nào đó
Ví dụ: nếu trình thu thập thông tin chỉ cần các liên kết trong một trang hay một phần
Trang 25văn bản trong trang, người ta có thể sử dụng các kỹ thuật phân tích cú pháp HTML đơn giản hơn Thường những trình phân tích cú pháp như vậy cũng có sẵn trong nhiều ngôn ngữ lập trình
Hình 1.7 Mô hình Multi-threading Crawler [7]
f) Multi-thread Crawlers
Một crawler đơn luồng sử dụng một vòng thu thập thông tin tuần tự với lượng lớn thời gian trong đó CPU không hoạt động (trong khi truy cập mạng / đĩa) hoặc giao diện mạng không hoạt động (trong quá trình hoạt động của CPU) Với tiếp cận đa luồng, trong đó mỗi luồng theo một vòng thu thập thông tin, việc thu thập thông tin có thể có tốc độ hợp lý và hiệu quả sử dụng băng thông tốt hơn Hình 1.7 biểu diễn một mô hình thu thập thông tin đa luồng cơ bản Mỗi luồng bắt đầu bằng việc khóa cấu trúc dữ liệu frontier để chọn URL cần xử lý Sau khi chọn được một URL, nó mở khóa cho cấu trúc dữ liệu frontier để cho phép các luồng khác truy cập Frontier lại bị khóa khi URL mới được thêm vào nó Các bước khóa/mở khóa cần thiết để đồng bộ hóa việc sử dụng frontier, đó là cách chia sẻ giữa nhiều vòng lặp thu thập dữ liệu (luồng) Mô hình của trình thu thập dữ liệu đa luồng trong Hình 1.7 tuân theo mô hình tính toán song song tiêu chuẩn Trình thu thập thông tin điển hình cũng duy trì cấu trúc dữ liệu lịch sử được chia sẻ để tìm kiếm nhanh các URL
Trang 26đã được thu thập Do đó, ngoài frontier, nó cũng cần phải đồng bộ hóa truy cập vào lịch sử
Trong mô hình thu thập dữ liệu đa luồng, có tình huống cần phải xử lý khi frontier trống Nếu một luồng tìm thấy frontier trống, điều đó không có nghĩa là toàn bộ trình thu thập thông tin đã đi đến ngõ cụt Có thể các luồng khác đang tìm nạp các trang và có thể thêm URL mới trong tương lai gần Để sử dụng hiệu quả thời gian thực thi của CPU, có thể đặt luồng vào trạng thái ngủ khi gặp một frontier trống Luồng sẽ được đánh thức khi có URL mới được thêm vào frontier
Khi một luồng được đánh thức, nó sẽ kiểm tra lại URL Một trạng thái global được thiết lập để theo dõi số lượng luồng đang ngủ Chỉ khi tất cả các luồng ở trạng thái ngủ thì quá trình thu thập thông tin mới dừng lại Một số phương pháp tối ưu hóa cũng được áp dụng để giảm sự tranh chấp giữa các luồng và để hợp lý hóa việc truy cập mạng
Những nội dung vừa trình bày là các kỹ thuật cơ bản được áp dụng cho crawler Việc xây dựng một crawler trong thực tế có thể phức tạp hơn với những phương pháp xác định kích thước frontier (phạm vi thu thập), chiến lược phân tích trang, biểu diễn lịch sử trình thu thập thông tin và kho lưu trữ trang,…
1.3.3 Các yêu cầu của một hệ thống crawling
Các yêu cầu đặt ra cho một hệ thống crawling được mô tả như hình 1.8
Trong đó:
Tính mềm dẻo
Như chúng ta biết cấu trúc của một trang web có thể thay đổi và cải thiện thường xuyên Bất kỳ thuật toán thu thập dữ liệu web nào cũng phải được thiết kế mềm dẻo phù hợp với các kịch bản thay đổi của cấu trúc trang
Hiệu năng cao
Việc thu thập dữ liệu cần có hiệu quả chi phí tốt Nó cần làm việc được trên
hệ thống phần cứng có sẵn và có khả năng mở rộng theo nhu cầu về hiệu năng
Trang 27Hình 1.8 Đặc điểm của hệ thống thu thập dữ liệu web [8]
Khả năng bảo trì và cấu hình
Hệ thống thu thập dữ liệu web phải có giao diện cấu hình phù hợp để có thể theo dõi quá trình thu thập thông tin Giao diện nên chứa các số liệu thống kê như tốc độ tải xuống, những trang nào đã được thu thập thông tin, những trường hợp thu thập thông tin nào đang chạy, kích thước của dữ liệu được lưu trữ, mức độ sâu Giao diện giám sát có thể điều chỉnh tốc độ và chọn tắt các tiến trình trình thu thập
Mềm dẻo
Hiệu năng cao
Ít lỗi
Có thể bảo trì
Có thể cấu hình
Trang 28thông tin, thêm hoặc xóa các nút hệ thống và cung cấp danh sách đen các tên miền không được phép truy cập, v.v
Trong một hệ thống phân tán lớn như Web, người dùng có thể tìm thấy tài nguyên bằng cách lần theo các liên kết siêu văn bản từ tài liệu này sang tài liệu khác Khi hệ thống nhỏ và các tài nguyên của nó có chung mục đích cơ bản, người dùng có thể dễ dàng tìm thấy các tài nguyên quan tâm Tuy nhiên, với hệ thống Web hiện nay bao gồm hàng triệu trang với nhiều mục đích khác nhau, việc điều hướng là rất khó khăn
Trình thu thập dữ liệu Web trong thiết kế điển hình của các công cụ tìm kiếm
có chức năng tạo ra một tập hợp được lập chỉ mục và tìm kiếm Hầu hết các thiết kế của các công cụ tìm kiếm coi trình thu thập thông tin Web chỉ là giai đoạn đầu tiên trong tìm kiếm Web, với rất ít phản hồi từ các thuật toán xếp hạng đến quá trình thu thập thông tin Đây là một mô hình xếp tầng, trong đó các hoạt động được thực hiện theo thứ tự nghiêm ngặt: đầu tiên là thu thập thông tin, sau đó lập chỉ mục và sau đó tìm kiếm Cách tiếp cận của nhà nghiên cứu là cho phép trình thu thập thông tin quyền truy cập vào tất cả các thông tin về tập hợp để hướng dẫn quy trình thu thập thông tin một cách hiệu quả Vấn đề này có thể được phát triển thêm, vì có các công
cụ có sẵn để xử lý tất cả các tương tác có thể có giữa các mô-đun của công cụ tìm kiếm, như được hiển thị trong Hình 1.9:
Hình 1.9 Kiến trúc tuần hoàn cho các công cụ tìm kiếm [7]
Trang 29Hình 1.9 cho thấy sự tương tác giữa các thành phần khác nhau của một hệ thống tìm kiếm
1.3.4 Các chiến lược trong các hệ thống Crawling
1.3.4.1 Chiến lược thu thập dữ liệu theo chiều rộng (Breath-First)
Để thu thập thông tin từ Internet, việc thu thập được thực hiện từ một tập hợp các trang Web “mồi”
Chiến lược Breath-First được triển khai bằng cách lần theo các liên kết siêu văn bản để dẫn đến các trang được kết nối trực tiếp với những trang “mồi” ban đầu này Trên thực tế, các trang web không thực sự được duyệt trước và có thể áp dụng các hạn chế khác nhau, ví dụ: Hạn chế quá trình thu thập thông tin vào trong một trang web hoặc tải xuống các trang được coi là thú vị nhất trước tiên
Hình 1.10 Các con số hiển thị đường dẫn của Breath -First Crawling [7]
Thuật toán tìm kiếm Breadth-First thực hiện tìm kiếm duy nhất xung quanh các nút lân cận (siêu liên kết) Nó bắt đầu bằng cách theo nút gốc (Hyperlink) và quét tất cả các nút lân cận ở mức ban đầu Nếu tìm kiếm được mục tiêu cần đạt được thì quá trình quét bị dừng nếu không nó sẽ dẫn đến cấp độ tiếp theo
Các loại thuật toán như vậy phù hợp nhất trong đó các nhánh nhỏ và mục tiêu kết quả là giống hệt nhau Khi các nhánh hoặc cây rất sâu thì thuật toán này sẽ không hoạt động tốt, tức là tất cả các đường dẫn đều dẫn đến cùng một nút kết quả
Trang 301.3.4.2 Chiến lược thu thập dữ liệu theo chiều sâu (Depth-First)
Hình 1.11 Các số hiển thị đường dẫn của Thu thập thông tin đầu tiên [7]
Thuật toán tìm kiếm Depth-First bắt đầu tìm kiếm mục tiêu từ nút gốc và di chuyển bên cạnh nút con của nó Nếu có nhiều hơn một nút con, thì hầu hết các nút còn lại được ưu tiên cao nhất và đi qua sâu cho đến khi không còn nút con nào nữa Sau đó, nó bắt đầu từ nút chưa thăm tiếp theo và sau đó tiếp tục theo cách tương tự
Bằng cách sử dụng thuật toán này, việc đảm bảo quét tất cả các nút đạt được nhưng khi số lượng nút con lớn thì thuật toán này sẽ mất nhiều thời gian hơn và có thể đi vào vô hạn
1.3.4.3 Chiến lược lặp lại
Một số trường hợp các trang đã được thu thập thông tin, một số hệ thống yêu cầu quy trình được lặp lại định kỳ để thu thập lại các trang được cập nhật này Điều này có thể đạt được bằng cách cơ bản nhất đó là khởi động trình thu thập thông tin thứ hai song song với cái thứ nhất Một loạt các phương pháp để khắc phục vấn đề này: ví dụ, bằng cách thường xuyên khởi chạy lại quá trình thu thập dữ liệu của các trang, trang web hoặc tên miền được coi là quan trọng đối với người dùng Một chiến lược thu thập thông tin tốt rất quan trọng để duy trì danh sách chỉ mục được cập nhật liên tục để làm sao danh mục các trang luôn được cập nhật
Trang 31Hình 1.12 Thu thập dữ liệu lặp đi lặp lại [7]
1.3.4.4 Chiến lược CRAWLING có phỏng đoán (HEURISTICS)
Các công cụ tìm kiếm sử dụng quy trình thu thập thông tin (ngẫu nhiên) trên WWW để nhắm mục tiêu một loại trang web nhất định, ví dụ: các trang web về một chủ đề cụ thể hoặc bằng một ngôn ngữ cụ thể, hình ảnh, tệp mp3, vị trí địa lý, tài liệu nghiên cứu khoa học cụ thể hoặc tên miền Ngoài các phương pháp này, các phương pháp tiếp cận chung hơn đã được đề xuất Chúng dựa trên phân tích cấu trúc của các liên kết siêu văn bản và kỹ thuật: mục tiêu ở đây là lấy ra số lượng trang lớn nhất liên quan đến một chủ đề cụ thể bằng cách sử dụng băng thông tối thiểu Hầu hết các nghiên cứu được trích dẫn trong luận văn này không sử dụng trình thu thập thông tin hiệu năng cao, nhưng thành công trong việc tạo ra kết quả chấp nhận được
Mã giả cho thuật toán này như sau:
/*Start with given initial Seed URL as input*/
Adaptive_A_Star_Algo(Initial seed, Graph Size)
/*No of times relevancy has to be updated to get better results*/ b: = log(Graph Size);
Repeat For (b times)
/*Insert Seed URLs into the Frontier*/
Insert_Frontier (Initial seed);
/*Crawling Loop*/
While (Frontier! = Empty)
/*Pick new link from the Frontier*/
Link: =Remove_Frontier (URL);
Trang 32Webpage: = Fetch (Link);
Repeat For (each child_node of Webpage)
/*Calculate Relevancy Valuetill that Page*/
Rel_val_gn (child_node):= Rel_val(topic, node webpage); /*CalculateRelevancyValuefrom that node till the Goal Page*/ Rel_val_hn (child_node):=
Rel_val(topic,goal webpage)-Rel_val(topic, node webpage); /*Calculate Total Relevancy Value of the Path to the Goal Page*/
Rel_val_fn:= Rel_val_gn+Rel_val_hn;
/*Add new link with Maximum Relevancy Value into Frontier*/ Insert_Frontier (child_node_max, Rel_val_max);
End While Loop
/*After b times, A* Search more efficient on updated graphs*/
A_Star_Algo(seed URL, Graph (G));
1.3.4.5 Chiến lược thu thập dữ liệu theo ngẫu nhiên
Kỹ thuật đi bộ ngẫu nhiên (Random-walk technique) là phương pháp lấy mẫu ngẫu nhiên trong đó số lượng bước giữa trang web mẫu được xác định bằng số ngẫu nhiên, thường được rút ra từ các bảng số ngẫu nhiên và từ mỗi liên kết ngẫu nhiên của trang web mẫu lựa chọn xác định hướng của trang được liên kết tiếp theo Trong đó một vài bộ mẫu được lấy, tốt nhất là bắt đầu mỗi bộ từ cùng một trang web; nếu điều này không thể thực hiện thì phạm vi các số mà từ đó lựa chọn được thực hiện phải cho phép mỗi điểm trong nghiên cứu có cơ hội được lấy mẫu bằng nhau mỗi lần
Một số nghiên cứu đã tập trung vào tác động của các bước đi ngẫu nhiên trên các biểu đồ Web hoặc các phiên bản sửa đổi của các biểu đồ này thông qua lấy mẫu
để ước tính kích thước của các tài liệu trực tuyến
1.3.4.6 Chiến lược Deep web
Rất nhiều dữ liệu chỉ có thể truy cập qua các trang Web bằng cách gửi yêu cầu hoặc gửi biểu mẫu thích hợp Chẳng hạn như khi bấm search "ebook" tại mục
tìm kiếm thì website Vinabook.com mới hiển thị dữ liệu về từ khoá "ebook" Deep
Web là tên được đặt cho Web có chứa loại dữ liệu này
Trang 33Những crawler thu thập dữ liệu Deep Web cần có biện pháp xử lý đặc biệt Một trong những kiến trúc trình thu thập thông tin Web sâu như vậy được đề xuất bởi Raghavan và Garcia-Molina (2001) [18] Hai thách thức cơ bản liên quan đến tìm kiếm Web sâu, tức là khối lượng của Web ẩn rất lớn và cần một loại trình thu thập thông tin thân thiện với người dùng như vậy có thể xử lý giao diện tìm kiếm một cách hiệu quả Một mô hình của trình thu thập thông tin Web hỗ trợ con người
cụ thể được thiết kế và thực thi trong Hiwe (tiếp xúc với Web ẩn) Nguyên mẫu Hiwe được phát triển tại Stanford như Hình 1.13
Hình 1.13 Nguyên mẫu mô hình Hiwe [5]
Theo tác giả Dilip (2011) [5] kỹ thuật Hiwe được thiết kế để tự động xử lý, phân tích và gửi biểu mẫu, sử dụng mô hình nội bộ của biểu mẫu và gửi biểu mẫu Hiwe sử dụng kỹ thuật trích xuất thông tin dựa trên bố cục (LITE) để xử lý và trích xuất thông tin hữu ích Ưu điểm của kiến trúc Hiwe là cách tiếp cận cụ thể cho ứng dụng / nhiệm vụ của nó cho phép trình thu thập thông tin chỉ tập trung vào các trang
có liên quan và việc điền biểu mẫu tự động có thể được thực hiện với phương pháp
hỗ trợ của con người
1.3.4.7 Thuật toán Page Rank
Thuật toán PageRank được phát triển bởi Lawrence Page và Sergey Brin nhằm tính toán mức độ phổ biến của trang web (web page) hoặc một website Thuật toán PageRank này phụ thuộc vào phân tích liên kết web trong đó chỉ số xếp hạng của một trang web được quyết định dựa trên chỉ số xếp hạng của các liên kết ngoài
và liên kết nội dung
Liên kết trong: Liên kết trong là những liên kết xuất phát từ trang web khác đến trang web được quan tâm Nó còn được gọi là liên kết ngược Google chỉ xem
Trang 34xét các liên kết có liên quan đến trang web nhưng không thể kiểm soát trang web nào trỏ đến trang web
Liên kết ngoài: Liên kết ngoài là những liên kết đang trỏ đến trang web khác
từ trang web như được mô tả trong Hình 1.14
Hình 1.14 Các liên kết ngoài trỏ đến trang web khác [3]
Một trang có thứ hạng cao nếu các trang khác có thứ hạng cao được liên kết với nó Nó được đưa ra bởi:
PR (A) = (1-d) + d (PR (Ti) / C (Ti) + + PR (Tn) / C (Tn))
• Đặt A là trang và có thứ hạng trang là PR (A)
• Đặt PR (Ti) là Pagerank của các trang Ti liên kết đến trang A,
• C (Ti) là số lượng liên kết ngoài đi ra từ trang Ti và
• d là hệ số giảm xóc được giả định là từ 0 đến 1 thường là 0,85 Đôi khi không nhấp vào bất kỳ liên kết nào và nhảy sang các trang khác một cách ngẫu nhiên Nó theo các liên kết trực tiếp
• (1-d) là xác suất nhảy vào một số trang ngẫu nhiên; mỗi trang có thứ hạng trang tối thiểu là (1-d) Nó theo các liên kết không trực tiếp
Để tính Xếp hạng Trang của bất kỳ Trang nào, chúng ta bắt buộc phải biết Xếp hạng Trang của mỗi trang trỏ đến trang đó và số lượng liên kết ngoài từ mỗi trang đó
1.3.5 Các thuật toán crawling
Có nhiều chiến lược crawling khác nhau Nhiều thuật toán trong số này là biến thể của chiến lược Best-First Search Sự khác biệt là ở các phương pháp phỏng
Trang 35đốn mà họ sử dụng để chấm điểm các URL khơng được chú ý với một số thuật tốn điều chỉnh và điều chỉnh các tham số của chúng trước hoặc trong khi thu thập
dữ liệu
1.3.5.1 Thuật tốn NAIVE BEST-FIRST
Thuật tốn Nạve Best-First [7] là một trong những thuật tốn chi tiết và được đánh giá cao trong các thuật tốn crawler Trong thuật tốn này, đại diện cho một trang Web được tìm nạp là một vectơ với các từ cĩ trọng số theo tần suất xuất hiện Sau đĩ, trình thu thập thơng tin sẽ tính tốn độ tương tự của trang với truy vấn hoặc mơ tả do người dùng cung cấp và chấm điểm các URL trên trang theo giá trị tương tự này Các URL sau đĩ được thêm vào một biên giới được duy trì như một hàng đợi ưu tiên dựa trên các điểm số này
Trong lần lặp lại tiếp theo, mỗi luồng trình thu thập thơng tin sẽ chọn URL tốt nhất ở biên giới để thu thập thơng tin và trả về với các URL mới được chèn lại trong hàng ưu tiên sau khi được tính điểm dựa trên độ tương tự của trang mẹ Độ tương tự giữa trang p và truy vấn q được tính bằng:
* ( , ) cos( , )
của vectơ đại diện cho các trang
Nếu Sim(p,q) = -1 tức là khác nhau tuyệt đối
Nếu Sim(p,q) = 0 tức là độc lập với nhau
Nếu Sim(p,q) = 1 tức là chính xác tuyệt đối
Nếu 0 < Sim(p,q) < 1 tức là trang p cĩ liên quan đến truy vấn q
Nếu - 1 < Sim(p,q) < 0 tức là trang p khơng cĩ liên quan đến truy vấn q Nếu triển khai trên nhiều luồng, trình thu thập thơng tin hoạt động như một trình thu thập N thơng tin đầu tiên tốt nhất trong đĩ N số lượng các luồng đang chạy đồng thời Best-N-first là phiên bản tổng quát của trình thu thập thơng tin đầu tiên
Trang 36tốt nhất chọn N URL tốt nhất để thu thập dữ liệu tại một thời điểm Trong nghiên cứu về thuật toán này, kết quả cho thấy thấy sự vượt trội rõ ràng trong việc truy xuất các trang có liên quan Cần lưu ý rằng trình thu thập thông tin đầu tiên tốt nhất giữ kích thước biên giới trong giới hạn trên của nó bằng cách chỉ giữ lại các URL tốt nhất dựa trên điểm tương tự được chỉ định
Mã giả cho cách tiếp cận Best-First như sau
/*Start with given Seed URLs as input*/
A_Star_Algo(Initial seed)
/*Insert Seed URLs into the Frontier*/
Insert_Frontier (Initial seed);
/*Crawling Loop*/
While (Frontier! = Empty)
/*Pick new link from the Frontier*/
Link: = Remove_Frontier (URL);
Webpage: = Fetch (Link);
Repeat For (each child_node of Webpage)
/*Calculate Relevancy Value till that Page*/
Rel_val_gn (child_node):= Rel_val(topic, node webpage); /*Calculate Relevancy Value from that Node till the Goal Page*/
Rel_val_hn (child_node):=Rel_val(topic, goal
webpage)-Rel_val(topic, node webpage);
/*Calculate Total Relevancy Value of the Path to the Goal Page*/
Trang 37và điểm số được kế thừa từ ảnh hưởng của điểm số tiềm năng của các liên kết Gốc của URL là các trang xuất hiện trên đường dẫn thu thập thông tin đến URL SharkSearch, giống như FishSearch tiền nhiệm, duy trì độ sâu giới hạn Tức là, nếu crawler tìm thấy các trang không quan trọng trên đường dẫn thu thập thông tin, nó
sẽ dừng thu thập thông tin dọc theo đường dẫn đó Để có thể theo dõi tất cả thông tin, mỗi URL ở frontier được liên kết với độ sâu và điểm số tiềm năng Độ sâu giới hạn (d) được cung cấp bởi người dùng trong khi điểm tiềm năng của một URL chưa thăm được tính bởi công thức sau:
Score(url) = y * inherited(url) + (1- y) * neighbourhood(url) (1.2) Trong đó y là một tham số, điểm số lân cận biểu thị bằng chứng theo ngữ cảnh được tìm thấy trên trang có chứa URL siêu liên kết và điểm số được thừa kế được lấy từ điểm số của gốccủa URL Chính xác hơn, điểm số được kế thừa được tính là:
inherited(url)=µ * sim(q,p) if sim(q,p)>0 or
inherited(url)=µ * inherited(p) (1.3) Trong đó, nếu µ lại là một tham số, q là truy vấn và p là trang mà URL được trích xuất Điểm số lân cận sử dụng văn bản neo và văn bản trong vùng lân cận của vùng neo của neo nhằm cố gắng lấy lại điểm tổng thể của URL bằng cách cho phép phân biệt giữa các liên kết được tìm thấy trong cùng một trang Với mục đích đó, trình thu thập thông tin SharkSearch chỉ định điểm neo và điểm ngữ cảnh cho mỗi URL Điểm neo đơn giản là sự giống nhau của văn bản neo của siêu liên kết có chứa URL với truy vấn q, tức là sim (q; văn bản neo) Mặt khác, điểm số bối cảnh
mở rộng bối cảnh của liên kết để bao gồm một số từ gần đó Kết quả bối cảnh tăng cường được sử dụng để tính điểm số bối cảnh như sau:
contex(url) = 1 if anchor(url)>0 or
contex(url) = sim(q,aug_contex) (1.4) Cuối cùng, chúng ta lấy được điểm số lân cận từ điểm neo và điểm bối cảnh như:
Neighbourhood(url) = β * anchor(url) + (1- β) * context(url) (1.5)