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

Đánh giá và thu thập thông tin tự động trên internet sử dụng dịch vụ tìm kiếm

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 (2.57 MB, 80 trang )

ĐẠI HỌC THÁI NGUYÊN
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

Lê Hữu Hảo

ĐÁNH GIÁ VÀ THU THẬP THÔNG TIN TỰ ĐỘNG
TRÊN INTERNET SỬ DỤNG DỊCH VỤ TÌM KIẾM

LUẬN VĂN THẠC SỸ
CHUYÊN NGÀNH KHOA HỌC MÁY TÍNH

THÁI NGUYÊN - 2015


ĐẠI HỌC THÁI NGUYÊN
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

Lê Hữu Hảo

ĐÁNH GIÁ VÀ THU THẬP THÔNG TIN TỰ ĐỘNG
TRÊN INTERNET SỬ DỤNG DỊCH VỤ TÌM KIẾM

Chuyên ngành: Khoa học máy tính
Mã số: 60 48 0101

LUẬN VĂN THẠC SỸ
CHUYÊN NGÀNH KHOA HỌC MÁY TÍNH
Giáo viên hƣớng dẫn: TS. Nguyễn Ngọc Hóa

THÁI NGUYÊN - 2015
THÁI NGUYÊN - 2015




i

LỜI CẢM ƠN
Trong thời gian qua, tôi đã nhận đƣợc rất nhiều sự hƣớng dẫn giúp đỡ và động
viên tận tình từ nhiều phía. Tất cả những điều đó đã trở thành một nguồn động lực
lớn giúp tôi có thể thực hiện đƣợc đề tài nghiên cứu đƣợc giao. Với tất cả sự cảm
kích và trân trọng, tôi xin đƣợc gửi lời cảm ơn đến tất cả mọi ngƣời.
Trƣớc hết tôi xin chân thành cảm ơn thầy hƣớng dẫn – Tiến sĩ Nguyễn Ngọc
Hóa ngƣời đã hết sức nhiệt tình bảo ban hƣớng dẫn, đóng góp những ý kiến quý báu
cho tôi để có thể học tập và hoàn thành luận văn tốt nghiệp này.
Xin gửi lời cảm ơn chân thành nhất đến Ban giám hiệu trƣờng Đại học Công
Nghệ Thông Tin và truyền thông – Đại học Thái Nguyên đã tạo điều kiện giúp đỡ
tôi có thể thực hiện đề tài. Cảm ơn toàn thể các thầy cô công tác tại trƣờng Đại học
Công nghệ Thông tin và Truyền thông – Đại học Thái Nguyên đã dạy dỗ và truyền
đạt những kiến thức quí báu cho tôi trong suốt thời gian học tập và rèn luyện tại
trƣờng.
Tôi xin đƣợc gửi lời biết ơn vô hạn tới cha mẹ, ngƣời thân đã nuôi dƣỡng và
tạo điều kiện tốt nhất cho tôi học tập sinh hoạt, ở bên tôi những lúc khó khăn nhất
để chuyên tâm thực hiện luận văn.
Cuối cùng, xin cảm ơn tập thể lớp cao học CNTT K12E và đặc biệt những
ngƣời ban tốt đã ở bên tôi, khuyến khích, động viên tôi và cho tôi những lời khuyên
chân thành trong cuộc sống và học tập.
Xin trân trọng cảm ơn!
Thái Nguyên, ngày tháng
Học viên

Lê Hữu Hảo


năm 2015


ii

LỜI CAM ĐOAN

Tôi xin cam đoan những nghiên cứu của tôi về "Đánh giá và thu thập

thông tin tự động trên Internet sử dụng dịch vụ tìm kiếm" mà tôi viết trong
luận văn này là sự thật. Những gì tôi viết ra không sao chép từ các tài liệu, không sử
dụng các kết quả của ngƣời khác mà không trích dẫn cụ thể.
Tôi xin cam đoan ứng dụng này tôi trình bày trong luận văn là do tôi tự phát
triển dƣới sự hƣớng dẫn của thầy Nguyễn Ngọc Hóa, không sao chép mã nguồn của
ngƣời khác. Nếu sai tôi hoàn toàn chịu trách nhiệm theo quy định của trƣờng Đại
học Công nghệ Thông tin và Truyền thông - Đại học Thái Nguyên.

Thái Nguyên, ngày tháng năm 2015
Học viên

Lê Hữu Hảo


iii

MỤC LỤC

LỜI CẢM ƠN..................................................................................................... i
LỜI CAM ĐOAN .............................................................................................. ii
MỤC LỤC ........................................................................................................ iii

