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

tìm hiểu về phân loại văn bản và xây dựng chương trình ứng dụng

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

HUTECH
B GIÁO DC VÀ ÀO TO
TRNG I HC K THUT CÔNG NGH
KHOA CÔNG NGH THÔNG TIN
B MÔN CÔNG NGH PHN MM





LUN VN TT NGHIP

TÌM HIU V PHÂN LOI VN BN
VÀ XÂY DNG CHNG TRÌNH NG DNG


Sinh viên thc hin:
1. H tên: PHAN THANH BÌNH
MSSV: 10102019
2. H tên: LÊ BCH V
MSSV: 10102218


TP. H CHÍ MINH
NM HC: 2005-2006
HUTECH
B GIÁO DC VÀ ÀO TO
TRNG I HC K THUT CÔNG NGH
KHOA CÔNG NGH THÔNG TIN
B MÔN CÔNG NGH PHN MM






LUN VN TT NGHIP

TÌM HIU V PHÂN LOI VN BN
VÀ XÂY DNG CHNG TRÌNH NG DNG


Sinh viên thc hin:
1. H tên: PHAN THANH BÌNH
MSSV: 10102019
2. H tên: LÊ BCH V
MSSV: 10102218
Ging viên hng dn:
Ths. NGUYN CHÁNH THÀNH

TP.HCM, THÁNG 1 NM 2006
HUTECH
Lun vn tt nghip GVHD: Th.s Nguyn Chánh Thành

SVTH: Phan Thanh Bình & Lê Bch V Trang 1

LI NÓI U

Ngày nay, vi s phát trin ca công ngh thông tin, thì s lng thông tin
cng bùng n nhanh chóng. Các thông tin tn ti di nhiu hình thc khác
nhau nh: các trang web, th đin t, c s d liu… Do đó công vic tìm
kim thông tin theo ni dung nào đó cng tr nên khó khn. T thc tin này

nhu cu phân loi các thông tin đã xut hin t rt sm. Nhng nu dùng con
ngi đ phân loi các thông tin thì s mt rt nhiu công sc và tin bc. Cho
nên ngi ta đã tìm ra nhiu phng pháp phân loi vn bn t đng giúp gim
gánh nng cho con ngi.
HUTECH
Lun vn tt nghip GVHD: Th.s Nguyn Chánh Thành

SVTH: Phan Thanh Bình & Lê Bch V Trang 2

TÓM TT NI DUNG

Trong lun vn này chúng tôi s trình bày v các phng pháp phân loi vn
bn và hin thc gii thut K-Nearest Neightbour (K-NN). ây là gii thut
không quá phc tp nhng có đ chính xác khá cao.
Các phn trong lun vn s đc trình bày nh sau:
Chng 1: Chng này s trình bày v nhu cu thc tin ca vic phân loi
vn bn và các ng dng thc t ca các ph ng pháp phân loi vn bn t
đng. Chng này s cho ta thy s cn thit ca vic phân loi vn bn t
đng trong thi đi ngày nay.
Chng 2: Chng này trình bày v các c s lý thuyt liên quan đn quá trình
phân loi vn bn t đng. Cung cp các kin thc rt quan trng dùng đ cài
đt và kim tra hiu qu ca các phng pháp phân loi t đng.
Chng 3: Chng này trình bày tng quan mt s phng pháp phân loi vn
bn t đng nh: Gii thut Rocchio, Gii thut K-Nearest Neighbour, Naïve
Bayes, Gii thut cây quyt đnh, Gii thut mng neuron, Gii thut Support
Vector Machine.
Chng 4: Chng này s trình bày bng thit k và cài đt chng trình phân
loi vn bn t đng theo phng pháp K-Nearest Neighbour. Sau đó chúng tôi
s trình bày các kt qu đt đc sau khi chy th nghim chng trình nh đ
chính xác, tc đ ca chng trình.  minh ha cho vic ng dng phng

pháp phân loi vn bn t đng, chúng tôi có cài đt các module crawler dùng
đ rút trích vn bn trên mng máy tính, module index dùng đ lp ch mc các
vn bn đã phân loi và mt trang web tìm kim.
Chng 5: Chng này s trình bày các tho lun và rút ra các kt lun và kt
qu đi chiu vi mc tiêu đ ra. Cui cùng là đnh hng phát trin ca đ tài.
HUTECH
Lun vn tt nghip GVHD: Th.s Nguyn Chánh Thành

SVTH: Phan Thanh Bình & Lê Bch V Trang 3

LI CM N

