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

Xây d ng h th ng tìm ki m thông tin ti ng Vi t d a trên các ch m c là các t ghép pot

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


Xây dng h thng tìm kim thông tin ting Vit da trên các ch mc là các t ghép
Nguyn Th Thanh Hà - 0112215 81 Nguyn Trung Hiu - 0112216
<!ATTLIST Doc SIMILAR CDATA #REQUIRED>
<!ATTLIST Doc Words CDATA #REQUIRED>
• XSD
<?xml version='1.0'?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
<! contents of XML Schema document goes here >
<AttributeType name="DOC_ID" dt:type="string"/>
<AttributeType name="SIMILAR" dt:type="fixed.14.4"/>
<AttributeType name="Words" dt:type="int"/>
<AttributeType name="Name" dt:type="string"/>
<ElementType name="Doc" content="eltOnly">
<attribute type="DOC_ID"/>
<attribute type="SIMILAR"/>
<attribute type="Words"/>
</ElementType>
<ElementType name="CAU_HOI" content="eltOnly">
<attribute type="Name"/>

Xây dng h thng tìm kim thông tin ting Vit da trên các ch mc là các t ghép
Nguyn Th Thanh Hà - 0112215 82 Nguyn Trung Hiu - 0112216
<element type="Doc" minOccurs="1" maxOccurs="*"/>
</ElementType>
</Schema>
1.8.2 Tài liu XML
<CAU_HOI Name="t nc và con ngi Vit Nam">
<Doc DOC_ID="12" SIMILAR="8.44" Words="3" />
<Doc DOC_ID="13" SIMILAR="1.24" Words="1" />


<Doc DOC_ID="38" SIMILAR="4.6" Words="2" />
<Doc DOC_ID="2446" SIMILAR="1.25" Words="1" />
</CAU_HOI>

Xây dng h thng tìm kim thông tin ting Vit da trên các ch mc là các t ghép
Nguyn Th Thanh Hà - 0112215 83 Nguyn Trung Hiu - 0112216
2. Chi tit các lp i tng
2.1 Các lp trong quá trình tách t
2.1.1   các lp
Hình 6-1 S lp tách t
2.1.2 p tách t ghép
Hình 6-2 Lp tách t ghép
p tách t ghép s có nhim v tách mt vn bn thành các t riêng bit.

Xây dng h thng tìm kim thông tin ting Vit da trên các ch mc là các t ghép
Nguyn Th Thanh Hà - 0112215 84 Nguyn Trung Hiu - 0112216
u vào là mt chui vn bn và u ra là mt chui cha các t, mi t s cách nhau
i du xung dòng ( ‘\r\n’ ).
Ví d :
chui u vào = “Thanh niên VN: ng lc cho nhng ý tng mi, tm nhìn mi.”
chui u ra = “Thanh niên\r\nVN\r\nng lc\r\ncho\r\nnhng\r\ný tng\r\n
i\r\ntm nhìn\r\nmi\r\n”.
2.1.2.1 Ý ngha ca các bin thành phn:
• ch : mng các ký tc bit (du chm, du phy, chm than, chm hi, hai
chm,…)  tách vn bn thành các cm t.
• hVietnamese : bng bm  lu tt c các t trong tn ting Vit.
2.1.2.2 Các hàm chính :
- Hàm TachThanhCumTu( ) : tách chui vn bn thành các cm t da
vào các kí tc bit nh : du chm, phy, chm hi, chm than…
* Thut toán

:
void TachThanhCumTu (chui vn bn)
{
while(gp tc bit u tiên trong chui vn bn)
{
// Ct phn u thành mt cm t.
// Gán chui vn bn thành phn sau.
}
}

Xây dng h thng tìm kim thông tin ting Vit da trên các ch mc là các t ghép
Nguyn Th Thanh Hà - 0112215 85 Nguyn Trung Hiu - 0112216
Ví d :
chui u vào = “Thanh niên VN: ng lc cho nhng ý tng mi, tm nhìn mi.”
tr v ta s có 3 chui cm t :
chui 1 = “Thanh niên VN”
chui 2 = “ng lc cho nhng ý tng mi”
chui 3 = “tm nhìn mi”
- Hàm TachMangTieng( ) : tách mt cm t thành tng ting da vào khang
trng.
* Thut toán :
void TachMangTieng(cm t)
{
while(gp ký t khong trng u tiên trong cm t)
{
// Ct phn u thành mt ting.
// Gán cm t thành phn sau.
}
}
Ví d :