DANH MỤC CÁC HÌNH VẼ ............................................................................v
DANH MỤC BẢNG BIỂU .............................................................................. vi
GIỚI THIỆU CHUNG .......................................................................................1
CHƢƠNG 1: TỔNG QUAN VỀ TÌM KIẾM VÀ THEO DÕI THÔNG TIN...3
1.1. Tổng quan về tìm kiếm thông tin ............................................................3
1.1.1. Dịch vụ tìm kiếm Google .................................................................3
1.1.2. Dịch vụ tìm kiếm Bing .....................................................................4
1.1.3. Dịch vụ tìm kiếm Yahoo ..................................................................4
1.1.4. Search Engine điển hình ...................................................................4
1.2. Dữ liệu bán cấu trúc và cây DOM ...........................................................8
1.2.1. Dữ liệu bán cấu trúc và việc trích xuất .............................................8
1.2.2. Cây DOM .......................................................................................10
1.3. Theo dõi và thu thập dữ liệu ..................................................................14
CHƢƠNG 2: MÔ HÌNH KIẾN TRÚC TỔNG THỂ VÀ MỘT SỐ THUẬT
TOÁN ĐÁNH GIÁ THÔNG TIN ............................................................................20
2.1. Mô hình kiến trúc tổng thể ....................................................................20
2.2. Các kỹ thuật chính .................................................................................21
2.2.1. Framework Struts 2 ........................................................................21
2.2.2. Hệ quản trị dữ liệu MongoDB ........................................................23
2.2.3. Hệ quản trị cơ sở dữ liệu MySQL ..................................................29
2.3. Một số thuật toán đối sánh mẫu ............................................................31
2.3.1. Thuật toán Brute Force ...................................................................31


iv

2.3.2. Thuật toán Knuth Morris Pratt .......................................................32
2.3.3. Thuật toán Boyer-Moore ................................................................41
2.4. So sánh các thuật toán ...........................................................................46
CHƢƠNG 3: THỰC NGHIỆM ỨNG DỤNG ĐÁNH GIÁ VÀ THU THẬP

THÔNG TIN .............................................................................................................47
3.1. Mô hình bài toán....................................................................................47
3.1.1. Theo dõi và thu thập thông tin .......................................................47
3.1.2. Quản lý ngƣời dùng ........................................................................51
3.1.3. Quản lý dữ liệu hệ thống ................................................................57
3.2. Công cụ đánh giá và thu thập thông tin tự động ...................................61
3.2.1. Áp dụng thuật toán Knuth Morris Pratt trong đánh giá, đối sánh
mẫu ....................................................................................................................61
3.2.2. Các công cụ phần mềm ..................................................................62
3.3. Kết quả thực nghiệm .............................................................................63
3.3.1. Kết quả thu thập thông tin ..............................................................63
3.3.2. Kết quả của ứng dụng Web ............................................................65
KẾT LUẬN CHUNG .......................................................................................69
TÀI LIỆU THAM KHẢO ................................................................................71


v

DANH MỤC CÁC HÌNH VẼ
Hình 1.1: Kiến trúc của máy tìm kiếm Google ..................................................5
Hình 1.2: Ví dụ về dữ liệu bán cấu trúc. ............................................................9
Hình 1.3: Ví dụ về biểu diễn cây DOM của mã HTML...................................11
Hình 1.4: Ví dụ xây dựng cây DOM sử dụng hộp ảo ......................................13
Hình 1.5: Các bƣớc xử lý của máy chủ. ...........................................................16
Hình 1.6: Các kết quả hiển thị của Google. .....................................................16
Hình 1.7: Mã HTML của một kết quả hiện thị.................................................17
Hình 1.8: Mô hình cây DOM của mỗi kết quả. ................................................18
Hình 2.1: Mô hình hệ thống. ............................................................................20
Hình 2.2: Kiến trúc của Struts2 ........................................................................22
Hình 2.3: Lƣu trữ dữ liệu dạng BSON .............................................................26

Hình 3.1: Biểu đồ class của phía máy chủ. ......................................................48
Hình 3.2: Biểu đồ tuần tự của phía máy chủ ....................................................51
Hình 3.3: Biểu đồ ca sử dụng của ngƣời dùng. ................................................52
Hình 3.4: Biểu đồ lớp chức năng liên quan đến tin bài. ...................................55
Hình 3.5: Biểu đồ lớp của các chức năng quản lý ngƣời dùng. .......................56
Hình 3.6: Lƣợc đồ cơ sở dữ liệu quản lý ngƣời dùng. .....................................59
Hình 3.7: Giao diện chƣơng trình.....................................................................66
Hình 3.8: Màn hình chính.................................................................................66
Hình 3.9: Lọc thông tin theo thời gian .............................................................67
Hình 3.10: Thông tin tài khoản ........................................................................68


vi

