TUẦN 7: WEB CRAWLING hieunk@soict.hust.edu.vn
Nội dung 1. Thuật toán crawling c ơ bản 2. Các vấn đ ề cài đặt 3. Crawler tổng quát 4. Crawler tập trung 5. Crawler theo ch ủ đề 6. Đánh giá 7. Vấn đ ề đạo đức và xung đột 8. Một s ố vấn đ ề nâng cao 2
Web crawler (spider, robot) là các chương trình t ự động tải v ề các trang web. Do Internet là thực th ể động, liên tục biến đổi, crawler cần được s ử dụng đ ể cập nhật các biến đổi đó Crawler chia làm các loại: tổng quát, tập trung và theo ch ủ đề Crawling được ứng dụng trong thông minh nghiệp v ụ, tổng hợp tin tức, máy tìm kiếm 3
1. Thuật toán crawling c ơ bản Bắt đầu t ừ tập các trang (URL) nguồn, crawler thu thập các trang web dựa trên siêu liên kết giữa các trang Danh sách các trang chưa ghé thăm được lưu trong hàng đợi Khi một URL được lấy ra t ừ hàng đợi, trang tương ứng được ghé thăm và các URL t ừ các siêu liên kết được b ổ sung vào hàng đợi Quá trình kết thúc khi thu thập được một s ố lượng trang nhất định hoặc khi hàng đợi rỗng Crawling là quá trình duyệt đ ồ th ị trong đó mỗi trang ứng với một nút và siêu liên kết ứng với cạnh của đ ồ thị 4
URL nguồn Bắt đầu Khởi tạo hàng đợi hàng đợi dequeue web tải trang trích rút URL enqueue Kho lưu trang kết thúc? Kết thúc 5
1.1 Crawler theo chiều rộng Hàng đợi được cài đặt theo cấu trúc FIFO (First- In-First-Out): URL được lấy ra t ừ đầu hàng đợi và đưa vào cuối hàng đợi Có xu hướng thu thập các trang ph ổ biến (có in- degree cao) Ph ụ thuộc vào các trang nguồn Lịch s ử truy cập có th ể được t ổ chức dưới dạng bảng băm bao gồm các URL kèm mốc thời gian, đ ộ phức tạp O( 1) 6
1.2 Crawler ưu tiên Hàng đợi được cài đặt theo hàng đợi ưu tiên Mức ưu tiên dựa trên các đ ộ đo nh ư cấu trúc (vd in-degree), nội dung (vd mức đ ộ tương t ự đ/v truy vấn) Đ ộ phức tạp O(logF) với F là kích thước hàng đợi 7
2. Các vấn đ ề cài đặt 2.1 Tải Crawler thực thi nh ư một máy khách, gửi yêu cầu lên server và nhận kết qu ả tr ả về Đọc header đ ể lấy mã trạng thái và thông tin điều hướng Thông tin điều hướng được kiểm tra trên danh sách lưu trong bảng băm đ ể tránh vòng lặp Thống kê thời gian timeout và mã trạng thái được lưu và phân tích đ ể điều chỉnh Cài đặt trên các ngôn ng ữ nh ư Java, Perl, Python s ử dụng các API mức thấp (vd: s ử dụng module Socket trong Perl thay vì th ư viện LWP) 8
2.2 Đọc Crawler đọc nội dung HTML của trang web nhằm trích rút các siêu liên kết đ ể tiếp tục thu thập, và trích rút nội dung văn bản cho ứng dụng cuối (vd máy tìm kiếm) Văn bản HTML được viết theo cấu trúc DOM. Các b ộ đọc duyệt lần lượt văn bản và xây cây DOM theo chiều sâu Crawler cần x ử lý các sai sót của tác gi ả trang HTML liên quan đến th ẻ, thuộc tính, kí t ự đặc biệt (vd dùng công c ụ làm sạch mã HTML tidy) Với nhu cầu trích rút nội dung và siêu liên kết, các b ộ đọc HTML trong các ngôn ng ữ nh ư Java hay Perl đáp ứng đ ủ yêu cầu Thách thức: Ngày càng nhiều các nội dung có định dạng phức tạp (pdf, doc, powerpoint); các nội dung tương tác với người dùng (flash), các nội dung đ ồ họa (SVG), các loại mã không đồng b ộ (AJAX) hoặc các định dạng bán cấu trúc (XML, JSON) 9
<html> <head> <title>cấu trúc DOM</title> </head> <body> <h2>document Object Model</h2> <img align= right alt= dom pic src= dom.png <p> Đây là một trang <code>html</code> đơn giản đ ể minh họa </body> </html> <a href= http://www.w3.org/dom/ >DOM</a> Cấu trúc DOM html head title h2 Document Object Model Đây là một trang body img p code HTML đơn giản để minh họa a DOM 10
2.3 Loại b ỏ t ừ dừng & stemming T ừ dừng là các t ừ x/h trong nội dung của nhiều trang web nh ư mạo t ừ, giới t ừ, liên t ừ. T ừ dừng thường không có tác dụng cho phân loại các trang web dựa trên nội dung Stemming là quá trình chuyển đổi các t ừ có cấu tạo khác nhau v ề cùng một dạng gốc. Trong crawling theo ch ủ đ ề, việc stemming c ả câu truy vấn và nội dung cho kết qu ả so khớp tốt hơn 11
2.4 Trích rút liên kết & chuẩn hóa B ộ đọc HTML cho phép nhận diện các th ẻ và giá tr ị thuộc tính đi kèm. Với trang HTML, trích rút liên kết thông qua th ẻ <a> và thuộc tính href S ử dụng danh sách trắng (vd text/html) và danh sách đen (vd pdf) đ ể lọc trang; dựa trên phần m ở rộng của tên trang hoặc gửi yêu cầu head và đọc nội dung tr ả v ề đ ể xác định loại trang trước khi tải Trước đây, crawler thường tránh thu thập các trang web động có URL sinh ra bởi mã CGI th ể hiện truy vấn tới các CSDL. B ộ lọc đơn giản dựa trên mẫu /cgi-bin/ các kí t ự đặc biệt [?=&] Hiện nay, crawler không phân biệt các nội dung tĩnh và động, các URL x/h trong nội dung HTML đều được thu thập Trong một s ố trường hợp (vd deep Web), crawler t ự động sinh ra URL dạng truy vấn đ ể thu thập nội dung t ừ các CSDL 12
URL cần được chuyển đổi t ừ dạng tương đối v ề dạng tuyệt đối (vd thoi-su/corona-virus.html chuyển v ề http://vnexpress.net/thoi-su/coronavirus.html). URL c ơ s ở có th ể được cung cấp trong header hoặc meta-tag Thực hiện các bước chuẩn hóa dựa trên các luật nhằm chuẩn hóa URL và loại b ỏ các trường hợp trùng lặp 13
Chuyển đổi Ví dụ Cổng mặc định Xóa Th ư mục gốc Thêm / Th ư mục d ự đoán* Thêm / Phân mảnh Xóa Th ư mục hiện tại hoặc th ư mục cha Phân giải đường dẫn Tên tệp mặc định* Xóa Các kí t ự mã hóa không cần thiết Giải mã Các kí t ự không được phép Mã hóa Tên miền viết hoa Viết thường http://fal.uni.edu:80/ http://fal.uni.edu http://fal.uni.edu http://fal.uni.edu/ http://fal.uni.edu/people http://fal.uni.edu/people/ http://fal.uni.edu/faq.html#3 http://fal.uni.edu/faq.html http://fal.uni.edu/a./../b http://fal.uni.edu/b http://fal.uni.edu/index.html http://fal.uni.edu/ http://fal.uni.edu/%7efil http://fal.uni.edu/~fil http://fal.uni.edu/my File.htm http://fal.uni.edu/my%20file.htm http://fal.uni.edu/people/ http://fal.uni.edu/people/ 14
2.5 Bẫy nhện Một s ố trang web t ự động sinh ra các URL động (vd amazon.com sinh ra URL động đ ể phân tích chuỗi hành vi mua sắm của người dùng) VD: Gi ả s ử trang sản phẩm x có URL / x có liên kết đến trang sản phẩm y với URL / x/y (đ ể ch ỉ ra người dùng đi t ừ trang x sang trang y). Gi ả s ử t ừ y có liên kết tr ở lại x, URL có dạng / x/y/x Crawler coi các URL mới tương ứng với nội dung mới, có th ể dẫn đến vòng lặp vô tận gây lãng phí tài nguyên cho c ả crawler và server Giải pháp: Không nhận và cung cấp cookie do các URL động thường y/c cookie Giới hạn kích thước của URL (vd 256) Giới hạn s ố lượng URL của một domain 15
2.6 Lưu tr ữ trang Lưu tr ữ mỗi trang trong một tệp riêng biệt với định danh duy nhất sinh ra bởi hàm băm (vd MD5). Nhược điểm: HĐH phải quản lý s ố lượng lớn tệp Lưu tr ữ nhiều trang trong một tệp, s ử dụng bảng đ ể tra cứu tên tệp và ID của URL trong tệp S d ng h th ng CSDL nhúng (vd Berkeley ử ụ ệ ố DB) 16
2.7 Truy cập đồng thời X ử lý đa tiến trình/luồng nhằm tận dùng tài nguyên của crawler Mỗi tiến trình/luồng hoạt động nh ư một crawler B ộ quản lý hàng đợi quản lý việc truy cập hàng đợi X ử lý tình trạng hàng đợi rỗng tạm thời Nâng hiệu xuất lên 5 10 lần 17
URL nguồn hàng đợi quản lý hàng đợi dequeue tải trang web trích rút URL enqueue lưu trang Kho kết thúc?... tiến trình/luồng 1 tiến trình/luồng n quản lý tiến trình/luồng 18
3. Crawler tổng quát Crawler phục v ụ các máy tìm kiếm cần x ử lý hàng trăm nghìn trang trong một giây Cần bao ph ủ các nội dung quan trọng trên web trong khi đảm bảo tính cập nhật của nội dung mới 19
3.1 Kh ả năng m ở rộng S ử dụng socket không đồng b ộ đ ể mỗi tiến trình/luồng có th ể m ở nhiều kết nối đồng thời S ử dụng nhiều hàng đợi song song tương ứng với các máy chủ S ử dụng giao thức UDP thay vì TCP đ ể kết nối với máy ch ủ DNS S ử dụng b ộ nh ớ cache có tốc đ ộ cao và dung lượng lớn S ử dụng nhiều kết nối thông qua các ISP khác nhau 20
hàng đợi quản lý hàng đợi dequeue DNS cache phân giản DNS socket không đồng bộ HTTP GET tải trang prefetch network switch web trích rút URL enqueue lưu trang storage switch cache cache kết thúc? luồng luồng quản lý luồng 21
3.2 Đ ộ bao ph ủ, đ ộ tươi và đ ộ quan trọng Máy tìm kiếm tập trung vào các nội dung quan trọng trên Internet Đ ộ quan trọng của trang web t ỉ l ệ với mức đ ộ ph ổ biến và được đánh giá dựa trên cấu trúc của web (indegree, PageRank) Do tính chất long-tail của Web, thuật toán duyệt theo chiều sâu c ơ bản có th ể thu thập được các nội dung quan trọng 22
Đ ể lấy mẫu các trang web theo phân phối uniform cần điều chỉnh xác suất thu thập sao cho không ph ụ thuộc vào mức đ ộ ph ổ biến VD: Kh ả năng chấp nhận trang web t ỉ l ệ nghịch với mức đ ộ ph ổ biến Pr(sample) = Pr(sample crawl) x Pr(crawl) Pr(crawl) ~ tần suất x/h f Pr(sample crawl) ~ 1 / f 23
2010: S ố trang được crawl bởi các máy tìm kiếm thương mại là ~106 S ố trang thực t ế trên web > 107 Web là một thực th ể động Nội dung: Các trang mới được tạo ra 8% hàng tuần trong đó 62% là nội dung mới Cấu trúc: 25% liên kết mới được hàng tuần 24
4. Crawler tập trung Crawler tập trung thu thập các trang web thuộc một ch ủ đ ề (category) nhất định theo mong muốn của người dùng VD: ng d ng cho các th m c web nh ứ ụ ư ụ ư Yahoo! Directory (dir.yahoo.com) hay Open Directory Project (dmoz.org) 25
Dựa trên phân loại trang B ộ phân loại được xây dựng dựa trên d ữ liệu huấn luyện là các trang lấy ra t ừ các ch ủ đ ề với ch ủ đ ề là nhãn lớp Có th ể s ử dụng b ộ phân loại NB Trang web mới p được đưa vào b ộ phân loại đ ể d ự đoán xác suất thuộc v ề các ch ủ đ ề c của trang mới p: Pr(c p) Với một tập các ch ủ đ ề được quan tâm c*, mức đ ộ liên quan của p đối với c, R(p): 26
Dựa trên phân loại trang (tiếp) Phân loại mềm : Đưa các trang web mới vào hàng đợi ưu tiên dựa trên mức đ ộ liên quan R(p) Phân loại cứng : Với mỗi trang p, xác định lớp lá (ch ủ đ ề không có ch ủ đ ề con) có xác suất cao nhất ĉ Nếu một lớp trên của ĉ nằm trong các ch ủ đ ề quan tâm c* thì lựa chọn trang p 27
Crawler tập trung-ng ữ cảnh Xác định khoảng cách giữa trang web mới với các trang liên quan dựa trên b ộ phân loại Một đ ồ th ị ng ữ cảnh chứa L lớp. Các trang nguồn thuộc lớp 0. Các trang tr ỏ đến các trang thuộc lớp 0 tạo thành lớp 1 Xây dựng tập đặc trưng: Chọn các văn bản thuộc lớp 0 (có th ể c ả lớp 1), thực hiện loại b ỏ t ừ dừng, stemming Tính điểm tf-idf dựa trên một tập văn bản web và lọc ra các t ừ có tf-idf cao nhất đưa và t ừ vựng V 28
Crawler tập trung-ng ữ cảnh (tiếp) Xây dựng b ộ phân loại cho mỗi tầng j ứng với lớp c j : Với mỗi t ừ w t trong V, tính Pr(w t c j ) dựa trên các văn bản thuộc lớp c j D ự đoán cho văn bản d i : Tính Pr(c j d i ) tương t ự thuật toán NB Xác định lớp c j có xác suất cao nhất l = 2 l = 1 l = 0 29
5. Crawler ch ủ đề Ch ủ đ ề: Miêu t ả bằng một s ố trang ví d ụ hoặc câu truy vấn Không có đ ủ ví d ụ đ ể xây dựng b ộ phân loại Cần tìm các văn bản liên quan đến ch ủ đề Ứng dụng: Tìm các nội dung cập nhật nhất Tìm thông tin v ề đối th ủ cạnh tranh (trong thông minh doanh nghiệp) 30
5.1 Quan h ệ liên kết - nội dung Gi ả thiết: Các trang web chứa đầu mối v ề nội dung của nhau Gi ả thiết phân cụm: Nếu trang web p 1 có nội dung tương t ự trang web p 2 và p 2 liên quan đến ch ủ đ ề c thì p 1 có kh ả năng cao liên quan đến c Mức đ ộ tương t ự của nội dung được đo bằng đ ộ đo tương t ự (vd cosine( p 1, p 2 )) trên không gian biểu diễn văn bản 31
Quan h ệ liên kết - nội dung Xây dựng hàm ph ụ thuộc của đ ộ tương t ự của hai trang web σ(p 1, p 2 ) vào khoảng cách liên kết giữa hai trang web δ(p 1, p 2 ) Gi ả thiết: Đ ộ tương t ự suy giảm theo khoảng cách theo hàm mũ Lấy 100 ch ủ đ ề trên Yahoo! Directory; thực hiện tìm kiếm theo chiều rộng Khoảng cách giữa hai trang web dựa trên BFS 32
Quan h ệ liên kết - nội dung (tiếp) 33
Quan h ệ đồng liên kết Nếu một trang p liên kết đến một s ố trang có chất lượng tốt, p có th ể là một hub và các liên kết đi của p có kh ả năng có chất lượng tốt Nếu một s ố trang có chất lượng tốt liên kết đến p, p và các trang liên kết đến nó có kh ả năng có chất lượng tốt Thách thức: Thu thập được các liên kết đến một trang Có th ể s ử dụng máy tìm kiếm 34
Quan h ệ đồng liên kết (tiếp) A C D lịch sử hàng đợi B chưa biết lịch sử hàng đợi chưa biết E G H lịch sử hàng đợi F chưa biết lịch sử hàng đợi I chưa biết 35
Quan h ệ đồng liên kết (tiếp) trong đó Pr(rel q (p) rel q (r) ^ δ(r, p) d) Pr(rel q (p)) rel q (p): trang p có liên quan đến ch ủ đ ề q δ(r, p): khoảng cách liên kết giữa r và p Nếu một trang p ở gần một trang r có liên quan đến ch ủ đ ề q thì p có kh ả năng liên quan đến q > 1 36
Quan h ệ đồng liên kết (tiếp) 37
Tương quan nội dung - cấu trúc Đo khoảng cách hai th ể loại dựa trên cấu trúc Open Directory Project So sánh h ệ s ố tương quan Pearson với khoảng cahs dựa trên liên kết và dựa trên nội dung 38
5.2 Nguyên tắc best-first Đưa các trang web vào hàng đợi ưu tiên, lựa chọn trang web có điểm cao nhất Điểm s ố: đ ộ tương đồng nội dung giữa trang web và ch ủ đề N-best-first: Lựa chọn n trang web có điểm cao nhất Cân bằng giữa khám phá và khai thác 39
N-best-first 40
6. Đánh giá S t : tập các trang thu thập được tại thời điểm t T θ : tập các trang liên quan R T (t, θ): đ ộ ph ủ (recall) P T (t, θ): đ ộ chính xác (precision) 41
D θ : Miêu t ả của văn bản đích σ(p, D θ ): đ ộ tương t ự giữa p và D θ 42
7. Vấn đ ề đạo đức và xung đột Thiết lập tần suất truy cập phù hợp đến server (vd 5 giây / yêu cầu) Tuân theo giao thức Robot Exclusion Protocol cho bên server định nghĩa Cung c p các thông tin cho server thông qua ấ nhãn crawler 43
8. Một s ố vấn đ ề nâng cao Crawler theo ch ủ đ ề có các ứng dụng nh ư các cổng thông tin Web đặc thù (máy tìm kiếm theo chiều dọc), crawling trực tiếp và thông minh cạnh tranh Các crawler hiện tại đi theo xu hướng phục v ụ người dùng ph ổ thông, cần có kh ả năng phân biệt các trang theo chất lượng nội dung đ ể phục v ụ các nhóm người dùng chuyên biệt 44
H ệ sinh thái tìm kiếm Web MÁY TÌM KIẾM NGƯỜI DÙNG / TÁC GIẢ CRAWLER 45
Các mạng xã hội chứa nhiều thông tin chia s ẻ và cá nhân hóa của người dùng, cần nâng cao kh ả năng thu thập các nội dung này Phát triển các máy tìm kiếm mini dành cho người dùng tận dụng sức mạnh của mạng ngang hàng. Hai thách thức kĩ thuật chính là crawler theo ch ủ đ ề và giải thuật điều hướng truy vấn 46
Q&A mailto: hieunk@soict.hust.edu.vn 47