Li cám n đu tiên chúng tôi xin gi đn Thc s Nguyn Chánh Thành. Thy
đã tn tình hng dn và đnh hng cho chúng tôi t đ án c s, đ án
chuyên ngành và nay là lun vn tt nghip. Chúng tôi xin chúc thy luôn vui
v hnh phúc và luôn nhit tình ch bo cho các sinh viên. Tip theo chúng tôi
xin cám n các anh ch trong công ty Thng mi c phn HPT chi nhánh
thng mi TP-HCM đã nhit tình giúp đ và to điu kin cho chúng tôi tìm
kim vn bn và d liu kim chng chng trình. Cui cùng xin cám n đn
các bn thân hc cùng khóa 01- TH đã quan tâm đng viên c húng tôi trong
quá trình thc hin đ tài này.
HUTECH
Lun vn tt nghip GVHD: Th.s Nguyn Chánh Thành

SVTH: Phan Thanh Bình & Lê Bch V Trang 4
MC LC
LI NÓI U 1
TÓM TT NI DUNG 2
LI CM N 3
MC LC 4

DANH MC HÌNH 9
DANH MC BNG 11
Chng 1 12
PHÁT BIU VN  12
1.1. Gii thiu 12
1.1.1. ng c thúc đy vic phân loi vn bn t đng
13
1.1.2. Mt s ng dng ca vic phân loi vn bn theo ch đ
14
1.2. Ni dung đ tài
15
1.3. ng dng m rng - Lp ch mc và tìm kim ca Lucene
16
1.3.1. Gii thiu Lucene
16
1.3.2. C s nn tng ca Lucene
18
1.3.3. Mc đích, chc nng, công dng
18
1.3.4. To ch mc và tìm kim
19
Chng 2 20
C S LÝ THUYT PHN LOI VN BN 20
2.1. Biu din vn bn 20
2.1.1. Phng pháp Boolean
23
2.1.2. Phng pháp tn sut t (work frequency)
24
2.1.3. Phng pháp tf-idf (frequency x inverse document frequency)
24

2.1.4. Phng pháp tfc (Term Frequency Component)
25
2.1.5. Phng pháp ltc (Log Term Component)
25
2.1.6. Phng pháp Entropy
26
HUTECH
Lun vn tt nghip GVHD: Th.s Nguyn Chánh Thành

SVTH: Phan Thanh Bình & Lê Bch V Trang 5
2.2. Rút gn danh sách t 26
2.2.1. Phng pháp ngng tn xut ca vn bn.
27
2.2.2. Phng pháp đ li thông tin
27
2.2.3. Phng pháp thông tin tng h
28
2.2.4. Phng pháp đ mnh ca t
28
2.2.5. Phng pháp thng kê
2
χ
29
2.3. Tp vn bn dùng đ phân loi 30
2.3.1. Gii thiu
30
2.3.2. Tp Reuters
30
2.3.3. Tp 20-newsgroup
33

2.4. ánh giá đ chính ca vic phân loi vn bn
34
2.4.1. Thông s precision.
35
2.4.2. Thông s recall
35
2.4.3. Thông s f (f-score)
35
2.4.4. Thông s accuracy
36
2.4.5. Thông s error
36
Chng 3 37
CÁC GII THUT PHÂN LOI VN BN 37
3.1. Gii thut Rocchio 37
3.1.1. Gii thiu
37
3.1.2. Giai đon hun luyn
38
3.1.3. Giai đon phân loi
39
3.1.4. ánh giá gii thut
40
3.2. Gii thut K-Nearest Neighbour
41
3.2.1. Gii thiu
41
3.2.2. Giai đon hun luyn
42
3.2.3. Giai đon phân loi

43
HUTECH
Lun vn tt nghip GVHD: Th.s Nguyn Chánh Thành

SVTH: Phan Thanh Bình & Lê Bch V Trang 6
3.2.4. ánh giá gii thut 44
3.3. Gii thut Naïve Bayes
45
3.3.1. Gii thiu
45
3.3.2. Giai đon hun luyn
46
3.3.3 Giai đon phân loi
46
3.3.4. ánh giá gii thut
47
3.4. Gii thut cây quyt đnh
47
3.4.1. Cây quyt đnh
47
3.4.2. Entropy và đ li thông tin.
49
3.4.3. Ct nhánh cây quyt đnh.
49
3.4.4. Nhn xét
50
3.5. Gii thut mng Neuron (Neural Network)
50
3.5.1. Gii thut
50