DANH MỤC BẢNG BIỂU
Bảng 3.1: Các class trong package Model .......................................................53
Bảng 3.2: Các class trong package Controller .................................................54
Bảng 3.3: Các class của package DAO ............................................................54
Bảng 3.4: Các class của package Util...............................................................54
Bảng 3.5: Mô tả collection của cơ sở dữ liệu lƣu tin bài .................................58
Bảng 3.6: Mô tả các thuộc tính của quan hệ User ............................................60
Bảng 3.7: Mô tả các thuộc tính của quan hệ keywords ....................................60
Bảng 3.8: Mô tả các thuộc tính của quan hệ users_keywords.........................61
Bảng 3.9: Mô tả các thuộc tính của quan hệ trends.........................................61
Bảng 3.10: Các công cụ phần mềm ..................................................................62
Bảng 3.11: Cấu hình máy tính chạy thực nghiệm ............................................63
Bảng 3.12: Bảng thời gian hoàn thành. ............................................................65
Bảng 3.13: Bảng số lƣợng kết quả. ..................................................................65



1

GIỚI THIỆU CHUNG
Hiện nay, chúng ta đang sống trong thế kỉ 21, thời đại công nghệ thông tin có
những bƣớc phát triển vƣợt bậc để bắt kịp với xu hƣớng phát triển chung của xã hội.
Kéo theo đó là lƣợng thông tin khổng lồ về tất cả các lĩnh vực xã hội, chính trị, kinh
tế, giải trí, v.v. cũng liên tục phát sinh và phát triển nhanh chóng. Nhu cầu hiểu biết
và tìm kiếm của con ngƣời ngày càng tăng theo cùng với sự phát triển đó. Tuy
nhiên mỗi ngƣời, mỗi tổ chức lại có những lĩnh vực quan tâm khác nhau, trình độ
hiểu biết về công nghệ thông tin khác nhau, nhu cầu này không chỉ dừng lại ở các
cá nhân, mà phổ biến của tất cả mọi ngƣời, các tổ chức. Bên cạnh đó lƣợng thông
tin trên Internet cực kì lớn và hỗn tạp từ nhiều nguồn, nhiều loại khác nhau dẫn đến
quá trình tìm kiếm khá là khó khăn và vất vả.
Để đáp ứng nhu cầu tìm hiểu của con ngƣời, rất nhiều công cụ tìm kiếm đã ra
đời cung cấp khả năng tìm kiếm thông tin với tốc độ và phạm vi ngày càng nâng
cao và cải thiện. Một trong những công cụ tìm kiếm phổ biến nhất hiện nay đứng
đầu là Google, đứng thứ hai là Bing, tiếp đó là Yahoo.... Tuy nhiên các công cụ tìm
kiếm trên mang tính chất tức thời, tức là khi ngƣời dùng có nhu cầu tìm kiếm thì họ
phải trực tiếp vào nhập từ khóa cần tìm và xem kết quả, ngƣời dùng sẽ khó nắm bắt
và quản lý những thông tin cập nhật thƣờng xuyên liên quan đến những vấn đề nào
đó mà mình có nhu cầu theo dõi thƣờng xuyên.
Xuất phát từ thực tế đó, luận văn tốt nghiệp này đƣợc hƣớng đến mục tiêu có
thể tự động theo dõi những thông tin mới mà ngƣời dùng quan tâm đƣợc xuất bản
trên nền Web, từ đó xử lý bƣớc đầu để khắc phục tình trạng tránh trùng lặp thông
tin và lƣu lại trong cơ sở dữ liệu (CSDL) của hệ thống để ngƣời dùng có thể dễ dàng
tra cứu sau này.
Theo thống kê đã nêu, các công cụ tìm kiếm phổ biến nhất hiện nay có thể đáp
ứng đƣợc yêu cầu về nguồn dữ liệu lớn, tốc độ phản hồi nhanh và các kết quả có sự
liên quan tƣơng đối sát với từ khóa cần tìm kiếm. Vì thế ý tƣởng thực hiện của
chúng tôi là theo dõi các thông tin trên Internet thông qua việc truy vấn thƣờng

xuyên đến các công cụ tìm kiếm phổ biến nhất hiện nay là Google, Bing và Yahoo,


2

tổng hợp, đánh giác các kết quả sớm nhất và lƣu trữ databasse vào cơ sở dữ liệu
MongoDB. Nhƣ vậy khi ngƣời dùng muốn theo dõi các thông tin sẽ truy cập vào hệ
thống để có thể xem đƣợc những thông tin liên quan mới nhất và nhanh nhất. Để
đảm bảo lƣu trữ đƣợc lƣợng dữ liệu nhƣ vậy, mô hình quản trị cơ sở dữ liệu NoSQL
sẽ đƣợc nghiên cứu, tìm hiểu để phục vụ việc lƣu trữ các tin bài trả về. Phần giao
diện tƣơng tác sẽ đƣợc thực hiện thông qua ứng dụng Web..
Những kết quả thu đƣợc trong luận văn này đƣợc tổng hợp trong 3 chƣơng có
nội dung sau:
 Giới thiệu chung: Trong mục này tôi sẽ giới thiệu chung về luận văn:
Nêu thực trạng hiện nay cần giải quyết, từ đó giới thiệu bài toán xuất phát
từ nhu cầu thực tế đó, và mục tiêu cũng nhƣ những nội dung chính của
luận văn.
 Chƣơng 1: Tổng quan về tìm kiếm và theo dõi thông tin: Trình bày một
số cơ sở lý thuyết chính liên quan đến việc tiến hành các nội dung của
luận văn nhƣ Search Engine, dữ liệu cấu trúc và cây DOM, thực trạng
một số dịch vụ tìm kiếm tiêu biểu hiện nay nhƣ Google, Yahoo, Bing,…
để lựa chọn triển khai ứng dụng theo dõi thông tin trên Internet.
 Chƣơng 2: Mô hình kiến trúc tổng thể và một số thuật toán đánh giá
thông tin. Trong chƣơng này sẽ trình bày về mô hình kiến trúc tổng thể
của hệ thống cũng nhƣ các thành phần chi tiết ở phía máy chủ, máy khách
và cơ sở dữ liệu lƣu trữ thông tin. Trình bày về các kỹ thuật chính
(Framework Strusts, MongoDB, NoSQL...), các phƣơng pháp giải thuật
áp dụng cho mỗi phần.
 Chƣơng 3: Thực nghiệm ứng dụng đánh giá và thu thập thông tin
- Trình bày về cách sử dụng hệ thống, những kết quả đã đạt đƣợc. Đánh

giá các kết quả đã đạt đƣợc và những tồn tại của hệ thống.
 Kết luận chung
Tóm tắt lại quá trình xây dựng, những kết quả đã đạt đƣợc, ý nghĩa thực
tiễn của hệ thống.


3

CHƢƠNG 1: TỔNG QUAN VỀ TÌM KIẾM VÀ THEO DÕI THÔNG
TIN
1.1. Tổng quan về tìm kiếm thông tin
Phần lớn các công cụ tìm kiếm đều cung cấp API cho các nhà phát triển để
truy cập và sử dụng các kết quả của mình. Tuy nhiên không phải API nào cũng
miễn phí, và nó đều giới hạn số lƣợng kết quả trả về cũng nhƣ số truy vấn đến các
công cụ tìm kiếm đó. Sau đây sẽ giới thiệu về APIs của ba công cụ tìm kiếm phổ
biến nhất: Google, Bing và Yahoo.
1.1.1. Dịch vụ tìm kiếm Google
Google cung cấp hai loại Search APIs. Thứ nhất là ứng dụng mất phí Google
Site Search. Nó đƣợc thiết kế dành riêng cho các doanh nghiệp muốn tìm kiếm ở
mức cao hơn dựa trên google. Loại thứ hai là Google Custom Search, là ứng dụng
miễn phí cho phép ta tạo một công cụ searchtrong chính trang web, blog,… của
mình mà có thể chỉ tìm kiếm nội dung của một website, hoặc tập trung vào các chủ
đề từ nhiều trang khác nhau. Có thể tìm kiếm hình ảnh, tùy chỉnh giao diện tìm
kiếm và các kết quả trả về. Tuy nhiên Google Custom Seach hạn chế chỉ cho phép
các nhà phát triển chỉ đƣợc gửi tối đa 100 yêu cầu một ngày, và mỗi phần yêu cầu
chỉ đƣợc trả về 10 kết quả tìm kiếm.
Google Custom Search cung cấp rất nhiều APIs để phục vụ nhu cầu của các
nhà phát triển nhƣ:
-


Custom Search Control API cho phép ta nhúng công cụ tìm kiếm
Custom Search vào trong chính trang web của mình và các ứng dụng
web khác sử dụng JavaScript.

-

JSON/Atom API cho phép ta phát triển các trang web, các chƣơng trình
để lấy và hiển thị các kết quả từ chƣơng trình Google Custom Search.
Với API này, ta có thể sử dụng RESTful để request lấy các kết quả về ở
dạng JSON hoặc Atom.


4

-

XML API: sử dụng một ứng dụng client của ta lựa chọn để lấy về một
list các công cụ Custom Search dƣới một tài khoản, tạo và xóa công cụ
Custom Search.