chui u vào = “ng lc cho nhng ý tng mi” tr v là mng chui cha các
ting = {ng”;”lc”;”cho” “nhng”;”ý”;”tng”;”mi”}
- Hàm XacDinhTu( ) : gp các ting li thành t, so sánh trong tn ting
Vit và ta s lu li các t này vào mng các t.

Xây dng h thng tìm kim thông tin ting Vit da trên các ch mc là các t ghép
Nguyn Th Thanh Hà - 0112215 86 Nguyn Trung Hiu - 0112216
* Thut toán :
void XacDinhTu(mng các ting)
{
B1 : gán t = ting u tiên.
B2 : so sánh t có trong tn hay không.
B3 : nu t có trong tn và có 2 ting tr lên thì ta s lu li.
B4 : Nu trong mng ting vn còn thì t := t + ting tip theo.
Ngc li kt thúc hàm.
B5 : Quay li B2
}
i các mng ting ca ví d trên sau khi gi hàm này thì ta s có mng các t
nh sau:
ng chui các t={”ng lc”;”cho” “nhng”;”ý tng”; ”mi”}
2.1.3 p tách t
Hình 6-3 Lp tách t

Xây dng h thng tìm kim thông tin ting Vit da trên các ch mc là các t ghép
Nguyn Th Thanh Hà - 0112215 87 Nguyn Trung Hiu - 0112216
p tách t s có nhim v to tp tin vn bn Xml t tp tin vn bn gc, sau
ó s trích các t trong vn bn và cui cùng lu li các t trích c cùng vi các tài
liu cha tó thành tp tin Xml tách t.
2.1.3.1 Ý ngha ca các bin thành phn:
• ttg : i tng thuc lp CTachTuGhep

2.1.3.2 Các hàm chính :
- Hàm TaoXML( ) : chuyn mt tp tin vn bn có cu trúc thành tp tin XML
* Thut toán :
void TaoXML (tp tin vn bn)
{
To tp tin Xml  lu li ni dung tp tin vn bn.
// Dch con tr tp tin
while(cha ht tp tin vn bn)
{
B1 : tìm t khóa DOC ly phn giá tr.
B2 : tìm t khóa TITLE ly phn giá tr.
B3 : tìm t khóa AUTHOR ly phn giá tr.
B4 : tìm t khóa DATE ly phn giá tr.
B5 : tìm t khóa NEW ly phn giá tr.
B6 : tìm t khóa CONTENT ly phn giá tr.
lu li phn giá tr vào tp tin Xml.

Xây dng h thng tìm kim thông tin ting Vit da trên các ch mc là các t ghép
Nguyn Th Thanh Hà - 0112215 88 Nguyn Trung Hiu - 0112216
}// ENDWHILE
}
- Hàm Tachtu( ) : c phn ni dung ca tp tin XML vn bn và dùng i
ng thuc lp CTachTuGhep  trích thành các t.
* Thut toán :
string Tachtu (tp tin vn bn Xml)
{
- y phn ni dung (CONTENT) trong tp tin Xml
- Dùng i tng ca lp tách t ghép  tách t.
- t qu tr v s là mt mng cha các t riêng bit.
}

- Hàm KetQuaToXmlWord( ) : các t sau khi trích sc lu thành tp tin
XML mi gi là “tp tin sau khi tách t tài liu”
* Thut toán :
void KetQuaToXmlWord(chui cha các t)
{
B1 : To mt tp tin Xml
B2 : Tách ra tng t trong chui
B3 : Kim tra tó có lu trong tp tin Xml cha ?
o u cha : lu tó và lu tài liu tng ng
o u ri : kim tra tài liu ó ã c lu trong tó cha.
u cha ta mi lu tài liu ó.

Xây dng h thng tìm kim thông tin ting Vit da trên các ch mc là các t ghép
Nguyn Th Thanh Hà - 0112215 89 Nguyn Trung Hiu - 0112216
B4 : Nu cha ht chui quay li bc 2.
B5 : Lu tp tin Xml li.
}
2.1.4 p giao din tách t
Hình 6-4 Lp giao din tách t
* Giao din tách t :
Hình 6-5 Màn hình tách t

