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

nghiên cứu mẫu thiết kế hướng đối tượng áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web

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.04 MB, 72 trang )

2


MỤC LỤC


Chương 1 Tổng quan 8
1.1 Dẫn nhập 8
1.2 Mục tiêu đề tài: 9
1.3 Phạm vi đề tài 9
1.4 Nội dung luận văn 10
Chương 2 Mẫu thiết kế hướng đối tượng 11
2.1 Khái niệm mẫu thiết kế 11
2.2 Lịch sử và vai trò của mẫu thiết kế 11
2.3 Các loại mẫu được sử dụng trong phát triển phần mềm 12
2.4 Các mẫu thiết kế hướng đối tượng GoF 14
2.4.1 Các mẫu tạo lập (Creational patterns) 15
2.4.2 Các mẫu cấu trúc (Structural patterns) 15
2.4.3 Các mẫu ứng xử (Behavioural patterns) 15
2.4.4 Mẫu thiết kế hướng đối tượng dạng phức hợp 15
2.5 Các bước để lựa chọn mẫu thiết kế 16
2.6 Một số vấn đề được giải quyết bằng mẫu thiết kế 17
Chương 3 Tổng quan về rút trích thông tin 19
3.1 Giới thiệu chung 19
3.2 Giới hạn hướng nghiên cứu của đề tài 21
3.3 Giới thiệu về Rút trích thông tin 22
3.3.1 Khái niệm 22
3.3.2 So sánh rút trích thông tin và tìm kiếm thông tin 22
3.3.3 Hệ thống rút trích thông tin từ các trang web 23
3.4 Bài toán cần giải quyết 25
3.5 Các nghiên cứu liên quan đến bài toán đặt ra 28


3

Chương 4 Mẫu thiết kế xây dựng ứng dụng hỗ trợ rút trích thông tin từ web 30
4.1 Giới thiệu ứng dụng 30
4.2 Kiến trúc ứng dụng hỗ trợ rút trích thông tin từ web Nn theo ch  30
4.2.1 Quá trình s dng ng dng rút trích thông tin t web Nn 30
4.2.2 Kin trúc h thng 32
4.3 Các mu thit k ưc dùng  xây dng ng dng 33
4.3.1 Mu thit k MVC 33
4.3.2 Mu Data Access Pattern 35
4.3.3 Mu Dynamic Factory 36
4.3.4 Mu Abstract Factory 39
4.3.5 Mu Strategy 40
Chương 5 Cài t và kim th 43
5.1 Quá trình xây dng các thuc tính h tr rút trích thông tin: 43
5.2 Quá trình xây dng công c h tr rút trích thông tin: 44
5.2.1 Giao din ng dng: 44
5.2.2 T chc lưu tr thông tin các ch  và trang web Nn 47
5.2.3 T chc lưu tr thông tin cu hình 49
5.3 Cài t các thành phn có s dng mu thit k hưng i tưng 50
5.3.1 Áp dng mu thit k Dynamic Factory  iu hưng x lý các yêu
cu 50
5.3.2 Áp dng mu Abstract Factory cho thành phn rút trích thông tin t
web Nn ni dung ng 52
5.3.3 Áp dng mu thit k Strategy óng gói thut toán 57
Chương 6 Kt lun và hưng phát trin 60
6.1 Kt lun: 60
6.1.1 Kt qu t ưc 61
6.1.2 Hn ch: 62
6.2 Hưng phát trin 62

Tài liu tham kho 63
4

Ph lc A Gii thiu v web Nn 66
A. 1 Khái nim 66
A. 2 Gii thiu v web Nn ni dung ng 67
Ph lc B Cài t minh ha mu thit k mu Dynamic Factory 69
Ph lc C Áp dng thng kê thu thp thuc tính chung ch  71
























5

DAN H MC CÁC T VIT TT &
THUT N G

Information Extraction: Rút trích thông tin.
Information retrieval : Tìm kim thông tin.
Information Integration : Tng hp thông tin.
Object Oriented Design patterns: Mu thit k hưng i tưng.
Composite Patterns: Mu thit k phc hp.
Wrapper: Công c rút trích thông tin t web.
Deep web: Trang web Nn.
Meta search engine: Máy tìm kim liên hp.
Web mining: Khai phá web
Content mining: Khai phá ni dung.
Text Mining: Khai phá văn bn.
Structure Mining: Khai phá cu trúc.
Usage Mining: Khai phá s dng












6

DAN H MC CÁC BN G, HÌN H


Hình 3-1 : Mt s form tìm kim theo ch  vic làm [10] 26
Hình 3-2: Minh ha Visual Block Tree, và canh l các mc d liu 28
Hình 3-3: Mu ánh nhãn form 29
Hình 4-1 : Biu  hot ng ca ngưi s dng 31
Hình 4-2 : Kin trúc h thng h tr rút trích thông tin t web Nn theo ch  32
Hình 4-3: Mô hình MVC 34
Hình 4-4: Mu Data Access Object 35
Hình 4-5 : Mu Factory Method 36
Hình 4-6 : Mu Dynamic Factory - ci tin ca mu Factory Method 37
Hình 4-7: Mu Abstract Factory 40
Hình 4-8: Mu Strategy 42
Hình 5-1: Giao din ca ng dng web dành cho ngưi s dng 45
Hình 5-2: Giao din chính ca công c qun lý 45
Hình 5-3: Giao din qun lý các thuc tính chung 46
Hình 5-4: Giao din qun lý các trang web 46
Hình 5-5 : CSDL lưu thông tin ch  và trang web Nn 49
Hình 5-6: Sơ  lp thành phn iu hưng x lý yêu cu 50
Hình 5-7: Cài t không dùng mu Abstract Factory 52
Hình 5-8: Mu Abstract Factory cho thành phn rút trích thông tin t web Nn 53
Hình 5-9: Sơ  lp áp dng mu thit k Strategy 57
Hình A-1: Quá trình truy cp form 67
Hình A-2: Form minh ha 67
Hình C-1: Mt s trang tìm kim vic làm 71



