Tải bản đầy đủ (.doc) (98 trang)

xây dựng hệ thống focused crawler

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.2 MB, 98 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
──────── * ───────
ĐỒ ÁN
TỐT NGHIỆP ĐẠI HỌC
NGÀNH CÔNG NGHỆ THÔNG TIN
XÂY DỰNG HỆ THỐNG
FOCUSED CRAWLER
Sinh viên thực hiện : Dương Minh Sơn
Lớp : HTTT-K49
Giáo viên hướng dẫn : PGS.TS.Trần Đình Khang
HÀ NỘI 5-2009
Sinh viên thực hiện: Dương Minh Sơn-Khoá K49-Lớp HTTT 2
PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
1. Thông tin về sinh viên
Họ và tên sinh viên:Dương Minh Sơn
Điện thoại liên lạc :0976738243 Email:
Lớp: HTTT_B , K49 Hệ đào tạo: kỹ sư chính quy
Đồ án tốt nghiệp được thực hiện tại: Bộ môn các hệ thống thông tin
Thời gian làm ĐATN: Từ ngày 23/ 02 /2009 đến 10 / 06 /2009
2. Mục đích nội dung của ĐATN
• Xây dựng hệ thống Focused Crawler.
3. Các nhiệm vụ cụ thể của ĐATN
• Tìm hiểu kiến trúc tổng thể hệ thống Search Engine, Vertical Search Engine, Crawler,
Focused Crawler.
• Tìm hiểu các phương pháp xây dựng hệ thống Focused Crawler
• Phân tích ,thiết kế cài đặt một hoặc hai phương pháp xây dựng hệ thống và đánh giá
kết quả
4. Lời cam đoan của sinh viên:
Tôi – Dương Minh Sơn- cam kết ĐATN là công trình nghiên cứu của bản thân tôi dưới sự
hướng dẫn của PGS.TS.Trần Đình Khang


Các kết quả nêu trong ĐATN là trung thực, không phải là sao chép toàn văn của bất kỳ công
trình nào khác.
Hà Nội, ngày 25 tháng 5 năm 2009
Tác giả ĐATN
Dương Minh Sơn
5. Xác nhận của giáo viên hướng dẫn về mức độ hoàn thành của ĐATN và cho phép bảo vệ:
Hà Nội, ngày 26 tháng 5 năm 2009
Giáo viên hướng dẫn
PGS.TS.Trần Đình Khang
Sinh viên thực hiện: Dương Minh Sơn-Khoá K49-Lớp HTTT 1
TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP
Vertical Search Engine là một hệ thống Search Engine thực hiện việc tìm kiếm trên một miền
lĩnh vực hẹp. Thành phần trung tâm của nó là Focused Crawler. Nhiệm vụ của nó là tiến hành
thu thập các tài liệu trên internet liên quan hoặc thuộc về một miền lĩnh vực nào đó. Đồ án tốt
nghiệp gồm năm chương.
Chương một, trình bày một cách tổng thể về các hệ thống Search Engine, Vertical Search
Engine, Crawler, Focused Crawler. Giúp ta hiểu về nguyên lý hoạt động ,các thành phần của
các hệ thống trên.
Vấn đề mấu chốt của Focused Crawler là với một tài liệu d, một lĩnh vực t, hãy ước lượng giá
trị hàm liên quan giữa d và t : R(d,t) . Để làm được điều này ,trước hết ta cần một mô hình để
biểu diễn tài liệu và lĩnh vực. Chương hai, trình bày về mô hình không gian vector ,mô hình
hay sử dụng nhất hiện nay. Ngoài ra hệ thống Focused Crawler cũng như các hệ thống
Crawler khác được xây dựng trên cơ sở các giải thuật Crawling. Phần tiếp theo của chương hai
trình bày các giải thuật Crawling nổi tiếng nhất. Phần cuối cùng của chương này giới thiệu về
thư viện mã nguồn mở Nutch mà ta sẽ sử dụng để cài đặt hệ thống.
Trên cơ sở mô hình không gian vector, chương ba, trình bày hai phương pháp ước lượng giá
trị hàm R(d,t) dựa trên hàm tương tự (Similarity Function) và phân loại Bayes (Bayes
Classification). Đánh giá độ phức tạp tính toán, các vấn đề lưu trữ và cài đặt hai phương pháp
trên.
Chương bốn, nói tới việc phân tích ,thiết kế hệ thống Focused Crawler theo hướng cấu trúc.

Chương năm, trình bày tổng quan các phương pháp đánh giá một hệ thống Focused Crawler
và đánh giá hệ thống vừa cài đặt. Trong chương này chúng ta cũng đưa ra những kết luận cuối
cùng về bài toán mà đồ án giải quyết cũng như định hướng phát triển.
Sinh viên thực hiện: Dương Minh Sơn-Khoá K49-Lớp HTTT 2
ABSTRACT OF THESIS
Vertical Search Engine is a Search Engine which you can search for information about a
particular topic. The main component of Vertical Search Engine is Focused Crawler. Focused
Crawler is a robot, working in the Internet that retrieves the documents belonging to the topic.
Chapter one will present the architecture, principle of Search Engines, Vertical Search
Engines, Crawlers, Focused Crawlers.
The most important problem in developing a Focused Crawler is estimates the value of a
function: R(d,t) where d is a document and t is a topic. We need a model to present documents
and topics. So, chapter two will introduce the Vector Space Model, a famous model in
Information Retrieval. In this chapter, we also discuss about crawling algorithm. The last item
in this chapter is about Nutch, a java open source library for developing Search Engine.
By using Vector Space Model, chapter three will present two methods to estimates R(d,t). The
first method is based on Similarity Function and the second method is based on Bayes
Classification .We will also discuss about the complexity, implementation problem of the two
methods.
In chapter four, we will anaylize and design the system including functions, data structure.
The last chapter will present the evaluation method to evaluate a Focused Crawler. We will
evaluate the system which we implemented. This chapter will also make conclusions of the
problem we are solving and its development in future.
Sinh viên thực hiện: Dương Minh Sơn-Khoá K49-Lớp HTTT 3
Mục lục
Mục lục 4
Lời nói đầu 6
Chương 1.Giới thiệu 8
1.1. Hệ thống tìm kiếm tổng quát 8
1.1.1. Giới thiệu 8