Xây dng h thng tìm kim thông tin ting Vit da trên các ch mc là các t ghép
Nguyn Th Thanh Hà - 0112215 90 Nguyn Trung Hiu - 0112216
- Ngi dùng có th chn ng dn ti các tp tin vn bn cn tách t.
- ListBox1 cha các tp tin vn bn trong ng dn ã chn.
- ListBox2 cha các tp tin vn bn c chn  tách t.
- ListBox3 cha các tp tin xml ã c tách t.
- ListBox4 cha các DocID trong tp tin xml ã c tách t. Vì mt tp tin vn bn
xml s cha nhiu tài liu và mi tài liu s có 1 DocID. Ngi dùng có th chn

DocID nào ó  xem kt qu tách t và tn s ca mi t trong tài liu ó. Sau khi
chn mt DocID s có giao din nh sau :
Hình 6-6 Màn hình chi tit tách t

Xây dng h thng tìm kim thông tin ting Vit da trên các ch mc là các t ghép
Nguyn Th Thanh Hà - 0112215 91 Nguyn Trung Hiu - 0112216
- Hàm x lý TachTu_Click( ) : hàm này s tách t tt c các tp tin c chn trong
ListBox2.
2.2 Các lp trong quá trình lp ch mc
2.2.1  các lp
Hình 6-7 S lp lp ch mc

Xây dng h thng tìm kim thông tin ting Vit da trên các ch mc là các t ghép
Nguyn Th Thanh Hà - 0112215 92 Nguyn Trung Hiu - 0112216
2.2.2 p lp ch mc
Hình 6-8 Lp lp ch mc
u vào ca lp lp ch mc là các tp tin tài liu ã c tách t và u ra s là
p tin ch mc tài liu. Nó s làm nhim v tính tn s, trng s ca t trong tài liu
sau ó s lu các thông tin này li thành tp tin Xml ch mc tài liu.
2.2.2.1 Ý ngha ca các bin thành phn :
• sl : i tng thuc lp CstopList  kim tra t có nm trong danh
sách StopList hay không.
2.2.2.2 Các hàm chính :
- Hàm TinhTanSo( ) : tính s ln xut hin ca t trong tài liu.
* Thut toán :
int TinhTanSo(string Tu, string MaTL)
{
- T mã tài liu xác nh c tên tp tin cha ni dung ca tài
liu.
- Duyt tu n cui vn bn ta tìm t khóa cn tìm, nu


Xây dng h thng tìm kim thông tin ting Vit da trên các ch mc là các t ghép
Nguyn Th Thanh Hà - 0112215 93 Nguyn Trung Hiu - 0112216
tìm thy thì tng bin m lên mt n v.
- Tr v bin m
}
- Hàm TinhTrongSo( ) : tính trng s ca t trong tài liu.
* Thut toán :
double TinhTrongSo( int Tns)
{
return TanSo* log
10
(tng s tài liu / s tài liu cha tó)
}
- Hàm ThemTaiLieuVaoInverted() : hàm này dùng  cp nht thêm tp
tin tài liu vào tp tin Inverted.
* Thut toán :
void ThemTaiLieuVaoInverted( )
{
B1 : Duyt qua tng t ca tp tin tài liu.
B2 : Nu tó có nm trong StopList thì quay li B1.
B3 : Tính tn s ca t trong tài liu.
B3 : Kim tra tó có trong tp tin Inverted cha ?
- Nu cha ta thêm t mi và thêm mã tài liu, tn s, trng s cho
ng 0.
- Nu có ri ta ch cn thêm mã tài liu, tn s, trng s ( 0 ) vào
 mà ta tìm thy trong tp tin Inverted.

Xây dng h thng tìm kim thông tin ting Vit da trên các ch mc là các t ghép
Nguyn Th Thanh Hà - 0112215 94 Nguyn Trung Hiu - 0112216

B4 : Cp nht li trng s tòan b tp tin Inverted.
}
- Hàm CapNhatTrongSo() : Sau khi thêm tài liu mi vào trng s s
không còn chính xác na nên ta phi cp nht li trng s.
* Thut toán :
void CapNhatTrongSo()
{
- Duyt qua tng t trong tp tin Inverted.
- Tính s tài liu cha tó (s nút con ca nó)
- Tính tng s tài liu.
- Cp nht li thuc tính trng s (gi hàm TinhTrongSo)
}
2.2.3 p giao din to mi ch mc
Hình 6-9 Lp giao din to mi ch mc
p này s có các i tng h tr giao din cho ngi s dng lp ch mc,
o ra tp tin Inverted mi
2.2.3.1 Ý ngha ca các bin thành phn :