7




Bng 2-1: Phân loi mu thit k 14
Bng 4-1 : So sánh h thng xây dng và máy tìm kim liên hp 27
Bng 5-1: Minh ha các thuc tính chung theo ch  Vic làm 44
Bng C-1: Bng thuc tính thông dng ch  vic làm 73
Bng C-2: Bng tng kt thuc tính chung ch  Vic làm 73






















8

Chương 1 Tổng
quan

Chương 1 giới thiệu ngữ cảnh và lý do thực hiện đề tài; trình bày mục tiêu,
phạm vi đề tài và nội dung chính của từng chương trong luận văn.
1.1 Dẫn nhập
N gành công ngh phn mm ã phát trin rt mnh m và gii quyt nhiu
vn  liên quan n phương pháp và qui trình công ngh xây dng phn mm. Tuy
nhiên, khi òi hi ca ngui s dng cui ngày càng nhiu thì phn mm ngày càng
ln và kin trúc càng phc tp, làm cho nhà phát trin khó khăn trong vic gii
quyt nhng vn  phát sinh như: s tương thích mã ngun, kh năng tương tác
gia các thành phn, bo trì phn mm. Trong các giai on phát trin phn mm,
thit k là mt công on rt quan trng. Phn mm ưc thit k tt s giúp nhà
phát trin tn ít thi gian, công sc cho công vic cài t, bo trì và tin hóa.
Hin nay, trong quá trình phát trin ng dng, các phương pháp phân tích
thit k hưng i tưng [3] ã phát trin rt mnh m và góp phn áng k vào
vic ci tin cht lưng ca phn mm nh vào kh năng xây dng các lp i
tưng có tính tái s dng cao, d bo trì và d m rng. N gôn ng UML (Unified
Modeling Language) [17] ưc  xut s dng như mt ngôn ng chuNn  mô
hình hóa các thành t phn mm trong quá trình phân tích thit k hưng i tưng.
Tuy nhiên, các phương pháp hưng i tưng tp trung ch yu vào các hot
ng tng th trong tin trình phát trin phn mm hưng i tưng. N hng phương
pháp này thưng không gii quyt các vn  chi tit ny sinh trong quá trình thit
k phn mm.  b sung cho phương pháp hưng i tưng, các mu thit k
hưng i tưng (mu thit k GoF, Gamma và cng s [5]) là mt tip cn c
áo, ưc  xut  gii quyt các vn  ny sinh trong quá trình thit k phn
mm hưng i tưng. Khi áp dng các mu thit k này s giúp nâng cao cht

lưng phn mm  các yu t: hiu sut ng dng,  n nh và tính tái s dng.
 tài chúng tôi mong mun óng góp mt phn vào lĩnh vc nghiên cu này.
9

iu c bit trong nhng năm gn ây là các chuyên gia công ngh phn
mm cũng như các nhà nghiên cu ngoài vic nghiên cu nhng mu thit k cho
phát trin phn mm nói chung còn ưa ra nhng mu thit k phù hp cho nhng
lĩnh vc c th như các mu thit k cho Web [1], các mu thit k cho phn mm
hưng dch v [14] [23], các mu thit k trong xây dng cu trúc d liu [15]…
iu này ã thúc Ny các mu thit k hưng i tưng ngày càng ưc a dng.
Trong  tài, tôi nghiên cu các mu thit k hưng i tưng áp dng cho nhóm
phn mm rút trích thông tin. Sau ó tôi áp dng các mu thit k ã có và ci tin
cho phù hp vi các tính cht c thù ca nhóm phn mm này.

1.2 Mục tiêu đề tài:
N ghiên cu các mu thit k hưng i tưng, chn lc và  xut chnh sa
mt s mu thit k hưng i tưng  áp dng vào vic xây dng ng dng h tr
rút trích thông tin t web.

1.3 Phạm vi đề tài
Gii thiu các loi mu thit k, c bit là các mu thit k hưng i tưng
trong lĩnh vc phát trin phn mm. Trình bày cách la chn mu thit k sao cho
phù hp  áp dng vào h thng phn mm cn xây dng và mt s vn  ưc
gii quyt bng mu thit k.
Áp dng mu thit k hưng i tưng vào vic xây dng ng dng h tr
rút trích thông tin ưc gii hn vào vic chn lc, chnh sa các mu thit k  rút
trích thông tin t các trang web Nn vi ni dung ng. ây là các trang web có mt
lưng ln các thông tin Nn bên dưi các giao din tìm kim và không th truy cp
thông qua các công c tìm kim tng quát (xem ph lc A). T cơ s nhng mu
thit k ó, tin hành xây dng b khung h tr vic rút trích thông tin t các trang

web Nn ni dung ng theo tng ch  riêng bit.

10

1.4 ội dung luận văn
N i dung ca lun văn ưc t chc thành 6 chương:
Chương 1 gii thiu ng cnh và lý do thc hin  tài; trình bày mc tiêu,
phm vi  tài và ni dung chính ca tng chương trong lun văn.
Chương 2 gii thiu các loi mu thit k, các mu thit k hưng i tưng
trong lĩnh vc phát trin phn mm. Cách la chn mu thit k sao cho phù hp 
áp dng vào h thng cn xây dng và mt s vn  ưc gii quyt bng mu
thit k.
Chương 3 gii thiu chung v tình hình nghiên cu và gii hn hưng nghiên
cu ca  tài. Phân bit gia hưng nghiên cu ca  tài và các hưng nghiên cu
khác. Bài toán t ra và các nghiên cu liên quan cũng ưc trình bày trong chương
này.
Chương 4 gii thiu v ng dng h tr rút trích thông tin t các trang web
Nn theo các ch  riêng bit và kin trúc h thng. Chương này cũng trình bày các
khái nim và lý do la chn các mu thit k ưc áp dng vào h thng.
Chương 5 xây dng ng dng bng ngôn ng lp trình Java và gii thích vì
sao s dng các mu thit k ã gii thiu  chương 4.
Chương 6 là chương cui cùng ca lun văn. Chương này tng kt, ánh giá
v các công vic ã làm và xác nh hưng phát trin ca  tài.









