Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 33 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
33
Dung lượng
676,32 KB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TẬP ĐỒN BƯU CHÍNH VIỄN THƠNG VIỆT NAM HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THÔNG - NGUYỄN QUANG HUY NGHIÊN CỨU SEARCH ENGINE VÀ CÁC THUẬT TỐN ĐỐI SÁNH MẪU CHO HỆ THỐNG TÌM KIẾM THÔNG TIN TRÊN MẠNG CHUYÊN NGÀNH: TRUYỀN DỮ LIỆU VÀ MẠNG MÁY TÍNH MÃ SỐ: 60.48.15 TĨM TẮT LUẬN VĂN THẠC SĨ KỸ THUẬT HÀ NỘI - 2010 Luận văn hồn thành tại: Học viện Cơng nghệ Bưu Viễn thơng Tập đồn Bưu Viễn thơng Việt Nam Người hướng dẫn khoa học: TS PHẠM THẾ QUẾ Phản biện 1: Phản biện 2: Luận văn bảo vệ trước hội đồng chấm luận văn Học viện Cơng nghệ Bưu Viễn thơng Vào lúc: ngày tháng năm Có thể tìm hiểu luận văn tại: - Thư viện Học viện Cơng nghệ Bưu Viễn thơng ii MỤC LỤC MỤC LỤC ii MỞ ĐẦU iii CHƯƠNG 1: TỔNG QUAN VỀ SEARCH ENGINE 1.1 Giới thiệu chung 1.2 Phân loại: 1.2.1 Máy tìm kiếm thơng thường 1.2.2 Máy siêu tìm kiếm - Meta Search Engine 1.3 Mơ hình seach engine 1.3.1 Bộ tìm duyệt Crawler 1.3.2 Kho liệu Repository 1.3.3 Bộ lập mục Indexer 1.3.4 Phân hạng trang (Page Rank) 11 1.4 Search Engine điển hình 12 1.4.1 Sự đời 12 1.4.2 Cấu trúc máy tìm kiếm Google 12 1.4.3 Cấu trúc liệu 13 1.4.4 Document Index 14 1.4.5 Danh mục từ Lexicon 14 1.4.6 Các danh sách hit 14 1.4.7 Đánh mục cho web (indexing the web) 15 1.4.8 Tìm kiếm 15 1.4.9 Hệ thống xếp hạng 16 CHƯƠNG II: CÁC THUẬT TOÁN ĐỐI SÁNH MẪU CHO HỆ THỐNG TÌM KIẾM THƠNG TIN TRÊN MẠNG 17 2.1 Giới thiệu số thuật toán đối sánh mẫu điển hình 18 2.1.1 Thuật toán Brute Force 18 2.1.2 Thuật toán Knuth Morris Pratt 19 2.1.3 Thuật toán Boyer-Moore 21 2.2 So sánh thuật toán 22 CHƯƠNG III: THỬ NGHIỆM XÂY DỰNG MÁY TÌM KIẾM 23 3.1 Giới thiệu 23 3.2 Xây dựng cấu trúc liệu 23 3.2.1 Lớp Catalog 23 3.2.2 Lớp Word 23 3.2.3 Lớp File 24 3.3 Đặc tả chức chương trình 24 3.3.1 Mô tả chế hoạt động 24 3.3.2 Trang search.cs 25 3.3.3 Trang web.config 25 3.3.4 Trang Search_Crawler.aspx 25 3.3.5 Trang Search_Engine.aspx 25 KẾT LUẬN 27 KIẾN NGHỊ VÀ HƯỚNG NGHIÊN CỨU TIẾP THEO 28 iii MỞ ĐẦU Trong đời sống ngày nay, với phát triển nhanh chóng Internet, tài nguyên World-Wide-Web phong phú hữu ích sống cơng việc nhiều người khắp giới Tuy nhiên, để khai thác hiệu tài nguyên khổng lồ search engine cơng cụ khơng thể thiếu Để tìm kiếm thông tin mạng cần đơn giản truy cập vào trang tìm kiếm Google gõ vào từ khố cần tìm nhấn nút Sau khoảng thời gian ngắn danh sách trang web phù hợp với từ khóa trả theo thứ tự trang có nội dung gần với yêu cầu người sử dụng hiển thị đầu danh sách Cơng việc lại người sử dụng mở trang xem thơng tin Những trang có chức tìm kiếm cịn gọi máy tìm kiếm Search Engine Các Search Engine không đơn trang web với mã HTML đơn giản mà hệ thống gồm nhiều phận, phận thực chức dị tìm trang Internet, tải chúng về, phân hạng, lập mục, trả kết cho người sử dụng Do hữu ích cơng cụ tìm kiếm thơng tin Internet nên lựa chọn đề tài “Nghiên cứu Search Engine thuật toán đối sánh mẫu cho hệ thống tìm kiếm thơng tin mạng”, với mục đích nghiên cứu cấu trúc, chế hoạt động Search Engine, số thuật toán đối sánh mẫu Tiếp xây dựng máy tìm kiếm hoạt động theo chế chung Search Engine CHƯƠNG 1: TỔNG QUAN VỀ SEARCH ENGINE 1.1 Giới thiệu chung Máy tìm kiếm Search Engine nguyên thuỷ phần mềm nhằm tìm trang mạng Internet có nội dung theo yêu cầu người dùng dựa vào thông tin mà người sử dụng cung cấp qua từ khố tìm kiếm Máy tìm kiếm truy tìm sở liệu trả danh mục trang Web có chứa từ khố mà người sử dụng đưa vào ban đầu Thuật ngữ “Search Engine” dùng chung để hệ thống tìm kiếm: Một chương trình máy tính tự động tạo (Crawler-Based Search Engines) dạng thư mục Internet người quản lý (Human-Powered Directories) Hai hệ thống tìm kiếm tìm lập danh mục website theo cách khác Crawler-Based Search Engines: Các máy tìm kiếm loại chúng sử dụng chương trình máy tính, gọi Robots, Spiders, hay Crawlers để lần tìm trang mạng, tự động phân tích trang lấy đưa vào sở liệu Khi có u cầu tìm kiếm, Search Engine đối chiếu từ khóa cần tìm vào bảng mục trả thông tin lưu trữ tương ứng Các cỗ máy tìm kiếm loại có chế cập nhật nội dung web định kỳ để phát thay đối (nếu có) trang web Human-Powered Directories: thư mục Internet hoàn toàn phụ thuộc vào quản lý người Nếu người sử dụng muốn Search Engine tìm thấy trang web họ phải đăng ký vào thư mục cách gửi đăng ký đến ban biên tập Search Engine Ngày hầu hết hệ thống tìm kiếm tổng hợp hệ thống tìm kiếm tự động hệ thống tìm theo thư mục người dùng quản lý 1.2 Phân loại: Xét theo phương pháp tìm kiếm Search Engine chia làm hai loại chính: Tìm kiếm thơng thường siêu tìm kiếm 1.2.1 Máy tìm kiếm thơng thường Các máy tìm kiếm thơng thường thực cơng việc tìm kiếm theo qui trình thu thập tài liệu, phân loại tạo mục Chúng gồm hai loại, Search Engine sử dụng thư mục chủ đề Search Engine tạo mục tự động Các Search Engine sử dụng thư mục chủ đề phân lớp sẵn trang Internet vào thư mục chủ đề theo cấp chi tiết chủ đề 1.2.2 Máy siêu tìm kiếm - Meta Search Engine Meta Search Engine loại máy truy tìm ảo, hoạt động dựa tồn Search Engine sẵn có Các Meta Search Engine khơng có sở liệu riêng Khi có u cầu tìm kiếm máy siêu tìm kiếm gửi từ khóa đến Search Engine khác cách đồng loạt nhận kết tìm Nhiệm vụ cịn lại máy siêu tìm kiếm phân tích phân hạng lại kết tìm 1.3 Mơ hình seach engine 1.3.1 Bộ tìm duyệt Crawler Bộ tìm duyệt Crawler thu thập trang Internet chuyển cho đánh mục Indexer Crawler xuất phát từ tập URL ban đầu S0 Đầu tiên xếp phần tử tập S0 vào hàng đợi, sau lấy dần URL theo thứ tự tải trang tương ứng, Crawler trích tất URL có trang vừa tải lại đưa vào hàng đợi Quá trình tiếp tục Crawler định dừng lại Do số lượng trang tải lớn tốc độ thay đổi nhanh chóng Web nên xuất vấn đề cần giải quyết: - Lựa chọn trang để tải - Cách cập nhật trang: Crawler phải xem xét trang nên ghé thăm lại trang khơng - Song song hố q trình dị tìm trang web: Các Crawlers song song phải bố trí cách hợp lý cho Crawler không ghé thăm trang mà Crawler khác thăm 1.3.1.1 Page selection (lựa chọn trang) Bộ tìm duyệt Crawler tải trang theo thứ tự trang “quan trọng” tải trước Như ta phải tìm hiểu cách mà Crawler xác định mức độ quan trọng trang Cho trang web P, ta định nghĩa mức độ “quan trọng” trang P theo cách sau: - Interest Driven: phương pháp xác định mức độ quan trọng trang dựa vào mức độ quan tâm người sử dụng với trang - Popularity Driven: xác định mức độ quan trọng trang dựa vào mức độ phổ biến trang Một cách để định nghĩa độ phổ biến trang sử đếm số liên kết đến trang (số back link) - Location Driven: xác định mức độ quan trang P dựa vào địa 1.3.1.2 Mơ hình Crawler Crawler thiết kế để có khả ghé thăm trang theo thứ tự trang có mức độ quan trọng cao thăm trước trang có hạng thấp thăm sau Bộ Crawler đánh giá trang dựa vào giá trị phân hạng Từ đánh giá Crawler biết trang có mức độ quan trọng cao để lấy lần Để đánh giá chất lượng Crawler người ta định nghĩa độ đo chất lượng quality metric hai cách sau: - Crawl & stop: Bộ Crawler C xuất phát từ trang khởi đầu P0 dừng lại sau ghé thăm k trang, k số lượng trang mà Crawler tải lần duyệt Một Crawler tốt ghé thăm trang theo thứ tự R1,….Rk R1 trang có thứ hạng cao nhất, đến R2,… Gọi R1, …,RK trang hot Trong số k trang Crawler ghé thăm có m trang (mk) thứ hạng cao trang Rk - Crawl & Stop with Threshold: giả sử Crawler ghé thăm k trang Tuy nhiên lúc đích quan trọng G cho sẵn, trang có độ quan trọng lớn G coi trang hot - Độ đo thứ hạng (Ordering Metrics): Một Crawler lưu giữ URLs mà ghé thăm q trình dị tìm vào hàng đợi Sau lựa chọn URL hàng đợi cho lần ghé thăm Ở lần lựa chọn Crawler chọn URL u có giá trị Ordering cao để ghé thăm Độ đo thứ hạng (Ordering Metric) thiết lập dựa vào độ đo khác Ví dụ ta thực tìm trang có giá trị IB(P) cao, ta lấy giá trị IB’(P) làm độ đo thứ hạng, P trang mà trang u trỏ tới 1.3.1.3 Page Refresh Khi Crawler lựa chọn tải trang “quan trọng”, sau khoảng thời gian định phải thực cập nhật trang Có nhiều cách để cập nhật trang web, cách khác cho kết khác Sau hai cách: + Uniform refresh policy: Chiến lược cập nhật đồng loạt Crawler ghé thăm lại tất trang theo tần suất f + Proportional refresh policy: Cập nhật theo tỷ lệ, trang thường xuyên thay đổi Crawler ghé thăm thường xuyên Để xác ta giả sử µi tần xuất thay đổi trang ei, fi tần suất mà Crawler ghé thăm lại trang ei Crawler phải ước lượng µi trang để thiết lập chiến lược ghé thăm lại trang thích hợp Việc ước lượng dựa vào trình thay đổi trang trước mà Crawler ghi lại Độ đo cập nhật (freshness metric): Giả sử có hai tập trang web A, B tập gồm 20 trang, tập A có trung bình 10 trang cập nhật, tập B có 15 trang 14 Bigfiles file ảo mở rộng hệ thống nhiều file đánh địa 64 bit số nguyên Repository (kho chứa liệu) chứa đầy đủ mã HTML trang web nén Việc lựa chọn kỹ thuật nén phải dựa cân đối tốc độ tỷ lệ nén 1.4.4 Document Index Chỉ mục tài liệu (Document Index-DocID) lưu trữ thông tin tài liệu bao gồm thông tin trạng thái hành tài liệu (Document status), trỏ tới kho Repository, thông số kiểm lỗi Checksum, nhiều thông số khác Nếu tài liệu duyệt (crawled) DocID chứa thơng tin tài liệu (như địa URL, tiêu đề title) Nếu tài liệu chưa duyệt DocID chứa trỏ đến danh sách URL (URL list) 1.4.5 Danh mục từ Lexicon Có số loại danh mục từ khác nhau, có kiểu danh mục từ chứa nhớ với giá thành hợp lý Danh mục từ chia thành hai phần danh sách từ bảng băm trỏ 1.4.6 Các danh sách hit Mỗi hit chứa thông tin từ tài liệu bao gồm vị trí, font chữ, viết hoa hay viết thường Danh sách hit loại bỏ hầu hết khoảng trống mục xi mục ngược 15 Kích thước danh sách hit đặt đầu hit Để tiết kiệm khơng gian, độ dài danh sách hit kết hợp với wordID mục xuôi kết hợp với docID mục ngược Điều giới hạn từ đến bit Nếu độ dài hit vượt số bit số bít dùng để chứa mã escape độ dài biểu diễn byte 1.4.7 Đánh mục cho web (indexing the web) - Chỉ mục xuôi (Forward index) Được xếp phần Nó lưu trữ số Barrels Mỗi Barrel chứa dãy WordID Nếu tài liệu chứa từ có Barrel DocID ghi vào Barrel đó, theo sau danh sách WordID với danh sách hit tương ứng với từ - Chỉ mục ngược (Inverted index) - Phân tích cú pháp Parsing: 1.4.8 Tìm kiếm Mục tiêu việc tìm kiếm cung cấp kết tìm kiếm chất lượng hiệu Quá trình đánh giá truy vấn Google sau: (1) Phân tích câu hỏi (2) Chuyển từ thành wordID (3) Tìm từ tài liệu đầu danh sách tài liệu doclist short barrel (4) Duyệt doclist có tài liệu thỏa mãn tất điều kiện tìm kiếm 16 (5) Tính hạng tài liệu cho u cầu tìm kiếm (6) Nếu duyệt đến hết doclist short barrel mà vấn không thấy tài liệu thỏa mãn yêu cầu ta chuyển sang tìm doclist full barrel Rồi quay bước (7) Nếu khơng cuối doclist chuyển sang bước (8) Sắp xếp tài liệu tìm thấy theo thứ hạng trả giá trị top k Để giới hạn thời gian trả kết quả, lần tài liệu phù hợp với yêu cầu trả về, tìm kiếm tự động chuyển đến bước Có nghĩa kết tìm kiếm tối ưu phụ trả 1.4.9 Hệ thống xếp hạng Google lưu trữ nhiều thông tin tài liệu web Mỗi trang có thơng tin URL trỏ đến trang đó, URL mà trang trỏ đến Việc xây dựng hàm xếp hạng cho khơng có thơng tin có q nhiều ảnh hưởng Hệ thống tìm kiếm Google có khả mở rộng Google sử dụng số kỹ thuật giải thuật phân hạng trang PageRank, anchor text, proximity để nâng cao chất lượng tìm kiếm 17 CHƯƠNG II: CÁC THUẬT TỐN ĐỐI SÁNH MẪU CHO HỆ THỐNG TÌM KIẾM THƠNG TIN TRÊN MẠNG Để máy tìm kiếm họat động hiệu quả, ngồi kỹ thuật thu thập thơng tin tạo mục cho thông tin, cần quan tâm đến việc sử dụng thuật toán tối ưu để tìm kiếm liệu Dữ liệu máy tính lưu trữ nhiều dạng khác nhau, phổ biến dạng chuỗi Một phép toán chuỗi đối sánh mẫu (pattern matching), tốn u cầu ta tìm nhiều vị trí xuất mẫu văn Trong mẫu có độ dài m văn có độ dài n (m ≤ n), tập ký tự dùng gọi bảng chữ , có số lượng Để tăng tốc độ tìm kiếm liệu đối sánh đa mẫu sử dụng Trong phương pháp đối sánh đơn mẫu thời điểm có mẫu đối sánh Cịn phương pháp đối sánh đa mẫu, thời điểm nhiều mẫu đồng thời đối sánh Việc đối sánh mẫu diễn với nhiều lần thử đoạn khác văn Trong cửa sổ chuỗi m ký tự liên tiếp văn Mỗi lần thử chương trình kiểm tra giống mẫu với cửa sổ thời Tùy theo kết kiểm tra cửa sổ dịch sang phải văn cho lần thử 18 2.1 Giới thiệu số thuật toán đối sánh mẫu điển hình 2.1.1 Thuật tốn Brute Force - Tư tưởng: Thuật toán thử kiểm tra tất vị trí văn từ n-m+1 Sau lần thử, mẫu dịch sang bên phải ký tự kiểm tra hết văn - Thuật toán: Function IsMatch (P, m, T, t): boolean; Var i: integer; Begin IsMatch := false; Dec(p); for i := to m if P[i] T[p + i] then Exit; IsMatch := true; End; Procedure Brute_Force; Var i: integer; Begin for i := to n - m + if IsMatch (P, m, T, i) then Output(i); { Thơng báo tìm thấy mẫu vị trí i văn } end; 19 Đánh giá thuật tốn: Trường hợp xấu tìm đến hết chuỗi T mà khơng thấy Khi với n-m+1 vị trí tìm kiếm, ta phải so sánh m ký tự chuỗi P với ký tự tương ứng chuỗi T Số lần so sánh: Cmax=m*(n-m+1) Thông thường m nhỏ so với n nên ta coi Cmax=m*n Như độ phức tạp thuật toán O(m*n) 2.1.2 Thuật toán Knuth Morris Pratt - Tư tưởng: Thuật toán Knuth Morris Pratt dựa thuật tốn Brute Force với ý tưởng tận dụng lại thơng tin lần thử trước cho lần sau - Giải thuật: P: chuỗi mẫu T: chuỗi ban đầu + Giải thuật tính mảng next: Procedure InitNext; Begin Next[0]:= 0; i := 1; j := 0; while i < m if P[i] = P[j] {đã so khớp j + ky tự} Next[i]:= j + i := i + j := j + else if j > then 20 {Xác định vị trí so khớp mới} j := Next[j - 1] else {không khớp j=0} Next[i] := ; i :=i + 1; End; Mảng next tính trước với chi phí thời gian O(m) Thuật tốn KMP có chi phí thời gian O(m+n) với nhiều 2n-1 lần so sánh ký tự trình tìm kiếm +Giải thuật KMP: Procedure KMPMatch(T, P) i := 0; j := 0; while i < n if T[i] = P[j] if j = m - return i - j { so khớp } else i := i + 1; j := j + 1; else if j > j := Next[j - 1] else i := i + return -1 { Khơng tìm thấy mẫu } 21 2.1.3 Thuật tốn Boyer-Moore Thuật tốn Boyer Moore thuật tốn có tìm kiếm chuỗi có hiệu thực tiễn Thuật toán Boyer-Moore kiểm tra ký tự mẫu từ phải sang trái phát khác thuật toán tiến hành dịch cửa sổ : Cách thứ 1: Dịch cho phần so sánh lần trước khớp với phần giống lần sau Cách thứ 2: Coi ký tự không khớp văn b=T[j+i-1] ta dịch cho có ký tự giống b xâu mẫu khớp vào vị trí (nếu có nhiều vị trí xuất b xâu mẫu chọn vị trí phải nhất) - Giải thuật: Procedure Initskipt(P:string;m:integer; skip:array of ineteger); Var i:integer; Begin For i:=0 to len(alphabet) skip[i]:=m For j:=1 to m If skip(ord(P[j]))=m then Skip(ord(P[j])=m-j End if End; Procedure Boyermoore(P:string; m:integer; T:string; n:integer); Var i,j:integer; Begin InitSkip(P,m,skip); i:=n; j:=m; 22 Repeat If P[j]=T[i] then Begin i:=i-1; End Else j:=j-1; Begin If m-j+1>skip[ord(T[i])] then i:=i+m-j+1 Else i:=i+skip[ord(T[i])] j:=m; End; Until (jn); If j