Xây dng h thng tìm kim thông tin ting Vit da trên các ch mc là các t ghép
Nguyn Th Thanh Hà - 0112215 95 Nguyn Trung Hiu - 0112216
• lcm : i tng thuc lp lp ch mc.
2.2.3.2 Màn hình giao din to mi ch mc :
Hình 6-10 Màn hình to mi ch mc
• txtDuongDan : cha ng dn n các tp tin ã c tách t.
• btnDuongDan : chn ng dn n các tp tin ã c tách t.
• ListBox1 : cha các tp tin Xml trong ng dn ca txtDuongDan
• ListBox2 : cha các tp tin Xml c chn lp ch mc.
• btnLeft, btnRight : chuyn các tp tin qua li gia 2 ListBox

Xây dng h thng tìm kim thông tin ting Vit da trên các ch mc là các t ghép

Nguyn Th Thanh Hà - 0112215 96 Nguyn Trung Hiu - 0112216
• chkSelectAll : chn tt c các tp tin  lp ch mc.
• chkRemoveAll : Loi b tt c.
• btnThoat : tr li Form chính.
• btnLapChiMuc : chng trình bt u lp ch mc.
- S kin btnLapChiMuc_Click() : dùng i tng lcm (ca lp lp ch mc)
 lp ch mc cho tt c các tp tin trong ListBox2.
2.2.4 p giao din cp nht ch mc
Hình 6-11 Lp Màn hình cp nht ch mc
p MH_CapNhatChiMuc s làm nhim v cp nht các tp tin Xml ã c
tách t vào tp tin ã lp ch mc Inverted.
2.2.4.1 Ý ngha ca các bin thành phn :
• lcm : i tng thuc lp lp ch mc.

Xây dng h thng tìm kim thông tin ting Vit da trên các ch mc là các t ghép
Nguyn Th Thanh Hà - 0112215 97 Nguyn Trung Hiu - 0112216
2.2.4.2 Màn hình giao din cp nht ch mc :
Hình 6-12 Màn hình cp nht ch mc
• txtDuongDan : cha ng dn n các tp tin ã c tách t.
• btnDuongDan : chn ng dn n các tp tin ã c tách t.
• ListBox1 : cha các tp tin Xml trong ng dn ca txtDuongDan

Xây dng h thng tìm kim thông tin ting Vit da trên các ch mc là các t ghép
Nguyn Th Thanh Hà - 0112215 98 Nguyn Trung Hiu - 0112216
• ListBox2 : cha các tp tin Xml c chn lp ch mc.
• ListBox3 : cha các tp tin ã c lp ch mc.
• btnLeft, btnRight : chuyn các tp tin qua li gia ListBox1 và ListBox2
• chkSelectAll : chn tt c các tp tin  lp ch mc.
• chkRemoveAll : loi b tt c.
• btnThoat : tr li Form chính.

• btnCapNhat : chng trình bt u cp nht ch mc.
- S kin btnCapNhat_Click( ) : dùng i tng lcm (ca lp lp ch mc) 
p nht ch mc cho tt c các tp tin trong ListBox2, các tp tin nu ã c
p ch mc ri thì chng trình tng b qua.
2.3 Các lp trong quá trình tìm kim
2.3.1  các lp
Hình 6-13 S lp tìm kim