3.5.2. ánh giá gii thut
53
3.6. Gii thut Support Vector Machine
54
3.6.1. Các mt phân cách (Hyperplanes)
54
3.6.2. Gii thut Support Vector Machine.
55
3.6.3. Nhân xét.
56
3.7. Chn gii thut
57
Chng 4 58
THIT K VÀ HIN THC CHNG TRÌNH PHÂN LOI VN BN 58
4.1. Quá trình xây dng gii thut K-Nearest Neighbour 58
4.1.1. Xây dng t đin (danh sách t khóa)
58
4.1.2. Giai đon hun luyn
58
4.1.3. Giai đon phân loi
59
4.2. S đ usecase
60
4.3. S đ tun t ca vài nghip v chính
61
HUTECH
Lun vn tt nghip GVHD: Th.s Nguyn Chánh Thành

SVTH: Phan Thanh Bình & Lê Bch V Trang 7
4.3.1. Hun luyn vn bn 61

4.3.2. Phân loi vn bn
62
4.3.3. ánh giá kt qu phân loi
63
4.3.4. Trích rút d liu trên mng
65
4.3.5. Lp ch mc
66
4.3.6. Tìm kim
67
4.4. S đ lp
68
4.4.1. Pakage textcategory.reader
68
4.4.2. Package textcategory.analysis
69
4.4.3. Package textcategory.training
70
4.4.4. Package textcategory.category
72
4.4.5. Package store.
72
4.4.6. Package crawler
73
4.4.7. Package index
74
4.4.8. Package util
74
4.5. Thit k c s d liu
75

4.6. Thit k giao din
76
4.6.1. Màn hình chính ca chng trình
76
4.6.2. Màn hình to loi vn bn
76
4.6.3. Màn hình hun luyn chng trình
77
4.6.4. Màn hình phân loi d liu
77
4.6.5. Màn hình kt qu phân loi
78
4.6.6. Màn hình to ch mc (reverted index)
78
4.6.7. Màn hình trích rút d liu trên mng
79
4.6.8. Trang ch tìm kim theo ch đ
79
4.6.9. Trang tìm kim theo ch đ
80
4.7. Kt qu đt đc
80
HUTECH
Lun vn tt nghip GVHD: Th.s Nguyn Chánh Thành

SVTH: Phan Thanh Bình & Lê Bch V Trang 8
Chng 5 83
ÁNH GIÁ VÀ HNG PHÁT TRIN 83
5.1. ánh giá 83
5.1.1. Kt qu đt đc

83
5.1.2. Các hn ch ca đ tài
84
5.2. Hng phát trin ca đ tài
84
PH LC 86
1. T đin gii thích các thut ng 86
2. Các mã ngun m đc s dng trong lun vn
87
3. Tài liu tham kho
87
HUTECH
Lun vn tt nghip GVHD: Th.s Nguyn Chánh Thành

SVTH: Phan Thanh Bình & Lê Bch V Trang 9
DANH MC HÌNH
Hình 1. Mô hình kin trúc ca Lucene 17
Hình 2. Mô hình không gian vector 3 chiu. 22
Hình 3. nh minh ha cho gii thut phân loi vn bn Rocchio 39
Hình 4. Mình ha xác đnh vector Q ging D1 hay D2 theo gii thut KNN 44
Hình 5. Cây quyt đnh cho ch đ “earning” 48
Hình 6. Biu đ th hin hiu qu ca vic ct nhánh 50
Hình 7. Mô hình mt Perceptron 51
Hình 8. Mô hình mng neuron 53
Hình 9. Mô hình lan truyn d liu 53
Hình 10. ng phân cách 54
Hình 11. Các trng hp ca đng phân cách 55
Hình 12. Biu din nhiu ch đ khác nhau trong phng pháp SVM 55
Hình 13. Mô t phng pháp SVM 56
Hình 14. Ví d cn phân loi vn bn x vi K = 3 59

Hình 15. S đ use case mô t các nghip v ch ng dng 60
Hình 16. S đ tun t ca quá trình hun luyn chng trình 61
Hình 17. S đ tun t ca quá trình phân loi vn bn 62
Hình 18. S đ tun t ca quá trình đánh giá kt qu phân loi 64
Hình 19. S đ tun t ca quá trình đánh giá kt qu phân loi 65
Hình 20. S đ tun t ca quá trình lp ch mc 66
Hình 21. S đ tun t ca quá trình tìm kim 67
Hình 22. Package reader 68
Hình 23. Pakage analysis 69
Hình 24. Pakage training 70
Hình 25. Pakage category 72
Hình 26. Package store 72
Hình 27. Package crawler 73
HUTECH
Lun vn tt nghip GVHD: Th.s Nguyn Chánh Thành