1.1.2. Nguyên lý và kiến trúc của các hệ thống tìm kiếm 9
1.1.3. Thành phần Crawler 13
1.1.4. Các vấn đề khó khăn nhất khi xây dựng hệ thống tìm kiếm 15
1.2. Hệ thống tìm kiếm theo chiều sâu 15
1.2.1. Tại sao phải xây dựng hệ thống tìm kiếm theo chiều sâu 15
1.2.2. Nguyên lý và kiến trúc các hệ thống tìm kiếm theo chiều sâu 17
1.2.3. Thành phần Focused Crawler 17
Chương 2: Cơ sở lý thuyết 19
2.1. Các bước xử lý ngôn ngữ thông thường trong khi tìm kiếm 19
19
2.1.1. Loại bỏ các từ dừng (Stop Word) 19
2.1.2. Đưa một từ trở về từ gốc (Stemming) 19
2.2. Mô hình không gian vector 20
2.2.1. Mô hình không gian vector 20
2.2.2.Ứng dụng mô hình không gian vector trong các hệ thống tìm kiếm 23
2.3. Các giải thuật Crawling 28
2.3.1. Giới thiệu 28
2.3.2. Các độ đo 30
2.3.3. Các giải thuật Crawling 32
Ở đây ta có các cấu trúc dữ liệu sau : 35
2.3.4.Đánh giá các giải thuật Crawling 36
2.4. Thư viện mã nguồn mở Nutch 37
2.4.1. Giới thiệu Nutch 37
2.4.2. Kiến trúc của một hê thống tìm kiếm dựa Nutch 38
Chương 3: Xây dựng hệ thống Focused Crawler 45
3.1.Hướng tiếp cận thứ nhất 45
3.2. Hướng tiếp cận thứ hai 46
3.2.1. Xây dựng Focused Crawler dựa trên hàm tương tự 46
Sinh viên thực hiện: Dương Minh Sơn-Khoá K49-Lớp HTTT 4
3.2.2. Xây dựng Focused Crawler dựa trên định lý Bayes 53

Chương 4: Phân tích thiết kế hệ thống Focused Crawler 58
4.1. Phân tích hệ thống 59
4.1.1. Phân tích hệ thống về mặt chức năng 59
4.1.2. Phân tích hệ thống về mặt dữ liệu 65
4.2. Thiết kế hệ thống 67
4.2.1. Thiết kế dữ liệu 67
4.2.2. Thiết kế chương trình 72
Chương 5: Đánh giá kết quả 75
5.1. Các phương pháp đánh giá hệ thống Focused Crawler 75
5.1.1. Đánh giá giải thuật Crawling 76
5.1.2. Đánh giá việc phân loại tài liệu 78
5.2. Đánh giá hệ thống đã xây dựng được 81
5.2.1. Đánh giá giải thuật Crawling sử dụng 81
5.2.2. Đánh giá giải thuật phân loại tài liệu 82
5.3. Kết luận 88
Phụ lục 1: Danh mục các hình vẽ trong tài liệu 90
Phụ lục 2 : Danh sách các bảng trong tài liệu 92
Phụ lục 3: Danh sách các thuật ngữ tiếng Anh 93
Phụ lục 4: Một số website tìm kiếm theo chiều sâu hiện nay 94
Tài liệu tham khảo 95
Sinh viên thực hiện: Dương Minh Sơn-Khoá K49-Lớp HTTT 5
Lời nói đầu
Thông tin ngày càng có vai trò quan trọng trong cuộc sống. Đến đầu thế kỷ 21 đã xuất
hiện nền kinh tế tri thức coi tri thức, thông tin là đầu vào của nhiều công đoạn sản xuất.
Xuất hiện một bộ phận những người lao động tạo ra giá trị bằng cách phổ biến thông
tin. Đối với nhiều quốc gia, tổ chức, cá nhân, thông tin thực sự là một tài nguyên.
Từ những năm 60 của thế kỷ trước vấn đề khai thác và sử dụng thông tin hiệu quả đã
được đặt ra, và lúc này khi mạng Internet trở nên phổ biến trên toàn cầu nó càng trở
nên bức thiết hơn. Trong khai thác và sử dụng thông tin thì tìm kiếm thông tin là công
đoạn quan trọng nhất.Vì vậy một cách tất yếu con người cần có một hệ thống tìm kiếm

