Tải bản đầy đủ (.pdf) (33 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (676.26 KB, 33 trang )


BỘ 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

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 đượ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


ii
MỤ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



iii

MỞ ĐẦ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.




1
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ỷ 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


2
Search 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.


3
1.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 S
0
. Đầu tiên nó sắp xếp các phần tử trong tập S
0
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 đó.


4
- 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
địa chỉ của nó.
1.3.1.2 Mô hình Crawler
Crawler được thiết kế để có khả năng ghé thăm các trang theo
thứ tự các trang có mức độ quan trọng cao hơn thăm trước các trang
có hạng thấp hơn thăm sau. Bộ Crawler đánh giá các trang dựa vào giá
trị phân hạng. Từ sự đánh giá này Crawler biết được các trang có mức
độ 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 P
0
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ự R
1
,….R
k
trong đó R

1
là trang có thứ hạng cao nhất, lần lượt đến
R
2
,… . Gọi R
1
, …,R
K
là các trang hot. Trong số k trang được Crawler
ghé thăm chỉ có m trang (mk) sẽ được sắp thứ hạng cao hơn hoặc
bằng trang R
k

- 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.


5
- Độ đ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.

1.3.1.3 Page Refresh
Khi Crawler lựa chọn và tải về các trang “quan trọng”, sau một
khoảng thời gian nhất định nó phải thực hiện cập nhật các trang đó.
Có rất nhiều cách để cập nhật các trang web, và các cách khác nhau sẽ
cho các kết quả khác nhau. Sau đây là 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 cả các trang theo cùng một tần suất f.
+ Proportional refresh policy: Cập nhật theo tỷ lệ, một trang thường
xuyên thay đổi thì Crawler ghé thăm thường xuyên hơn. Để chính xác
hơn ta giả sử µ
i
là tần xuất thay đổi của trang e
i
, và f
i
là tần suất mà
Crawler ghé thăm lại trang e
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


6

đượ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={e
1
,…,e
n
} là tập hợp N trang đã được
Crawler tải về. Freshness được định nghĩa như sau:
freshness của trang e
i
tại thời điểm t là




1
0
),( t
i
eF
+ 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 e
i
tại thời điểm t là





0
),(
t
t
i
eA
Freshness và age của tập các trang cục bộ có thể thay đổi theo
thời gian. Do vậy chúng ta cần tính độ freshness trung bình trong một
khoảng thời gian dài và sử dụng giá trị này làm độ freshness của cả
tập hợp.
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 e
i
được cập nhật tại thời điểm t
Trong trường hợp ngược lại
N
ếu trang e
i
được cập nhật tại thời điểm t
(thời điểm chỉnh sửa trang e
i
) trong trường hợp còn lại



7
1.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


8
cá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.2.4 Chiến lược cập nhật
Việc thiết kế chiến lược cập nhật phụ thuộc vào tính chất của
Crawler. Có hai cách cấu trúc Crawler:
Batch-mode hoặc Steady Crawler: một Crawler kiểu batch-
mode được xử lý định kỳ mỗi tháng một lần, và cho phép duyệt một
số lần nhất định (hoặc đến khi toàn bộ các trang trong tập đích đã
được duyệt) sau đó Crawler dừng lại. Với bộ Crawler như trên thì kho
dữ liệu web được cập nhật trong một số ngày nhất định trong tháng.
Ngược lại, một bộ Crawler ổn định (steady Crawler) chạy liên tục, nó
liên tục cập nhật và bổ xung các trang mới cho Repository.
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ả


9
nộ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.
1.3.3.1 Các bước lập chỉ mục
Bước 1: Xác định các mục từ, khái niệm có khả năng đại diện
cho văn bản sẽ được lưu trữ.
Bước 2: Xác định trọng số cho từng mục từ, trọng số này là giá
trị phản ánh tầm quan trọng của mục từ đó trong văn bản
1.3.3.2 Xác định mục từ quan trọng
Ta xác định mục từ của một văn bản dựa vào chính nội dung
của văn bản đó, hoặc tiêu đề hay tóm tắt nội dung của văn bản đó.


10
Thô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
- tần số” (Rank_Frequency)
Các bước để xác định một mục từ quan trọng
+ Cho một tập hợp n tài liệu, thực hiện tính toán tần số xuất
hiện của các mục từ trong tài liệu đó.
Ký hiệu F
ik
(Frequency): là tần số xuất hiện của mục từ k
trong tài liệu i

+ Xác định tổng tần số xuất hiện TF
k
(Total Frequency) cho
mỗi từ bằng cách cộng những tần số của mỗi mục từ duy nhất
trên tất cả n tài liệu.



n
i
ikk
FTF
1

+ Sắp xếp các mục từ theo thứ tự giảm dần của tần số xuất
hiện. Chọn một giá trị làm ngưỡng và loại bỏ tất cả những từ
có tổng tần số xuất hiện cao hơn ngưỡng này (stop-word)
1.3.3.3 Tính trọng số của mục từ
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.


11
Ngượ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.


12
1.4 Search Engine điển hình
Trong những Search Engine hiện nay Goole là Search Engine tốt
nhất. Phần này sẽ giới thiệu về google.
1.4.1 Sự ra đời
Google được ra đời năm 1997 bởi hai thành viên sáng lập là
Larry Page và Sergey Brin.
1.4.2 Cấu trúc của máy tìm kiếm Google
Tổng quan về cấu trúc của máy tìm kiếm Google

Hình 1.6: Kiến trúc của máy tìm kiếm Google
Bộ tìm duyệt Crawler: Bộ phận Crawler của Google bao gồm

một số Crawler nhỏ phân bố ở một số địa điểm khác nhau. Máy chủ
URL có nhiệm vụ cung cấp các địa chỉ URL cho Crawler. Các trang
web tải về được chuyển vào kho dữ liệu (StoreServer). StoreServer


13
nén các trang web này lại và chuyển vào Repository. Mỗi trang web
có một chỉ số ID kết hợp hay còn gọi là docID. DocID được gán mỗi
khi có một URL mới được tách khỏi trang web.
Bộ đánh chỉ mục Indexer: Bộ này có chức năng lấy các tài liệu
trong kho Repository, giải nén và phân tích chúng để tạo chỉ mục.
Bộ xử lý URL Resolver: Đọc nội dung tệp neo và chuyển các
URL tương đối thành các URL tuyệt đối rồi thành các chỉ mục docID.
Đưa dòng văn bản liên kết của URL (anchor text) và docID của tài
liệu mà URL đó trỏ tới vào chỉ mục xuôi (forward index). URL
Resolver cũng tạo ra một cơ sở dữ liệu lưu trữ các liên kết chứa từng
cặp docID. Cơ sở dữ liệu này được sử dụng để tính hạng (PageRank)
cho tất cả các tài liệu.
Bộ Sorter: Lấy dữ liệu đã được sắp xếp theo thứ tự của docID
trong các Barrels và sắp xếp lại theo wordID để tạo ra chỉ mục ngược.
1.4.3 Cấu trúc dữ liệu chính
Cấu trúc dữ liệu của máy tìm kiếm Google được tối ưu hóa
sao cho số lượng các trang được duyệt, đánh chỉ mục, và được tìm
thấy là lớn nhất với chi phí thấp nhất. Mặc dù trong những năm gần
đây tốc độ của vi xử lý và tốc độ vào ra được cải thiện nhanh chóng
nhưng một lần tìm kiếm trên đĩa vẫn mất khoảng 10ms. Google được
thiết kế để tránh việc tìm kiếm đĩa bất cứ khi nào có thể. Và điều này
có ảnh hưởng đáng kể đến việc thiết kế cấu trúc dữ liệu.



14
Bigfiles là các file ảo mở rộng ra là hệ thống nhiều file và có
thể đánh địa chỉ được bằng 64 bit số nguyên.
Repository (kho chứa dữ liệu) chứa đầy đủ mã HTML của các
trang web đã được nén. Việc lựa chọn kỹ thuật nén phải dựa trên sự
cân đối giữa tốc độ và 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
về mỗi tài liệu bao gồm thông tin về trạng thái hiện hành của tài liệu
(Document status), con trỏ tới kho Repository, một thông số kiểm lỗi
Checksum, và nhiều thông số khác. Nếu tài liệu đã được duyệt
(crawled) thì DocID chứa thông tin về tài liệu đó (như địa chỉ URL,
tiêu đề title). Nếu tài liệu chưa được duyệt thì DocID chứa con trỏ đến
danh sách URL (URL list).
1.4.5 Danh mục từ Lexicon
Có một số loại danh mục từ khác nhau, trong đó có một kiểu
là danh mục từ có thể được chứa trong bộ nhớ với giá thành hợp lý.
Danh mục từ được chia thành hai phần một danh sách các từ và một
bảng băm của các con trỏ.
1.4.6 Các danh sách hit
Mỗi hit chứa các thông tin của một từ nào đó trong một tài liệu bao
gồm vị trí, font chữ, và viết hoa hay viết thường. Danh sách hit loại bỏ
hầu hết các khoảng trống trong cả chỉ mục xuôi và chỉ mục ngược.


15
Kích thước một danh sách hit được đặt ở đầu của chính các hit.
Để tiết kiệm không gian, độ dài của danh sách hit được kết hợp với
wordID trong chỉ mục xuôi và kết hợp với docID trong chỉ mục
ngược. Điều này giới hạn từ 5 đến 8 bit. Nếu độ dài của hit vượt quá

số bit này thì số bít này được dùng để chứa mã escape còn độ dài sẽ
được biểu diễn ở 2 byte tiếp theo.
1.4.7 Đánh chỉ mục cho web (indexing the web)
- Chỉ mục xuôi (Forward index) Được sắp xếp một phần. Nó
được lưu trữ trong một số Barrels. Mỗi Barrel chứa một dãy WordID.
Nếu một tài liệu chứa các từ có trong một Barrel nào đó thì DocID
được ghi vào trong Barrel đó, theo sau bởi một danh sách các WordID
với danh sách hit tương ứng với các 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 của việc tìm kiếm là cung cấp kết quả tìm kiếm chất
lượng và hiệu quả. Quá trình đánh giá truy vấn của Google như sau:
(1) Phân tích câu hỏi
(2) Chuyển các từ thành wordID
(3) Tìm mỗi từ trong tài liệu bắt đầu từ đầu danh sách tài liệu
doclist trong short barrel.
(4) Duyệt doclist cho tới khi có một tài liệu thỏa mãn tất cả
các điều kiện tìm kiếm.


16
(5) Tính hạng của tài liệu cho yêu cầu tìm kiếm.
(6) Nếu duyệt đến hết các doclist trong short barrel mà vấn
không thấy tài liệu thỏa mãn yêu cầu thì ta chuyển sang
tìm các doclist trong full barrel. Rồi quay về bước 4
(7) Nếu chúng ta không ở cuối của bất kỳ một doclist nào thì
chuyển sang bước 4 .
(8) Sắp xếp các tài liệu tìm thấy theo thứ hạng và trả về giá trị
top k.

Để giới hạn thời gian trả về kết quả, mỗi lần các tài liệu phù
hợp với yêu cầu được trả về, bộ tìm kiếm tự động chuyển đến bước 8.
Có nghĩa là có thể các kết quả tìm kiếm tối ưu phụ được trả về.
1.4.9 Hệ thống xếp hạng
Google lưu trữ nhiều thông tin về tài liệu web. Mỗi trang có các
thông tin như các URL trỏ đến trang đó, và các URL mà trang đó trỏ
đến. Việc xây dựng hàm xếp hạng sao cho không có bất kỳ một thông
tin nào có quá nhiều ảnh hưởng.
Hệ thống tìm kiếm Google có khả năng mở rộng. Google sử
dụng một số kỹ thuật như giải thuật phân hạng trang PageRank,
anchor text, và proximity để nâng cao chất lượng tìm kiếm.


17
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
Để một máy tìm kiếm họat động hiệu quả, ngoài kỹ thuật thu
thập thông tin và tạo chỉ mục cho thông tin, chúng ta cũng cần quan
tâm đến việc sử dụng các thuật toán tối ưu để tìm kiếm dữ liệu.
Dữ liệu trong máy tính được lưu trữ dưới rất nhiều dạng khác
nhau, nhưng phổ biến nhất vẫn là dạng chuỗi. Một phép toán cơ bản
trên chuỗi là đối sánh mẫu (pattern matching), bài toán yêu cầu ta tìm
ra một hoặc nhiều vị trí xuất hiện của mẫu trên một văn bản. Trong đó
mẫu có độ dài m và văn bản có độ dài n (m ≤ n), tập các ký tự được
dùng gọi là bảng chữ cái , có số lượng là .
Để tăng tốc độ tìm kiếm dữ liệu thì đối sánh đa mẫu được sử
dụng. Trong phương pháp đối sánh đơn mẫu thì tại một thời điểm chỉ
có một mẫu được đối sánh. Còn trong phương pháp đối sánh đa mẫu,
tại một thời điểm nhiều mẫu được đồng thời đối sánh.
Việc đối sánh mẫu diễn ra với nhiều lần thử trên các đoạn

khác nhau của văn bản. Trong đó cửa sổ là một chuỗi m ký tự liên tiếp
trên văn bản. Mỗi lần thử chương trình sẽ kiểm tra sự giống nhau giữa
mẫu với cửa sổ hiện thời. Tùy theo kết quả kiểm tra cửa sổ sẽ được
dịch đi sang phải trên văn bản cho lần thử tiếp theo.


18
2.1 Giới thiệu một số thuật toán đối sánh mẫu điển hình
2.1.1 Thuật toán Brute Force
- Tư tưởng: Thuật toán này thử kiểm tra tất cả các vị trí trên văn bản từ
1 cho đến n-m+1. Sau mỗi lần thử, mẫu được dịch sang bên phải một
ký tự cho đến khi kiểm tra hết văn bản.
- Thuật toán:
Function IsMatch (P, m, T, t): boolean;
Var i: integer;
Begin
IsMatch := false;
Dec(p);
for i := 1 to m do
if P[i] <> T[p + i] then Exit;
IsMatch := true;
End;
Procedure Brute_Force;
Var i: integer;
Begin
for i := 1 to n - m + 1 do
if IsMatch (P, m, T, i) then
Output(i); { Thông báo tìm thấy mẫu tại vị trí i của văn bản }
end;



19
Đánh giá thuật toán: Trường hợp xấu nhất là 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ự của chuỗi P với các ký tự tương ứng của chuỗi T. Số lần so sánh:
C
max
=m*(n-m+1). Thông thường m rất nhỏ so với n nên ta có thể coi
C
max
=m*n. Như vậy độ phức tạp thuật toán này là 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 trên thuật toán Brute
Force với ý tưởng tận dụng lại thông tin của 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 + 1 ky tự}
Next[i]:= j + 1
i := i + 1
j := j + 1
else if j > 0 then



20
{Xác định vị trí so khớp mới}
j := Next[j - 1]
else
{không khớp và j=0}
Next[i] := 0 ;
i :=i + 1;
End;
Mảng next có thể tính trước với chi phí về thời gian là O(m).
Thuật toán KMP có chi phí về thời gian là O(m+n) với nhiều nhất là
2n-1 lần so sánh ký tự trong quá 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 - 1
return i - j { so khớp }
else
i := i + 1;
j := j + 1;
else
if j > 0
j := Next[j - 1]
else
i := i + 1
return -1 { Không tìm thấy mẫu }

×