SVTH: Phan Thanh Bình & Lê Bch V Trang 10
Hình 28. Package index 74
Hình 29. Package util 75
Hình 30. C s d liu 75

HUTECH
Lun vn tt nghip GVHD: Th.s Nguyn Chánh Thành

SVTH: Phan Thanh Bình & Lê Bch V Trang 11
DANH MC BNG
Bng 1. Ví d mt t đin 21
Bng 2. Các version ca tuyn tp Reuter. 31
Bng 3 . Thng kê mt s ch đ trong tp Reuters 33
Bng 4. Thng kê mt s ch đ trong tp 20-newsgroup 34

Bng 5. Các trng hp phân loi 35
Bng 6. Tóm tt hiu qu ca các gii thut ( bi Yang & Liu) 57
Bng 7. Kt qu đt đc ca chng trình demo 82

HUTECH
Lun vn tt nghip GVHD: Th.s Nguyn Chánh Thành

SVTH: Phan Thanh Bình & Lê Bch V Trang 12
Chng 1
PHÁT BIU VN 
1.1. Gii thiu

Lun vn này trình bày v vn đ phân loi vn bn t đng theo các ch đ
cho trc.  tài này đã đc nghiên cu t đu thp niên 1960. K t đó, đ
tài này đã liên tc đc nghiên cu và phát trin thông qua các th vin đin
t, báo chí và các vn bn trc tuyn. Khái nim phân loi vn bn đc đnh
ngha nh sau:
“Phân loi vn bn (Text Categorization) là vic quyt đnh xem mt mu vn
bn thuc v mt ch đ nào đó trong tp ch đ cho trc. ây là chc nng
x lý vn bn tng quát có ích cho vic lp ch mc và truy xut thông tin sau
này, là mt công đon trong h thng x lý ngôn ng t nhiên đ phân tích ni
dung và trong nhiu vai trò khác.”
X lý ngôn ng t nhiên (NLP: Natural Language Processing) là lnh vc
thuc ngành trí tu nhân to và ngôn ng hc. Nó có nhng phng pháp giúp
cho vic x lý, thao tác và hiu ngôn ng t nhiên mt cách d dàng và làm
cho các câu lnh trong máy tính hiu đc các ngôn ng ca nhân loi. Do đó,
nó thu hút rt nhiu nhà khoa hc nghiên cu và đã đt đc nhng thành tu
đáng k. Sau đây là mt vài thành tu có th k đn nh:
 c vn bn (Text to Speech)
 Nhân dng ting nói (Speech Recognition)

 Sinh ra ngôn ng t nhiên (Natural Language Generation)
 Máy dch thut (Machine Translation)
 Tr li câu hi (Question Answering)
 Tìm kim thông tin (Information Retrieval)
 Trích rút thông tin (Information Extraction)
 Kim chng vn bn (Text-Proofing)
HUTECH
Lun vn tt nghip GVHD: Th.s Nguyn Chánh Thành

SVTH: Phan Thanh Bình & Lê Bch V Trang 13
 Tóm tc t đng (Automatic Summarization)
 M h v ng ngha (Syntactic ambiguity)
 X lý ngôn ng bng thng kê (Statistical Natural Language Processing)
Trong lun vn này chúng tôi trình bày là phân loi vn bn t đng - mt
hng nghiên cu trong lnh vc x lý ngôn ng t nhiên bng thng kê. Mc
tiêu ca vic phân loi vn bn t đng là phi vit mt chng trình có kh
nng phân loi chính xác mt vn bn bt k (bng ting Anh).
1.1.1. ng c thúc đy vic phân loi vn bn t đng
Phân loi vn bn t đng đem li rt nhiu li ích trong đi sng hin nay.
Tht vy, s phát trin vt bc ca Internet dn đn s bùng n ca các vn
bn trc tuyn, cho nên cn phi phân loi các vn bn nhn đc vào các ch
đ khác nhau.
Nu vic phân loi vn bn c đin đc thc hin th công, ngha là thông
qua con ngi (các chuyên gia ca tng lnh vc), thì s lng chuyên gia
tham gia vào vic phân loi là rt ln và thi gian phân loi cng ln hn, điu
này rt tn kém và gây nhàm chán cho các chuyên gia này. Tuy nhiên vic
phân loi th công cng không tránh khi nhng ý kin ch quan ca nhng
chuyên gia, vì vy đ chính xác cng không cao.
Khi đó các công c ph ân loi vn bn t đng rt hu ích cho ngi đc trong
vic t chc d liu. Do đó vic phân loi tin hành bng máy có u đim là