thông tin hiệu quả ,và cũng tất nhiên nó phải làm việc tốt trên môi trường Internet.Các
công cụ như vậy được gọi là Search Engine.Đến giữa những năm 90 đã xuất hiện
những hệ thống tìm kiếm đầu tiên Aliweb, sau đó là hàng lọat tên tuổi lớn Altavista
(1995) ; Google (1998) ; Yahoo! Search (2004) ; MSN Search (2005)…
Trong đồ án này em mong muốn tiếp cận và xây dựng thử nghiệm một hệ thống thu
thập thông tin tập trung (Focused Crawler),hạt nhân của một hệ thống tìm kiếm theo
chiều sâu (Vertical Search Engine).
Báo cáo bao gồm 5 phần :
• Chương 1: Giới thiêu: đề cập sự cần thiết và lí do ra đời của hệ thống,các
khái niệm liên quan, các hệ thống đang tồn tại.
• Chương 2: Cơ sở lý thuyết: đề cập phương pháp luận ,các mục kiến thức liên
quan để xây dựng hệ thống
• Chương 3: Các phương pháp xây dựng hệ thống Focused Crawler: trình bày
hai phương pháp cơ bản xây dựng hệ thống dựa trên mô hình không gian
vector
• Chương 4: Phân tích , thiết kế hệ thống: trình bày việc phân tích ,thiết kế hệ
thống theo hướng cấu trúc.
• Chương 5: Kết luận: trình bày các phương pháp đánh giá hệ thống Focused
Crawler, rồi sử dụng để đánh giá kết quả thu được
Do thời gian và kiến thức cũng như kinh nghiệm hạn chế, nên đồ án không tránh khỏi
thiếu sót .Kính mong được thầy cô góp ý, hướng dẫn thêm cho em hoàn thiện đồ án
hơn.
Sinh viên thực hiện: Dương Minh Sơn-Khoá K49-Lớp HTTT 6
Đồ án được hoàn thành dưới sự chỉ bảo và hướng dẫn tận tình của PGS.TS.Trần Đình
Khang. Với tư duy khoa học nhạy bén, và kinh nghiệm phong phú , thầy đã góp nhiều
ý kiến quý báu để chúng em lựa chọn những hướng tiếp cận và giải pháp phù hợp nhất.
Em cũng xin gửi lời cảm ơn tới các anh chị tại phòng nghiên cứu công ty cổ phần
A.N.Lab và đặc biệt là cá nhân anh Đinh Khắc Dũng ,trưởng phòng, đã tạo điều kiện
để em thực tập tốt nghiệp ,cài đặt ,và chạy thử hệ thống trên môi trường của công ty.
Sinh viên thực hiện: Dương Minh Sơn-Khoá K49-Lớp HTTT 7

Chương 1.Giới thiệu
1.1. Hệ thống tìm kiếm tổng quát
1.1.1. Giới thiệu
Trong bối cành hiện nay, người ta cho rằng thông tin là một tài nguyên quan trọng cho
đời sống kinh tế xã hội.Thông tin thực sự là đầu vào của nhiều ngành kinh tế đặc biệt là
những ngành công nghệ cao hoặc dịch vụ.Vì thế việc sử dụng và khai thác thông tin
sao cho hiệu quả nhất được đặt ra.
Trong khai thác và sử dụng thông tin thì hai quá trình quan trọng nhất là tìm kiếm và
sắp xếp.Phần lớn những thuật toán và công trình tiêu biểu về công nghệ thông tin đều
xoay quanh hai chủ đề này.
Sự ra đời của internet cũng dẫn đến hai đặc trưng cơ bản của thông tin hiện nay:
• Tốc độ ra tăng chóng mặt
• Tốc độ thay đổi chóng mặt
Loài người thực sự đứng trước vấn đề đã được đặt ra trước đó vài thập kỷ:”ngợp thông
tin”.Con người cần một công cụ có thể làm việc trên internet, tìm kiếm, tập hợp càng
nhiều thông tin càng tốt ,sau đó lưu trữ ,sắp xếp để sử dụng khi cần thiết. Đó chính là lí
do ra đời những hệ thống tìm kiếm tổng quát (All- Purpose Search Engine-APSE).
APSE đầu tiên ra đời là ALIWEB (Archie Like Indexing for the WEB ) của Martijn
Koster được giới thiệu vào tháng 11/1993.Sau đó là hàng loạt những tên tuổi lớn khác :
Altavista (1995) ; Google (1998) ; Yahoo! Search (2004) ; MSN Search (2005). Hiện
nay Google là tên tuổi số một ,chiếm khoảng 53% thị phần người dùng Internet tại Mỹ,
và là một trong các thương hiệu có giá trị nhất hành tinh.
Số tài liệu mà các công cụ tìm kiếm này lưu trữ cũng tăng lên tỉ lệ thuận với tốc độ thay đổi
transistor trên các chip điện tử theo định luật Moore: “Số lượng transistor trên mỗi đơn vị
inch vuông sẽ tăng lên gấp đôi sau 18 tháng”.Năm 1998 khi mới ra đời Google quản lý
số tài liệu cỡ
6
10
, mười năm sau 2008 họ thông báo rằng đang có số tài liệu lên tới
9

10
. Để có
thể lưu trữ, sắp xếp, và tìm kiếm trên số tài liệu khổng lồ đó những nhà phát triển không
những phải tiến hành xây dựng những giải thuật hiệu quả nhất mà cấu hình phần cứng của họ
Sinh viên thực hiện: Dương Minh Sơn-Khoá K49-Lớp HTTT 8
cũng không ngừng tăng lên tương ứng.Năm 2000 Google tuyên bố chuyển sang công nghệ
Google 2.0 , họ tiết lộ một vài chỉ số kĩ thuật của hệ thống Google 1.0:
• Cluster of PCs với hơn 6.000 bộ xử lý
• Hệ thống lưu trữ dùng RAID: có 12.000 đĩa cứng ~ 1petabyte (1triệu GB)
• 2 site ở Silicon Valley, 1site ở Virginia .Mỗi site được kết nối với Internet qua
OC48 (2488Mbps)
Cùng với hệ điều hành (Operating System), các hệ thống tìm kiếm là những hệ thống
tin học lớn nhất mà con người từng xây dựng, cũng là những hệ thống được sử dụng
nhiều nhất. Có ba lĩnh vực nghiên cứu liên quan mật thiết tới các hệ thống tìm kiếm:
• Information retrieval.
• Data mining đặc biệt là web mining.
• Natural language processing.
Tại Việt Nam, vào thời điểm mà tác giả viết báo cáo này, có không dưới 4 công cụ tìm
kiếm Tiếng Việt đang được đầu tư ,nghiên cứu và xây dựng. Đó là Socbay.com
,Xalo.vn, Zing.vn, Bamboo.com .Các hệ thống này đang lưu trữ cỡ
8
10
tài liệu tiếng
Việt. Động lực để các nhà đầu tư bỏ hàng triệu USD để xây dựng chúng là vì ở Hàn
Quốc và Trung Quốc các hệ thống tìm kiếm bản địa đã chiến thắng Google với lí do
chính là tập trung vào xử lý tiếng Hàn và tiếng Trung tốt hơn.
1.1.2. Nguyên lý và kiến trúc của các hệ thống tìm kiếm
1.1.2.1. Nguyên lý
Nguyên lý: tìm cách tải toàn bộ (phần lớn) các tài liệu hiện có trên internet về hệ thống
máy chủ, lập chỉ mục, sắp xếp, rồi tiến hành tìm kiếm trên hệ thống đã sắp xếp. Luôn