1.1.2. Dịch vụ tìm kiếm Bing
Bing là công cụ tìm kiếm do Microsoft tạo ra và phát triển. Từ tháng 8 năm
2012 Bing Seach API chuyển sang Azure Marketplace – một cửa hàng cho các tập
dữ liệu, các ứng dụng điện toán đám mây và các công cụ phân tích [10]. Bing API
cho phép các nhà phát triển có thể nhúng một công cụ tìm kiếm trong các trang web
hoặc ứng dụng của mình sử dụng XML hoặc JSON. Thêm các chức năng tìm kiếm
cho một trang web. Nó cho phép tìm kiếm các trang web, hình ảnh, tin tức, video,
tìm kiếm liên quan và gợi ý chính tả [11]. Bing search API hỗ trợ nhiều gói yêu cầu
khác nhau, với gói miễn phí ta đƣợc 5000 giao dịch một tháng, với mỗi giao dịch
thu về đƣợc tối đa 50 kết quả.

Bing search api hỗ trợ JSON, XML và các giao thức OData với các kết quả trả
về ở dƣới dạng Json hoặc XML tùy chỉnh do ngƣời phát triển.
1.1.3. Dịch vụ tìm kiếm Yahoo
BOSS là công cụ tìm kiếm mở và dịch vụ nền tảng dữ liệu của Yahoo. Mục
tiêu của nó là thúc đẩy sự đổi mới trong ngành công nghiệp tìm kiếm. Các nhà phát
triển và các công ty internet lớn có thể sử dụng để xây dựng các sản phẩm tìm kiếm
web qui mô sử dụng công nghệ và dữ liệu của công cụ tìm kiếm yahoo [23].
BOSS API là một dịch vụ cung cấp RESTful truy cập web, hình ảnh, tin tức,
chính tả, và các kết quả tìm kiếm Blog, hỗ trợ định dạng XML và JSON. Tuy nhiên
để đƣợc sử dụng API của Yahoo, các nhà phát triển bắt buộc phải trả một khoản phí
tùy theo loại và nhu cầu tìm kiếm của mình từ 0.8 đô la cho đến 8 đô la cho mỗi
1000 truy vấn [24].
1.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.


5

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


6