11

Chương 2 Mẫu thiết kế hướng
đối tượng
Chương 2 giới thiệu các loại mẫu thiết kế, các mẫu thiết kế hướng đối tượng
trong lĩnh vực phát triển phần mềm. Cách lựa chọn mẫu thiết kế sao cho phù hợp để
áp dụng vào hệ thống cần xây dựng và một số vấn đề được giải quyết bằng mẫu
thiết kế.
2.1 Khái niệm mẫu thiết kế
Mu thit k [5] mô t gii pháp ưc chng minh cho mt vn  lp li
nhiu ln. Mt mu thit k gm 3 phn chính: ng cnh, vn  và gii pháp.
• N g cnh: mô t các tin iu kin dn n vic phát sinh vn . Tin iu
kin là các iu kin, tình hung cn có xác nh vic áp dng mu. Các iu
kin kt qu là các kt qu có ưc sau khi áp dng mu.
• Vn : mô t mt vn  lp li nhiu ln. Trong các mu thit k, mô t
vn  ưc b sung thêm các nh hưng, các khía cnh mà vn  cn ưc
xem xét gii quyt nó. Ví d: các yêu cu mà gii pháp phi tha, các ràng
buc cn xem xét, các tính cht mong mun mà gii pháp nên có.
• Gii pháp: ưa ra cách gii quyt vn  lp li và chú ý n các nh hưng,
tác ng n nó.
2.2 Lịch sử và vai trò của mẫu thiết kế
Khái nim mu thit k ưc ưa ra bi kin trúc sư Christopher Alexander
khi ông vit cun sách trình bày v mu thit k kin trúc nhà vào nhng năm 1970.
Ý tưng này ã ưc ng dng vào lĩnh vc phát trin phn mm vào u nhng
năm 1980.  thi im ó, các ngôn ng lp trình hưng i tưng như Smalltalk,
C++ chưa ưc s dng rng rãi. Công ngh lp trình ph bin là lp trình cu trúc
trong khi lp trình hưng i tưng chưa ưc quan tâm. Tuy nhiên, khi ý tưng
xây dng nhng thư vin lp (framework) ra i và ưc hin thc thì lĩnh vc
12


nghiên cu các mu thit k ra i t ó. Mt trong nhng thư vin lp ưc thit
k u tiên là MVC (Model – View – Controller) [BO] cho ngôn ng Smalltalk.
u nhng năm 1990, Erich Gamma và các cng s (ưc gi là GoF) [5]
nghiên cu và  xut 23 mu thit k hưng i tưng mà ngày nay ã ưc vn
dng rt hu ích trong lĩnh vc phát trin phn mm. Thm chí nhng mu thit k
này ã ưc cài t sn trong các thư vin lp hưng i tưng ca mt s ngôn
ng lp trình hin i  h tr cho các lp trình viên khi cn. T giai on ó cho
n hin ti, s lưng mu thit k ngày càng nhiu và ưc ng dng  các mc 
khác nhau trong thit k phn mm.
Mu thit k óng mt vai trò quan trng trong quá trình phát trin ca
ngành công nghip phn mm. Mu thit k giúp gii quyt nhng tr ngi, nhng
vn  khó khăn lp li thưng xuyên mà nhng ngưi thit k phn mm gp phi.
N hng chuyên viên phn mm chưa có nhiu kinh nghim, thm chí có nhiu kinh
nghim nhưng gp mt vn  mi thì vic gii quyt các vn  khó khăn s tn
nhiu thi gian và chi phí. Do ó, mu thit k có th xem là cu ni, là tài liu 
truyn t t nhng ngưi có kinh nghim lâu năm hay t nhng nhà khoa hc cho
nhng ngưi còn ít kinh nghim làm vic hay mi tip cn mt công ngh lp trình
mi.

2.3 Các loại mẫu được sử dụng trong phát triển phần mềm
N gày nay mu ã ưc nghiên cu và ng dng cho nhiu lĩnh vc khác
nhau như kin trúc, giáo dc, phát trin phn mm. Trong mi lĩnh vc, mu còn có
th ưc phân lp sâu hơn theo min ng dng (như mu phân tích, mu thit k
phn mm… ), theo mc  tru tưng (như mu thit k là loi mu s dng trong
thit k)… Trong mc này, tôi im qua mt s loi mu ã ưc nghiên cu và
ng dng trong lĩnh vc phát trin phn mm [8].
• Mẫu thiết kế: ưa ra gii pháp cho các vn  lp li trong thit k phn
mm hưng i tưng. Các mu này liên quan n vic thit k các lp, các
i tưng, các quan h ca nó trong vic hin thc chương trình. Các mu 

13