có ba thành phần cơ bản:
• Crawler (lấy các tài liệu về hệ thống lưu trữ )
• Indexer & Sorter (sắp xếp và lập chỉ mục)
• Searcher (phân tích câu truy vấn và tìm tài liệu liên quan, hiển thị kết quả tìm
kiếm).
Ở đây ta dùng từ “cơ bản” vì với những hệ thống lớn, phức tạp, còn có thêm nhiều
thành phần khác nữa như các bộ chịu lỗi, tính toán song song, bộ phận xử lý nâng cao
trên ngôn ngữ tự nhiên. Hơn nữa cách phân chia và đặt tên các thành phần cũng tuỳ
theo cách tiếp cận của một vài tác giả. Có những tác giả gộp hệ thống Sorter vào thành
phần Searcher.
Sinh viên thực hiện: Dương Minh Sơn-Khoá K49-Lớp HTTT 9
1.1.2.1. Kiến trúc
a. Kiến trúc
Ta sẽ nghiên cứu kiến trúc tổng thể của hệ thống tìm kiếm Google,APSE tiêu biểu nhất
hiện nay:
Hình 1.1: Kiến trúc tổng thể hệ thống tìm kiếm Google.
Quy trình làm việc của hệ thống và chức năng của từng thành phần có thể được diễn tả
như sau:
 URL server gửi cho Crawler (được tổ chức phân tán, làm việc song song) một
tập hợp các địa chỉ URLs.
 Các tài liệu (WebPages, hay Document) được Crawler tải xuống đưa vào Store
Server, tại đây chúng được nén lại theo chuẩn Zlib(RFC 1950) và lưu trữ vào hệ
thống lưu trữ tập trung Repository.
 Tại Repository, mỗi tài liệu được gán cho một số number : DocID
 Indexer đọc tài liệu từ Repository, giải nén và phân tích chúng
 Tài liệu sau đó được chuyển đổi sang một tập các từ khóa xuất hiện bên
trong nó gọi là Hits
Sinh viên thực hiện: Dương Minh Sơn-Khoá K49-Lớp HTTT 10
 Một hits là một bản ghi gồm: từ khóa,vị trí xuất hiện, font size, chữ hoa/thường.
 Indexer phân bổ các hits vào trong tập các kho chứa nhỏ hơn:Barrels

 Đồng thời nó cũng phân tích toàn bộ các đường link có trong mỗi trang và lưu
trữ các thông tin quan trọng vào AnchorsFile:text của link, link from, link to.
 URLresolver đọc AnchorsFile và chuyển đổi đường dẫn tương đối về tuyệt đối
và đưa chúng vào DocIDs.Chúng liên kết AnchorText với DocID mà nó trỏ
tới.Đổng thời cũng sản sinh Database link (lấy từng cặp của DocID)
 PageRank dựa vào DatabaseLink để tính Rank cho từng tài liệu theo công thức:
1
( )
( ) (1 )
( )
n
i
i
i
PR T
PR A d d
C T
=
= − +

(1.1)
Trong đó
• d là hằng số trong khoảng 0 tới 1.Google chọn d=0.85.

1 2
, , ,
n
T T T
là n trang trỏ tới A (có chứa link trỏ tới A)


1 2
( ), ( ), , ( )
n
C T C T C T
là số links đi ra từ
1 2
, , ,
n
T T T
 Sorter sắp xếp dữ liệu (hits) trong Barrels bởi DocID và sắp xếp lại bởi WordID
để tạo ra Inverted Index
 Bộ phận từ điển Lexicon lấy danh sách WordID tạo ra mục từ mới
 Searcher chạy bởi một WebServer sử dụng các từ điển đang có để tìm WordID
tương ứng từ đó tìm ra DocID
PageRank: Một trong những những nhược điểm của những APSE trước Google là kết
quả trả về không được sắp xếp chính xác và không làm hài lòng người dùng. Phần lớn
những nhà phát triển công nhận rằng: một tài liệu là “có giá trị” là một tài liệu được
tham chiếu từ nhiều tài liệu khác. Một kết quả trả về “tốt” nếu những tài liệu có giá trị
nhất được xếp lên trên. Như vậy mỗi trang cần có một chỉ số phản ảnh vị trí của nó trên
Internet, chỉ số đó là PageRank, công việc định PageRank trong những hệ thống tìm
kiếm là Ranking. Google đưa ra công thức tính PageRank như phần (a) đã giới thiệu.
Công thức này phản ánh rất chính xác giá trị của một tài liệu trên Internet và đủ “đơn
giản” để thời gian tính PageRank cho toàn bộ các trang lưu trên máy chủ là không quá
nhiều. Vào năm 1998 , Google thông báo rằng họ tính PageRank cho toàn bộ 26 triệu
tài liệu bằng một Server có hiệu năng trung bình trong vòng chỉ 4h đồng hồ.
b. Cấu trúc dữ liệu:
BigFiles: là một file ảo, được đánh địa chỉ 64-bit. Như vậy Google có thể quản lý tối đa
18
16.10
tài liệu.

Sinh viên thực hiện: Dương Minh Sơn-Khoá K49-Lớp HTTT 11
Packet : tại hệ thống lưu trữ Repository, mỗi tài liệu được nén theo chuẩn Zlib(RFC1950)
tạo ra những Packet.

