Các Search Engine không chỉ đơn thuần là một trang web với các mã HTML đơn giản mà nó là cả một hệ thống gồm nhiều bộ phận, mỗi bộ phận thực hiện một chức năng như dò tìm các trang trên
Trang 1BỘ GIÁO DỤC VÀ ĐÀO
TẠO
TẬP ĐOÀ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 TOÁN ĐỐI SÁNH MẪU CHO HỆ THỐNG
TÌM KIẾM THÔNG TIN TRÊN MẠNG
Trang 2Luận văn được hoàn thành tại:
Học viện Công nghệ Bưu chính Viễn thông Tập đoàn Bưu chính 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 sẽ được bảo vệ trước hội đồng chấm luận văn tại Học viện Công nghệ Bưu chính Viễn thông Vào lúc: giờ 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 chính Viễn thông
Trang 3MỤC LỤC
MỤC LỤC ii
MỞ ĐẦU iii
CHƯƠNG 1: TỔNG QUAN VỀ SEARCH ENGINE 1
1.1 Giới thiệu chung 1
1.2 Phân loại: 2
1.2.1 Máy tìm kiếm thông thường 2
1.2.2 Máy siêu tìm kiếm - Meta Search Engine 2
1.3 Mô hình của seach engine 3
1.3.1 Bộ tìm duyệt Crawler 3
1.3.2 Kho dữ liệu Repository 7
1.3.3 Bộ lập chỉ mục Indexer 8
1.3.4 Phân hạng trang (Page Rank) 11
1.4 Search Engine điển hình 12
1.4.1 Sự ra đời 12
1.4.2 Cấu trúc của máy tìm kiếm Google 12
1.4.3 Cấu trúc dữ liệu chính 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 chỉ 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 một 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 các 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 dữ 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 năng của chương trình 24
3.3.1 Mô tả cơ 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
Trang 4MỞ ĐẦU
Trong đời sống ngày nay, với sự phát triển nhanh chóng của Internet, các tài nguyên trên World-Wide-Web hết sức phong phú và rất hữu ích đối với cuộc sống và công việc của nhiều người trên khắp thế giới Tuy nhiên,
để khai thác hiệu quả tài nguyên khổng lồ này search engine là một công cụ không thể thiếu
Để tìm kiếm một thông tin trên mạng chỉ cần đơn giản là truy cập vào một trang tìm kiếm như Google và gõ vào từ khoá cần tìm rồi nhấn nút Sau một khoảng thời gian rất ngắn một danh sách các trang web phù hợp với từ khóa sẽ được trả về và được sắp theo thứ tự những trang có nội dung gần với yêu cầu của người sử dụng nhất thì sẽ hiển thị ở đầu danh sách Công việc còn lại của người sử dụng là mở các trang này ra và xem thông tin Những trang có chức năng tìm kiếm như vậy chúng ta còn gọi là các máy tìm kiếm Search Engine Các Search Engine không chỉ đơn thuần là một trang web với các mã HTML đơn giản mà nó là cả một hệ thống gồm nhiều bộ phận, mỗi bộ phận thực hiện một chức năng như dò tìm các trang trên Internet, tải chúng về, phân hạng, lập chỉ mục, trả về kết quả cho người
sử dụng
Do sự hữu ích của các công cụ tìm kiếm thông tin trên Internet nên
tôi lựa chọn đề tài “Nghiên cứu Search Engine và 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”, với mục đích là
nghiên cứu cấu trúc, cơ chế hoạt động của một Search Engine, và một số thuật toán đối sánh mẫu Tiếp đó là xây dựng một máy tìm kiếm hoạt động theo cơ chế chung của một Search Engine
Trang 6CHƯƠ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ỷ là một phần mềm nhằm tìm ra các trang trên mạng Internet có nội dung theo yêu cầu người dùng dựa vào các thông tin mà người sử dụng cung cấp qua từ khoá tìm kiếm Máy tìm kiếm sẽ truy tìm trong cơ sở dữ liệu của nó và trả về danh mục các trang Web có chứa từ khoá mà người sử dụng đưa vào ban đầu
Thuật ngữ “Search Engine” được dùng chung để chỉ 2 hệ thống tìm kiếm: Một do các chương trình máy tính tự động tạo ra (Crawler-Based Search Engines) và dạng thư mục Internet do con người quản lý (Human-Powered Directories) Hai hệ thống tìm kiếm này tìm và lập danh mục website theo 2 cách khác nhau
Crawler-Based Search Engines: Các máy tìm kiếm loại này chúng sử dụng các chương trình máy tính, được gọi là Robots, Spiders, hay Crawlers để lần tìm các trang trên mạng, rồi tự động phân tích các trang lấy về và đưa vào cơ sở dữ liệu của nó Khi có một yêu cầu tìm kiếm, các Search Engine đối chiếu từ khóa cần tìm vào trong bảng chỉ mục và trả về các thông tin lưu trữ tương ứng Các cỗ máy tìm kiếm loại này có cơ chế cập nhật nội dung của web định kỳ để phát hiện sự thay đối (nếu có) của các trang web
Human-Powered Directories: các thư mục Internet hoàn toàn
phụ thuộc vào sự quản lý của con người Nếu người sử dụng muốn các
Trang 7Search Engine tìm thấy trang web của mình thì họ phải đăng ký vào thư mục bằng cách gửi bản đăng ký đến ban biên tập của Search Engine
Ngày nay hầu hết các hệ thống tìm kiếm đều là sự tổng hợp của hệ thống tìm kiếm tự động và hệ thống tìm theo thư mục do người dùng quản lý
1.2 Phân loại:
Xét theo phương pháp tìm kiếm thì các Search Engine được chia làm hai loại chính: Tìm kiếm thông thường và 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 hiện công việc tìm kiếm theo qui trình thu thập tài liệu, phân loại và tạo chỉ mục Chúng gồm hai loại, Search Engine sử dụng thư mục chủ đề và Search Engine tạo chỉ mục tự động
Các Search Engine sử dụng thư mục chủ đề phân lớp sẵn các trang trên Internet vào các thư mục chủ đề và theo các cấp chi tiết hơn
của chủ đề
1.2.2 Máy siêu tìm kiếm - Meta Search Engine
Meta Search Engine là loại máy truy tìm ảo, nó hoạt động dựa trên sự tồn tại của các Search Engine sẵn có Các Meta Search Engine không có cơ sở dữ liệu của riêng mình Khi có yêu cầu tìm kiếm máy siêu tìm kiếm sẽ gửi từ khóa đến các Search Engine khác một cách đồng loạt và nhận về các kết quả tìm được Nhiệm vụ còn lại của máy siêu tìm kiếm là phân tích và phân hạng lại các kết quả tìm được
Trang 81.3 Mô hình của seach engine
1.3.1 Bộ tìm duyệt Crawler
Bộ tìm duyệt Crawler thu thập các trang trên Internet rồi chuyển cho bộ đánh chỉ mục Indexer Crawler xuất phát từ tập các URL ban đầu S0 Đầu tiên nó sắp xếp các phần tử trong tập S0 vào một hàng đợi, sau đó lấy dần các URL theo thứ tự và tải về các trang tương ứng, Crawler trích tất cả các URL có trong các trang vừa tải về rồi lại đưa vào hàng đợi Quá trình trên tiếp tục cho đến khi Crawler quyết định dừng lại Do số lượng các trang tải về rất lớn và tốc độ thay đổi nhanh chóng của Web nên xuất hiện những vấn đề cần giải quyết:
- Lựa chọn các trang để tải về
- Cách cập nhật các trang: Crawler phải xem xét trang nào nên ghé thăm lại trang nào không
- Song song hoá quá trình dò tìm trang web: Các Crawlers song song phải được bố trí một cách hợp lý sao cho một Crawler không ghé thăm các trang mà một Crawler khác đã thăm
1.3.1.1 Page selection (lựa chọn các trang)
Bộ tìm duyệt Crawler tải về các trang theo thứ tự trang nào
“quan trọng” sẽ tải về trước Như vậy ta phải tìm hiểu cách mà Crawler xác định mức độ quan trọng của các trang
Cho một trang web P, ta định nghĩa mức độ “quan trọng” của trang P theo các cách sau:
- Interest Driven: là phương pháp xác định mức độ quan trọng của các
trang dựa vào mức độ quan tâm của người sử dụng với các trang đó
Trang 9- Popularity Driven: xác định mức độ quan trọng của một trang dựa
vào mức độ phổ biến của trang Một trong các cách để định nghĩa độ
phổ biến của trang là sử đếm số liên kết đến trang đó (số back link)
- Location Driven: xác định mức độ quan trong của trang P dựa vào
độ quan trọng cao hơn để lấy về trong lần kế tiếp Để đánh giá chất
lượng của Crawler người ta có thể định nghĩa độ đo chất lượng quality
metric của nó bằng một trong hai cách sau:
- Crawl & stop: Bộ Crawler C xuất phát từ trang khởi đầu P0 và dừng lại sau khi ghé thăm k trang, k là số lượng trang mà Crawler có thể tải
về trong một lần duyệt Một Crawler tốt sẽ ghé thăm các trang theo thứ tự R1,….Rk trong đó R1 là trang có thứ hạng cao nhất, lần lượt đến R2,… Gọi R1, …,RK là các trang hot Trong số k trang được Crawler ghé thăm chỉ có m trang (mk) sẽ được sắp thứ hạng cao hơn hoặc bằng trang Rk
- Crawl & Stop with Threshold: vẫn giả sử rằng bộ Crawler ghé thăm
k trang Tuy nhiên lúc này đích quan trọng G đã được cho sẵn, và bất
cứ trang nào có độ quan trọng lớn hơn G thì đều được coi là trang hot
Trang 10- Độ đo thứ hạng (Ordering Metrics): Một Crawler lưu giữ những
URLs mà nó đã ghé thăm trong quá trình dò tìm vào một hàng đợi Sau đó nó lựa chọn một URL trong hàng đợi cho lần ghé thăm tiếp
theo Ở mỗi lần lựa chọn thì Crawler chọn URL u có giá trị Ordering cao nhất để ghé thăm Độ đo thứ hạng (Ordering Metric) được thiết
lập dựa vào một trong các độ đo khác Ví dụ nếu ta đang thực hiện tìm những trang có giá trị IB(P) cao, thì ta sẽ lấy giá trị IB’(P) làm độ đo
thứ hạng, trong đó P là trang mà được trang u trỏ tới
Crawler phải ước lượng µi của mỗi trang để thiết lập chiến lược ghé thăm lại mỗi trang thích hợp Việc ước lượng này dựa vào quá trình thay đổi của trang trước đó mà Crawler đã ghi lại được
Độ đo cập nhật (freshness metric):
Giả sử có hai tập các trang web A, B mỗi tập gồm 20 trang, trong đó tập A có trung bình 10 trang được cập nhật, tập B có 15 trang
Trang 11được cập nhật Người ta nói rằng tập B “cập nhật” hơn (“fresher”) tập
A Thêm nữa nếu tập A được cập nhật một ngày trước đây, tập B được cập nhật một năm trước đây thì ta nói tập A hiện hành hơn (“more current”) tập B, dẫn đến khái niệm tuổi “age”:
Dựa trên khái niệm trực giác này chúng ta đưa ra định nghĩa
freshness và age như sau:
+ Freshness: Đặt S={e1,…,en} là tập hợp N trang đã được
Crawler tải về Freshness được định nghĩa như sau:
freshness của trang ei tại thời điểm t là
1 0 ) ,
i e F
+ Age: Để biết được “tuổi” của một tập chúng ta định nghĩa
khái niệm “age” như sau:
“age” của trang ei tại thời điểm t là
Chiến lược cập nhật Trong một khoảng thời gian nhất định
các Crawler chỉ có thể tải về hoặc cập nhật số lượng giới hạn các trang Tuỳ thuộc vào chiến lược cập nhật trang, nguồn download trang
sẽ được phân phối cho các trang khác nhau theo các cách khác nhau
Nếu trang ei được cập nhật tại thời điểm t Trong trường hợp ngược lại
Nếu trang ei được cập nhật tại thời điểm t (thời điểm chỉnh sửa trang ei) trong trường hợp còn lại
Trang 121.3.2 Kho dữ liệu Repository
Bộ phận page Repository là một hệ thống lưu trữ có khả năng mở rộng Hệ thống này quản lý một tập lớn các trang web Nó thực hiện hai chức năng chính: chức năng thứ nhất, cho phép Crawler lưu trữ các trang web Thứ hai, nó phải cung cấp API truy cập hiệu quả để bộ Indexer và bộ Collection Analysis có thể sử dụng để lấy các trang từ kho dữ liệu
1.3.2.1 Các yêu cầu đối với repository
- Một Repository quản lý một tập các đối tượng dữ liệu “data object” lớn
- Có khả năng mở rộng
- Có cách truy cập kép (dual access mode): Truy nhập ngẫu nhiên được sử dụng để nhanh chóng nhận về trang web và gán cho mỗi trang một định danh duy nhất Truy cập tuần tự được sử dụng để nhận về tập hợp hoàn chỉnh, hay vài tập hợp con lớn
- Cố thể cập nhật khối lượng lớn
- Loại bỏ những trang không còn tồn tại
- Kho dữ liệu được thiết kế phân tán (Distributed Repository)
1.3.2.2 Nguyên tắc phân tán trang
Các trang có thể được gán cho các nút dựa trên một số nguyên tắc khác nhau Như nguyên tắc phân tán đồng bộ (Uniform distribution), tất cả các nút được xử lý đồng nhất Một trang có thể được gán cho một nút bất kỳ trong hệ thống Các nút sẽ chứa các phần của tập hợp
Trang 13các trang tuỳ theo khả năng lưu trữ của nút Ngược lại, với cách phân tán băm (hash distribution) việc định vị các trang vào các nút dựa trên định danh của trang
1.3.2.3 Phương pháp tổ chức trang vật lý
Trong một nút đơn, có 3 thao tác có thể thực hiện: thêm trang/ chèn trang (page addition/insertion), truy cập tuần tự tốc độ cao, và truy cập ngẫu nhiên Cách tổ chức các trang theo kiểu vật lý tại mỗi nút chính là việc xem xét xem mức độ hỗ trợ mỗi thao tác trên của nút
1.3.3 Bộ lập chỉ mục Indexer
Các tài liệu tải về cần phải được xử lý thích hợp trước khi thực hiện việc tìm kiếm Việc sử dụng các từ khoá hay thuật ngữ để mô tả
Trang 14nội dung của tài liệu theo một khuôn dạng ngắn gọn hơn được gọi là tạo chỉ mục cho tài liệu
Modul Indexer và Collection Analysis có chức năng tạo ra nhiều
loại chỉ mục khác nhau Modul Indexer tạo ra hai loại chỉ mục chính
đó là chỉ mục Text Index (chỉ mục nội dung) và chỉ mục Structure
Index (chỉ mục liên kết) Dựa vào hai loại chỉ mục này bộ Collection
Analysis tạo ra nhiều loại chỉ mục hữu ích khác:
Link Index: tạo chỉ mục liên kết, các đoạn web đã duyệt được
biểu diễn dưới dạng đồ thị với các đỉnh và các cạnh
Text Index: Phương pháp đánh chỉ mục dựa theo nội dung
(text-based) là một phương pháp quan trọng để định danh các trang có liên quan đến yêu cầu tìm kiếm
Chỉ mục kết hợp: Số lượng và kiểu của các chỉ mục Utility
được quy định bởi bộ Collection Analysis tuỳ thuộc vào chức năng của bộ máy truy vấn và kiểu thông tin mà modul Ranking sử dụng
Trang 15Thông thường việc lập chỉ mục tự động bắt đầu bằng việc khảo sát tần số xuất hiện của từng loại từ riêng rẽ trong văn bản
Đặc trưng xuất hiện của từ vựng có thể được định bởi “thứ hạng
Trọng số của mục từ: là tần số xuất hiện của mục từ trong toàn
bộ tài liệu, những từ thường xuyên xuất hiện trong tất cả các tài liệu thì “ít có ý nghĩa hơn” là những từ chỉ tập trung trong một số tài liệu
Trang 16Ngược lại khi tần số xuất hiện của mục từ k trong tập tài liệu càng cao thì mục từ đó càng có ý nghĩa
Lập chỉ mục tự động cho tài liệu là xác định tự động mục từ chỉ mục cho các tài liệu Loại bỏ các từ stop-word vì những từ này có độ phân biệt kém và không thể sử dụng để xác định nội dung của tài liệu Bước tiếp theo là chuẩn hoá mục từ, tức là đưa mục từ về dạng nguyên gốc bằng cách loại bỏ tiền tố, hậu tố, và các biến thể khác của
từ như từ ở dạng số nhiều, quá khứ,
1.3.3.4 Cấu trúc của chỉ mục đảo
Sau khi phân tích các trang web, và thực hiện tách các từ, chuẩn hoá các từ về dạng nguyên gốc, loại bỏ các từ stop word Ta thu được một danh mục các từ mỗi từ được gắn kèm danh sách các trang chứa từ đó Danh mục này gọi là chỉ mục đảo (inverted index)
1.3.4 Phân hạng trang (Page Rank)
Sergey Brin và Lawrence Page đã đưa ra một phương pháp nhằm giúp cho công việc tính toán hạng trang Phương pháp này dựa trên ý tưởng rằng: nếu có liên kết từ trang A đến trang B thì đó là một sự tiến
cử của trang A đối với trang B Nếu trang B được nhiều trang “quan trọng” hơn trỏ đến, còn trang C nào đó được ít trang “quan trọng” trỏ đến thì B cũng có độ quan trọng hơn C Giả sử ta có một tập các trang Web với các liên kết giữa chúng, khi đó ta có một đồ thị với các đỉnh
là các trang Web và các cạnh là các liên kết giữa chúng