Cơ chế vấn tin dạng logic cho cơ sở dữ liệu văn bản không cấu trúc
Trang 1MỤC LỤC
MỞ ĐẦU 3
1 Giới thiệu chung: 3
2 Cơ sở dữ liệu văn bản: 4
3 Yêu cầu vấn tin: 6
4 Kết luận: 7
KHÁI NIỆM VỀ CHỈ MỤC ĐẢO VÀ CƠ CHẾ VẤN TIN 7
1 Chỉ mục đảo: 7
1.1 Danh sách đảo: 8
1.2 Tệp đảo: 9
1.3 Từ điển và trọng lượng văn bản: 9
2 Cơ chế vấn tin: 10
2.1 Vấn tin dạng xếp hạng: 10
2.2 Vấn tin dạng logic: 11
3 Kết luận: 12
XÂY DỰNG CHỈ MỤC ĐẢO 14
1 Cấu trúc dữ liệu: 14
2 Xây dựng cấu trúc từ điển 17
3 Xây dựng tệp đảo: 19
4 Giải thuật xây dựng chỉ mục đảo: 22
XỬ LÝ VẤN TIN LOGIC 23
1 Phân tích yêu cầu vấn tin : 23
2 Xử lý các phép logic: 28
2.1 Phép AND: 28
2.2 Phép OR: 29
3 Kết luận: 31
THIẾT KẾ HỆ THỐNG VÀ THỰC NGHIỆM 32
1 Mục đích xây dựng hệ thống: 32
2 Mô hình phân cấp chức năng: 33
3 Xây dựng chương trình 34
3.1 Ngôn ngữ sử dụng 34
3.2 Xây dựng cơ sở dữ liệu 34
3.3 Xây dựng chương trình 34
4 Thực nghiệm: 37
KẾT LUẬN 40
1 Kết qủa đạt được 40
2 Hạn chế 40
3 Hướng phát triển 40
LỜI GIỚI THIỆU
Trong thời đại ngày nay, công nghệ thông tin đã có những tiến bộ vượt bậc trên nhiều lĩnh vực, đặc biệt trong đó phải nói đến khả năng ứng dụng tin học vào
Trang 2cuộc sống nhằm đáp ứng mọi nhu cầu thực tế củacon người.
Thông tin là một phần của cuộc sống, con ngườiđang phải đối đầu với khó khăn là làm sao nắm bắt đượcthông tin một cách nhanh nhất và chính xác trước sựphát triển nhanh chóng của các nguồn thông tin Cùng vớisự bùng nổ của thông tin, các nhu cầu về dịch vụ tracứu thông tin cũng tăng lên không ngừng Ngày nay có rấtnhiều sản phẩm phần mềm không những đáp ứng đượccác nhu cầu đó mà ngày càng phát triển và hoàn thiệnhơn Đó là các hệ thống tra cứu thông tin
Xuất phát từ thực tế đó, được sự gợi ý củathầy Võ Ngọc Anh, trong quá trình làm đồ án tốt nghiệp
em chọn đề tài “ Cơ chế vấn tin dạng logic cho cơ sở dữliệu văn bản không cấu trúc “ Bằng những kiến thức đãhọc, em đã hoàn thành đồ án của mình với nội dung sau:
Chương 1: Mở đầu
Chương 2: Khái niệm về chỉ mục đảo và cơ chế vấntin
Chương 3: Xây dựng chỉ mục đảo
Chương 4: Xử lý vấn tin logic
Chương 5: Thiết kế hệ thống và thực nghiệm
Chương 6: Kết luận
Vì thời gian có hạn và kiến thức còn hạn chế nênchắc chắn trong đồ án này không tránh khỏi những thiếusót Em rất mong được sự góp ý, chỉ bảo của các Thầy
cô giáo và các bạn
Em xin chân thành cảm ơn khoa Công Nghệ Thông Tintrường Đại Học Kỹ Thuật cùng các Thầy cô đã tạo điềukiện cho em hoàn thành đồ án này Đặc biệt em xin chânthành cảm ơn thầy Võ Ngọc Anh đã giúp đỡ em tận tìnhtrong thời gian qua Cuối cùng xin cảm ơn các bạn đã độngviên và giúp đỡ tôi trong quá trình làm việc
Đà Nẵng, tháng 5 năm 2000
Sinh viên
Lê Ngọc Quang
CHƯƠNG 1
Trang 3MỞ ĐẦU
1 Giới thiệu chung:
Xã hội ngày càng phát triển, thì nhu cầu đòi hỏi sựđáp ứng các yêu cầu nhanh và chính xác của con ngườingày càng cao Ngày nay với một lượng thông tin khổnglồ về mọi mặt như khoa học kỹ thuật, văn học, nghệthuật, giải trí thì để đáp ứng được các yêu cầu thôngtin thích hợp về một thể loại hay nhiều thể loại nào đóđối với người vấn tin là rất quan trọng
Trong thư viện, để bạn đọc không phải mất cônglục tung cả đống sách để tìm cho mình một quyển sáchnhư ý thì người ta đã đưa ra một phương pháp giúp tìmkiếm rất nhanh là xây dựng chỉ mục Từ đó bạn đọc cóthể tìm kiếm nhanh các yêu cầu của mình với các chỉmục đã lập sẵn theo tên sách, tên tác giả hoặc nội dung
Sự phát triển vượt bậc của công nghệ thông tinlàm cho bộ mặt xã hội có những thay đổi đáng kể Conngười ở mọi lúc mọi nơi đều có thể nắm bắt một cáchnhanh chóng các thông tin mà mình quan tâm Đó là nhờ cáchệ thống truy tìm thông tin Các hệ thống truy tìm thôngtin ra đời đã góp phần không nhỏ trong lĩnh vực tra cứuđáp ứng được một phần yêu cầu của người vấn tin
Việc xây dựng hệ thống truy tìm thông tin trong lĩnhvực tin học cũng dựa trên nguyên tắc xây dựng chỉmục Điều này đã được dự đoán trước khi người ta tiếnhành xây dựng chỉ mục một cách thủ công và là tấtyếu khi máy tính ra đời Với việc sử dụng chỉ mục ta cókhả năng tìm được những thông tin cần thiết và đặc biệtlà khi thông tin được viết bằng những ngôn ngữ khác.Thực vậy, nếu ta muốn tìm được thông tin từ mộtquyển sách được viết bằng một ngôn ngữ khác thì trên
cơ sở chỉ mục của quyển sách đó ta xác định và dịchnhững trang chứa thông tin yêu cầu hơn là dịch toàn bộquyển sách ấy Một quyển sách không có chỉ mục sẽmang đến cho đọc giả sự bất lợi lớn Đa phần mọingười lúc này hay lúc khác đã đọc kỹ quyển sách để tìmkiếm một điều gì đó mà họ chắc chắn là có ở đónhưng đơn giản là tìm hoài không thấy
Đối với một dữ liệu nhỏ thông thường, để tìm mộtthông tin nào đó ta có thể tìm kiếm một cách tuần tựvà với một sự may mắn nào đó bằng những đầu mốingữ cảnh khác nhau có thể tìm được nội dung mong
Trang 4muốn Nhưng với một dữ liệu lớn cỡ Gigabyte tức làhàng trăm hàng triệu trang thì xem ra phương thức này làkhông hiệu quả Với dữ liệu đó, nếu như không dùng chỉmục mà thực hiện tìm kiếm để tìm thông tin quan tâmthì thời gian thực hiện là rất lâu Với lý do đó thì xâydựng chỉ mục cho hệ thống truy tìm thông tin mà đúnghơn là xây dựng chỉ mục cho cơ sở dữ liệu văn bản củahệ thống là cần thiết.
2 Cơ sở dữ liệu văn bản:
Thông tin là một phần quan trọng của cuộc sống conngười, nhất là trong xã hội hiện đại ngày nay Hàng ngàychúng ta thường xuyên đón nhận thông tin từ nhiều nguồnkhác nhau Đứng trước sự bùng nổ thông tin cùng vớiviệc áp dụng công nghệ thông tin, để giúp cho con ngườicó thể nắm bắt được thông tin mình quan tâm một cáchnhanh chóng thì các hệ thống tra cứu thông tin đã đưa racác thông tin được tổng hợp với nội dung khái quát nhất.Tập hợp những thông tin tổng hợp đó được gọi là cơ sởdữ liệu của hệ thống
Trong đồ án này với mục đích xây dựng hệ thốngtruy tìm thông tin ứng dụng trong các thư viện nhằm giúpđọc giả tìm được nội dung thông tin cần truy vấn mộtcách nhanh nhất thì hệ thống được xây dựng với một
cơ sở dữ liệu là tập hợp những lời giới thiệu khái quátvề nội dung của từng cuốn sách Để đơn giản, mỗi nộidung tóm tắt được trình bày theo một đoạn văn bản riêngbiệt, ngăn cách nhau bởi dấu cách dòng và một khoảngtrắng Một cơ sở dữ liệu như vậy gọi là cơ sở dữ liệuvăn bản hay còn gọi là bộ sưu tập văn bản
Trang 5Một minh hoạ về cơ sở dữ liệu văn bản như sau:
Mây núi thái hàng (NXB hội nhà văn)
15 truyện ngắn của Bảo Vũ trong tập
sách này, dẫu viết về tình yêu cuộc sống
với những bươn chải của lớp người trẻ
tuổi, về tình cảm, nếp sống, suy tư của
người già trong hiện tại hay khi lật lại
những tích cũ vẫn luôn luôn thổi vào
những trang văn hơi thở của nhịp sống
đương đại, tươi mới Trong tập có nhiều
tác phẩm lôi cuốn như : Trầu têm cánh
phượng, mây núi thái hàng
Gió nắng Trường Sơn (NXB văn nghệ TP HCM
)
Tập bút ký ghi lại cảm xúc của tác giả
Phan Lai Triều qua những tháng ngày sống
chiến đấu trên dãi Trường Sơn trong cuộc
kháng chiến chống Mỹ cứu nước Tác giả
khắc hoạ hình ảnh người lính trước bom
đạn kẻ thù vẫn lạc quan yêu đời, hình ảnh
các anh chịu đựng gian khổ, hy sinh anh
dũng, cống hiến cả tuổi xuân của mình cho
đất nước
Hình 1.1 : Trích một cơ sở dữ liệu văn bản
Như vậy cơ sở dữ liệu văn bản được định nghĩanhư là tập các văn bản riêng lẽ và mỗi văn bản được coilà một mẫu tin được lưu dưới dạng mà máy tính cóthể đọc được Với việc xây dựng chỉ mục, mỗi văn bảnđược coi là một chuỗi nối tiếp các từ Từ có thể là từđơn hay xâu ký tự có được bằng một quy ước nào đótrong văn bản Cách định nghĩa này là không đồng nhấttrong nhiều văn bản
Một cơ sở dữ liệu văn bản cũng như bản thân các vănbản không có sự giới hạn về độ dài Một văn bản cóthể gồm một vài byte hoặc vài Megabyte Một cơ sở dữliệu văn bản gồm vài trăm hoặc vài triệu văn bản nhưthế
Các đặc trưng quan trọng của cơ sở dữ liệu văn bảnđược liệt kê trong bảng sau:
Trang 6Ký hiệu Ý nghĩa Ví dụ
NFnDf
Số các văn bảntrong CSDLTổng số từ xuất
hiệnSố các từ khác
biệtKích thước CSDL
(Mbyte)Số con trỏ chỉ mục
31 102
884 988
9 0204,33
699 131
Bảng 1.1: Các đặc trưng của CSDL văn bản
Mỗi văn bản trong cơ sở dữ liệu văn bản có một địnhdanh duy nhất Để đơn giản, ta giả sử các văn bản đượcđịnh danh bằng các số tự nhiên ( từ 1 đến N ) theo thứtự nhập vào cơ sở dữ liệu Trong đồ án này định danhcòn gọi là số hiệu văn bản
Hình sau đây là một ví dụ về định danh của văn bản:Số hiệu văn
1234
Tác phẩm và tác giả được yêu thích
Thơ và truyện ngắn cách mạngGiới thiệu tác phẩm mới, tác phẩm được giải
Các tác phẩm truyện ngắn củatác giả BảoVũ
Hình 1.2 : Ví dụ về định danh của văn bản
Ví dụ trên được xem như là một ví dụ xuyên suốtcả đề tài này với mỗi dòng là một văn bản
3 Yêu cầu vấn tin:
Một thành phần rất quan trọng đối với hệ thốngtruy tìm thông tin là các yêu cầu vấn tin Đây là môi trườnggiao tiếp chính giữa người vấn tin và hệ thống truy tìmthông tin Một yêu cầu vấn tin là một yêu cầu dựa trênngôn ngữ tự nhiên, có thể là một từ hay một chuỗi cáctừ được liên kết với nhau bởi các phép toán logic như :AND, OR, XOR, NOT Trên cơ sở các yêu cầu đó, hệ thốngtruy tìm thông tin sẽ tìm các văn bản chứa thông tin tương
Trang 7ứng trong cơ sở dữ liệu văn bản và hiển thị cho ngườicần vấn tin.
Ví dụ về yêu cầu vấn tin như:
- Tác phẩm AND Tác giả
Trang 8truy tìm thông tin là tìm và hiển thị những thông tin thoảmãn yêu cầu nào đó của người vấn tin Trong đề luậnnày đó là các văn bản trong cơ sở dữ liệu văn bản.
Với một cơ sở dữ liệu cực lớn, giả sử gồm hàngtriệu văn bản, thì đó là thách thức đối với các hệ thốngtruy tìm thông tin Việc tìm lời giải cho các yêu cầu theohướng trực tiếp đến từng văn bản trong cơ sở dữ liệusẽ ảnh hưởng lớn đến thời gian truy tìm Vì vậy để nângcao tốc độ truy tìm của hệ thống ta tiến hành xây dựngchỉ mục cho cơ sở dữ liệu Có nhiều kỹ thuật xây dựngchỉ mục như chỉ mục đảo, chỉ mục chữ ký, chỉ mụchình ảnh Tuy nhiên chỉ mục chữ ký và chỉ mục hình ảnhđòi hỏi dung lượng bộ nhớ lớn nên trong đồ án này emchọn cách xây dựng chỉ mục dựa trên một kỹ thuậtgọi là kỹ thuật chỉ mục đảo Trên cơ sở chỉ mục đảo này,các hình thức vấn tin sẽ được xây dựng phù hợp vớicác yêu cầu của người vấn tin
Phần này thảo luận về cách thức cài đặt hệ thốngtruy tìm văn bản để có thể tìm câu trả lời cho các yêu cầudạng logic và xếp hạng Một yêu cầu logic đòi hỏi, đốivới mỗi từ của yêu cầu, một phương pháp xác định mỗivăn bản có chứa từ đó hay không Yêu cầu xếp hạng bêncạnh điều này còn đòi hỏi thông tin về tầm quan trọngcủa từ trong văn bản Cách thức cài đặt hợp lý đáp ứngcả hai yêu cầu trên là chỉ mục đảo
Chỉ mục đảo được xây dựng trên cơ sở ba thànhphần: danh sách đảo, từ điển và trọng lượng văn bản,tệp đảo Hệ thống sẽ xử lý trực tiếp trên các thànhphần này để đưa ra các văn bản có thông tin đáp ứngđược yêu cầu của người vấn tin
1.1 Danh sách đảo:
Danh sách đảo là thành phần quan trọng nhất trongchỉ mục đảo, được xây dựng từ cơ sở dữ liệu văn bảnban đầu Với mỗi từ khác biệt trong cơ sở dữ liệu, danhsách đảo tương ứng cho phép xác định từ đó có mặttrong những văn bản nào và có tầm quan trọng ra sao trongcác văn bản đó Như vậy danh sách đảo là danh sách cáccặp nhân tố < số hiệu văn bản , trọng lượng >
Để lưu trữ một cặp nhân tố như vậy cần 8 byte, 4byte cho số hiệu văn bản và 4 byte cho trọng lượng Vớimột cơ sở dữ liệu lớn thì số cặp nhân tố sẽ rất lớn vàđòi hỏi không gian nhớ cũng lớn Để tiết kiệm không gian
Trang 9nhớ, ta thay nhân tố trọng lượng bằng tần suất từ trongvăn bản Tần suất này được biểu diễn bởi số nguyên 2byte hoặc 1 byte Với cách thay thế này thì danh sách đảocủa từ t là một danh sách các cặp < d,fd,t >, trong đó d làsố hiệu văn bản chứa từ t và fd,t là số lần từ t xuấthiện trong d
1.2 Tệp đảo:
Tệp đảo là một tệp dùng để lưu trữ trọng lượngcủa mỗi văn bản tức là bao gồm các danh sách đảo củatất cả các từ khác biệt trong cơ sở dữ liệu văn bản Cóthể coi tệp đảo là một chuỗi nối tiếp các số thựctượng trưng cho trọng lượng của các văn bản theo thứtự tăng của số hiệu văn bản Chi tiết về cấu trúc củatệp đảo và phương pháp truy cập các thành phần trongtệp đảo sẽ được thảo luận ở chương tiếp theo
Xét một ví dụ đơn giản về tệp đảo với mỗi văn bảnđược đơn giản hoá thành một chuỗi nối tiếp các chữcái và xem đó như là các từ của cơ sở dữ liệu
Hình 2.1 : Ví dụ về tệp đảo
Trong ví dụ này, cơ sở dữ liệu văn bản bao gồm 6văn bản được đánh số từ 1 đến 6 và số các từ khácbiệt là 5 ứng với danh sách đảo được biểu diễn nhưtrên
c b e
1,2 2,2 3,5 4,1 5,2
2,3 4,1 5,1 6,1
1,3
1,1 3,1 4,1 6,4
a b c d e
Văn
ì t
Tệp đảoCSDL văn
bản
Trang 10
n t
t q
W
1 , 2
1.3 Từ điển và trọng lượng văn bản:
Một thành phần cũng rất quan trọng khác trong chỉmục đảo là từ điển Từ điển dùng để ghi lại tất cả cáctừ khác biệt của cơ sở dữ liệu cùng với địa chỉ của danhsách đảo tương ứng của nó trong tệp đảo Chức năngchính của từ điển là dùng để tìm kiếm từ và từ điểnthường được xây dựng theo cấu trúc cây nhị phân đểđáp ứng được yêu cầu của hệ thống Cấu trúc của từđiển sẽ được mô tả chi tiết ở chương sau
Như đã đề cập ở tệp đảo, trọng lượng củathực thể văn bản có thể được tính theo nhiều phươngpháp nhưng hầu hết là dựa trên hai thừa số sau: TF vàIDF
- TF gọi là tần suất từ tức là số lần xuấthiện của từ t trong thực thể văn bản d vàđược ký hiệu là fd,t
- IDF là tần suất văn bản ngược thường đượctính theo công thức log(N/ft) , trong đó N là sốvăn bản trong cơ sở dữ liệu và ft là số vănbản có chứa từ t
Thông thường trọng lượng của thực thể vănbản : TF* IDF
2 Cơ chế vấn tin:
Trong phần này giới thiệu khái quát về hai cơ chếvấn tin dạng logic và dạng xếp hạng
2.1 Vấn tin dạng xếp hạng:
Giả sử ta có một yêu cầu q (gồm một số từ t =1 n) và một cơ sở dữ liệu lớn gồm N văn bản không cấutrúc Để đáp ứng được yêu cầu vấn tin q thì hệ thốngphải thực hiện việc tính toán trọng lượng và độ tươnghợp của yêu cầu đó với mỗi văn bản có chứa thông tincần tìm Sau đó các văn bản sẽ được hiển thị cho ngườivấn tin theo thứ tự giảm dần của độ tương hợp Theo
như tài liệu Managing Gigabytes, độ tương hợp của yêucầu q và văn bản d được tính như sau:
Trong đó
là trọng lượng của yêu cầu q
là trọng lượng của văn bản d
n t
t d t q d
q
W W W
W d q S
1
,
1 ,
W
1
, 2
Trang 11t t
d t
N f
Và
Như vậy
Ví dụ về độ tương hợp như sau:
Giả sử ta có cơ sở dữ liệu như hình 2.1
Các giá trị fd,t và Wd tương ứng được liệt kêtrong bảng 2.1
030111
010000
101104
3,103,311,420,861,272,39
c,d
Wq=2,64
a,b,e
Wq=1,18
0,000,880,000,150,100,05
0,950,290,400,400,760,48
0,390,920,160,300,400,24
N f
W W d q
, * (log ) 1
,
Trang 122.2 Vấn tin dạng logic:
Cơ chế vấn tin này được thực hiện dựa trên cácphép toán logic là các phép toán AND , OR và NOT và sửdụng kỹ thuật chỉ mục đảo Với một yêu cầu q gồmmột số từ t được liên kết bởi các phép toán logic nhưtrên thì đầu tiên các từ sẽ được tìm trong từ điển , xácđịnh các danh sách đảo tương ứng và sau đó dựa trên cácphép toán logic tương ứng để xác định tập các văn bảnthoả mãn yêu cầu và trình bày cho người vấn tin
Cơ chế vấn tin dạng logic cho kết quả có độchính xác cao hơn so với vấn tin dạng xếp hạng Trong đềluận này chỉ xét cơ chế vấn tin dạng logic Chi tiết vềxử lý vấn tin dạng này sẽ được trình bày ở chương bốn
Một ví dụ minh họa cho cơ chế vấn tin dạnglogic :
Cho cơ sở dữ liệu như hình 1.2, ta xây dựng tệpđảo như sau:
Từ t Danh sách đảo It
2 , 1
4 , 1
3 , 1
3 , 1
3 , 1
4 , 1
1 , 1
4 , 1
1 , 1
3 , 1
4 , 1
2 , 1
Trang 13t q DTạc giaí
CHỈÅNG 3
Trang 14XÂY DỰNG CHỈ MỤC ĐẢO
1 Cấu trúc dữ liệu:
Cấu trúc dữ liệu là thách thức phải đương đầu khixây dựng chỉ mục Cách đơn giản nhất để mô tả cấutrúc chỉ mục đảo cho cơ sở dữ liệu là ma trận tuần tựcấp hai (m,n) Với cơ sở dữ liệu như hình 1.2 ta có ma trậntuần tự như sau:
-1 -111-
-11112 -
-11-1 11-1
Hình 3.1 : Biểu diễn chỉ mục bằng ma trận tuần
tự
Ma trận tuần tự cấp hai m hàng, n cột với cácthành phần cột là số hiệu văn bản và các thành phầnhàng là từ t trong cơ sở dữ liệu Giá trị giữa hàng và cộtlà số lần từ t xuất hiện trong văn bản đó, ký hiệu là f t ,d
Giả sử giá trị f t , d có độ dài là 4 byte thì kíchthước của cơ sở dữ liệu chỉ mục là:
S = 4*m*n (byte)Với ví dụ trên thì không gian nhớ cần thiết cho cơ sởdữ liệu chỉ mục là:
S = 4*7*4 = 112 (byte)Việc xây dựng cấu trúc chỉ mục đảo cho cơ sở dữliệu theo ma trận tuần tự như trên là rất tốn không giannhớ Bởi vì theo cách xây dựng trên thì các văn bản không
Trang 15chứa từ t nhưng vẫn chiếm giữ 4 byte nhớ trong ma trận.Như vậy, với một cơ sở dữ liệu rất lớn thì dung lượng
nhớ chi phí cho việc lưu trữ các văn bản không
chứa từ t cũng rất lớn Cho nên cấu trúc trên là khôngthích hợp
Để khắc phục nhược điểm của cấu trúc chỉ mụctheo ma trận tuần tự, ta sử dụng một cấu trúc khác,đó là danh sách liên kết
Đối với một từ khác biệt trong cơ sở dữ liệu sẽ cómột danh sách liên kết tương ứng và chỉ có những vănbản có chứa từ đó mới được lưu trữ trong danh sáchnày Sử dụng danh sách liên kết để biểu thị giá trị f t , dđã giảm đáng kể không gian nhớ không cần thiết trong matrận tuần tự Bên cạnh đó sử dụng danh sách liên kếtcó thể truy cập được theo một kiểu ngẫu nhiên, bởi vìmỗi phần tử của thông tin mang theo nó một mối liên kếtđến phần tử liền kế tiếp trong dây chuyền và đồng thờinó cho phép khả năng bổ sung vào danh sách Điều nàyrất quan trọng, bởi vì trên thực tế ta không chỉ xây dựngchỉ mục cho cơ sở dữ liệu văn bản tĩnh mà còn cho các cơsở dữ liệu văn bản động tức là các văn bản luôn luônđược bổ sung hoặc loại bỏ
Ví dụ sau minh hoạ cho việc xây dựng cấu trúc chỉmục đảo với cơ sở dữ liệu hình1.2
Hình 3.2 : Biểu diễn chỉ mục cho cơ sở dữ liệu bằng danh sách liên kết
4 1 X
4 1 X
4 1 X
4 1 X
4 1 X
4 1 X
4 1 X
4 1 X
2 1 X
4 1 X
1 1
3 1 X
3 1 X
3 1 X
1 1
1 1
2 1 X
2 1
1 1
1 1 X
4 1 X
4 1 X
3 2
4 1 X
2 1 X
kết
Trang 16Trong ví dụ trên, X quy ước nhận giá trị NULL.
Đối với một cơ sở dữ liệu nhỏ thì khó có thể đánhgiá tính hiệu quả của các cấu trúc dữ liệu nhưng vớimột cơ sở dữ liệu lớn bao gồm hàng triệu văn bản thì môhình cấu trúc dùng danh sách liên kết là rất hiệu quả
Thời gian cũng là một trong những yếu tố quantrọng dùng để đánh giá hiệu quả của hệ thống Vì vậyviệc giảm tối thiểu thời gian thực thi chương trình là vấnđề được đặt ra trong đồ án này Cấu trúc cây nhị phângiải quyết được vấn đề này bởi cây nhị phân vẫn đượcxem là đặc biệt vì khi sắp xếp chúng tự làm cho cácphép chèn, tìm kiếm và xoá được nhanh hơn
Theo các nhà nghiên cứu thì một cây nhị phân códạng như sau:
Hình 3.3 : Một cây nhị phân biểu diễn bằng danh
sách liên kết
Phần tử đầu tiên của cây gọi là Root, mỗi phần tửdữ liệu được gọi là một node của cây và bất cứ mộtphần nào của cây đều được gọi là cây con Một nodekhông có cây con nối vào thì được gọi là node kết thúchay là lá Mỗi phần tử của một cây bao gồm thông tincùng với một liên kết đến phần tử bên trái và một liênkết đến phần tử bên phải
Cây nhị phân cũng có thể được biểu diễn bởi danhsách đặc Các nút trên cây nhị phân được đánh số bắtđầu từ 1 trở đi theo thứ tự từ mức này đến mức khácvà các nút trên cùng một mức thì được đánh từ trái sangphải Nút i sẽ có 2 con là nút 2i và nút 2i+1 Dùng vecto Vđể lưu trữ các phần tử của cây, trong đó phần tử Vi sẽchứa nút i của cây
T1
T2
T4
0
0
T5
0 0
Trang 17Từ những ưu điểm của cây nhị phân nên trong đồ ánnày em chọn cấu trúc cây nhị phân để xây dựng chỉ mụcđảo.
Trong đồ án này một cấu trúc cây nhị phân có thểđược định nghĩa bằng ngôn ngữ lập trình như sau :
Struct tree
char t 20 ;long ft ;dsd It;tree left;
tree right;
;Trong đó dsd là cấu trúc của một danh sách đảođược định nghĩa như sau:
Struct dsd
long d;
int fd,t ;dsd next ;
;
2 Xây dựng cấu trúc từ điển
Trong chương 2 đã định nghĩa về từ điển, đó là mộtcấu trúc bao gồm các thành phần : từ t, tần suất ft vàđịa chỉ của danh sách đảo It Việc tìm kiếm đựơc thựchiện trên từ điển và thông qua địa chỉ của It xác địnhđược danh sách đảo tương ứng trong tệp đảo
Cấu trúc đơn giản nhất của từ điển là dạng mảngcác bảng ghi bao gồm một chuỗi cùng với hai trườngnguyên Cấu trúc đó được mô tả như hình 3.5
Trang 18Việc lưu tữ theo phương thức này sẽ lãng phíkhoảng không gian nhớ rất lớn Giả sử, để lưu trữ mộtchuỗi cần 20 byte cùng với 4 byte cho giá trị ft và 4 byte chođịa chỉ của danh sách đảo It thì không gian nhớ mà từ điểncần để lưu trữ sẽ lớn hơn 28 Mbyte.
Không gian nhớ cần để lưu trữ các chuỗi sẽ giảmnếu như tất cả các chuỗi đó kết nối thành một chuỗidài liên tiếp và sử dụng con trỏ 4 byte để truy cập Lúcnày, mỗi một chuỗi sẽ bao gồm chính xác số ký tự củachuỗi đó cộng thêm 4 cho con trỏ truy cập Cấu trúc nàyđược phát thảo trong hình 3.6 Khi một chuỗi được chỉmục thì nó không cần thiết phải lưu trường chiều dàihoặc ký tự kết thúc vì con trỏ tiếp theo trong mảng sẽxác định vị trí kết thúc của chuỗi Theo giả thuyết nhưthế, nếu một từ điển khoảng một triệu từ thì khônggian nhớ sẽ giảm từ 8 Mbyte đến 20Mbyte
đượcgiảigiớithiệumớitácphẩmtácgiả
ft đcIt đct
Trang 19Hình 3.6 :Lưu trữ từ điển như một mảng các con
trỏ
Để giảm hơn nữa không gian nhớ và nâng cao tốcđộ tìm kiếm thì ta lại xây dựng chỉ mục cho chỉ mụcđảo tức là loại bỏ nhiều hơn nữa các con trỏ chỉ mục ởtrên Có n từ nhưng không nhất thiết phải sử dụng n contrỏ chỉ mục, giả sử cứ 4 từ thì có 1 từ được chỉ mục.Như vậy chỉ cần 4 byte để lưu trữ thông tin về chiều dàicủa cả nhóm Cấu trúc này được minh hoạ như hìnhdưới đây:
4được4giải9giớithiệu3mới7tácphẩm6tácgiả
Hình 3.7 : Lưu trữ từ điển với xây dựng chỉ mục
cho chỉ mục đảo
Với mô hình từ điển được xây dựng như trên sẽthích hợp cho việc xử lý tìm kiếm nhị phân đồng thờitiết kiệm được không gian nhớ và nâng cao tốc độ xử lýcủa hệ thống
k
k +1
Địa chỉ It
2 1 1
2
3
1
ft
4k4k +
14k + 24k + 34(k + 1)
Trang 203 Xây dựng tệp đảo:
Như đã khảo sát ở các chương trước, đối với mỗi từ
t bao gồm các thành phần:
- từ t
- tần suất ft
- danh sách đảo It
Một tệp đảo cũng bao gồm các thành phần trên Trên
cơ sở các thành phần của tệp đảo sẽ xác định chính xáccác văn bản chứa thông tin cần truy vấn Cấu trúc củamột tệp đảo được xây dựng theo cách thức truyềnthống như sau:
Hình 3.8 : Mô hình tệp đảo đơn giản
Theo mô hình này thì các thành phần trong cơ sở dữ liệu được chỉ mục như H 3.2 sẽ được lưu trữ như sau:
Hình 3.9 : Ví dụ về chỉ mục tệp đảo
Theo cách xây dựng tệp đảo như trên thì việc xử lýtruy tìm trên tệp đảo được tiến hành tuần tự đến từngthành phần Với cơ sở dữ liệu cực lớn thì phương thứctruy cập tuần tự là không hiệu quả và vì thế mô hìnhtệp đảo nêu trên là không thích hợp
Một cách tổ chức khác của tệp đảo khắc phụcđược nhược điểm trên là xây dựng chỉ mục cho tệp