Hình 1. 2: Packet data structure
DocumentIndex:
• Lưu trữ thông tin về mỗi tài liệu
• Sử dụng cấu trúc ISAM, sắp xếp bởi DocId
• Thông tin lưu trữ bao gồm :Status, Con trỏ tới tài liệu tương ứng trong
Repository, DocumentChecksum, Các chỉ số thống kê khác
Lexicon: Khi mới xây dựng từ điển của Google chứa khoảng 14 triệu từ vựng bao gồm
WordId, Text.
Hits list: Chứa thông tin về vị trí xuất hiện trong mỗi tài liệu, font, capital, compact
code.Gồm 2 loại chính : Fancy hits (có trong URL,title,anchor text, metatag) ,Plain
hits.
Hình 1. 3: hits data structure
Forward Index: chứa danh sách các từ mà một tài liệu chứa.
Sinh viên thực hiện: Dương Minh Sơn-Khoá K49-Lớp HTTT 12
sync length Compressed packet
sync length Compressed packet
Plain: Cap:1 Imp:3 Position:12
Fancy: Cap:1 Imp=7 Type:4 Position:8
Anchor: Cap:1 Imp=7 Type:4 Hash:4
Pos:4

Hình 1. 4: Forward index
Inverted index:chứa danh sách các tài liệu chứa một từ khoá

Hình 1. 5: Inverted index structure
1.1.3. Thành phần Crawler

1.1.3.1. Khái niệm
Tên gọi khác: Web crawler, web spider, Web robot, web scutter. Là một thành phần
của hệ thống tìm kiếm với nhiệm vụ: tìm đến, phân tích, tải về các trang web một cách
tự động theo một trình tự tối ưu.
Thường được dùng để thu lượm một lượng lớn dữ liệu trên internet dùng trong nhiều
mục đích khác nhau.Phần lớn những hệ thống webmining đều có một thành phần là
Crawler. Nói chung ta thấy rằng một hệ thống thông tin bao gồm dữ liệu và các xử lý
trên dữ liệu đó. Làm thế nào để có dữ liệu?Lúc đó người ta có thể nghĩ đến Crawler.
1.1.3.2. Kiến trúc
Sinh viên thực hiện: Dương Minh Sơn-Khoá K49-Lớp HTTT 13
docid wordid:24
wordid:24
null wordid
nhits:8
nhits:8
Hit hit hit hit
Hit hit hit hit
docid wordid:24
wordid:24
wordid:24
null wordid
nhits:8
nhits:8
nhits:8
Hit hit hit hit
Hit hit hit hit
Hit hit hit hit
docid:27
docid:27
docid:27

docid:27
nhits:5
nhits:5
nhits:5
nhits:5
Hit hit hit hit
Hit hit hit
Hit hit hit hit
Hit hit
spider, Web robot,web scutter.ttr
Hình 1. 6: Crawler’s architecture
Queue: Nhận danh sách địa chỉ cần phải Crawling,lưu trữ,chuẩn hóa nó và chuyển cho
Scheduler.
Scheduler:
• Xác định một thứ tự Crawling cho các địa chỉ (ordering)
• Phân bổ các địa chỉ cho hệ thống Crawler phân tán(distributing)
• Xác định thời gian để Re-crawling một địa chỉ
Crawling Policies: Để làm những nhiệm vụ này,Scheduler cần được xây dựng dựa trên
các chính sách:
• Selection Policies: xác định những địa chỉ nào cần được Crawling dựa trên
PageRank nếu nó đã có trên máy chủ, dựa trên Content (địa chỉ mới) …
• Re-visit Policies: xác định khoảng thời gian để hệ thống Crawling địa chỉ này
lần tiếp theo dựa trên PageRank, Content, ….
Sinh viên thực hiện: Dương Minh Sơn-Khoá K49-Lớp HTTT 14
• Politeness Policies: xác định những khu vực cấm Crawling: thông tin có giá trị
thương mại, có bản quyền… dựa trên giao thức robots exclusion protocol cho
phép quản trị của webserver cấu hình được khu vực nào Crawler không thể vào.
• Parallelization plicies: ho phép tổ chức Crawling song song và phân tán ra sao.
Các vấn đề khó khăn khi xây dựng Crawler:
• Số lượng khổng lồ các tài liệu cần được Crawling.

• Sự sản sinh một cách tự động các tài liệu HTML dựa trên các ngôn ngữ
ServerPages: ASP, JSP, PHP.
• Tốc độ thay đổi dữ liệu trên các tài liệu.
1.1.4. Các vấn đề khó khăn nhất khi xây dựng hệ thống tìm kiếm
Có thể nói rằng với những bộ thư viện sẵn có hiện nay thì việc xây dựng một APSE
không phải là điều quá khó đối với những nhà phát triển có kỹ năng tốt, song để xây
dựng được một sản phẩm có thể thương mại hóa được thì họ phải giải quyết những vấn
đề sau đây:
• Làm thế nào để quá trình Crawling có thể đến được mọi tài liệu trên internet
hoặc phần lớn số tài liệu hiện có.
• Tổ chức hệ thống Crawlers phân tán ra sao?
• Làm thế nào để lưu trữ toàn bộ các tài liệu tải về trên một số lượng lớn máy chủ
• Làm thế nào phục vụ cùng một lúc hàng triệu người
• Khi số lượng tài liệu quản lý ngày càng ra tăng làm thế nào để phân hoạch
chúng , loại bỏ những tài liệu tương tự ra khỏi hệ thống máy chủ
1.2. Hệ thống tìm kiếm theo chiều sâu
1.2.1. Tại sao phải xây dựng hệ thống tìm kiếm theo chiều sâu
Google là một công cụ tìm kiếm tốt, chứ chưa hẳn hoàn hảo. ”Tốt ” vì nó đủ “mạnh”
để tập hợp một lượng thông tin khổng lồ cỡ 9 tỉ tài liệu trên internet (số liệu năm 2008)
, đủ “nhanh” để có thể tìm kiếm một tài liệu trong 9 tỉ tài liệu này trong thời gian tính
bằng giây. Tuy nhiên Google chưa “hoàn hảo” vì nhiều lí do:
• Kết quả trả về của Google đôi khi là quá nhiều, mà phẩn lớn trong số đó người
dùng không sử dụng đến.
Ví dụ, khi một nha sỹ muốn tìm kiếm thông tin về ceramics ( một chất liệu làm
răng giả được dùng trong công việc của các nha sĩ ). Nếu nha sĩ đó thực hiện việc
Sinh viên thực hiện: Dương Minh Sơn-Khoá K49-Lớp HTTT 15
tìm kiếm trong Google, ông ta sẽ nhận về hàng triệu các kết quả (19 800 000 kết
quả ), nhưng trong đó hầu hết các trang web đầu tiên sẽ nói về các sở thích làm đồ
gốm ( vì ceramics cũng có nghĩa là một chất liệu làm đồ gồm ). Điều này không đáp
ứng được mong muốn của người dùng. Nhưng ngược lại, nếu nha sĩ đó thực hiện