mc thp hơn so vi mu thit k gi là các thành ngữ lập trình
(programming idiom).
• Mẫu phân tích: có gii pháp là mô hình các tin trình nghip v trong pha
phân tích ca vic phát trin phn mm. Không ging như mu thit k, mu
phân tích không phn ánh s hin thc phn mm thc s; chúng chuyn ti
các cu trúc quan nim ca nhng quá trình nghip v.
• Mẫu kiến trúc phần mềm: ưa ra gii pháp cho các vn  thuc kin trúc
ca mt h thng phn mm hoc mt h thng con. Trong ó, mi kin trúc
phù hp cho mt nhóm vn  nào ó. ng thi mu làm rõ hơn quan nim
ca nhà thit k h thng v t chc h thng và các h thng con.
• Mẫu tiến trình: là loi mu trong ó  cp n các vn  lp li, ny sinh
trong tin trình phát trin phn mm. Gii pháp ca mu tin trình là tin
trình – mt tp hành ng có th t nhm gii quyt vn .
• Mẫu tiến trình tổ chức: bao gm mt gii pháp cho vn  lp li thuc v
cu trúc và t chc trong phát trin phn mm. Gii pháp ca nó mô t các
k thut qun lý và các cu trúc thuc t chc. Mu t chc thưng i chung
vi mu tin trình.
• Đối mẫu: là loi mu trong ó ch ra gii pháp “ti” ã ưc chng minh là
không hiu qu, hoc gây thit hi cho t chc. i mu cũng  ngh các k
thut, các cách  ci tin tình trng này.
Các loi mu nêu trên có th ưc tng quát thành hai loi mu: mu kt qu
và mu tin trình. Mu kt qu trong ó mô t gii pháp hưng n kt qu là sn
phNm. Các mu thit k có gii pháp là các i tưng, các lp ưc  ngh s dng
 gii quyt vn . Do ó, mu thit k thuc loi mu kt qu. Tương t, các
mu phân tích, t chc thuc loi mu kt qu. Mu tin trình mô t làm th nào 
t ưc kt qu mong mun, gii pháp ca mu là tin trình.
14


2.4 Các mẫu thiết kế hướng đối tượng GoF
Trong phn này, tôi trình bày mt cách sơ lưc v các mu thit k hưng
i tưng GoF. Tôi cũng gii thiu cách la chn các mu thit k  có th áp
dng vào h thng ang xây dng và mt s vn  dùng mu thit k  gii quyt.
Qua hai thp niên phát trin, s lưng các mu thit k ưc  xut ngày
càng nhiu. Các mu GoF ưc xem là các mu nn tng cho các nhà khoa hc làm
cơ s   xut ra nhng mu thit k hu ích cho ngành công nghip phát trin
phn mm.
N hóm tác gi GoF phân loi các mu thit k da trên 2 tiêu chí như Bng 2-
1. Tiêu chí th nht da theo mc ích ca vic s dng mu, có 3 nhóm: Các mu
to lp (Creational patterns), các mu cu trúc (Structural patterns) và các mu ng
x (Behavioural patterns). Tiêu chí th hai da theo phm vi mà áp dng ca mu:
Các mu th hin mi quan h gia các lp i tưng vi nhau (Class patterns) và
các mu th hin mi quan h gia các i tưng (Object patterns)

Mục đích
hóm tạo lập hóm cấu trúc hóm ứng xử
Phạm vi

Lớp
Factory Method Adapter Interpreter
Template Method
Đối
tượng
Abstract Factory

Builder
Prototype
Singleton
Adapter

Bridge
Composite
Decorator
Facade
Proxy
Chain of Responsibility

Command
Iterator
Mediator
Memento
Flyweight
Observer
State
Strategy
Visitor
Bảng 2-1: Phân loại mẫu thiết kế [5]
15

2.4.1 Các mẫu tạo lập (Creational patterns)
Các mu thit k thuc nhóm này nhm tng quát hóa quá trình thc thi ca
mt tin trình công vic nào ó. Chúng giúp mt h thng c lp vi vic to, thc
hin và biu din các i tưng ca nó. Các mu to lp dng lp (class creational
patterns) s dng tính k tha  yêu cu lp khác thc hin công vic theo tng
tiêu chuNn hay tình hung c th. Trong khi các mu to lp dng i tưng (object
creational patterns) s y nhim công vic n các i tưng khác. N hóm này bao
gm các mu: Factory Method, Abstract Factory, Builder, Prototype, Singleton.
2.4.2 Các mẫu cấu trúc (Structural patterns)
Các mu thit k thuc nhóm này quan tâm n vic các lp và i tưng
ưc t chc như th nào trong mt cu trúc ln bao gm nhiu lp i tưng. Các

mu cu trúc dng lp (class structural patterns) s dng tính k tha  kt hp các
giao tip (interfaces) hoc các lp hin thc (implementations). Trong khi các mu
cu trúc dng i tưng mô t cách thc  kt hp các i tưng  hin thc
nhng chc năng mi. N hóm này bao gm các mu: Adapter, Bridge, Composite,
Decorator, Façade và Proxy.
2.4.3 Các mẫu ứng xử (Behavioural patterns)
Các mu thit k thuc nhóm này quan tâm n các gii thut và nhng yêu
cu trách nhim gia các i tưng vi nhau. Chúng th hin s giao tip gia các
i tưng trong h thng và quá trình này ưc iu khin như th nào trong mt
chương trình phc tp. Các mu ng x dng lp s dng tính k tha  la chn
và x lý các cách ng x gia các lp. Trong khi các mu ng x dng i tưng s
dng cách kt hp các i tưng  x lý. N hóm này bao gm các mu: Interpreter,
Template Method, Chain of Responsibility, Command, Iteratror, Mediator,
Memento, Flyweight, Observer, State, Strategy, Visitor.
2.4.4 Mẫu thiết kế hướng đối tượng dạng phức hợp
Theo Dirk Riehle, mu thit k phc hp [16] là mt mu thit k có ý nghĩa
như các mu thit k thông thưng khác và là s kt hp ca các mẫu thiết kế
nguyên tử (atomic patterns) hay các mu thit k phc hp khác. Trong ó mẫu
16