(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.1.4.2. 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. 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.1.4.3. Chỉ mục tài liệu
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.1.4.4. 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ỏ.


7

1.1.4.5. 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. 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.1.4.6. Đá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.1.4.7. 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.
(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


8

(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.1.4.8. 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à proximily để nâng
cao chất lƣợng tìm kiếm.
1.2. Dữ liệu bán cấu trúc và cây DOM
1.2.1. Dữ liệu bán cấu trúc và việc trích xuất
Dữ liệu thƣờng đƣợc chia làm ba dạng cơ bản [13]:
-

Dữ liệu không có cấu trúc: là các dữ liệu ở dạng tự do và không cần có

cấu trúc định nghĩa sẵn, ví dụ nhƣ ngôn ngữ tự nhiên (nói hoặc viết).

-

Dữ liệu có cấu trúc: là các dạng dữ liệu do ngƣời dùng định nghĩa có
chứa một chuỗi các thuộc tính, mỗi thuộc tính trong các thuộc tính đó
có một kiểu dữ liệu. Mỗi thuộc tính là đặc tính giúp mô tả thể hiện của
kiểu [16]. Ví dụ nhƣ các dữ liệu lƣu trữ trang các bảng của cơ sở dữ
liệu quan hệ nhƣ MySQL, Microsoft SQL Server.

-

Dữ liệu bán cấu trúc: là dữ liệu có cấu trúc nhƣng không hoàn toàn
tƣờng minh, nó không tuân theo những cấu trúc, cách thức cấu trúc của
bảng và các mô hình dữ liệu trong cơ sở dữ liệu nhƣng nó chứa những
thẻ, những đánh dấu tới những phần từ ngữ nghĩa riêng biệt của các bản
ghi và các trƣờng riêng biệt bên trong dữ liệu.


9

Các trang web thƣờng chính là một dạng tiêu biểu của loại dữ liệu bán cấu
trúc. Ví dụ nhƣ cấu trúc trang HTML của trang Google Search:

Hình 1.2: Ví dụ về dữ liệu bán cấu trúc.
1.2.1.1. Một số phương pháp trích xuất thông tin cho dữ liệu bán cấu trúc
Để trích xuất thông tin từ trang web, có một số phƣơng pháp điển hình nhƣ:
Phƣơng pháp thủ công: đó là nhà phát triển sẽ quan sát mã nguồn của trang
web đó, tìm ra đặc điểm để trích xuất dữ liệu mục tiêu [9]. Phƣơng pháp này chính
là trích xuất sử dụng cây DOM. Phân tích mã nguồn HTML dƣới dạng một cây

DOM với các node, mỗi node là một thử HTML, quá trình trích xuất sẽ dựa vào
việc duyệt đƣờng đi từ gốc đến các node con chữa các thông tin cần trích xuất. Tuy
nhiên nó không thể áp dụng cho số lƣợng nhiều trang có định khác khác nhau.
Phƣơng pháp qui nạp: là phƣơng pháp bán tự động, một tập hợp các luật
trích xuất đƣợc học từ một bộ các trang đã đƣợc gán nhãn bằng tay. Có thể xây
dựng tập luật dựa trên việc phân tích cây DOM đã đƣợc gán nhãn cho trƣớc để xây
dựng thuật toán. Sau đó các luật này sẽ đƣợc dùng để trích xuất các thành phần dữ
liệu từ những trang có định dạng tƣơng tự. Phƣơng pháp này phù hợp với việc phải
trích xuất thông tin thƣờng xuyên từ những trang web có cấu trúc giống nhau. Có
thể làm việc với số lƣợng trang lớn.


10

Phƣơng pháp tự động: tự động tìm các mẫu hoặc các cấu trúc để trích xuất
thông tin từ những trang web đã cho trƣớc. Phƣơng pháp này không cần đến sự gán
nhãn bằng tay nên có thể trích xuất đƣợc dữ liệu từ một lƣợng khổng lồ các trang.
1.2.1.2. Phương pháp đánh giá
Để đánh giá chất lƣợng phƣơng pháp trích xuất thông tin cho dữ liệu bán cấu
trúc ngƣời ta thƣờng sử dụng một số độ đo nhƣ độ hồi tƣởng (R), độ tin cậy (P). Giả
sử sau khi sử dụng bài toán trích xuất cho một tập dữ liệu gồm n tài liệu. Kết quả
trích xuất đƣợc là m tài liệu. Kết quả trích xuất đúng là q tài liệu khi đó độ hồi
tƣởng R và độ chính xác P sẽ đƣợc tính theo công thực (1) và (2).
R=
P=

𝑞
𝑛
𝑞


× 100 %

𝑚

(1)

× 100 % (2)

Ví dụ:
Nếu tập dữ liệu cần trích xuất là 100 (tài liệu).
Dữ liệu trích xuất được là: 97 (tài liệu).
Dữ liệu trích xuất đúng là: 90 (tài liệu) .
R=
P=

90
100
90
97

× 100 %

= 90 %

× 100 % = 92,78 %

1.2.2. Cây DOM
1.2.2.1. Khái niệm cây DOM
DOM (Document Object Model) là một chuẩn đƣợc định nghĩa bởi W3C[21],
là một nền tảng và là giao diện ngôn ngữ trung gian cho phép chƣơng trình và kịch

bản truy cập tự động và cập nhật nội dung cấu trúc, phong cách của văn bản. DOM
chia làm ba phần: Core DOM: là mô hình chuẩn cho tất cả các kiểu văn bản. Thứ
hai là XML DOM: là loại chuẩn cho văn bản dạng XML. Cuối cùng là HTML
DOM: mô hình chuẩn cho các văn bản HTML. Ví dụ về một bảng dƣới dạng
HTML:


11

Hình 1.3: Ví dụ về biểu diễn cây DOM của mã HTML.
1.2.2.2. Xây dựng cây DOM
Xây dựng cây DOM từ những trang Web đầu vào là một bƣớc cần thiết trang
nhiều giải thuật trích xuất dữ liệu [9]. Có hai phƣơng pháp cơ bản để xây dựng các
cây DOM.
- Sử dụng các thẻ riêng biệt
Hầu hết các thẻ HTML làm việc trong một cặp. Mỗi cặp chứa một thẻ mở <>
và một thẻ đóng </>. Bên trong mỗi cặp thẻ có thể có những cặp thẻ khác, kết quả là
cấu trúc trở nên chồng chéo. Xây dựng một cây DOM từ một trang Web bằng cách
sử dụng mã HTML của nó là một vấn đề cần thiết. Trong một cây DOM, mỗi cặp
thẻ là một node, những cặp thẻ ẩn bên trong là node con của node hiện tại. Có hai
nhiệm vụ cần thi hành đó là:
 Làm sạch mã HTML: Một vài thẻ không cần thẻ đóng (nhƣ <li>, <hr>,

)
mặc dù chúng có thẻ đóng. Bởi vậy một thẻ đóng nên đƣợc chèn vào để tất
cả các thẻ đƣợc cân bằng. Các thẻ đƣợc định dạng không tốt cũng cần thiết
đƣợc sửa chữa. Một thẻ sai thƣờng là một thẻ đóng, đó là thẻ cắt ngang các


12

khối ẩn bên trong. Ví dụ: <tr> … <td> … </tr> … </td>, sẽ rất khó để sửa


lỗi trƣờng hợp này nếu tồn tại sự chồng chéo đa cấp. Có một vài phần mềm
mã nguồn mở để làm sạch mã HTML, một số những phần mềm thông dụng
nhƣ: JTidy, NekoHTML, HTMLCleaner.
 Xây dựng cây: Chúng ta có thể đi theo các khối con của các thẻ HTML để
xây dựng đƣợc cây DOM.
- Sử dụng các thẻ và các hộp ảo (visual cue)
Thay vì phân tích mã HTML để sửa lỗi, có thể sử dụng sự biểu diễn hoặc các
thông tin ảo (ví dụ nhƣ: địa chỉ trên màn hình mà các thẻ đƣợc biểu diễn) để suy
luận mối quan hệ có cấu trúc của các thẻ và có thể xây dựng đƣợc cây DOM.
Phƣơng thức xây dựng có thể phân tích mã HTML thành cây DOM, miễn là trình
duyệt có thể hiển thị đƣợc đoạn mã đó một cách chính xác.
Trong một trình duyệt web, mỗi phần tử HTML (chứa đựng một thẻ mở, các
thuộc tính tùy chọn, nội dung HTML đƣợc nhúng tùy ý và một thẻ đóng, thẻ này có
thể thiếu) đƣợc biểu diễn nhƣ một hình chữ nhật. Thông tin ảo này có thể lấy đƣợc
sau khi mã HTML đƣợc biểu diễn trên trình duyệt. Một cây DOM sau đó có thể
đƣợc xây dựng dựa vào các thông tin ảo này. Các bƣớc xử lý nhƣ sau:
 Tìm 4 đƣờng biên của hình chữ nhật ứng với mỗi phần tử HTML thông qua
việc công cụ trình diễn của trình duyệt, ví dụ: Internet Explorer.
 Theo sự tuần tự của các thẻ mở và sự kiểm tra xem một hình chữ nhật có
nằm trong một hình chữ nhật khác không, để xây dựng cây DOM.
Ví dụ minh họa về sử dụng visual cue:
Một đoạn mã HTML có 3 lỗi. sử dụng thông tin ảo có thể dễ dàng xây
dựng đƣợc cây DOM.


13

Hình 1.4: Ví dụ xây dựng cây DOM sử dụng hộp ảo
1.2.2.3. Sử dụng cây DOM để trích xuất thông tin
Để trích xuất đƣợc thông tin cần thiết ở một node của cây DOM, chúng

ta cần chỉ rõ đƣờng đi từ gốc của cây đến node cần trích xuất thông tin.
Đƣờng đi này gọi là một XPath[14] hay mẫu trích xuất.
Trích xuất thông tin web dựa vào cây DOM trƣớc tiên việc trích xuất
này đƣợc hỗ trợ bởi xây dựng cây DOM cho mã HTML của trang.
Các mẫu trích xuất có thể đƣợc làm rõ nhƣ đƣờng dẫn từ gốc của cây
DOM đến node chứa nội dung cần trích xuất.
Ví dụ :
Đây là cây DOM của một đoạn mã HTML chứa thông tin về cuốn sách,
gồm tên cuốn sách (title) và tên tác giả (author). Bài toán đặt ra là sử dụng
cây DOM này trích xuất các thông tin về tên sách và tác giả viết sách. Mẫu
trích xuất đƣợc xây dựng sau:


14

1.3. Theo dõi và thu thập dữ liệu
Máy chủ (server) là phần chịu trách nhiệm tìm kiếm, xử lý và lƣu trữ các tin
bài liên quan đến những từ khóa, vấn đề mà ngƣời dùng đã đăng kí với hệ thống.
Phía máy chủ thực hiện các chức năng của mình thông qua việc tìm kiếm các tin bài
trên Internet thông qua công cụ tìm kiếm Google. Sau đó tiến hành phân tích và lƣu
trữ những thông tin cần thiết vào cơ sở dữ liệu.
Có hai cách cơ bản để lấy về các tin bài từ các công cụ tìm kiếm:
-

Cách thứ nhất là sử dụng các APIs nhƣ đã trình bày trong chƣơng 1 để
yêu cầu và lấy về phản hồi của công cụ tìm kiếm dƣới dạng JSON hoặc
XML. Sau đó tiến hành phân tích kết quả và trích xuất ra những trƣờng
kết quả mong muốn và lƣu vào cơ sở dữ liệu. Tuy nhiên cách này khiến
ta trở nên bị động và bị phụ thuộc vào APIs của các nhà cung cấp. Bị
giới hạn về mặt số lƣợng kết quả, số yêu cầu cho phép, và có thể sẽ

phải trả phí để có đƣợc những kết quả mong muốn.

-

Cách thứ hai đó là trích xuất kết quả trực tiếp từ trang web của các
công cụ tìm kiếm. Do bằng cách này ngƣời phát triển sẽ chủ động tìm


15

kiếm mà không phụ thuộc vào các APIs của công cụ tìm kiếm nên sẽ
chủ động đƣợc số lƣợng kết quả mong muốn từ việc yêu cầu tìm kiếm.
Do hệ thống chỉ sử dụng kết quả duy nhất từ trang tìm kiếm của Google, cần
số lƣợng lớn các kết quả liên quan đến vấn đề mà ngƣời dùng mong muốn theo dõi.
Nên để tăng hiểu quả, trong hệ thống phía máy chủ của mình, tôi sử dụng cách thứ
hai, đó là trích xuất trực tiếp thông tin trên mã nguồn HTML của trang web tìm
kiếm.
Chức năng theo dõi và thu thập dữ liệu là phần chứa các hàm phục vụ việc gửi
các yêu cầu đến Google thông qua đƣờng dẫn:
/>bs=qdr:h,lr:lang_1vi
Trong đó có một số truy vấn quan trọng
-

q=qsearch trong đó q= là truy vấn của Google, và qsearch chính là từ

khóa cần tìm kiếm.
-

tbs=qdr:h nghĩa là tìm kiếm các tin bài trong một giờ trƣớc. ta có thể


sử dụng „d‟ là các tin bài trong ngày qua, hoặc „m‟ là các tin bài trong
tháng qua…
-

Ngoài ra chúng ta có thể thêm một số khác để đảm bảo các kết quả đáp
ứng đƣợc các yêu cầu nhƣ lr=lang_vi là tìm kiếm bằng ngôn ngữ Tiếng
Việt, hay start=1 là hiển thị từ kết quả số 1,…

Sau đó sẽ lấy về HTML của trang đó và phân tích lấy những kết quả mong
muốn, ở đây các kết quả đƣợc coi là Model với các trƣờng giống nhau. Và lƣu vào
cơ sở dữ liệu thông qua các hàm.
Nhìn chung, quá trình hoạt đông của phía máy chủ gồm qua các bƣớc cơ bản
nhƣ sau:


16

Hình 1.5: Các bước xử lý của máy chủ.
Bƣớc thứ nhất: là gửi yêu cầu đến các công cụ tìm kiếm về tất cả các từ khóa
của hệ thống. Với mỗi trang hiển thị của Google, cho phép hiển thị 10 kết quả. Sau
đó ta lấy về toàn bộ mã nguồn của trang web kết quả.
Bƣớc thứ hai: Tiếp theo sau khi lấy đƣợc trang kết quả về, hệ thống sẽ tiến
hành phân tích mã nguồn HTML đã thu đƣợc để trích xuất những thông tin cần
thiết. Nhƣ đã trình bày trong phần 1.2.1, về một số phƣơng pháp trích xuất thông
tin, luận văn sử dụng phƣơng pháp dựa trên mô hình cây DOM để sinh ra luật nhằm
trích xuất các thông tin cần thiết từ các trang có cấu trúc tƣơng tự. Các kết quả hiển
thị của Google ví dụ nhƣ hình:

Hình 1.6: Các kết quả hiển thị của Google.
Cấu trúc của các dữ liệu tƣơng ứng với một kết quả hiển thị dƣới dạng HTML

nhƣ sau:


17

Hình 1.7: Mã HTML của một kết quả hiện thị.
Ta có Hình 1.6 là biểu diễn HTML của một kết quả, cụ thể là kết quả đầu tiên
trong Hình 1.5. Tƣơng ứng ta có: Phần a trong Hình 1.5 tƣơng ứng với đoạn mã 1
trong hình 1.6 nó biểu diễn tiêu đề của bài viết ở trang web gốc (Title). Phần b
tƣơng đƣơng với đoạn mã 2, nó biểu diễn hiển thị của liên kết(Url) đến trang web
gốc (DisplayUrl), và phần c tƣơng ứng với đoạn mã 3, nó biểu diễn đoạn tóm tắt tội
dung, hoặc là miêu tả ngắn gọn cho bài viết trong trang web gốc (Description). Nhƣ
vậy sau khi phân tích mã trang ta có đƣợc những thuộc tính chung cần thiết để lƣu
trữ đó là:
-

Title: tiêu đề của bài trang.

-

Url: đƣờng liên kết đến trang web gốc.

-

DisplayUrl: Hiển thị của liên kết

-

Description: Mô tả ngắn gọn của bài viết đƣợc đề cập đến.


Cây DOM ta xây dựng đƣợc từ mã HTML cho mỗi kết quả tìm kiếm trên
trang tìm kiếm nhƣ sau:


×