việc tìm kiếm trong một vertical search engine : DentalProducts.net thì ông ta sẽ
nhận được 167 kết quả trong đó có nhiều kết quả liên quan đáp ứng được mong
muốn của mình.
• Hơn nữa Google đôi khi trả về những kết quả “nhập nhằng”
Ví dụ khi gõ từ khóa Bill Gates , 99 % người dùng mong muốn Google trả về cho
họ những đường link liên quan tới vị tỉ phú này, tuy nhiên lọt thỏm trong số đó lại
là những link liên quan tới một vài Bill Gates xa lạ nào đó (ví dụ ở Haiwail ).Cũng
có thể thấy điều này qua ví dụ về nha sĩ ở trên.Lí do đưa đến sự nhập nhằng này là
một từ khoá tìm kiếm có thể “đa nghĩa” nếu xét trên phương diện tổng quát, tuy
nhiên chiếu theo một miền lĩnh vực hẹp thì nó là đơn nghĩa.
• Google không thể phục vụ tốt cho từng loại đối tượng người dùng cụ thể.
Ví dụ một ông giáo sư sử học khi tìm kiếm chắc chắn mong muốn kết quả trả về
khác với một bà nội trợ khi tìm kiếm từ khóa: phở Hà Nội.
Theo các chuyên gia hàng đầu về lĩnh vực tìm kiếm, những điểm yếu trên là bất khả
kháng đối với những hệ thống tìm kiểm tổng quát vì nó rất “tham lam”, mong muốn
tập hợp càng nhiều tài liệu càng tốt, và sự tập hợp này không được chỉ hướng bởi
những mục đích rõ ràng.
Và đó là lí do những hệ thống tìm kiếm theo chiều sâu: (Vertical Search Engine- VSE
hay Focused Search Engine) ra đời. Hệ thống này nhằm mục đích tìm kiếm, sắp xếp
các tài liệu chỉ liên quan tới một hay một vài lĩnh vực hẹp nào đó. Đó rõ ràng là một sự
bổ sung tốt bên cạnh những hệ thống APSE đã có.
Khái niệm: Hệ thống tìm kiếm chuyên sâu (Focused Search Engine hay Vertical
Search Engine -VSE) là một hệ thống tìm kiếm thông tin trên internet về một lĩnh vực
hẹp hoặc một số lĩnh vực hẹp xác định.
Hiện nay những VSE đã xuất hiện rải rác đâu đó, như những site chuyên tìm kiếm phần
mềm, tìm kiếm thông tin trên wikipedia … tuy nhiên chưa có những kết quả đáng kể
như là một phương pháp luận , kiến trúc tổng quan nào đó để những nhà phát triển xây
Sinh viên thực hiện: Dương Minh Sơn-Khoá K49-Lớp HTTT 16
dựng những hệ thống VSE khác.Vì vậy đây là một lĩnh vự hứa hẹn trong những năm
tới.

Những ưu điểm của VSE:
• Tập trung vào một lĩnh vực cụ thể, nên số lượng tài liệu phải quản lý ít hơn,
giảm thời gian crawling, indexing, searching. Cũng vì thế cấu hình và chi phí
phần cứng giảm đi, yêu cầu băng thông và tốc độ đường truyền cũng giảm đáng
kế.Chi phí để xây dựng và vận hành một hệ thống VSE tất nhiên cũng nhỏ hơn
APSE.
• Tập trung vào một lĩnh vực cụ thể nên đáp ứng tốt những loại đối tượng người
dùng cụ thể ,giảm sự nhập nhằng , đa nghĩa khi tìm kiếm.
1.2.2. Nguyên lý và kiến trúc các hệ thống tìm kiếm theo chiều sâu.
1.2.2.1. Nguyên lý
Nguyên lý : tìm cách tải toàn bộ (phần lớn) các tài liệu hiện có trên internet thuộc một hoặc
một vài lĩnh vực hẹp xác định trước về hệ thống máy chủ, lập chỉ mục, sắp xếp, rồi tiến hành
tìm kiếm trên hệ thống đã sắp xếp.
1.2.2.2. Kiến trúc
Từ khái niệm và nguyên lý xây dựng ta thấy rằng về cơ bản hệ thống VSE có kiến trúc
và hoạt động gần giống với APSE. Khác biệt lớn nhất của VSE là hệ thống Crawler
thông thường được thay thế bởi Focused Crawler.Thay vì crawling toàn bộ hoặc bất kỳ
tài liệu nào ,Focused Crawler chỉ quan tâm tới các tài liệu thuộc lĩnh vực hẹp mà thôi
1.2.3. Thành phần Focused Crawler
1.2.3.1. Khái niệm
Focused Crawler là các hệ thống Crawler thực hiện việc tìm đến, phân tích và tải về
các tài liệu “liên quan” tới một lĩnh vực hẹp hoặc một vài lĩnh vực hẹp nào đó.
Hai cách tiếp cận chủ yếu khi xây dựng hệ thống Focused Crawler:
• Chỉ download những tài liệu thuộc lĩnh vực
• Download toàn bộ, sau đó xử lý để loại đi những tài liệu không thuộc hoặc
không liên quan tới lĩnh vực.
Cách tiếp cận thứ nhất được lợi thế dung lượng lưu trữ của hệ thống máy chủ giảm
đáng kể, nhưng bù lại đòi hỏi thời gian để “dự đoán ” rằng tài liệu này có “liên quan
Sinh viên thực hiện: Dương Minh Sơn-Khoá K49-Lớp HTTT 17
hay không ?” và ẩn chứa nguy cơ sai số .Cách làm phổ biến trong các nghiên cứu gần

