930 likes | 1.27k Views
IT4853 Tìm kiếm và trình diễn thông tin. Chương 4: Tổ chức lưu trữ Nguyễn Bá Ngọc. Nội dung chính. 1. Chỉ mục ngược: những khái niệm cơ bản 2. Từ điển: cấu trúc dữ liệu 3. Các thuật toán xây dựng chỉ mục Phần cứng căn bản BSBI SPIMI Xây dựng chỉ mục phân tán 4. Quản lý chỉ mục động
E N D
IT4853 Tìm kiếm và trình diễn thông tin Chương 4: Tổ chức lưu trữ Nguyễn Bá Ngọc
Nội dung chính • 1. Chỉ mục ngược: những khái niệm cơ bản • 2. Từ điển: cấu trúc dữ liệu • 3. Các thuật toán xây dựng chỉ mục • Phần cứng căn bản • BSBI • SPIMI • Xây dựng chỉ mục phân tán • 4. Quản lý chỉ mục động • 5. Các dạng chỉ mục khác
Nội dung chính • 1. Chỉ mục ngược: những khái niệm cơ bản • 2. Từ điển: cấu trúc dữ liệu • 3. Các thuật toán xây dựng chỉ mục • Phần cứng căn bản • BSBI • SPIMI • Xây dựng chỉ mục phân tán • 4. Quản lý chỉ mục động • 5. Các dạng chỉ mục khác
Chỉ mục ngược • Cấu trúc dữ liệu phục vụ tìm kiếm phổ biến nhất • Gồm hai phần chính • Bộ từ vựng • Bộ thẻ vị trí
T 1 2 3 5 6 8 T 2 1 2 5 8 9 11 T 3 2 6 9 Bộ từ vựng dictionary, lexicon Bộ thẻ định vị postings Chỉ mục ngược – các thuật ngữ liên quan • Bộ từ vựng • Từ điển hoặc bộ ngữ vựng • Tập hợp tất cả từ xuất hiện trong bộ dữ liệu • Thẻ định vị chứa các thông tin • Mã văn bản có từ tương ứng • Số lần từ xuất hiện trong văn bản • Vị trí của từ trong văn bản • v.v.
Quy trình xây dựng mô hình văn bản • Mỗi văn bản thường được xử lý để trích ra những đặc trưng phục vụ mục đích tìm kiếm gọi là biểu diễn logic văn bản hay mô hình văn bản
Đọc một văn bản Định dạng? pdf/word/excel/html? Ngôn ngữ? Phương pháp mã hóa? (CP1252, UTF-8, …) Mỗi câu hỏi này là một vấn đề phân loại. Tuy nhiên những vấn đề này thường được giải quyết bằng giải thuật tham lam…
Sự pha trộn: định dạng/ngôn ngữ Những văn bản được đánh chỉ mục có thể sử dụng nhiều ngôn ngữ khác nhau Một chỉ mục có thể chứa những thuật ngữ từ nhiều ngôn ngữ. Đôi khi một văn bản hoặc những thành phần của nó có thể chứa nhiều ngôn ngữ/định dạng khác nhau Email tiếng Pháp với tệp pdf tiếng Đức đính kèm. Email tiếng Pháp trích dẫn điều khoản từ hợp đồng tiếng Anh Tồn tại nhiều thư viện thương mại và mã nguồn mở đề giải quyết những vấn đề như vậy
Văn bản là gì? Chúng ta trả về cho mỗi truy vấn “văn bản” nhưng có một câu hỏi thú vị liên quan đến giới hạn: Một văn bản là gì? Một tệp? Một email? (Có thể là một trong số những email trong cùng tệp mbox) Một email với 5 tệp đính kèm có là một văn bản? Một nhóm tệp (ví dụ, ví dụ PPT hoặc LaTeX biểu diễn dưới dạng những trang HTML)
Tách từ, ví dụ • Văn bản: • "Dế mèn phiêu lưu kí" là tác phẩm văn xuôi đặc sắc và nổi tiếng nhất của Tô Hoài viết về loài vật, dành cho lứa tuổi thiếu nhi. Ban đầu truyện có tên là "Con dế mèn" (chính là ba chương đầu của truyện) do Nhà xuất bản Tân Dân, Hà Nội phát hành năm 1941. Sau đó, được sự ủng hộ nhiệt tình của nhân dân, Tô Hoài viết thêm truyện "Dế Mèn phiêu lưu kí" (là bảy chương cuối của chuyện). • Kết quả: • {Dế mèn phiêu lưu kí, là, tác phẩm văn xuôi, đặc sắc, và, nổi tiếng nhất, của, Tô Hoài, viết, về, loài vật, dành cho, lứa tuổi thiếu nhi, Ban đầu, truyện, có tên, là, Con dế mèn, chính là, ba, chương đầu, của, truyện, do, Nhà xuất bản Tân Dân, Hà Nội, phát hành, năm 1941, Sau đó, được, sự ủng hộ, nhiệt tình, của, nhân dân, Tô Hoài, viết thêm, truyện, Dế Mèn phiêu lưu kí, là, bảy, chương, cuối, của, chuyện}
Tách từ: giá trị số • 3/20/91 Mar. 12, 1991 20/3/91 Ngày 20 tháng 3 năm 2001 • Mã học phần là IT4853 • (043) 3861-1234 • Thường chứa dấu trắng • Phức tạp, nhưng hữu ích • Tìm kiếm số điện thoại • Mã lỗi, v.v. • Siêu dữ liệu thường được đánh chỉ mục riêng biệt • Ngày xuất bản, định dạng, v.v.
Từ dừng Sử dụng danh sách từ dừng để loại khỏi từ điển những từ phổ biến nhất. Nhận định chủ quan: Từ dừng có ít ngữ nghĩa Có nhiều từ dừng: ~30% số thẻ định vị cho 30 từ phổ biến nhất Có xu hướng bỏ qua bước loại bỏ từ dừng: Kỹ thuật nén tốt (IIR chương 5) cho phép sử dụng ít không gian để lưu từ dừng trong hệ thống Những kỹ thuật tối ưu hóa truy vấn tốt (IIR 7) cho phép bạn sử dụng ít thời gian để xử lý từ dừng. Bạn cần từ dừng để: Thực hiện truy vấn dạng câu Tên bài hát: “Bên em là biển rộng”
Chuẩn hóa thành thuật ngữ Chúng ta có thể phải chuẩn hóa từ trong chỉ mục và từ trong truy vấn về cùng một dạng Chúng ta muốn khớp Phức tạp và Phuc tap Kết quả là thuật ngữ: thuật ngữ là một loại từ (đã chuẩn hóa), và ứng với một mục từ trong từ điển của hệ thống tìm kiếm Chúng ta thường ngầm xác định các lớp tương đương của một từ, ví dụ Chuẩn hóa dấu thanh, dấu nguyên âm
Chuẩn hóa: những ngôn ngữ khác Trọng âm: ví dụ, tiếng Pháp résumé vs. resume. Tiếng Anh: Xóa dấu ., dấu gạch nối U.S.A, USA | USA anti-discriminatory, antidiscriminatory | antidiscriminatory Tiêu chí quan trọng nhất: Cách viết ưa thích của người dùng Trong tiếng Việt người dùng có thể không nhập dấu Có thể phải chuẩn hóa thành từ không dấu Phức tạp, Phuc tap | Phuc tap
Chữ hoa/chữ thường Chuyển tất cả ký tự thành chữ thường Loại trừ: chữ hoa ở giữa câu? ví dụ, General Motors Fed vs. fed SAIL vs. sail Thường sẽ tốt hơn nếu chỉ sử dụng chữ thường, bởi vì người dùng sẽ sử dụng chữ thường mà không quan tâm đến việc viết đúng chữ hoa
Từ đồng nghĩa và đồng âm Chúng ta có xử lý từ đồng nghĩa hay không? Ví dụ, sử dụng lớp từ đồng nghĩa thiết lập thủ công ô tô = xe hơi Có thể viết lại từ dưới dạng lớp tương đương Khi văn bản chứa từ xe hơi, đánh dấu nó trong mục ô tô-xe hơi (và tương tự với ô tô) Hoặc chúng ta có thể mở rộng truy vấn Khi truy vấn chứa từ xe hơi, chúng ta sẽ tìm kiếm thêm từ ô tô Lỗi phiên âm thì sao?
Lấy giao hai danh sách, thuật toán cơ bản • Duyệt đồng thời cả hai danh sách, thời gian tỉ lệ thuận với tổng số thẻ vị trí Nếu độ dài các danh sách tương ứng là x và y, độ phức tạp thuật toán là O(x + y) Với điều kiện: các danh sách được sắp xếp theo mã văn bản
Bổ xung bước nhảy vào danh sách thẻ định vị 128 17 2 4 8 41 48 64 1 2 3 8 11 21 128 41 31 11 31 Vì sao? Để loại bỏ thẻ định vị sẽ không xuất hiện trong kết quả tìm kiếm. Bằng cách nào? Đặt bước nhảy vào đâu?
Xử lý truy vấn với bước nhảy 17 2 4 8 41 48 64 1 2 3 8 11 21 128 41 128 31 11 31 Giả sử chúng ta đang duyệt danh sách cho tới khi gặp số 8 ở mỗi danh sách. Chúng ta ghi nhận giá trị đó và đi tiếp. Sau đó chúng ta có 41 và 11. 11 là giá trị nhỏ hơn. Nhưng bước nhảy tại vị trí 11 trong danh sách dưới là 31, như vậy chúng ta có thể bỏ qua một phần danh sách
Chúng ta đặt bước nhảy vào đâu? Lợi/hại: Nhiều bước nhảy khoảng cách nhỏ nhiều cơ hội di chuyển theo bước nhảy. Nhưng nhiều so sánh bước nhảy. Ít bước nhảy ít so sánh hơn, nhưng khoảng cách lớn ít cơ hội di chuyển theo bước nhảy.
Đặt bước nhảy Giải thuật tham lam : với danh sách độ dài L, sử dụng L bước nhảy đều nhau [Moffat and Zobel 1996] Như vậy đã bỏ qua đặc điểm phân bố của từ truy vấn. Đơn giản nếu chỉ mục là tương đối tĩnh; phức tạp hơn nếu L thay đổi vì những cập nhật. Phương pháp này đã từng có hiệu quả; với phần cứng hiện đại nó có thể không hữu ích nữa, trừ khi bạn chủ yếu dùng bộ nhớ chính [Bahle et al. 2002] Chi phí đọc những danh sách thẻ định vị lớn có thể vượt qua lợi ích thu được từ thuật toán lấy giao nhanh hơn trong bộ nhớ
Nội dung chính • 1. Chỉ mục ngược: những khái niệm cơ bản • 2. Từ điển: cấu trúc dữ liệu • 3. Các thuật toán xây dựng chỉ mục • Phần cứng căn bản • BSBI • SPIMI • Xây dựng chỉ mục phân tán • 4. Quản lý chỉ mục động • 5. Các dạng chỉ mục khác
Từ điển • Từ điển là cấu trúc dữ liệu dùng để lưu trữ bộ từ vựng • Từ vựng: Dữ liệu • Từ điển: Cấu trúc dữ liệu để lưu trữ từ vựng
Mảng phần tử kích thước cố định • Với mỗi thuật ngữ, chúng ta cần lưu một vài giá trị: • Tần suất văn bản • Con trỏ tới danh sách thẻ định vị • . . . • Giả thiết tạm thời rằng chúng ta có thể lưu thông tin này trong một mục từ độ dài cố định. • Giả sử chúng ta lưu những mục từ như vậy dưới dạng mảng.
Từ điển dưới dạng mảng phần tử kích thước cố định Kích thước: 20 bytes 4 bytes 4 bytes Chúng ta tìm kiếm thuật ngữ truy vấn qi trong mảng này bằng cách nào? Nghĩa là: cần sử dụng cấu trúc dữ liệu nào để tìm kiếm mục từ trong mảng có chứa qi?
Cấu trúc dữ liệu tìm kiếm thuật ngữ • Hai lớp cấu trúc dữ liệu chính: bảng băm và cây • Một vài hệ thống tìm kiếm sử dụng bảng băm, một vài sử dụng cây. • Tiêu chuẩn lựa chọn bảng băm hoặc cây • Số lượng thuật ngữ là cố định hay sẽ liên tục tăng lên? • Tần suất tương đối mà những từ khóa khác nhau được truy cập tới bằng bao nhiêu? • Số lượng thuật ngữ chúng ta muốn lưu trữ?
Bảng băm • Mỗi thuật ngữ được chuyển thành một số nguyên. • Cố gắng loại bỏ sự xung đột • Tại thời điểm thực hiện truy vấn, thực hiện: lấy mã số của từ truy vấn, giải quyết xung đột, xác định vị trí trong mảng kích thước cố định • Ưu điểm: Tìm kiếm trong bảng băm nhanh hơn trong cây. • Thời gian tìm kiếm là hằng số. • Nhược điểm • không thể tìm phương án phụ (phức tạp vs. phuc tap) • không thể tìm kiếm theo tiền tố (tất cả thuật ngữ bắt đầu với automat) • cần băm lại mọi thứ nếu bộ từ vựng tiếp tục được mở rộng
Cây • Cây giúp giải quyết vấn đề tìm kiếm tiền tố (tìm tất cả thuật ngữ bắt đầu với automat). • Cây đơn giản nhất: cây nhị phân • Tìm kiếm ít nhiều chậm hơn bảng băm: O(logM), trong đó M là kích thước bộ từ vựng. • O(logM) chỉ đạt được với cây cân bằng. • Cân bằng lại cây nhị phân cần nhiều chi phí. • B-trees giảm nhẹ vấn đề cân bằng cây. • Định nghĩa B-tree: tất cả nút bên trong có một số nút con trong khoảng [a, b] trong đó a, b là những số nguyên dương thích đáng,ví dụ, [2, 4].
Nội dung chính • 1. Chỉ mục ngược: những khái niệm cơ bản • 2. Từ điển: cấu trúc dữ liệu • 3. Các thuật toán xây dựng chỉ mục • Phần cứng căn bản • BSBI • SPIMI • Xây dựng chỉ mục phân tán • 4. Quản lý chỉ mục động • 5. Các dạng chỉ mục khác
Phần cứng căn bản Nhiều quyết định thiết kế trong tìm kiếm thông tin được dựa trên những đặc điểm phần cứng Chúng ta bắt đầu với tổng quan chung về phần cứng
Phần cứng căn bản Truy cập dữ liệu trong bộ nhớ thì nhanh hơn nhiều so với truy cập dữ liệu trên đĩa. Định vị đầu đọc: Không thể trao đổi dữ liệu với ổ đĩa khi đầu đọc đang được đặt vào vị trí Bởi vậy: Đọc một khối dữ liệu lớn từ ổ đĩa thì nhanh hơn đọc nhiều khối dữ liệu nhỏ. Đọc/ghi đĩa được thực hiện theo khối: Đọc và viết những khối nguyên vẹn (tốn thời gian như những lượng nhỏ hơn). Kích thước khối: 8KB tới 256 KB.
Phần cứng căn bản Máy chủ được sử dụng trong những hệ thống tìm kiếm ngày nay thường có một vài GB bộ nhớ chính, đôi khi là hàng chục GB. Không gian đĩa thường lớn hơn một vài (2–3) bậc. Phần cứng bền vững với lỗi thường có chi phí rất cao: Sẽ rẻ hơn nhiều nếu sử dụng nhiều máy thông thường thay vì máy bền vững với lỗi.
Giả thuyết về phần cứng cho bài giảng này • ký hiệu đặc trưng giá trị • s thời gian định vị trung bình 5 ms = 5 x 10−3 s • b thời gian trao đổi trên bytes 0.02 μs = 2 x 10−8 s • chu kỳ đồng hồ 10-9 s • p Lệnh bậc thấp 0.01 μs = 10−8 s (ví dụ., so sánh) • kích thước bộ nhớ chính một vài GB • kích thước ổ đĩa 1 TB hoặc hơn
Thống kê về bộ dữ liệu viwiki-20130724-abstract.xml • ký hiệu đại lượng giá trị • N #văn bản 832,574 • L # từ trung bình/văn bản ? • M thuật ngữ (= loại từ) ? • # bytes trung bình/từ ? (bao gồm cả khoảng trắng, dấu câu) • # bytes trung bình/từ ? (không tính khoảng trắng, dấu câu) • #bytes trung bình/thuật ngữ ? • # thẻ định vị không vị trí ? 4.5 bytes/từ vs. 7.5 bytes/dạng từ: vì sao?
Xây dựng chỉ mục ngược – khái quát thuật toán • Tiền xử lý văn bản → Sinh thẻ định vị → Sắp xếp thẻ định vị → Xây dựng danh sách thẻ định vị, xác định tần suất văn bản → Tách kết quả thành bộ từ vựng và bộ thẻ định vị
Sinh thẻ định vị Từ Mã văn bản DMPLK 1 là 1 tác phẩm 1 văn xuôi 1 đặc sắc 1 và 1 nổi tiếng nhất 1 của 1 Tô Hoài 1 viết về 1 loài vật 1 dành cho 1 lứa tuổi thiếu nhi 1 Tô Hoài 2 sinh 2 27-9-1920 2 là 2 một 2 nhà văn 2 Việt Nam 2 nổi tiếng 2 Một số 2 tác phẩm 2 đề tài 2 thiếu nhi 2 của 2 ông 2 được 2 dịch 2 ra 2 ngoại ngữ 2 • D1. Dế mèn phiêu lưu kí, là, tác phẩm, văn xuôi, đặc sắc, và, nổi tiếng nhất, của, Tô Hoài, viết về, loài vật, dành cho, lứa tuổi thiếu nhi • D2. Tô Hoài, sinh, ngày 27 tháng 9 năm 1920, là, một, nhà văn, Việt Nam, nổi tiếng, Một số, tác phẩm, đề tài, thiếu nhi, của, ông, được, dịch, ra, ngoại ngữ *DMPLK: Dế mèn phiêu lưu kí 27-9-1920: ngày 27 tháng 9 năm 1920
Từ Mã văn bản DMPLK 1 27-9-1920 2 của 1 của 2 đặc sắc 1 dành cho 1 đề tài 2 dịch 2 được 2 là 1 là 2 loài vật 1 lứa tuổi thiếu nhi 1 một 2 Một số 2 ngoại ngữ 2 nhà văn 2 nổi tiếng 2 nổi tiếng nhất 1 ông 2 ra 2 sinh 2 tác phẩm 1 tác phẩm 2 thiếu nhi 2 Tô Hoài 1 Tô Hoài 2 và 1 văn xuôi 1 Việt Nam 2 viết về 1 Từ Mã văn bản DMPLK 1 là 1 tác phẩm 1 văn xuôi 1 đặc sắc 1 và 1 nổi tiếng nhất 1 của 1 Tô Hoài 1 viết về 1 loài vật 1 dành cho 1 lứa tuổi thiếu nhi 1 Tô Hoài 2 sinh 2 27-9-1920 2 là 2 một 2 nhà văn 2 Việt Nam 2 nổi tiếng 2 Một số 2 tác phẩm 2 đề tài 2 thiếu nhi 2 của 2 ông 2 được 2 dịch 2 ra 2 ngoại ngữ 2 Sắp xếp
Từ Mã văn bản DMPLK 1 27-9-1920 2 của 1 của 2 đặc sắc 1 dành cho 1 đề tài 2 dịch 2 được 2 là 1 là 2 loài vật 1 lứa tuổi thiếu nhi 1 một 2 Một số 2 ngoại ngữ 2 nhà văn 2 nổi tiếng 2 nổi tiếng nhất 1 ông 2 ra 2 sinh 2 tác phẩm 1 tác phẩm 2 thiếu nhi 2 Tô Hoài 1 Tô Hoài 2 và 1 văn xuôi 1 Việt Nam 2 viết về 1 Từ , tần suất vb danh sách thẻ vị trí DMPLK, 1 → 1 27-9-1920, 1 → 2 của, 2 → 1, 2 đặc sắc, 1 → 1 dành cho, 1 → 1 đề tài, 1 → 2 dịch, 1 → 2 được, 1 → 2 là, 2 → 1, 2 loài vật, 1 → 1 lứa tuổi thiếu nhi, 1 → 1 một, 1 → 2 Một số, 1 → 2 ngoại ngữ, 1 → 2 nhà văn, 1 → 2 nổi tiếng, 1 → 2 nổi tiếng nhất, 1 → 1 ông, 1 → 2 ra, 1 → 2 sinh, 1 → 2 tác phẩm, 2 → 1, 2 thiếu nhi,1 → 2 Tô Hoài, 2 → 1, 2 và, 1 → 1 văn xuôi, 1 → 1 Việt Nam, 1 → 2 viết về, 1 → 1 Tạo danh sách
Tỉ lệ việc xây dựng chỉ mục • Phương pháp xây dựng chỉ mục trong bộ nhớ không tỉ lệ được • Không thể đưa cả bộ dữ liệu vào trong bộ nhớ, sắp xếp và sau đó viết ngược lại • Chúng ta sẽ xây dựng chỉ mục cho những bộ dữ liệu rất lớn như thế nào? • Tính đến những giới hạn phần cứng mà chúng ta đã học . . . • Bộ nhớ, ổ đĩa, tốc độ, v.v.
Xây dựng chỉ mục dựa trên sắp xếp Khi xây dựng chỉ mục chúng ta đọc từng văn bản một. Áp dụng kỹ thuật nén trong quá trình xây dựng chỉ mục là việc không đơn giản (có thể làm được, nhưng sẽ phức tạp hơn nhiều) Danh sách thẻ định vị cho mỗi từ là không hoàn chỉnh cho tới khi kết thúc đọc dữ liệu. Nếu sử dụng 12 bytes cho mỗi thẻ định vị không vị trí (từ, văn bản, tần suất), sẽ đòi hỏi nhiều không gian cho những bộ dữ liệu lớn. Vì vậy: chúng ta cần lưu những kết quả trung gian trên ổ đĩa.
Sắp xếp sử dụng đĩa như “bộ nhớ”? Chúng ta có thể sử dụng cùng thuật toán xây dựng chỉ mục cho những bộ dữ liệu lớn, nhưng sử dụng ổ đĩa thay cho bộ nhớ? Không: Sắp xếp số lượng lớn bản ghi trên đĩa là quá chậm – quá nhiều thao tác định vị đầu đọc. Chúng ta cần một thuật toán sắp xếp ngoài.
Điểm giới hạn Đọc từng văn bản và sinh thẻ định vị Sau đó sắp xếp những thẻ định vị theo từ (rồi theo văn bản trong danh sách của mỗi từ) Thực hiện giải thuật này với truy cập đĩa ngẫu nhiên là quá chậm Nếu mỗi so sánh sử dụng 2 lần định vị, và N giá trị có thể được sắp xếp trong N log2N so sánh, cần bao nhiêu thời gian? Nếu N = 100 000 000
Nội dung chính • 1. Chỉ mục ngược: những khái niệm cơ bản • 2. Từ điển: cấu trúc dữ liệu • 3. Các thuật toán xây dựng chỉ mục • Phần cứng căn bản • BSBI • SPIMI • Xây dựng chỉ mục phân tán • 4. Quản lý chỉ mục động • 5. Các dạng chỉ mục khác
Xây dựng chỉ mục dựa trên sắp xếp khối BSBI: Blocked sort-based Indexing • Ý tưởng chính • Chia bộ dữ liệu thành nhiều khối đủ nhỏ để có thể xây dựng chỉ mục trong bộ nhớ • Tạo chỉ mục cho từng phần của bộ dữ liệu • Sau đó hợp nhất những chỉ mục con thành một chỉ mục hoàn chỉnh
BSBI Bản ghi 12-byte (4+4+4) (term, doc, freq). Được sinh ra trong quá trình đọc văn bản. Bây giờ phải sắp xếp N bản ghi 12-byte như vậy theo thuật ngữ. Xác định một khối ~ 10M những bản ghi như vậy Có thể dễ dàng lưu một vài khối trong bộ nhớ. Với N = 100M, chúng ta sẽ có khoảng 10 khối như vậy. Ý tưởng chính của thuật toán: Tích lũy thẻ định vị cho mỗi khối, sắp xếp và ghi ra đĩa. Sau đó kết nối những khối vào một danh sách dài.