Xây dng h thng tìm kim thông tin ting Vit da trên các ch mc là các t ghép
Nguyn Th Thanh Hà - 0112215 99 Nguyn Trung Hiu - 0112216
2.3.2 p tìm kim
Hình 6-14 Lp x lý tìm kim
Lp CTimKiem s có nhim v tách t câu hi, loi b các t trong danh sách
StopList, sau ó tìm các t khóa ca câu hi trong tp tin Inverted  xác nh các tài
liu liên quan n câu hi, cui cùng là tính  tng quan gia các tài liu vi câu
i, sp xp  tng quan gim dn và hin th cho ngi s dng.
2.3.2.1 Ý ngha ca các bin thành phn:
• ttg : ây là i tng ca lp tách t ghép dùng  tách t câu hi.
• sl : ây là i tng ca lp CstopList dùng  kim tra các t trong
câu hi có nm trong danh sách StopList không.
2.3.2.2 Các hàm chính :
- Hàm TachTuCauHoi( ) : hàm này nhm mc ích tách câu hi thành các t
riêng bit. Ta dùng mt i tng thuc lp CTachTuGhep  tách t câu hi. Kt qu
tr v là mt chui cha các tã c tách ta s lu vào mt tp tin CauHoi.xml
trong th mc CauHoi.

Xây dng h thng tìm kim thông tin ting Vit da trên các ch mc là các t ghép
Nguyn Th Thanh Hà - 0112215 100 Nguyn Trung Hiu - 0112216
* Thut toán :
void TachTuCauHoi(câu hi)

{
CTachTuGhep ttg = new CTachTuGhep
String str = ttg.TachTuGhep(câu hi)
Ly tng t trong chui str a vào tp tin CauHoi.xml
}
Ví d : tp tin CauHoi.xml
<WORDS>
<WORD Name="tai nn" />
<WORD Name="giao thông" />
<WORD Name="i" />
<WORD Name="tphcm" />
</WORDS>
- Hàm LoaiBoSLCauHoi( ) : hàm này nhm mc ích loi b các t không
quan trng trong câu hi.
* Thut toán
:
void LoaiBoSLCauHoi()
{
-  tp tin CauHoi.xml
- Duyt qua các t xem có nm trong StopList hay không ?

Xây dng h thng tìm kim thông tin ting Vit da trên các ch mc là các t ghép
Nguyn Th Thanh Hà - 0112215 101 Nguyn Trung Hiu - 0112216
- u không a vào tp tin CauHoiLoaiBoSL.xml ( tp tin này cng
m trong th mc CauHoi)
}
Ví d : tp tin CauHoiLoaiBoSL.xml
<WORDS>
<WORD Name="tai nn" />
<WORD Name="giao thông" />

<WORD Name="tphcm" />
</WORDS>
- Hàm ThemDocVaWeight( ) : hàm này nhm mc ích là tìm kim trong tp
tin Inverted các tài liu liên quan n các t khóa ca câu hi.
* Thut toán
:
void ThemDocVaWeight()
{
-  tp tin CauHoiLoaiBoST.xml và duyt qua tng t.
- o tp tin CauHoiVaTaiLieu.xml
- i vi tng t ta dùng công c XPath  xác nh v trí t trong tp
tin Inverted
- a t khóa và các tài liu liên quan ( mã tài liu, tn s, trng s)
vào tp tin CauHoiVaTaiLieu.xml
}
Ví d : tp tin CauHoiVaTaiLieu.xml sau khi gi hàm ThemDocVaWeight

Xây dng h thng tìm kim thông tin ting Vit da trên các ch mc là các t ghép
Nguyn Th Thanh Hà - 0112215 102 Nguyn Trung Hiu - 0112216
<WORDS>
<WORD Name="tai nn" />
<Doc DOC_ID="1" Frequence="2" Weight="3.63" />
</WORD>
<WORD Name="giao thông" />
<Doc DOC_ID="3" Frequence="1" Weight="1.32" />
</WORD>
<WORD Name="tphcm" />
<Doc DOC_ID="4" Frequence="1" Weight="1.08" />
</WORD>
</WORDS>