đây là dựa vào text chứa trong link của tài liệu và đồ thị link có sẵn trên hệ thống lưu
trữ.
Cách tiếp cận thứ hai được lợi thế về tốc độ download, nhưng lại đòi hỏi dung lượng
lưu trữ lớn, và thời gian xử lý sau đó.Thông thường việc xử lý này dựa vào nội dung
của tài liệu tải về.
1.2.3.2. Kiến trúc
Hình 1.7: Kiến trúc của Focused Crawler theo cách tiếp cận thứ nhất
Thành phần khác biệt lớn nhất của một hệ thống Focused Crawler so với các hệ thống
Crawler bình thường khác chính là bộ decision-maker. Nhiệm vụ của bộ phận này là
xác định xem một link theo cách tiếp cận 1 hay mộ tài liệu theo cách tiếp cận 2 có
thuộc lĩnh vực hay không.Ngoài ra toàn bộ nguyên lý và cách thức hoạt động của
Focused Crawler hoàn toàn giống với Crawler thông thường
Sinh viên thực hiện: Dương Minh Sơn-Khoá K49-Lớp HTTT 18
Chương 2: Cơ sở lý thuyết
2.1. Các bước xử lý ngôn ngữ thông thường trong khi tìm kiếm

2.1.1. Loại bỏ các từ dừng (Stop Word)
Thông thường một tài liệu, trước khi được lưu trữ và lập chỉ mục trong các hệ thống
tìm kiếm bao giờ cũng phải trải qua những bước tiền xử lý .Mục đích của nó là đưa tài
liệu về một dạng mang nhiều thông tin hơn, đơn giản hơn, tiện cho các quá trình xử lý
sau này.
Khi nghiên cứu ngôn ngữ, các nhà nghiên cứu để ý thấy có những từ xuất hiện rất
nhiều trong các tài liệu, nhưng bản thân nó không mang nghĩa. Vì xuất hiện hầu hết
trong mọi tài liệu nên nó không thể dùng để phân biệt tài liệu này với tài liệu khác, hơn
nữa tần suất xuất hiện quá lớn trong các tài liệu của nó làm các quá trình tính toán liên
quan trở nên cồng kềnh.
Vì vậy người ta nghĩ đến việc loại bỏ nó ra khỏi quá trình xử lý sau này . Các từ này được gọi
là từ dừng (Stop word). Mỗi một ngôn ngữ có một tập hợp các từ dừng khác nhau, ví dụ tiếng
Anh là các từ “a”,”an”,”the”,” in”,”on”………….
Nói chung trong quá trình xử lý ngôn ngữ việc loại bỏ các từ loại này là khá đơn giản,

chương trình chỉ cần căn cứ vào một tập các từ dừng được định nghĩa trước và thực
hiện một vòng lặp đi qua tất cả từ khoá trong văn bản.
2.1.2. Đưa một từ trở về từ gốc (Stemming)
Không những phải loại bỏ các từ mang ít thông tin, người ta thấy rằng trong rất nhiều
ngôn ngữ có rất nhiều từ khóa có cùng một gốc từ. Chẳng hạn như trong tiếng Anh các
từ: computer, computing, computational,computers,computed, xuất phát từ một từ gốc
compute.Các từ mà cùng một gốc chúng ta gọi là các từ cùng nhánh.
Trong quá trình tìm kiếm, đôi khi người ta mong muốn tìm kiếm cả những tài liệu
không chỉ xuất hiện từ khóa mà còn xuất hiện thêm các từ cùng nhánh với nó.Ví dụ
bạn gõ vào từ khóa “computer” thì trong các kết quả trả về (tất nhiên là ở gần cuối
danh sách) chúng ta thấy có các tài liệu chứa “computing”, “computational”.
Sinh viên thực hiện: Dương Minh Sơn-Khoá K49-Lớp HTTT 19
Hơn nữa nếu để phân biệt hai tài liệu với nhau, thì nếu cả hai chứa những từ khác nhau
nhưng cùng một nhánh thì sự phân biệt này rất khó khăn. Trong xử lý phân cụm tài liệu
, người ta cho rằng nên coi các từ cùng một nhánh là một.Vì lẽ đó, trước khi lập chỉ
mục và lưu trữ tài liệu trong các hệ thống tìm kiếm ,chúng ta cố gắng đưa toàn bộ các
từ trong tài liệu về dạng từ gốc của nó.Công việc này gọi là Stemming.
Với những ngôn ngữ khác nhau ,có những giải thuật Stemming khác nhau.Porter
Stemming Algorithm, Lovins Stemming Algorithm:dùng cho tiếng Anh ,German
Stemming: dùng cho tiếng Đức.Tất nhiên cũng có những ngôn ngữ rất khó để tiến hành
Stemming và cũng có những ngôn ngữ không tồn tại khái niệm Stemming như tiếng
Việt của chúng ta.
2.2. Mô hình không gian vector
2.2.1. Mô hình không gian vector
2.2.1.1. Khái niệm
Mô hình không gian vector (Vector space model- VSM) là một cách biểu diễn một tài
liệu như một vector. Đây là khái niệm quan trọng trong Information Retrieval-IR, được
sử dụng để lượng hóa những đối tượng khó quản lý như tài liệu, khái niệm, câu truy
vấn ,….
Tập hợp toàn bộ các tài liệu mà ta xem xét tương ứng với một không gian vector. Tài

