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

Sử dụng đối sánh mẫu xấp xỉ và kỹ thuật chỉ mục cho tìm kiếm trong website

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 (1.71 MB, 79 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
----------------------------

NGUYỄN VĂN QUYẾT

SỬ DỤNG ĐỐI SÁNH MẪU XẤP XỈ
VÀ KỸ THUẬT CHỈ MỤC CHO TÌM KIẾM
TRONG WEBSITE

LUẬN VĂN THẠC SỸ KHOA HỌC
TOÁN ỨNG DỤNG

HÀ NỘI, 2016


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
----------------------------

NGUYỄN VĂN QUYẾT

SỬ DỤNG ĐỐI SÁNH MẪU XẤP XỈ
VÀ KỸ THUẬT CHỈ MỤC CHO TÌM KIẾM
TRONG WEBSITE
Chun ngành: Tốn ứng dụng
Mã số: 60.46.01.04

LUẬN VĂN THẠC SỸ KHOA HỌC
TOÁN ỨNG DỤNG


NGƢỜI HƢỚNG DẪN KHOA HỌC: TS. NGUYỄN THỊ THANH HUYỀN

HÀ NỘI, 2016


LỜI CAM ĐOAN
Tơi xin cam đoan đây là cơng trình nghiên cứu của riêng tôi và đƣợc sự
hƣớng dẫn của TS. Nguyễn Thị Thanh Huyền. Trong luận văn có sử dụng một số
nhận xét, đánh giá cũng nhƣ số liệu của các tác giả khác đều có trích dẫn và chú
thích nguồn gốc trong phần tài liệu tham khảo.
Nếu phát hiện có bất kỳ sự gian lận nào tơi xin hoàn toàn chịu trách nhiệm về
nội dung luận văn của mình.

Hà Nội, ngày 30 tháng 09 năm 2016
Tác giả

Nguyễn Văn Quyết

i


LỜI CẢM ƠN
Em xin gửi lời cảm ơn sâu sắc đến TS. Nguyễn Thị Thanh Huyền. Cơ là
ngƣời tận tình chỉ bảo và truyền các kinh nghiệm nghiên cứu khoa học trong suốt
quá trình thực hiện luận văn. Sự động viên tin tƣởng của Cơ là động lực chính để
em thực hiện và hoàn thành luận văn này.
Em xin đƣợc bày tỏ lịng biết ơn đến các thầy cơ trong Viện Toán ứng dụng
và Tin học, trƣờng đại học Bách Khoa Hà Nội đã dạy dỗ và giúp đỡ em trong suốt
quá trình học tập vừa qua.
Cuối cùng, em xin gửi lời cảm ơn chân thành tới gia đình, đồng nghiệp, bạn

bè và ngƣời thân đã tạo điều kiện thuận lợi, đóng góp ý kiến và động viên trong q
trình học tập cũng nhƣ thực hiện luận văn này.
Tuy bản thân đã có nhiều cố gắng nhƣng do điều kiện nghiên cứu hạn chế và
thời gian nên bản thân có thể cịn mắc nhiều thiếu sót trong luận văn. Tác giả trân
trọng các ý kiến đóng góp và nhận xét của tất cả ngƣời đọc để luận văn đƣợc hoàn
thiện.
Em xin chân thành cảm ơn !
Hà Nội, ngày 30 tháng 09 năm 2016

Nguyễn Văn Quyết

ii


MỤC LỤC
LỜI CAM ĐOAN ............................................................................................................ i
LỜI CẢM ƠN ................................................................................................................. ii
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ ........................................................................ vi
MỞ ĐẦU ....................................................................................................................... vii
Chƣơng 1. TỔNG QUAN ............................................................................................... 1
1.1. Tổng quan về vấn đề tìm kiếm và tìm kiếm trong một website ........................... 1
1.1.1. Vấn đề tìm kiếm và bài tốn đối sánh mẫu .................................................... 1
1.1.2. Tìm kiếm trong một website .......................................................................... 4
1.2. Sơ lƣợc về máy tìm kiếm ...................................................................................... 5
1.2.1. Giới thiệu chung về máy tìm kiếm ................................................................. 5
1.2.2. Phân loại máy tìm kiếm .................................................................................. 6
1.2.3. Mơ hình của một Search Engine .................................................................... 6
1.2.4. Search Engine điển hình ................................................................................. 8
1.3. Bài tốn đối sánh mẫu chính xác ........................................................................ 10
1.3.1. Bài tốn so đơn mẫu ..................................................................................... 10

1.3.2. Bài toán so đa mẫu ....................................................................................... 19
1.4. Tổng quan về vấn đề đối sánh mẫu xấp xỉ ......................................................... 25
1.4.1. Bài toán đối sánh mẫu xấp xỉ ....................................................................... 25
1.4.2. Các hàm khoảng cách kinh điển ................................................................... 27
1.4.3. Cách tiếp cận giải bài toán so mẫu xấp xỉ .................................................... 28
Chƣơng 2. MỘT SỐ THUẬT TOÁN ĐỐI SÁNH MẪU XẤP XỈ .............................. 30
2.1. Phát biểu bài toán ................................................................................................ 30
2.2. Bài tốn tìm kiếm dãy con chung dài nhất ......................................................... 30
2.2.1. Phát biểu bài toán ......................................................................................... 30
2.2.2. Ý tƣởng thuật tốn ........................................................................................ 30
2.2.3. Thuật tốn ..................................................................................................... 31
2.2.4. Ví dụ ............................................................................................................. 32
iii


2.2.5. Đánh giá thuật tốn....................................................................................... 33
2.3. Bài tốn tìm kiếm khoảng cách Levenshtein của hai xâu................................... 33
2.3.1. Phát biểu bài toán ......................................................................................... 33
2.3.2. Ý tƣởng thuật toán ........................................................................................ 33
2.3.3. Thuật tốn ..................................................................................................... 34
2.3.4. Ví dụ ............................................................................................................. 35
2.3.5. Đánh giá thuật toán....................................................................................... 35
2.4. Một thuật toán cơ bản kinh điển cho bài tốn tìm kiếm khúc con chung của
hai xâu ........................................................................................................................ 36
2.4.1. Phát biểu bài toán ......................................................................................... 36
2.4.2. Ý tƣởng thuật tốn ........................................................................................ 36
2.4.3. Thuật tốn ..................................................................................................... 37
2.4.4. Ví dụ ............................................................................................................. 37
2.4.5. Đánh giá thuật tốn....................................................................................... 38
2.5. Bài tốn tìm khúc con chung dài nhất tiếp cận theo otomat mờ ........................ 38

2.5.1. Phát biểu bài toán ......................................................................................... 38
2.5.2. Ý tƣởng thuật tốn ........................................................................................ 38
2.5.3. Otomat sánh mẫu: mơ hình và cơ sở toán học ............................................. 40
2.5.4. Thuật toán ..................................................................................................... 43
2.5.5. Đánh giá thuật tốn....................................................................................... 44
2.6. Bài tốn tìm khúc con chung dài nhất theo tiếp cận otomat mờ kết hợp
khoảng cách Levenshtein ........................................................................................... 46
2.6.1. Phát biểu bài toán ......................................................................................... 46
2.6.2. Ý tƣởng thuật toán ........................................................................................ 46
2.6.3. Thuật toán ..................................................................................................... 48
2.6.4. Đánh giá thuật tốn....................................................................................... 49
2.7. Cài đặt chƣơng trình mơ phỏng .......................................................................... 49
Chƣơng 3. KỸ THUẬT CHỈ MỤC TRONG CÁC CÔNG CỤ TÌM KIẾM ................ 53
3.1. Kỹ thuật lập chỉ mục trong cơ sở dữ liệu (database index) ................................ 53
3.1.1. Tổng quan về chỉ mục trong cơ sở dữ liệu ................................................... 53
iv


3.1.2. Ƣu điểm của chỉ mục trong cơ sở dữ liệu .................................................... 53
3.1.3. Kiến trúc và các phƣơng thức của chỉ mục .................................................. 54
3.1.4. Ứng dụng và hạn chế .................................................................................... 55
3.1.5. Các loại chỉ mục ........................................................................................... 56
3.2. Lập chỉ mục các website trong máy tìm kiếm (Web Indexing).......................... 57
3.3. Lập chỉ mục các webpage trong một website sử dụng web bots ........................ 57
3.3.1. Tổng quan về chỉ mục các webpage ............................................................. 57
3.3.2. Thiết kế và thực hiện các Web Bots ............................................................. 61
3.4. Các thƣ viện hỗ trợ việc đánh chỉ mục ............................................................... 62
3.4.1. Giới thiệu về Lucene .................................................................................... 63
3.4.2. Kiến trúc của Lucene .................................................................................... 64
3.4.3. Kiến trúc của File Index ............................................................................... 65

KẾT LUẬN ................................................................................................................... 67
1. Kết quả đạt đƣợc ................................................................................................. 67
2. Những hạn chế còn tồn tại .................................................................................. 67
3. Hƣớng phát triển tiếp theo .................................................................................. 67
TÀI LIỆU THAM KHẢO ............................................................................................. 68

v


DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ
Hình 1.2.1.Kiến trúc của Google Search Engine ........................................................8
Hình 1.3.1. Ý nghĩa của mảng next tại vị trí i trong thuật tốnKMP ........................12
Hình 1.3.2.Ý nghĩa của mảng next tại vị trí m+1 trong thuật tốn KMP .................12
Hình 1.3.3.good-suffix shift, trƣờng hợp u lại xuất hiện trong P (thuật tốn BM) ...15
Hình 1.3.4.good-suffix shift, trƣờng hợp chỉ suffix của u xuất hiện trong P (thuật tốn
BM)............................................................................................................................16
Hình 1.3.5.bad-character shift, a xuất hiện trong P(thuật tốn BM) .........................16
Hình 1.3.6.bad-character shift, a khơng xuất hiện trong P (thuật tốn BM) .............16
Hình 2.7.1.Giao diện ứng dụng mơ phỏng ................................................................50
Hình 2.7.2.Kết quả trả về của ứng dụng mơ phỏng ..................................................51
Hình 3.3.1.Ví dụ về Page Indexing ...........................................................................60
Hình 3.4.1.Kiến trúc của Lucene ..............................................................................64
Hình 3.4.2.Kiến trúc file index Lucene .....................................................................65
Hình 3.4.3.Chỉ mục đảo ngƣợc trong Lucene ...........................................................66

vi


MỞ ĐẦU
Trong thời đại ngày nay, với sự phát triển nhanh chóng của Internet - kho tài

nguyên hết sức phong phú và 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, mặt khác dữ liệu trên Internet cũng phát triển đa dạng và
khổng lồ. Do đó để khai thác một cách hiệu quả tài nguyên khổng lồ này thì vấn đề
tìm kiếm cũng nhƣ xây dựng các cơng cụ tìm kiếm nhanh chóng, chính xác trở
thành một vấn đề 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ƣ Bing, Google,… và gõ vào từ khóa cần tìm. Sau một khoảng
thời gian ngắn một danh sách các trang web có liên quan đến từ khóa sẽ đƣợc trả về
và sắp xếp theo thứ tự những trang có nội dung gần với yêu cầu của ngƣời dùng
nhất sẽ đƣợc hiển thị ở đầu danh sách. Ngƣời dùng chỉ cần truy cập vào các trang
web này và xem thơng tin, các trang có chức năng tìm kiếm nhƣ vậy đƣợc gọi là
máy tìm kiếm (search engine). Tuy nhiên, sẽ rất hữu ích khi bản thân một trang web
cũng có máy tìm kiếm nội bộ.
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 chọn
đề tài “Sử dụng đối sánh mẫu xấp xỉ và kỹ thuật chỉ mục cho tìm kiếm trong
website”với mục đích nghiên cứu, tìm hiểu cơ chế hoạt động cũng nhƣ các thuật
tốn tìm kiếm, các kỹ thuật tổ chức dữ liệu đƣợc sử dụng trong máy tìm kiếm để trả
về kết quả nhanh chóng nhất và đáp ứng nhu cầu ngƣời dùng một cách tốt nhất.
Nội dung nghiên cứu của đề tài bao gồm: Các thuật tốn đối sánh mẫu chính
xác, xấp xỉ; Cấu trúc, cơ chế hoạt động của một máy tìm kiếm; Kỹ thuật đánh chỉ
mục cho website gồm chỉ mục trong cơ sở dữ liệu, chỉ mục các website trong máy
tìm kiếm và chỉ mục các webpage của một website.
Nội dung của luận văn sẽ đƣợc tổ chức thành ba chƣơng nhƣ sau:

vii


Chƣơng 1 - “Tổng quan” sẽ trình bày về những nội dung cơ bản về vấn đề
tìm kiếm và tìm kiếm trong một website. Chƣơng này cũng mô tả cấu trúc, cơ chế
hoạt động của máy tìm kiếm cũng nhƣ một số thuật tốn đối sánh mẫu chính xác và

cách tiếp cận cho thuật toán đối sánh mẫu xấp xỉ.
Chƣơng 2 -“Một số thuật toán đối sánh mẫu xấp xỉ” sẽ dựa theo các cách
tiếp cận trình bày ở Chƣơng 1 để nêu ra một số khái niệm và thuật tốn đối sánh
mẫu xấp xỉ, cùng một chƣơng trình máy tính cài đặt một số thuật tốn đối sánh mẫu
nhằm mơ phỏng cho q trình tìm kiếm.
Chƣơng 3: “Kỹ thuật chỉ mục trong các cơng cụ tìm kiếm” tập trung
nghiên cứu về các kỹ thuật lập chỉ mục hiện nay và giới thiệu về các thƣ viện hỗ trợ
việc lập chỉ mục.

viii


Chƣơng 1. TỔNG QUAN
1.1. Tổng quan về vấn đề tìm kiếm và tìm kiếm trong một website

Ngày nay do sự phát triển nhanh chóng của cơng nghệ thơng tin cũng nhƣ Internet đã
sinh ra một khối lƣợng khổng lồ các dữ liệu dạng siêu văn bản. Trong các năm gần
đây, Internet đã trở thành một trong những kênh về khoa học, kinh tế, thƣơng mại
quảng cáo và mọi vấn đề trong xã hội, với khối lƣợng thông tin luôn tăng trƣởng
khơng ngừng. Từ đó đặt ra một vấn đề quan trọng, khơng thể thiếu, đó là tìm kiếm và
trích rút thơng tin. Để tổ chức một cơng cụ tìm kiếm tốt, phải giải quyết đƣợc hai vấn
đề có quan hệ mật thiết là: thuật tốn tìm kiếm tốt và chiến lƣợc tổ chức cơ sở dữ liệu
hiệu quả (chẳng hạn nhƣ kỹ thuật index) để hỗ trợ cho thuật toán tìm kiếm đó phát huy
đƣợc tối đa sức mạnh.
1.1.1. Vấn đề tìm kiếm và bài tốn đối sánh mẫu
Text là dạng biểu diễn dữ liệu hay gặp nhất trong các hệ thống thơng tin. Tìm kiếm
văn bản (text searching) là vấn đề chủ yếu thuộc lĩnh vực quản lý văn bản. Một dạng
cơ bản và tổng quát hơn là tìm kiếm chuỗi (hay xâu) (string seaching) hay đối sánh
chuỗi/ đối sánh xâu (string matching) hay có thể gọi ngắn gọn là so mẫu. Khái niệm
“chuỗi” ở đây khá rộng, có thể là chuỗi văn bản gồm một dãy các chữ, số và kí tự đặc

biệt, có thể là chuỗi nhị phân hay chuỗi gene,...Tìm kiếm chuỗi là bài tốn tìm ra một
mẫu (pattern) với một số đặc tính nào đó trong chuỗi các kí hiệu cho trƣớc, vì thế bài
tốn này còn đƣợc gọi là đối sánh xâu mẫu (string pattern matching). Dạng đơn giản
1


nhất là tìm sự xuất hiện một xâu cho trƣớc trong một chuỗi (còn gọi là xâu nguồn, xâu
vào – input string).
Thực ra đây là một trong những vấn đề cổ xƣa nhất và phổ dụng nhất của khoa
học máy tính, bởi hầu hết các ứng dụng đều địi hỏi có sự đối sánh chuỗi ở một dạng
nào đó. Các phƣơng pháp tìm kiếm văn bản và tìm kiếm chuỗi chính là cốt lõi trong rất
nhiều loại phần mềm khác nhau, nhƣ: các tiện ích hệ điều hành, các hệ thống trích rút
dữ liệu (data retrieval system), trình soạn thảo văn bản (text editors), máy tìm kiếm
(search engine) trên Internet, phân tích và tìm kiếm chuỗi gene trong sinh vật học, xử
lý ngôn ngữ tự nhiên, phần mềm cảnh báo và diệt virut, tìm kiếm text trong các hệ cơ
sở dữ liệu, ....
Do sự tăng trƣởng nhanh chóng của các hệ thống trích rút thơng tin và các hệ
thống sinh - tin học (computational biology), vấn đề đối sánh chuỗi càng trở nên quan
trọng và đƣợc quan tâm nhiều. Một lý do nữa, bởi con ngƣời ngày nay không chỉ đối
mặt với một lƣợng thơng tin khổng lồ mà cịn địi hỏi những u cầu tìm kiếm ngày
càng phức tạp. Các mẫu đƣa vào không chỉ đơn thuần là một xâu kí tự mà cịn có thể
chứa các kí tự thay thế (wild card), các khoảng cách (gaps) và các biểu thức chính qui
(regular expressions). Sự "tìm thấy" khơng chỉ đơn giản là xuất hiện chính xác mẫu mà
cịn cho phép có "một ít sai khác" giữa mẫu và xuất hiện của nó trong văn bản. Từ đó,
bên cạnh vấn đề kinh điển là “tìm kiếm chính xác”, nảy sinh một hƣớng nghiên cứu
hết sức thú vị là "tìm kiếm xấp xỉ" (approximate matching, approximate searching).
Đối với vấn đề đối sánh chuỗi đã có rất nhiều hƣớng tiếp cận giải quyết đƣợc đƣa
ra, từ những phƣơng án rất lý thuyết đến các phƣơng án rất thực dụng. Hƣớng nghiên
cứu lý thuyết đã nêu ra nhiều thuật toán quan trọng, song lại ít hiệu quả trong thực
hành. Rõ ràng, những ý tƣởng đơn giản thƣờng làm việc tốt hơn trong thực hành. Hai

ví dụ điển hình là thuật tốn nổi tiếng và kinh điển là Knuth-Morris-Pratt (KMP) và
Boyer-Moore (BM), song lại hạn chế trong thực hành do tốc độ cũng nhƣ sự phức tạp,
khó hiểu. Thuật tốn KMP bị đánh giá là q khó hiểu cịn trong họ các thuật tốn
BM, những thuật tốn thành cơng nhất trong thực hành cũng là những phiên bản đơn
giản hóa rất nhiều so với BM gốc [6]. Tuy nhiên, trong các tài liệu hiện nay chỉ giới
2


thiệu những thuật toán lý thuyết kinh điển ([1], [2], [14]), rất khó có thể tìm thấy
những ý tƣởng đơn giản hơn.
Cho đến nay, những thuật tốn mang tính thực hành còn khá mới, một số phát
triển còn quá mới để xuất hiện trong các tài liệu hay sách. Những thuật toán này
thƣờng dựa trên những kỹ thuật nhƣ cơ chế bit-parallelism [8], kỹ thuật bidirectional
index [7],… Nói chung, những kết quả đạt đƣợc trong lý thuyết là tách biệt với sự hiệu
quả trong thực tế. Những ngƣời nghiên cứu thuật toán thƣờng chú trọng đến việc đƣa
ra các thuật toán tốt nhất về độ phức tạp và đề cập đến những khái niệm thuật toán rắc
rối, trong khi các nhà phát triển hệ thống lại chỉ quan tâm đến những thuật toán đƣợc
đánh giá là nhanh về thực hành và dễ hiểu, dễ cài đặt. Một vài thuật toán kết hợp đƣợc
cả hai mặt lý thuyết và thực hành (nhƣ BNDM) [6], đƣợc đánh giá là nhanh và thiết
thực.
Một mảng rất thú vị là vấn đề tìm kiếm với mẫu mở rộng, tìm đa mẫu, tìm kiếm
xấp xỉ, song không nhiều kết quả liên quan đƣợc công bố và rất ít đƣợc trình bày trong
các sách. Tìm kiếm xấp xỉ luôn là một vấn đề mới mẻ và hiện nay đang đƣợc quan tâm
nhiều nhằm đƣa ra các cách tiếp cận, quan điểm “thế nào là xấp xỉ” cũng nhƣ các thuật
tốn giải quyết bài tốn.
Có thể phân loại các thuật toán đối sánh chuỗi theo 2 hƣớng. Thứ nhất là các
thuật tốn trực tuyến (on–line), trong đó chỉ mẫu đƣợc tiền xử lý (thƣờng sử dụng
otomat hoặc dựa trên các đặc tính kết hợp trên xâu), cịn văn bản thì khơng. Hiện nay
đã có nhiều thuật tốn tìm kiếm on–line tốt, độ phức tạp từ O(m*n) cho thời gian xấu
nhất đến tối ƣu là O((k + log|A|m)n/m) cho thời gian trung bình [5]. Thứ hai là giải

pháp tiền xử lý văn bản theo cách xây dựng một cấu trúc dữ liệu trên văn bản (lập chỉ
mục). Nhiều ứng dụng cần sử dụng giải pháp này mặc dù đã có những thuật tốn trực
tuyến nhanh bởi chúng phải điều khiển một lƣợng văn bản q lớn nên khơng có thuật
tốn trực tuyến nào có thể thực hiện một cách hiệu quả. Tìm kiếm trên chỉ mục
(indexed searching) thực ra cũng dựa trên tìm kiếm on-line.

3


Phân loại các thuật tốn tìm kiếm dựa trên đặc tính của mẫu ta có: so đơn mẫu, so
đa mẫu (mẫu là một tập các xâu), so mẫu mở rộng (extended strings), so biểu thức
chính qui (regular expressions) với 2 hƣớng tiếp cận là tìm kiếm chính xác và xấp xỉ.
1.1.2. Tìm kiếm trong một website
Máy tìm kiếm trên World Wide Web là một chƣơng trình truy xuất từ xa cho phép
ngƣời dùng tìm kiếm trên tồn bộ Internet. Hiện nay đã có vài loại máy tìm kiếm và
cung cấp khả năng tìm kiếm trên tiêu đề (titles) văn bản, URL's, headers, hoặc tồn
văn (full text). Khi khơng biết chính xác website nào chứa thơng tin cần tìm, ta thƣờng
sử dụng công cụ Google bằng cách đƣa vào cụm từ khóa. Tuy nhiên, đơi khi bản thân
một trang web cũng gặp vấn đề khi tìm kiếm nội bộ. Đối với phạm vi một website
chứa rất nhiều webpage, và có thể gồm cả những dữ liệu dạng bản ghi, cũng rất cần
một “máy tìm kiếm” riêng. Hiện nay, để tăng tiện ích cho ngƣời dùng, rất nhiều
website có hộp tìm kiếm cho phép tìm kiếm theo từ khóa đƣợc đƣa vào.
Một cách để tìm kiếm trong một website là sử dụng một thủ thuật của Google
nhƣ sau.
1.1.2.1. Phƣơng pháp tìm kiếm trong một website sử dụng Google Grammar
Trong khi tìm kiếm thơng tin, ngƣời dùng có thể chỉ cần chú ý thơng tin từ một
website nào đó, khơng cần chú ý đến các trang khác.Chúng ta có thể sử dụng từ khóa
theo cấu trúc site của Google để hạn chế kết quả tìm kiếm chỉ trong một website duy
nhất với cú pháp nhƣ sau: từ khóa cần tìm site:website cần tìm. Chú ý rằng khơng có
khoảng trống giữa site: và website cần tìm.Khơng cần sử dụng http:// hoặc https://

trong URL của website cần tìm.
Song để thực sự đáp ứng tốt nhu cầu của ngƣời dùng, sẽ rất hữu ích nếu website
có hộp tìm kiếm dựa trên một máy tìm kiếm đƣợc xây dựng riêng, có thể cung cấp
những tính năng tìm kiếm nâng cao, nhƣ tìm kiếm xấp xỉ, tìm kiếm đa mẫu,…

4


1.1.2.2. Các phƣơng pháp để đƣa một máy tìm kiếm lên website
Để đƣa một máy tìm kiếm cho phép tìm kiếm nội bộ trong một website, hiện nay có
một số phƣơng pháp nhƣ sau:
 Cài đặt riêng một chƣơng trình ứng dụng cho phép tìm kiếm, sau đó tích hợp
vào website. Thơng thƣờng các ngơn ngữ dễ tích hợp vào website nhƣ PHP,
Perl đƣợc sử dụng. Với cách này có thể chủ động đƣợc thuật toán, kết quả đầu
ra, các tính năng nâng cao hay tìm kiếm xấp xỉ giúp có thể chủ động đƣợc kết
quả đầu ra cũng nhƣ xây dựng bộ chỉ mục cho máy tìm kiếm dễ dàng.
 Tích hợp một máy tìm kiếm có sẵn, có thể là một máy tìm kiếm mã nguồn mở
free, hoặc bản thƣơng mại hoặc đơn giản là tích hợp các máy siêu tìm kiếm lớn
nhƣ Google, Ping, Yahoo,… Ví dụ nhƣ tích hợp bộ search của của Google lên
website của bạn một cách đơn giản sử dụng Search Google CES, với công cụ
này bạn chỉ cần đăng ký dịch vụ với Google và thực hiện nhập website cần tìm
kiếm. Google CES sẽ trả về một đoạn script để tích hợp vào website. Phƣơng
pháp này rất đơn giản nhƣng điểm yếu là đơi khi trả về kết quả khơng chính xác
và khơng tùy chỉnh đƣợc nhƣ máy tìm kiếm tự xây dựng.
1.2. Sơ lƣợc về máy tìm kiếm
1.2.1. Giới thiệu chung về máy tìm kiếm
Định nghĩa: Máy tìm kiếm (Search Engine) là một hệ thống đƣợc xây dựng nhằm tiếp
nhận các yêu cầu tìm kiếm của ngƣời dùng (thƣờng là một tập từ khóa) sau đó phân
tích u cầu này và tìm kiếm thơng tin trong cơ sở dữ liệu đƣợc tải xuống từ web và
trả về kết quả là các trang web có liên quan cho ngƣời dùng.

Máy tìm kiếm (Search Engine) nguyên thủy là một phần mềm nhằm tìm ra các
trang trên 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 dùng cung cấp qua từ khóa tìm kiếm. Máy tìm kiếm sẽ truy xuất trong CSDL
của nó và trả về danh mục các trang Web có chứa từ khóa mà ngƣời dùng cung cấp
ban đầu.

5


Máy tìm kiếm đƣợc dùng chung để mơ tả cho 2 hệ thống tìm kiếm: Một do
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 chỉ mục website theo 2 cách khác nhau.
 Crawler-Based Search Engines 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 Internet rồi tự động phân
tích các trang lấy về đồng thời đánh chỉ mục đƣa vào CSDL của nó. Khi có u
cầu tìm kiếm, Search Engine đối chiếu từ khóa với bảng chỉ mục và trả kết quả
tƣơng ứng. Có cơ chế cập nhật nội dung của web định kỳ.
 Human-Poweded 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 sử dụng phải đăng ký đến ban biên tập của Search
Engine.
1.2.2. Phân loại máy tìm kiếm
Xét theo phƣơng pháp tìm kiếm thì Search Engine đƣợc phân thành 2 loại: Máy tìm
kiếm thơng thƣờng và siêu tìm kiếm.
Máy tìm kiếm thơng thƣờng thực hiện cơng việc tìm kiếm theo quy trình thu
thập tài liệu, phân loại và tạo chỉ mục, gồm 2 loại: sử dụng thƣ mục chủ đề và tạo chỉ
mục tự động.
Máy siêu tìm kiếm: (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 có sẵn, khơng có CSDL riêng. Khi có u
cầu tìm kiếm, nó sẽ gửi từ khóa đến các Search Engine có sẵn và nhận các kết quả

đồng loạt. Nhiệm vụ của nó là phân tích và phân hạng lại kết quả tìm đƣợc.
1.2.3. Mơ hình của một Search Engine
 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 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

6


vừa tải về rồi lại đƣa vào hàng đợi. Quá trình tiếp tục cho đến khi Crawler quyết
định dừng lại. Một số vấn đề khi thực hiện crawler:
 Lựa chọn các trang tải về
 Cách cập nhật trang
 Song song hóa q trình dị tìm trang
 Kho dữ liệu Repository: là một hệ thống lƣu trữ có khả năng mở rộng, quản lý
một tập lớn các trang web. Nó thực hiện 2 chức năng chính:
 Cho phép Crawler lƣu trữ các trang web
 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
 Bộ lập chỉ mục Indexer: Các trang web đƣợc crawler tải về phải đƣợc xử lý
thích hợp trƣớc khi thực hiện tìm kiếm, tạo chỉ mục cho tài liệu. Module
Indexer và Collection Analysis có chức năng tạo ra nhiều loại chỉ mục khác
nhau.
Indexer tạo ra 2 loại chỉ mục chính là Text Index (chỉ mục nội dung) và Structure
Index (chỉ mục cấu trúc).
Collecction Analysis dựa vào 2 chỉ mục của Indexer để tạo ra các 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ạnh tƣơng ứng.

 Text Index: đánh chỉ mục dựa theo nội dung.
 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 tùy thuộc vào chức năng của bộ máy truy vấn và
kiểu thơng tin mà đã Ranking trƣớc đó.
 Phân hạng trang (Page Rank): Một phƣơng pháp nổi tiếng đƣợc Sergey Brin
và Lawrence Page để tính tốn hạng trang. Phƣơng pháp này dựa trên ý tƣở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, trang C
đƣợc ít trang “quan trọng” hơn trỏ đến thì trang B có độ quan trọng hơn trang C
7


1.2.4. Search Engine điển hình
Có nhiều Search Engine hiện nay nhƣ: Google, Yahoo, bing, ASPSeek,...Trong các
search engine hiện nay, google là search engine tốt nhất. Trong mục này sẽ giới thiệu
sơ qua về máy tìm kiếm Google.
Google ra đời năm 1977 do Larry Page và Sergey Brin sáng lập. Cấu trúc cơ
bản nhƣ sau (Hình 1.2.1):

Bộ Crawler

URL Server

Store Server

Anchor

URL
Resolver


Bộ chỉ mục
Indexer

Responsitory

Barrels
Lexicon

Links

Doc
Bộ Sorter

Index

Bộ tìm kiếm
Searcher

Pagerank

Hình 1.2.1.Kiến trúc của Google Search Engine

8


 Bộ tìm duyệt Crawler: là bao gồm nhiều crawler phân tán ở các địa điểm khác
nhau. Máy chủ URL có nhiệm vụ cung cấp địa chỉ URL cho Crawler.Các trang
web đƣợc tải về sau đó chuyển vào kho dữ liệu (Store Server). Store Server nén
các trang này lại và chuyển vào Respository. 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: lấy các tài liệu trong kho Respository, giải nén và
phân tích chúng để tạo chỉ mục.
 Bộ xử lý URL Resolver: có nhiệm vụ đọc nội dung tệp nén 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 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).Tạo ra một CSDL lƣu trữ các liên kết
chƣa từng cặp docID, đƣợc sử dụng để tính hạng (Page Rank) cho tất cả các
trang web.
 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 chỉ mục ngƣợc.
 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 Respository, 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 với crawler thì docID chứa thơng tin về tài liệu đó (ví dụ
nhƣ địa chỉ URL, title,...) Nếu tài liệu chƣa đƣợc duyệt thì docID chứa con trỏ
đến danh sách URL.
 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 chi phí hợp lý. Danh
mục từ đƣợc chia thành 2 phần: một phần danh sách các từ và một mảng băm
của các con trỏ.
 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à chữ hoa hay chữ 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.
9


 Đánh chỉ mục cho web (indexing the web): có 3 cách
 Chỉ mục xuôi (forward index).
 Chỉ mục ngƣợc (inverted index).

 Phân tích cú pháp Parsing.
 Bộ tìm kiếm Searcher: tn theo quy trình
 Phân tích câu hỏi.
 Chuyển các từ thành wordID.
 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.
 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.
 Tính hạng của tài liệu cho yêu cầu tìm kiếm.
 Nếu duyệt đến hết các doclist trong short barrel mà vẫn không tìm thấy
tài liệu thỏa mãn yêu cầu thì chuyển sang tìm các doclist trong full
barrel.
 Nếu duyệt tồn bộ các doclist mà khơng tìm thấy tài liệu thỏa mãn, đƣa
ra kết quả.
 Nếu có tài liệu thỏa mãn, 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.
 Hệ thống xếp hạng: Google sử dụng một số kỹ thuật phân hạng trang nhƣ
PageRank, anchor text, và proximity để nâng cao chất lƣợng tìm kiếm.
1.3. Bài tốn đối sánh mẫu chính xác
1.3.1. Bài tốn so đơn mẫu
Phát biểu bài toán: Cho xâu mẫu P độ dài m và xâu văn bản S độ dài n (mcùng một bảng chữ A. Tìm tất cả các vị trí xuất hiện của P trên S.

10


1.3.1.1. Thuật toán Brute Force
Ý tƣởng thuật toán ([1], [2], [14]): là thuật tốn tìm kiếm tuần tự, thử kiểm tra qua tất
cả các vị trí trên văn bản từ 1 đến n - m +1. Sau mỗi lần thử thuật toán Brute Force
dịch mẫu sang phải một ký tự cho đến khi kiểm tra hết văn bản.

Độ phức tạp tính tốn: O(n*m).
Thuật tốn đƣợc xây dựng đơn giản, với những văn bản lớn thì thuật tốn
khơng hiệu quả.
1.3.1.2. Thuật toán KMP
Thuật toán Knuth – Morris – Pratt ([2], [9], [14]) là thuật tốn có độ phức tạp tuyến
tính đầu tiên đƣợc phát hiện ra, nó dựa trên thuật tốn Brute Force với ý tƣởng đã biết
những thông tin của lần thử trƣớc cho lần thử sau. Trong thuật toán Brute Force vì chỉ
dịch chuyển sang một ký tự nên có đến m-1 ký tự tiếp theo mới nằm trong xâu P, trong
đó có thể có rất nhiều ký tự đã đƣợc so sánh giống với mẫu nhƣng lại ko đƣợc xét.
Việc xử lý những ký tự này có thể đƣợc tính tốn trƣớc rồi lƣu vào kết quả. Nhờ đó lần
thử sau có thể dịch chuyển đi đƣợc nhiều hơn 1 ký tự, giảm số ký tự phải so sánh.
Giả sử ta đang thử ở vị trí j trên xâu văn bản S, vị trí thứ i trên xâu mẫu P, ta đã
biết i-1 ký tự đầu của mẫu P đã khớp, việc khớp mẫu thất bại tại vị trí j trên S có nghĩa
là: P1P2…Pi-1 = Sj-i+1Sj-i+2…Sj-1 và Pi Sj. Khi đó nhƣ trong thuật tốn Brute Force ta
cần phải quay lại thử ở vị trí j-i, nhƣng trong KMP, nếu tồn tại h >0 sao cho h-1 ký tự
đầu của mẫu khớp với h-1 ký tự cuối của đoạn S(j-1), có nghĩa đã khớp với h-1 ký tự
cuối của P(i-1) thì ta có thể bỏ qua h-1 phép so sánh và tiếp tục so sánh 2 ký tự Ph và
Sj. Do h phụ thuộc vào i nên ta ký hiệu h = next(i), i=1,..,m.

11


j
S
i
P
?

P


h=next[i]
Hình 1.3.1. Ý nghĩa của mảng next tại vị trí i trong thuật toán KMP
Khi i>m ta đƣợc một xuất hiện của mẫu bắt đầu tại vị trí j-m trên S. Để tìm vị
trí xuất hiện tiếp theo, để tránh bỏ sót mẫu khi có mẫu xuất hiện lồng nhau, ta thử mẫu
ở vị trí sao cho h-1 ký tự đầu của mẫu khớp với h-1 ký tự cuối của S(j-1) hay là khớp
với h-1 ký tự cuối của P(m). Do đó cần mở rộng mảng next với i=m+1.
m

m+1

P
j
S
h = next[m+1]
?

P

Hình 1.3.2.Ý nghĩa của mảng next tại vị trí m+1 trong thuật tốn KMP
Nhƣ vậy, với mỗi vị trí i trên P, i = 1..,m+1, cần xác định xem next[i] thỏa mãn:
i)

next[i] là số h lớn nhất sao cho h-1 ký tự đầu của mẫu khớp với h-1 ký
tự cuối của P(i-1).

ii)