thiết kế nguyên tử là nhng mu thit k không th ưc mô t bng s kt hp ca
các mu thit k khác.
Trong mu thit k phc hp, các mu thành phn tích hp vi nhau  to
thành mt mu da trên s óng góp tính cht ca tng mu. Thc t, chúng ta
thưng hay nhm ln gia mu thit k kt hp và mu phc hp. Chúng ta cn bit
là các mu kt hp s dng cùng lúc nhiu mu  gii quyt mt vn  c th nào
ó nhưng không th s dng li  gii quyt vn  tương t trong mt tình hung
khác.

2.5 Các bước để lựa chọn mẫu thiết kế

•  la chn mu thích hp phi xác nh ưc cn thit k gì, các vn 
phát sinh trong khi thit k, các vn  ó thuc loi nào và tham kho ng
vi loi vn  ó có th dùng mu nào  gii quyt.
• Tham kho ln lưt tng mu ưc chn, xem mc ích s dng, i chiu
vi các vn  thit k gp phi. iu này giúp hiu rõ hơn v các mu và tác
dng thc ca mu lên vn  cn gii quyt.
• Tìm hiu s tương tác gia các mu thit k  xác nh ưc các nhóm mu
phù hp vi bài toán ca mình.
• Các mu ưc phân loi theo mc ích s dng: Creational (kin to),
Behavioral (hành vi), Structural (cu trúc). S phi hp và tính lng ghép
làm cho nhiu mu có c tính và cu trúc khá ging nhau. Do ó cn phi
tìm hiu cNn thn mc ích ca mu  phát hin ra im ging nhau và khác
nhau nhm áp dng mt cách hiu qu nht, tránh cài t sai lm v ng
nghĩa khi thit k.
• Tìm kim, kho sát các nguyên nhân có th dn ti vic thit k li  cô lp
hóa, nhm tránh các thay i không cn thit.
• Xác nh các thành phn (module, lp i tưng…) có th thay i trong
tương lai. T ó quyt nh xem phi làm gì  có th thay i h thng mà
không cn phi thit k li.
17

2.6 Một số vấn đề được giải quyết bằng mẫu thiết kế
Sau ây tôi trình bày mt s vn  thưng gp và hưng gii quyt các vn  ó
bng mu thit k:
• Tạo một đối tượng bằng một lớp rõ ràng. Xác nh tên lp khi to i
tưng s có mt cài t c th thay cho mt lp o. iu này làm cho vic
thay i ng dng trong tương lai tr nên phc tp.  tránh nguy cơ này, ta
có th to i tưng gián tip.
Hưng gii quyt: s dng mu Abstract Factory, Factory Method,
Prototype.

• Phụ thuộc vào phần cứng và hệ điều hành. Mt chương trình ưc thit k
trên Windows s không chy hiu qu trên Linux vì các hàm APIs và
platform là khác bit nhau. Do ó cn phi thit k sao cho chương trình có
th linh ng chuyn i không ph thuc vào bt kỳ h iu hành, phn
cng nào…
Hưng gii quyt: s dng mu Abstract Factory, Bridge.
• Phụ thuộc vào việc thể hiện hay cài đặt của đối tượng. Client bit chi tit
v i tưng mà nó gi n, thưng có xu hưng thay i nu i tưng
thay i. Vì th cn che giu nhng thông tin không cn thit ca i tưng
ó vi Client.
Hưng gii quyt: s dng mu Abstract Factory, Bridge, Memento, Proxy.
• Phụ thuộc vào thuật toán. Cách gii quyt mt bài toán nào ó ti thi
im này có th chưa tt và cn phi ưc m rng thay th hoc ti ưu hóa.
Vic ph thuc vào cách gii quyt mt vn  c th thưng làm thay i
các i tưng có liên quan, thm chí gây ra s thay i dây chuyn… Do ó
các thut toán càng c lp thì càng hn ch s ràng buc.
Hưng gii quyt: s dng mu Builder, Iterator, Strategy, Template
Method, Visitor.
• Phụ thuộc quá chặt giữa các đối tượng. Do lp i tưng A và B liên kt
(ph thuc) vi nhau quá cht (chng hn như thit lp quan h song
18

phương) nên rt khó có th thay i lp A nu không hiu rõ v lp B (hoc
thm chí còn phi thay i lp B)
Hưng gii quyt: s dng mu Abstract Factory, Bridge, Chain of
Responsibility, Command, Facade, Mediator, Observer.
• Mở rộng chức năng bằng cách kế thừa. Thay i i tưng bng cách k
tha không phi là d dàng. Mi lp k tha u có mt hoc nhiu cài t
c nh, do ó  k tha cn phi có s hiu bit sâu v lp cơ s. Và k
tha có th dn n s bùng n lp, vì có nhiu lp k tha ch bi mt hành

ng ơn gin.
Kt hp i tưng là mt cách thay th cho vic k tha hành vi. Chc năng
mi có th ưc thêm vào ng dng bng cách kt hp các i tưng ã có
hơn là nh nghĩa mt lp k tha t lp ã có. Tuy nhiên nu kt hp quá
nhiu i tưng có th khin cho thit k phc tp.
Hưng gii quyt: s dng Bridge, Chain of responsibility, Composite,
Decorator, Strategy
• Không thể thay đổi lớp. Trong mt vài trưng hp chúng ta cn phi thay
i chc năng ca mt lp i tưng sao cho phù hp vi hoàn cnh thc t
ca h thng hoc tích hp các lp i tưng khác vào h thng, nhưng
chúng ta không có mã ngun ca nhng i tưng ó… iu này yêu cu
chúng ta phi thit k li h thng.
Hưng gii quyt: s dng mu Adapter, Decorator, Visitor.