- Hàm BoSungCacDocThieu( ) : hàm này nhm mc ích b sung các tài liu
có trong t khóa này mà không có trong t khóa khác ( phn tn s và trng s ta s
giá tr là 0 ).
Ví d : tp tin CauHoiVaTaiLieu.xml sau khi gi hàm BoSungCacDocThieu
<WORDS>
<WORD Name="tai nn" />
<Doc DOC_ID="1" Frequence="2" Weight="3.63" />
<DOC DOC_ID="3" Frequence="0" Weight="0" />
<DOC DOC_ID="4" Frequence="0" Weight="0" />
</WORD>

Xây dng h thng tìm kim thông tin ting Vit da trên các ch mc là các t ghép
Nguyn Th Thanh Hà - 0112215 103 Nguyn Trung Hiu - 0112216
<WORD Name="giao thông" />
<Doc DOC_ID="3" Frequence="1" Weight="1.32" />
<DOC DOC_ID="1" Frequence="0" Weight="0" />
<DOC DOC_ID="4" Frequence="0" Weight="0" />
</WORD>
<WORD Name="tphcm" />
<Doc DOC_ID="4" Frequence="1" Weight="1.08" />
<DOC DOC_ID="3" Frequence="0" Weight="0" />
<DOC DOC_ID="1" Frequence="0" Weight="0" />
</WORD>
</WORDS>
- Hàm TaoFileDoTuongQuan( ) : hàm này nhm mc ích to ra tp tin
TuongQuan.xml cha câu hi và các tài liu liên quan n câu hi kèm vi  tng
quan da vào tp tin CauHoiVaTaiLieu.xml
Theo lý thuyt thì  tng quan gia tài liu Di và câu hi Q sc tính theo
công thc :
SC(Q,D

i
) =
ij
1
w*
n
qj
j
d
=

i :
n : S t phân bit trong tp tài liu.
d
ij
: trng s ca t j trong tài liu d
i
. (ta ã tính c trc ó)
w
qj
: trng s ca t j trong câu truy vn Q. S có 2 giá tr nh sau :

Xây dng h thng tìm kim thông tin ting Vit da trên các ch mc là các t ghép
Nguyn Th Thanh Hà - 0112215 104 Nguyn Trung Hiu - 0112216
w
qj
= 1 : Nu t j có trong câu truy vn Q.
w
qj
= 0 : Nu t j không có trong câu truy vn Q.

Thc cht là ta ch cn cng các  tng quan tng t khóa ca câu hi là ta s có 
ng quan ca câu hi vi tài liu.
Ví d : tp tin TuongQuan.xml sau khi gi hàm TaoFileDoTuongQuan
<CAU_HOI Name=”tai nn giao thông ti TPHCM”>
<Doc DOC_ID="1" SIMILAR="3.63" Words="1" />
<DOC DOC_ID="3" SIMILAR ="1.32" Words ="1" />
<DOC DOC_ID="4" SIMILAR ="1.08" Words ="1" />
</CAU_HOI>
- Hàm TinhDoTuongQuan( ) : hàm này nhm tính  tng quan gia câu hi
và các tài liu có liên quan n nó. Trên thc t là ta gi 3 hàm va nêu trên.
* Thut toán :
void TinhDoTuongQuan()
{
ThemDocVaWeight();
BoSungCacDocThieu();
TaoFileDoTuongQuan();
}

Xây dng h thng tìm kim thông tin ting Vit da trên các ch mc là các t ghép
Nguyn Th Thanh Hà - 0112215 105 Nguyn Trung Hiu - 0112216
2.3.3 p giao din tìm kim
Hình 6-15 Lp giao din tìm kim
8.3.1. Ý ngha ca các bin thành phn :
§ Term : mng chui cha các t khóa ca câu hi.
§ DocID : mng chui cha DocID liên quan n câu hi.
§ Sim : mng s thc cha các  tng quan ca câu hi vi các tài liu
(DocID tng ng).
§ Words : mng s nguyên cha s t ca câu hi có trong tài liu
(DocID tng ng).
§ n : tng s tài liu liên quan n câu hi.

§ tk : i tng ca lp x lý tìm kim.

×