hiu sut cao, có th hot đng bt k lúc nào.Tuy nhiên vn đ ta cn quan
tâm là đ chính xác ca h thng.
Tht vy, nu thc hin theo cách t đng s tn dng đc kh nng quét các
vn bn và kh nng x lý nhanh ca máy tính. Do đó hiu sut s ln hn và
đ chính xác s cao hn nu nh máy tính đc hun luyn tt.
HUTECH
Lun vn tt nghip GVHD: Th.s Nguyn Chánh Thành

SVTH: Phan Thanh Bình & Lê Bch V Trang 14
1.1.2. Mt s ng dng ca vic phân loi vn bn theo ch đ
a. Phân loi vn bn theo ngôn ng

 mt s trung tâm kim duyt vn bn, s lng vn bn nhn đc rt ln.
Các vn bn này có th đc biu din t các ngôn ng khác nhau. Ta có th
dùng các h thng phân loi vn bn theo ngôn ng đ gán các vn bn này vào
tng ngôn ng c th. Các chuyên gia ngôn ng s kim duyt các vn bn này
theo ngôn ng chuyên môn ca h.
b. Phân loi thông tin theo ch đ

Cng ging nh vic phân loi vn bn theo ngôn ng, vic phân loi thông tin
theo ch đ s phân chia các thông tin nhn đc vào các ch đ khác nhau.
Nu vic phân loi này đc thc hin th công, ngha là thông qua con ngi,
thì s lng chuyên gia tham gia vào vic phân loi là rt ln và thi gian phân
loi cng ln hn. Vic phân loi th công cng không tránh khi ý kin ch
quan ca nhng chuyên gia, vì vy đ chính xác cng không cao. Trong khi đó,
nu thc hin theo cách t đng s tn dng đc kh nng quét các vn bn và
kh nng x lý nhanh ca máy tính. Do đó hiu sut s ln hn và đ chính xác
s cao hn nu nh máy tính đc hun luyn tt.
c. Tìm kim thông tin


Vic phân loi vn bn có th áp dng trong các h thng tìm kim thông tin
nhm tng hiu sut cng nh tng đ chính xác ca vic tìm kim. Do s phát
trin ca Internet, s lng thông tin trc tuyn ngày càng tng. Mt thao tác
ph bin trên Internet là tìm kim. Tuy nhiên, do khi lng thông tin rt ln
nên các c máy tìm kim (search engine) thng t chc d liu vào các ch đ
giúp không gian tìm kim gim đi, qua đó tng hiu sut ca h thng.
Ngoài ra vic tìm kim theo t khoá thng không đt đc đ chính xác cao
nên các search engine thng kt hp vi tìm kim theo ch đ nhm ci thin
đ chính xác ca vic tìm kim.
HUTECH
Lun vn tt nghip GVHD: Th.s Nguyn Chánh Thành

SVTH: Phan Thanh Bình & Lê Bch V Trang 15
d. Phân loi email
Chc nng ca mt h thng phân loi email t đng là:
- T chi mail theo lut.
- Phân phi mail vào các folder đnh trc.
- Chuyn mail đn đa ch khác.
1.2. Ni dung đ tài

Trong lun vn chúng tôi tìm hiu và áp dng phng pháp k – Nearest
Neighbour đ phân loi vn bn ting Anh. i vi ngôn ng ting Anh hin
nay có rt nhiu công trình liên quan nh: Google, Yahoo, …
Các vn bn cn phân loi trong lun vn chúng tôi gói gn trong 5 ch đ: Trí
tu nhân to (artificial intelligence), Cu trúc d liu + gii thut (structure and
algorithm), mng máy tính (network), sinh hc (biology), bóng đá (football).
Các ch đ trên đc thu thp t các trang web đc Google phân loi sn do
đó mi th loi rt đa dng v ni dung. Trong đó hai ch đ cu trúc d liu +
gii thut và trí tu nhân to đc xem là tiêu biu nht cho vic phân loi vì
chúng giao nhau rt ln, thêm vào đó là ch đ mng máy tính cng rt gn vì