19

Chương 3 Tổng quan về rút trích
thông tin
Chương 3 giới thiệu chung về tình hình nghiên cứu và giới hạn hướng
nghiên cứu của đề tài. Phân biệt giữa hướng nghiên cứu của đề tài và các hướng
nghiên cứu khác. Bài toán đặt ra và các nghiên cứu liên quan cũng được trình bày
trong chương này.
3.1 Giới thiệu chung
Công ngh thông tin ã tác ng mnh m n s phát trin ca tt c các
ngành ngh trong i sng xã hi và c bit là s ra i ca Internet. ây thc s
là cuc cách mng vĩ i vì mt trong s các ng dng ni bt ca Internet là Word
Wide Web ã mang li cho chúng ta mt kho kin thc mà không mt thư vin, mt
b bách khoa toàn thư hay mt h thng thư vin nào có th so sánh ưc. Tuy

nhiên,  ngưi dùng có th d dàng và nhanh chóng tìm thy ưc thông tin cn
thit, Khai phá web óng mt vai trò rt to ln. Khai phá web (web mining) bao
gm khám phá và phân tích d liu, tài tiu, a phương tin t Word Wide Web.
Khai phá Web (web mining) [BO] là vic trích chn ra các thành phn ưc
quan tâm hay ưc ánh giá là có ích cùng các thông tin tim năng t các tài
nguyên hoc các hot ng liên quan ti World Wide Web.
Khai phá Web = Khai phá d liu + X lý ngôn ng t nhiên + World Wide Web
Khai phá web ưc chia thành 3 lĩnh vc nghiên cu chính [19] là khai phá
ni dung Web (Web content mining), khai phá cu trúc Web (Web structure
mining) và khai phá s dng Web (Web usage mining).
• Khai phá nội dung Web:
Khai phá ni dung Web là quá trình x lý  ly ra các tri thc t ni dung
các trang văn bn hoc mô t ca chúng. Khai phá ni dung web tp trung vào vic
khám phá mt cách t ng ngun thông tin có giá tr trc tuyn và có th tip cn
theo 2 hưng khác nhau là khai thác văn bn web và ti ưu kt qu tr v t công c
20

tìm kim. Khai phá d liu a phương tin là mt phn ca khai phá ni dung Web.
ây ha hn vic khai thác ưc các thông tin và tri thc  mc cao t ngun a
phương tin trc tuyn rng ln.
o Khai phá văn bn Web: là vic s dng k thut khai phá d liu i vi các
tp văn bn  tìm ra tri thc có ý nghĩa tim Nn trong nó. D liu ca nó có
th là d liu có cu trúc hoc không cu trúc. Vn  này liên quan ch yu
ti vic khai phá bn thân ni dung các văn bn, và ây là ni dung cơ bn
nht cn quan tâm trong khai phá Web.
o Ti ưu kt qu tr v t các công c tìm kim (tng hp kt qu): trong các
công c tìm kim Web, sau khi ã tìm ra ưc các trang Web tha mãn yêu
cu ngưi dùng, còn mt công vic không kém phn quan trng ó là phi
sp xp, chn lc kt qu theo mc  phù hp yêu cu ngưi dùng. N goài
vic sp xp kt qu theo hng quan trng ca trang, cn tin hành phân cm

tp các trang Web tr v và to nhãn cm  cung cp n ngưi dùng. Quá
trình này thưng s dng các thông tin như tiêu  trang, URL, content-type,
các liên kt trong trang Web…  tin hành phân cm và ưa ra tp con các
kt qu tt nht cho ngưi dùng.
• Khai phá cấu trúc Web
N h các kt ni gia các văn bn siêu liên kt, World Wide Web cha ng
nhiu thông tin hơn so vi tp các văn bn ni dung trang Web. Ví d: s lưng liên
kt tr ti mt trang Web ưc coi như mt ch s v mc  quan trng ca trang
Web ó ng thi các liên kt i ra t mt trang Web ch dn rng các trang ích có
ni dung liên quan ti các ch  ang ưc  cp trong trang hin ti.
Mc tiêu ca Khai phá cu trúc Web là  phát hin thông tin cu trúc v
Web. N u Khai phá ni dung Web ch yu tp trung vào cu trúc bên trong tài liu
thì khai phá cu trúc Web c gng  phát hin cu trúc liên kt ca các siêu liên kt
 mc trong ca tài liu. Da trên mô hình hình hc ca các siêu liên kt, khai phá
cu trúc Web s phân loi các trang Web, to ra thông tin như  tương t và mi
21

quan h gia các Website khác nhau. N u trang Web ưc liên kt trc tip vi
trang Web khác thì ta s mun phát hin ra mi quan h gia các trang Web này.

• Khai phá sử dụng Web:
Khai phá s dng Web hay Khai phá h sơ Web (Web log mining) là vic x
lý  ly ra các thông tin hu ích trong các h sơ truy cp Web. Thông thưng các
Máy ch Web thưng ghi li và tích lũy các d liu v các tương tác ca ngưi
dùng khi nhn ưc mt yêu cu truy cp. Vic phân tích các h sơ truy cp Web
ca các trang web khác nhau s d oán các tương tác ca ngưi dùng khi h tương
tác vi Web, giúp tìm hiu cu trúc ca Web. T ó ci thin thit k ca các h
thng liên quan. N hư Khai phá cu trúc Web, mô hình ng x ca ngưi dùng trên
Internet và mô hình s dng Web cn ưc quan tâm  cp.
Có hai xu hưng chính:

o Khai phá các mu truy cp: phân tích các h sơ Web  bit ưc các mu và
các xu hưng truy cp. Các phân tích này có th giúp cu trúc li các trang
 phân nhóm hiu qu hơn, xác nh các v trí qung cáo hiu qu nht, hay