liệu được xem là một vector với các thành phần là trọng số tính trên các khái niệm
xuất hiện trong nó (term), thông thường người ta xem các term này chính là các từ
vựng xuất hiện trong tài liệu.
Sinh viên thực hiện: Dương Minh Sơn-Khoá K49-Lớp HTTT 20
Hình 2.1: Mô hình không gian vector với 2 tài liệu và 3 khái niệm
Như vậy ta có thể biểu diễn một tài liệu bằng một vector như sau:
1 2 t
(w ,w , , w )d

=
(2.1)
Trong đó
i
w
là trọng số của từ vựng i trong tài liệu d. Về mặt tính toán và lưu trữ không gian
vector có thể biểu diễn dưới dạng một ma trận
ij
w
biểu diễn trọng số của term-i trong tài liệu
j.

Có nhiều cách để tính trọng số của các từ xuất hiện trong tài liệu, mỗi cách tính như
vậy phục vụ cho một biểu diễn với mục đích khác nhau.Ta sẽ điểm qua một vài cách
tính trọng số.
a. Trọng số đơn giản (Simple weight)
Sinh viên thực hiện: Dương Minh Sơn-Khoá K49-Lớp HTTT 21
T
1
T
2

…. T
m
D
1
w
11
w
21
…w
m1
D
2
w
12
w
22
w
m2
: : : :
: : : :
D
n
w
1n
w
2n
…w
mn
, ij
w

i j
f=
(2.2)
Trong đó
ij
f
là số lần xuất hiện của term i trong tài liệu j. Như vậy nếu một tài liệu “dài” thì
trọng số của các từ có trong nó thường lớn hơn trọng số của cùng từ đó trong các tài liệu
“ngắn” .Do đó cách tính trọng số đơn giản này có nhiều hạn chế.
b. Trọng số nhị phân (Binary weight)
Trong một số trường hợp chúng ta chỉ quan tâm xem term có xuất hiện trong tài liệu
hay không, lúc đó ta sử dụng trọng số nhị phân.
,
, ,
,
1, 0
w
0, 0
i j
i j i j
i j
f
b
f
>

= =

=


(2.3)

Ưu điểm của cách tính trọng số này là một tài liệu được mã hóa như một dãy các bit,
rất thuận tiện cho việc tính toán và xử lý.
c. Trọng số theo tần suất (Term frequency weight- TF weigh)
Trọng số lúc này được tính theo hai công thức sau đây
,
, ,
,
1
w
i j
i j i j
M
k j
k
f
tf
f
=
= =

(2.4)
Hoặc
,
, ,
,
w
ax{f }, 1,2,
i j

i j i j
k j
f
tf
M k M
= =
=
(2.5)
Trong cả hai công thức này ta thấy rằng trọng số là lớn khi term có tần suất xuất hiện
lớn trong tài liệu, độ dài của tài liệu không còn ảnh hưởng tới trọng số nữa.
d. Trọng số kết hợp (TF-IDF weight)
Đôi khi người ta cần quan tâm tới một số từ hiếm gặp trong các văn bản, làm thế nào
trọng số của từ đó lớn hơn các từ còn lại, người ta đưa ra công thức trọng số ngược cho
term-i như sau:
10
idf log ( )
i
i
N
N
=
(2.6)
Trong đó N là tổng số tài liệu,
i
N
là số tài liệu chứa term i. Nếu term-i là hiếm gặp thì
i
N
rất
nhỏ, do đó

i
i
df
lớn.
Sinh viên thực hiện: Dương Minh Sơn-Khoá K49-Lớp HTTT 22
Bây giờ trong nhiều ứng dụng người ta kết hợp cả TF-IDF thành một chỉ số thống nhất,
phản ánh mối tương quan của từ trong tài liệu
, ,
w *
i j i j i
tf idf=
(2.7)

Trọng số này là rất lớn nếu term-i xuất hiện nhiều trong tài liệu j, và bản thân term-i lại
rất ít khi xuất hiện trong các tài liệu còn lại.
Nói chung không có cách tính nào là ưu việt hơn những cách tính còn lại .Điều này còn
tùy thuộc vào những ứng dụng cụ thể.
2.2.1.2. Hàm tương tự giữa hai vector trong không gian
Khi đã xây dựng được không gian vector, một cách tự nhiên người ta muốn xây dựng
hàm tương tự giữa hai vector.Điều này phục vụ việc tính toán độ tương tự giữa hai tài
liệu trong việc phân cụm tài liệu ,hay độ phù hợp của một tài liệu với một câu truy vấn
khi tìm kiếm.
Bản chất của quá trình này là chúng ta xem xét xem thế nào là hai vector giống nhau,
hay tương tự nhau. Trong đại số tuyến tính, và hình học định hướng có rất nhiều cách
để ta đo đạc đại lượng này.Kí hiệu
1 2
( , )R v v
là hàm tương tự giữa hai vector.
Cách đầu tiên là ta dùng hàm số cosine:
1 2

1 2 1 2
2
*
( , ) os( , )
1 *
v v
R v v c v v
v v
= =
(2.8)
Cách thứ hai là dùng khoảng cách Euclide
2
1 2 1 2 1, 2,
( , ) ( , ) ( )
i i
R v v d v v v v= = −

(2.9)
2.2.2.Ứng dụng mô hình không gian vector trong các hệ thống tìm
kiếm
Để xem xét các ứng dụng của mô hình không gian vector, trước hết giả sử chúng ta có
5 tài liệu như sau:
• D1=”computer science is the science of computational theory and language
theory”.
• D2=”computational theory and language theory are included in computer
science”
Sinh viên thực hiện: Dương Minh Sơn-Khoá K49-Lớp HTTT 23

×