chúng điu thuc cùng mt lnh vc khoa hc máy tính. Ngoài ra, các ch đ
còn li đi din cho các vn bn hoàn toàn khác nhau nên vic phân loi vn
bn s d dàng hn và đt đ chính xác cao hn. Do đó mt vn bn có th
thuc cùng lúc c hai hoc nhiu ch đ thì vic phân loi s khó khn hn và
mc đ chính xác cng thp hn. Nu gii quyt đc tình hung khó khn
trên thì vic phân loi vn bn cho các ch đ khác s đt đ chính xác cao
hn.
Tóm li, sau khi xây dng thành công gii thut phân loi vn bn cho các ch
đ trên, thì vic m rng phân loi vn bn cho nhiu ch đ khác là điu hoàn
toàn có th t hc hin đc mt cách d dàng. Mi ch đ cn phân loi phi
trên vài trm vn bn mu và phi có các chuyên gia riêng to lp thì mi có
th đt đc đ chính xác cao.
HUTECH
Lun vn tt nghip GVHD: Th.s Nguyn Chánh Thành

SVTH: Phan Thanh Bình & Lê Bch V Trang 16
1.3. ng dng m rng - Lp ch mc và tìm kim ca Lucene
1.3.1. Gii thiu Lucene

Lucene là b công c mã ngun m vit bng Java h tr vic to ch mc
(indexing) và tìm kim (searching) vn bn. ây là b công c d s dng, linh
hot và khá mnh vi mô hình kin trúc hng đi tng. Lucene là mt thành
viên rt đc a chung trong các d án ca Apache Jakarta. Trong vài nm
gn đây, hu ht các th vin tìm kim thông tin (IR: Information Retrieval)
bng Java đu hoàn toàn min phí.
Lucene có th to ch mc cho bt kì thông tin dng text nào bn mun, sau đó
thc hin tìm kim theo nhiu tiêu chun khác nhau. Mc dù ch làm vic vi
text, nhng có nhiu tính nng khác đc cung cp đ bn có th to index cho
vn bn Word, file PDF, XML, hay các trang HTML. Lucene không quá phc
tp. Nó cung cp mt khung làm vic c bn, h tr bn xây dng mt công c

tìm kim đy đ chc nng cho website ca mình.
Ta có th xem Lucene là mt tng phía di, giúp x lí thao tác index và search
cho các chng trình bên trên, nh trong hình sau:
HUTECH
Lun vn tt nghip GVHD: Th.s Nguyn Chánh Thành

SVTH: Phan Thanh Bình & Lê Bch V Trang 17

Hình 1. Mô hình kin trúc ca Lucene
Mt s chng trình tìm kim có đy đ chc nng đc xây dng da trên c
s Lucene. Nu bn đang tìm mt s th cn thit đã đc xây dng sn hay
mt khung làm vic dùng cho vic crawling, x lí vn bn, và tìm kim, bn có
th xem ti trang Lucene Wiki ( />lucene/PoweredBy) vi nhiu chng trình: Zilverline, SearchBlox, Nutch,
LARM, và jSearch.
Vi s phong phú ca thông tin, và thi gian là mt trong nhng th quý giá
ca hu ht mi ngi, chúng ta cn làm cho nhng câu truy vn tr nên linh
hot, đc lp, đc bit đ nhanh chóng ct ngang rào cn phân loi cng nhc
và tìm kim chính xác sau đó đa ra kt qu hp lý nht theo yêu cu.

HUTECH
Lun vn tt nghip GVHD: Th.s Nguyn Chánh Thành

SVTH: Phan Thanh Bình & Lê Bch V Trang 18
1.3.2. C s nn tng ca Lucene
Lucene là sn phm sáng to ca Doug Cutting và sn có trên SourceForge,
cho phép mi ngi download. Nó gia nhp dòng sn phm phn mm Apache
Software Foundation's Jakarta mã ngun m bng Java vào tháng 9 nm 2001.
T khi đc ph bin rng rãi, Lucene ngày càng đc nhiu ngi dùng và
các nhà phát trin ng h. Tháng 11 nm 2002, phiên bn Lucene 1.2 đc phát
hành, ri đn 1.3. Ngoài nhng t chc đc đ cp đn  trang "Powered by

Lucene", còn có các tp chí nh FedEx, Overture, Mayo Clinic, Hewlett
Packard, New Scientist magazine, Epiphany, và mt s khác.
1.3.3. Mc đích, chc nng, công dng

Doug Cutting, mt nhà phát trin đy kinh nghim trong lnh vc text-search
(tìm kim vn bn) và công c phc hi đã sáng to ra Lucene. Cutting là tác
gi chính ca c máy tìm kim V-Twin và hin nay là kin trúc s thâm niên
ti Excite. Ông đã thit k Lucene nhm giúp vic to index và kh nng tìm
kim có th phát trin trên nhiu ng dng, bao gm:
 Searchable email : Mt ng dng email cho phép ngi dùng tìm kim