gn các qung cáo sn phNm cho nhng ngưi dùng  t ưc hiu qu cao
nht.
o Khai phá các xu hưng cá nhân: Mc ích là  chuyên bit hóa các website
cho các lp i tưng ngưi dùng. Các thông tin ưc hin th,  sâu ca
cu trúc site và nh dng ca các tài nguyên, tt c u có th chuyên bit
hóa mt cách t ng cho mi ngưi dùng theo thi gian da trên các mu
truy cp ca h.

3.2 Giới hạn hướng nghiên cứu của đề tài
Khai phá ni dung Web là mt trong nhng ni dung cơ bn nht cn nghiên
cu trong quá trình khai phá web. Khi khai phá ni dung Web, mt s bài toán ưc
quan tâm trong khai phá ni dung Web là tìm kim thông tin, rút trích thông tin,
phân loi thông tin, tóm tt thông tin…
22

Trong phm vi  tài, tôi tp trung vào hưng nghiên cu rút trích thông tin.
c bit chúng tôi tp trung vào vic rút trích thông tin t các trang web Nn vi ni
dung ng bên dưi các form theo tng ch  riêng bit.
Hin nay mc dù ã có nhiu thành tu v lĩnh vc rút trích thông tin t web
và rút trích thông tin t các trang web Nn nhưng  nhà phát trin xây dng và phát
trin mt ng dng rút trích thông tin t các trang web Nn vn là mt quá trình phc
tp.  tài ca chúng tôi mong mun óng góp vào hưng nghiên cu này.

3.3 Giới thiệu về Rút trích thông tin
3.3.1 Khái niệm
Rút trích thông tin (IE – Information Extraction) [18] là quá trình ly thông
tin t các ngun  nhng nh dng không ng nht và chuyn thành mt dng

ng nht. D liu sau khi rút trích ưc s dng, trình bày trc tip cho ngưi
dùng, lưu vào cơ s d liu  x lý sau ó hay s dng cho nhng h thng tìm
kim thông tin như mt d liu ã qua bưc tin x lý.
3.3.2 So sánh rút trích thông tin và tìm kiếm thông tin
Tìm kim thông tin (IR – Information Retreival) [19] là phương pháp tìm
kim thông tin, tìm kim văn bn  ly ra nhng văn bn phù hp vi nhng tiêu
chí t ra ban u. IE và IR có im chung là em n cho ngưi dùng nhng thông
tin cn thit nhưng IE và IR hoàn toàn khác nhau:
• H thng IR tp trung vào vic tìm kim nhng văn bn liên quan và em
n cho ngưi dùng.
• H thng IE là phân tích văn bn và ch mang n cho ngưi dùng nhng
mu tin phù hp mà ngưi dùng quan tâm.
Ví d: ly bi cnh trong nhà sách, mt h thng IE s tìm kim tt c các
tên và a ch công ty có trong tt c nhng tài liu trong nhà sách. Thông tin này s
ưc nh dng rõ ràng theo mt cu trúc nào ó và trình bày cho ngưi dùng.
Trong khi ó, h thng IR s tìm kim ra nhng cun sách có liên quan n mt
23

công ty nào ó. Thông tin công ty ưa vào tc là yêu cu ca ngưi dùng và kt qu
thu ưc t h thng IR là tp hp nhng cun sách tha mãn yêu cu ó.
Tùy vào tng ng cnh, tng bài toán mà  phc tp ca h thng s khác
nhau nhưng cũng có trưng hp IE kt hp vi IR trong mt h thng nào ó.
3.3.3 Hệ thống rút trích thông tin từ các trang web
3.3.3.1 Khái niệm:
Rút trích thông tin t web là quá trình ly thông tin t các trang web và
chuyn thành thành dng ng nht.
N him v chính ca các trang web tìm kim hin nay tr v cho ngưi dùng
nhng tài liu có s tương thích cao vi nhng t khóa mà ngưi dùng ưa vào.
Tuy nhiên, trong khi lưng thông tin vô cùng khng l trên web như hin nay, tn
ti rt nhiu các i tưng trong nhng trang web ni hoc Nn như: thông tin con

ngưi, sn phNm, bài báo, thông tin v t chc, các s kin,… N u như các i
tưng này ưc rút trích ra t web ri tng hp li và cho ngưi dùng tìm kim theo
mt tiêu chí hoc theo mt ch  nào ó, ngưi dùng s có ưc mt công c tìm
kim hưng i tưng hiu qu và tha mãn hơn.
3.3.3.2 Phân loại hệ thống rút trích thông tin từ web
N gày nay, có rt nhiu h thng rút trích thông tin t web ưc các nhà phát
trin nghiên cu và xây dng. Các tiêu chí  phân loi mt h thng rút trích thông
tin t web như sau:
Dựa vào mức độ can thiệp của con người trong quá trình rút trích thông
tin, các h thng rút trích thông tin có th ưc chia ra làm 4 loi: th công, có
giám sát, bán giám sát và không giám sát. Trong ó, các h thng hoàn toàn t
ng, không có s can thip ca con ngưi ang ưc các nhà nghiên cu quan tâm
nht.
Dựa vào tầng dữ liệu được rút trích: mt trang web s có nhiu trang
HTML, mt trang HTML s có nhiu record và mt record s có nhiu thuc tính.
Do ó, da vào kt qu thông tin rút trích ưc  tng nào, các h thng rút trích
ưc chia ra làm 4 loi: tng thuc tính (attribute), tng record, tng trang HTML
24