Pi Pnext[i].

12



Thuật toán:
// xay dung mang next
int[] initNext(String p, int m) {
int kmpNext[];
int i = 0;
int j = -1;
p = p + '#';
kmpNext = new int[m + 1];
kmpNext[0] = -1;
while (i < m) {
while ((j > -1) && (p.charAt(i) != p.charAt(j))) {
j = kmpNext[j];
}
i++;
j++;
if (p.charAt(i) == p.charAt(j)) {
kmpNext[i] = kmpNext[j];
} else {
kmpNext[i] = j;
}
}
return kmpNext;
}
// tim kiem voi KMP
int algorithmKMP(String p, String s){

13



int m = p.length();
int n = s.length();
int countKMP = 0;
int[]

kmpNext = initNext(p, m);

int i = 0;
int j = 0;
while (j < n) {
while (i > -1 && p.charAt(i) != s.charAt(j)) {
i = kmpNext[i];
}
i++;
j++;
if (i >= m) {
countKMP++;
}
}
return countKMP;
}

Đánh giá thuât tốn:
Xây dựng mảng next: O(m).
Tìm kiếm: O(m+n) với nhiều nhất là 2n -1 lần số lần so sánh ký tự trong quá trình tìm
kiếm.

14



1.3.1.3. Thuật toán Boyer Moore
Thuật toán Boyer Moore ([2], [9], [14]) là thuật tốn có tìm kiếm chuỗi rất hiệu quả
trong thực tiễn, các dạng văn bản khác nhau của thuật tốn này thƣờng đƣợc cài đặt
trong các trƣơng trình soạn thảo văn bản.
Thuật toán sẽ quét các ký tự của mẫu từ phải sang trái bắt đầu từ ký tự cuối
cùng. Trong trƣờng hợp so khớp thất bại (mis-match) hoặc là trƣờng hợp đã tìm đƣợc
1 đoạn khớp với mẫu, nó sẽ dùng 2 hàm đƣợc tính tốn trƣớc để dịch cửa sổ sang phải.
Hai hàm dịch chuyển này đƣợc gọi là good-suffix shift (phép dịch chuyển khớp) và
bad-character shift (phép dịch chuyển xuất hiện).
Giả sử trong quá trình so sánh ta gặp 1 mis-match tại vị trí Pi = a của mẫu và
Si+j= b trong khi đang thử khớp tại vị trí j. Khi đó Pi+1Pi+2....Pm-1 = Sj+i+1Sj+i+2…Sj+m-1
= u và Pi Si+j.
Phép dịch chuyển good-suffix shift sẽ dịch cửa sổ sang bên phải cho đến khi
gặp một ký tự khác với Pi trong trƣờng hợp đoạn u lại xuất hiện trong P. Nếu đoạn u
không xuất hiện lại trong P, mà chỉ một phần cuối (suffix) của u khớp với phần đầu
(prefix) của P, thì ta sẽ dịch 1 đoạn sao cho phần suffix dài nhất v của
Sj+i+1Sj+i+2…Sj+m-1 khớp với prefix của P.

S

P

b

u

a

u


a

P

shift

u

c
a

Hình 1.3.3.good-suffix shift, trường hợp u lại xuất hiện trong P (thuật toán BM)

15


×