các thông đip đã đc lu tr và thêm vào nhng thông đip mi đ
to index khi chúng đn.
 Online documentation search: mt documentation reader CD, Web
hay đc nhúng vào mt ng dng - cho phép ngi dùng tìm kim các
vn bn hng dn trc tuyn.
 Searchable Webpages: Mt trình duyt Web hay máy ch proxy có th
xây dng mt công c tìm kim riêng đ to index cho mi trang Web
mà ngi dùng đã vào, cho phép ngi dùng d dàng vào li các trang
Web đó.
 Website search: Mt chng trình CGI giúp ngi dùng tìm đc
Website ca bn.
HUTECH
Lun vn tt nghip GVHD: Th.s Nguyn Chánh Thành

SVTH: Phan Thanh Bình & Lê Bch V Trang 19
 Content search: Mt ng dng cho phép ngi dùng tìm kim các vn
bn đã đc lu li theo mt ni dung c th; nó có th tích hp vào
trong mt hp thoi m vn bn ( Open Document dialog).
 Version control và content management: mt h thng qun lí vn
bn có th to index cho các vn bn, hay phiên bn ca vn bn nhm

d dàng trong vic phc hi.
Tt nhiên, nhiu công c tìm kim có th thc hin hu ht các chc nng trên,
nhng ít có công c tìm kim mã ngun m nào li d dùng và linh hot nh
Lucene.
1.3.4. To ch mc và tìm kim

Trc tiên, bn cn đ d liu vào ng dng tìm kim ca mình (indexing) hay
ly d liu ra (searching).
- To ch mc (Indexing) bng các to các đi tng Documents vi nhng
Fields ca nó (là mt cp tên/giá tr) và đ nó vào mt IndexWriter đ phân
tích ni dung ca các Field values thành các token và to ra index.
- Tìm kim (Searching) dùng mt đi tng IndexSearcher. Trc ht, ly
câu truy vn (kiu String) t ngi dùng, truyn nó cho QueryParser (và nh là
QueryParser cn phi đc khi to trc đó, có cùng loi Analyzer khi bn
xây dng index; QueryParser s dùng Analyzer đ phân tích chui truyn vào)
và tr v mt đi tng Query. Sau đó, ly đi tng Query này dùng cho
phng thc IndexSearcher.search(). Nó s tr v đi tng Hits, là mt tp
hp các đi tng Document đc tìm thy. i tng Hits cng cha c score
cho mi Document.
HUTECH
Lun vn tt nghip GVHD: Th.s Nguyn Chánh Thành

SVTH: Phan Thanh Bình & Lê Bch V Trang 20
Chng 2
C S LÝ THUYT PHN LOI VN BN
2.1. Biu din vn bn

Hu ht các vn bn đu chuyn đi mt hay nhiu chui gm các t sang mt
dng thích hp đ có th đc x lý bi gii thut. Các vn bn đc coi là mt
tp hp ca các t mà không quan tâm đn cu trúc câu, trt t t, thì, t loi.

Trong vn bn ting Anh, đ so sánh s khác nhau gia nhng vn bn thì ta
chuyn chúng v dng nhng vector trng s. Chúng ta da vào nhng quy tc
sau đ ly thông tin t các vn bn hun luyn.
Du chm câu phân cách các t
Loi b các con s và du chm câu.
Chuyn tt c các t v dng ch thng.
Loi b nhng gii t (Prepositions), liên t (conjunctions), tr đng t
(auxiliary verbs), mo t (articles), .v.v.
Nhng t đc thay th v dng hình thái t gc. C th là nhng t có cùng t
hình thái thì cng đc đm cho t gc, và chúng đc ct b ph t ca gc
t.
Ví d, nhng t nh: economics và economy s có cùng cách th hin là
econom.
Nhng đc tính bt ngun t nhng tp vn bn hun luyn đc dùng đ to
mt t đin cha nhng t gc, nhng t nhn dng, và s ln mt t xut hin
trong tp hun luyn.
T gc T nhn dng S ln xut hin
Econom 12 1922
Offer 899 1897
HUTECH
Lun vn tt nghip GVHD: Th.s Nguyn Chánh Thành

SVTH: Phan Thanh Bình & Lê Bch V Trang 21
Industr 317 1893
Quarter 758 1842
Incr 18 1835
Bng 1. Ví d mt t đin
Giai đon sau này, t đin s đc s dng nh mt phng tin đ tính toán
tng đi quan trng dùng đ đm s ln xut hin ca t trong tt c các vn
bn.