(page) và tng trang web (site). Hin ti các h thng x lý  tng thuc tính và
record chim a s. Và cho n nay, vn chưa thy xut hin các h thng rút trích
thông tin  tng site.
Dựa vào các phương pháp rút trích thông tin, các h thng rút trích thông
tin cũng ưc chia thành 3 dng:
• Các h thng da trên các phương pháp th công: s dng các phương pháp
gán nhãn, các cách ly thông tin trc tip t cơ s d liu hoc t các dch v
web (web service).
• Các h thng da trên các phương pháp heuristic: các phương pháp thng kê,
tp lut, s dng các mu thông tin, da vào cu trúc cây,… ưc s dng 
rút trích thông tin.

• Các h thng da trên các phương pháp hc: s dng các phương pháp mô
hình Markov, ng nghĩa, hc trên cu trúc cây,…  giúp cho các h thng
hiu và rút trích thông tin chính xác hơn.
3.3.3.3 Khảo sát một số ứng dụng rút trích thông tin từ web
• Web-Harvest là công c mã ngun m  rút trích d liu Web. Công c
cung cp mt phương pháp  thu thp các trang Web mong mun và rút
trích d liu hu ích t chúng. ó là s dng các k thut thao tác trên
text/xml như XSLT, XQuery và biu thc quy tc.
Do các s dng mt s logic nên cn thit  mô t quá trình làm th
nào  ly d liu mong mun t ni dung hn hp. Tt c các th tc rút
trích trong Web-Harvest là ngưi dùng nh nghĩa thông qua các tp tin cu
hình XML. Mi tp tin cu hình mô t các trình t x lý thc hin mt s
nhim v  ưc mc tiêu cui cùng.
• RoadRunner [22] hot ng da trên thut toán hc không giám sát. Mc
ích ca công c là rút trích ưc các d liu t nhng trang web có lưng
ln d liu và cu trúc ít thay i. RoadRunner hot ng bng cách so sánh
cu trúc HTML ca các trang mu cùng loi và to ra mt lưc  cho các
d liu cha trong các trang t nhng th HTML.
25


• Dynamo nhn mnh vic rút trích d liu qua các trang web  nhng trang
HTML. N hng công c hin nay khi rút trích hoàn tt thưng gp nhiu khó
khăn  qun lý vic to ra các RSS feeds nhưng li gp mt s hn ch như
ngun cp d liu cũ có th không ưc quan tâm và thưng b xóa t các
máy ch và máy ch truyn thng không th thc hin các truy vn trc tip.
N gưc li, vi Dynamo s:
o T ng phát sinh RSS t nhng d liu ca trang HTML.
o Lưu tr các ngun cung cp d liu theo th t thi gian.
o Truy vn và tng hp thành các dch v web.

N hn xét: Các công c rút trích thông tin t web này phn ln ch có th áp
dng cho các trang web ni. Vy i vi các trang web Nn, chúng ta có th s dng
li các công c này hay phi xây dng mt h thng mi. N u các công c này có
th tái s dng thì i vi các nhà phát trin, vic tái s dng s ưc tin hành như
th nào?

3.4 Bài toán cần giải quyết
Rút trích thông tin t các trang web da trên ch  là mt trong nhng
hưng nghiên cu nhn ưc nhiu quan tâm. Vn  tr nên quan trng khi các
trang web ang ngày mt gia tăng và nhu cu s dng thông tin ca ngưi dùng
ưc nâng cao. N hng công c phân tích các lung và các ch  thông tin tr nên
cn thit khi giúp ngưi dùng có mt cái nhìn tng quát và nh hưng thông tin tt
hơn. N hng nhân viên làm vic vi các tp d liu văn bn ln như các nhà làm
lut, các nhà báo, nhng nhà thng kê … có thêm công c  duyt qua các mng
thông tin d dàng hơn theo các ch .
i vi nhng trang web Nn vi ni dung ng, thông thưng ngưi dùng phi
s dng các trang tìm kim thông tin ca trang web ó. iu này làm cho ngưi
dùng phi tn rt nhiu thi gian và chi phí  có th có ưc thông tin mình mun
c bit là các thông tin t các trang web Nn.
26


Hình 3-1 : Một số form tìm kiếm theo chủ đề việc làm [10]
Ví d tìm kim vic làm, ngưi dùng có th truy cp vào các mt trang v vic
làm, s dng các giao din truy vn  có th có ưc thông tin cn thit. Sau ó
ngưi dùng li truy cp vào các trang v vic làm khác và tip tc s dng giao din
truy vn  ly thông tin. Hình 3-1 mô t 3 giao din mà ngưi dùng phi truy cp
 ly ưc thông tin cn thit…Công vic này òi hi rt nhiu thi gian và công
sc ca ngưi dùng. Do ó cn thit phi có mt công c h tr ngưi dùng có
ưc các thông tin mà không cn phi truy cp thông qua giao din truy vn ca

tng trang.
i vi các nhà phát trin: Mong mun có ưc ngun thông tin t các trang
web Nn  s dng hoc làm d liu u vào cho h thng khác.
Hin nay có nhiu công c ã ưc các nhà nghiên cu phát trin. Tuy nhiên
các công c này thưng ưc dùng vi 1 ch  c th kèm mt s ít trang web Nn
và mt thut toán c nh như v chuyn bay [2], v vic làm [10] [12]… iu này
làm cho các nhà phát trin rt khó khăn khi m rng hay thay i các thành phn
trong h thng. Các nhà phát trin mong mun có ưc mt h thng có th d dàng
b sung hay thay i các ch , các trang web, các thut toán… cũng như d dàng
cho công tác bo trì và m rng t các thành phn trong h thng.
Vy gia h thng cn xây dng có mi quan h th nào vi máy tìm kiếm liên
hợp (meta search engine)?  tránh s nhm ln, tôi tin hành so sánh gia h
thng cn xây dng và máy tìm kim liên hp  bng 4-1.

×