Mt khi t đin đc to ra nhng vector t đin riêng l đc phát sinh.
Mô hình không gian vector biu din nhng vn bn nh nhng vector trng s
trong không gian n chiu to thành mô hình biu din d liu ca chúng ta.
Phng pháp này cn x lý trc mt lng d liu tng đi nh đ làm tin
ích khi chúng ta x lý mt khi lng d liu khng l.
Trong mô hình này mt vn bn đ c biu din bng mt vector các t vi s
chiu t là tng s t khác nhau ca t đin.

Mi t (term) th i trong mt vn bn d hoc trong câu truy vn th j có mt
giá tr trng s là w
ij

Ví d:
Biu din mt tp hp gm ba vn bn D1, D2, Q vi s chiu t = 3 ngha là
trong t đin có 3 t là T1, T2, T3.
Vn bn D1 cha 2 t T1, 3 t T2 và 5 t T3 => D1 = 2T1 + 3T2 + 5T3
Vn bn D2 cha 3 t T1, 7 t T2 và 1 t T3 => D2 = 3T1 + 7T2 + T3
là s thc.
Nh vy mt vn bn hoc câu truy vn đc biu din di dng:
S chiu = t = | tng s t vng |
d
j
= (w
1j
, w
2j
, …, w
tj
)
HUTECH

Lun vn tt nghip GVHD: Th.s Nguyn Chánh Thành

SVTH: Phan Thanh Bình & Lê Bch V Trang 22
Vn bn Q cha 0 t T1, 0 t T2 và 2 t T3 => Q = 0T1 + 0T2 + 2T3
Ta có cách vit di dng vector nh sau:
Vn bn D1: D1(2, 3, 5)
Vn bn D2: D2(3, 7, 1)
Vn bn Q: Q(0, 0, 2)
Do đó các vector D1, D2, Q s đc biu din trên mô hình không gian vector
3 chiu nh hình v.

Hình 2. Mô hình không gian vector 3 chiu.
Tp hp n vn bn và t tng s t trong t đin, ta có th biu din di dng
mt ma trn nh sau:

















tn2n1nn
t222122
t112111
t21
w… w wD
… … … … …
w… w wD
w… w wD
T … T T

T
3

T
1

T
2

D
1
= 2T
1
+ 3T
2
+ 5T
3
D
2
= 3T

1
+ 7T
2
+ T
3
Q = 0T
1
+ 0T
2
+ 2T
3
7
3
2
5
HUTECH
Lun vn tt nghip GVHD: Th.s Nguyn Chánh Thành

SVTH: Phan Thanh Bình & Lê Bch V Trang 23
Mi dòng là mt vector biu din cho mt vn bn, mi phn t w
ij
trong ma
trn tng trng cho s xut hin ca mt t trong mt vn bn nào đó; w
ij
= 0
ngha là t đó không có trong vn bn (do mi vn bn ch cha mt s t nào
đó).
Quan sát ta thy
Nu mt t xut hin trong vn bn càng nhiu, kh nng t đó liên quan đn
ch đ ca vn bn càng ln.

Nu mt t xut hin trong hu ht các vn bn, mà các vn bn đó đu thuc
các ch đ khác nhau, thì t đó không có ý ngha đi vi bt k mt ch đ
nào.
Gi
f
ij
là s ln xut hin ca t i trong vn bn j.
N là tng s các vn bn.
t là tng s t khác nhau trong t đin.
df
i
là tng s vn bn cha t i.
Có nhiu phng pháp đ xác đnh giá tr ca trng s w
ij
2.1.1. Phng pháp Boolean

. Sau đây là mt vài
phng pháp ph bin.
Mt vn bn đc biu din mi mt tp hp các t khóa. Các câu truy vn
da trên phng pháp Boolean là các biu thc Boolean gm các t khóa đc
lien kt vi nhau bi các toán t AND, OR, NOT và các du ngoc đ ch
phm vi. Ví d nh:
[[Rio & Brazil] | [Hilo & Hawaii]] & hotel & !Hilton]
D liu kt xut là các vn bn có liên quan hoc không liên quan và không có
sp xp.
ây là phng pháp đc s dng ph bin vì nó đn gin, d truy vn, hình
thc rõ ràng. Giá tr w
ij
ch bng 1 hoc 0, ngha là t i có hoc không xut
hin trong vn bn j.

×