giá trị ∏ = | q | 1 i i |d)
P(t để chọn ra những văn bản có xác xuất cao nhất.
Sự sai lệch do Heuristic ở đây là do không lưu trữ toàn bộ các giá trị
P(ti, dj) của tất cả các văn bản trong CSDL mà chỉ lưu trữ n văn bản có giá trị
xác xuất đó cao nhất.
2.5.4. Xây dựng bảng LUT
Bảng LUT là kết quả của phương pháp Heuristic nhằm giảm bớt tối đa tính toán trong phản hồi thông tin cho user. Các phần tử mà bảng LUT cần phải lưu trữ là (GroupId, DocId, P(GroupId | DocId)). Những phần tử này là phần tử 3 chiều. Về cơ bản mọi yêu cầu đặt ra đối với cấu trúc bảng LUT cũng giống hệt đối với cấu trúc của Lexicon và Inverted file, hoàn toàn có thể dùng lại cấu trúc đã dùng để lưu Lexicon và Inverted file để lưu cho bảng LUT.
Một vấn đề đặt ra bây giờ là đối với mỗi GroupId sẽ lưu bao nhiêu P(t | d) là đủ. Nếu ít thì tốc độ phản hồi thông tin sẽ nhanh nhưng sẽ bỏ xót nhiều văn bản có liên quan cao tới query, trái lại nếu nhiều thì hạn chế bỏ xót văn bản nhưng lại phản hồi thông tin chậm, vẫn chưa có một công thức nào cho phép tính được giá trị n, số giá trị P(t | d), phụ thuộc tốc độ phản hồi và xác xuất bỏ xót cả. Bởi vậy, để tính được bao nhiêu là đủ đành phải dựa vào thực tế áp dụng thay và thử.
Hình 15: Cấu truc một Block của LUT
Cấu trúc một Block thuộc LUT Inverted gồm những phần tử như trên trong đó các DocId được xắp xếp giảm dần.
Thuật toán tính top r
Nếu như áp dụng phương pháp Heuristic thì quá trình tìm kiếm hầu như chỉ thực hiện trên bảng LUT chứ không tìm kiếm trên Lexicon và Inverted file nữa. Dưới đây là thuật toán tính top r, nhiệm vụ chính của hệ trích chọn thông tin:
1. Giả thiết Q là tập các Term được phân tích từ query. Tương ứng
lưu tại những địa chỉ xác định, khi này ta có thể sử dung các Block đó như là một mảng bình thường.
2. Chú ý là các phần tử của các mảng này (DocId, P(t | d)) được
xắp xếp giảm dần theo DocId, chúng ta sẽ lấy tại vị trí các biến trỏ chạy trên các mảng các giá trị P(t | d) của cùng một DocId rồi tính tích của chúng, sử dụng phần tử của mảng nào xong thì dịch con trỏ chạy trên mảng đó đi một vị trí.
3. Giá trị đó sẽ được kiểm tra xem có lớn hơn giá trị tương ứng
phần tử gốc của Heap (là cấu trúc dùng để chứa top r gồm r phần tử với phần tử đỉnh luôn là phần tử nhỏ nhất) nếu lớn hơn thì thay thế phần tử gốc rồi thực hiện hiệu chỉnh Heap.
4. Goto 2 cho đến khi tất cả các biến chạy đi hết mảng của nó.
5. Kết quả trả về nằm ở Heap.
2.6. XÂY DỰNG HỆ THỐNG TÌM KIẾM CÓ SỬ DỤNG PHÂN LOẠI VĂN BẢN
2.6.1. Hướng tiếp cận
Có nhiều cách phân loại các lĩnh vực trong xử lý, Lewis[13] đã chia thành
hai nhóm lĩnh vực chính là Phân loại văn bản (Text Classification) gồm các
bài toán xác định văn bản hay một phần của văn bản vào một hay nhiều lớp
xác định trước và Hiểu văn bản (Text Understanding) bao gồm các bài toán
phức tạp hơn để xử lý nội dung của văn bản như tóm tắt văn bản (Text Summarization hay Abstraction), chắt lọc thông tin (Text Extraction),…
Tuy nhiên, việc phân thành hai loại cũng không thật rõ ràng, trong các hệ phần mềm, người ta thường phải sử dụng dạng kết hợp của nhiều bài toán để
được một hệ như trong các mô tơ tìm kiếm (Search Engine) hoặc trong hệ tìm
kiếm văn bản (Text Retrieval), đây là một trong các vấn đề được quan tâm nhất hiện nay. Có thể lấy ví dụ một số trang web nổi tiếng như Yahoo, Google, Alta Vista…Các trang web này đều tổ chức thông tin theo các nhóm hay các chủ đề khác nhau, mỗi nhóm lại có nhiều nhóm con nằm trong nó. Khi
đó, việc tìm kiếm sẽ được thực hiện qua việc phân tích xem câu truy vấn của người dùng thuộc về nhóm văn bản nào và tiến hành tìm kiếm trên các nhóm văn bản đó. Các công cụ tìm kiếm như vậy thường cho ra kết quả rất tốt vì chúng đáp ứng được yêu cầu về mặt thời gian cũng như chất lượng của kết quả tìm kiếm. Vì vậy để tăng tốc độ tìm kiếm trong search engine của mình tôi kết hợp thêm phương pháp phân loại văn bản, như vậy mô hình liên kết của hệ thống có dạng như sau:
Hình 16: Mô hình tìm kiếm sử dụng phương pháp concept indexing
2.6.2. Phân tích
Để tận dụng được mô hình cũ trước đây, ở bước đầu hệ thống chia làm hai phần, một phần Lexicon và Inverted file thể hiện sự liên quan giữa các term và văn bản được giữ nguyên, phần hai là cây phân loại văn bản sẽ sử dụng thuật toán lai giữa Concept indexing và CkNN để phân nhóm các văn bản vào những tập cho trước.
Trong phương pháp này chúng ta cần tổ chức một từ điển chuyên ngành, chằng hạn lĩnh vực kinh tế, trong quyển từ điển này ta lại phân nhỏ
chúng thành các ngành nhỏ, tùy vào mức độ phân chia của ta, quá trình phân loại như vậy phải làm bằng tay theo lĩnh vực mà ta muốn.
Khi có được từ điển phân loại hình cây như vậy (sẽ sử dụng các cấu trúc cây lưu trữ ở phần dưới để lưu trữ từ điển) dựa vào đó ta cũng sẽ có các nhóm văn bản (clustering) mà sẽ có những term đặc trưng là các từ có trong từ điển đã được phân như trên. Khởi đầu ta sẽ cho mỗi nhóm 1 văn bản đại diện mà ta cho rằng văn bản đó thuộc nhóm đó.
Tại các bước tiếp theo khi nhận được một văn bản, ta sẽ tính độ tương
tự của văn bản dó với vector trọng tâm và chọn tập hợp Si nào có cos(d, Ci) là
cao nhất thì d sẽ thuộc Si đó (với các Si ở đây là các nhóm mức lá của tập hợp
tôi đang xét)
Trong quá trình tìm kiếm, dựa vào các term thu được từ truy vấn ta cũng có thể tính xem term đó thuộc tập hợp nào (cũng thông qua tính với vector trọng tâm của các tập hợp) từ đó ta tìm ra các văn bản có thể liên quan đến truy vấn này trong tập hợp đó. Kết hợp với các bảng trong chỉ mục mà chúng ta đã đánh ta tìm ra những văn bản nào vừa liên quan đến truy vấn nhiều nhất và vừa thuộc tập hợp mà những truy vấn này liên quan đến.
2.7. VẤN ĐỀ CẬP NHẬT
2.7.1. Những vấn đề đối với cập nhật
Một trong những tiêu chí quan trọng đánh giá một hệ trích chọn thông tin là hệ thống cần có khả năng cập nhật đủ mạnh để đáp ứng được trước sự phát triển thông tin như vũ bão hiện nay. Một thực tế là khả năng cập nhật tốt lại tỉ lệ nghịch với khả năng phản hồi thông tin người dùng và khối lượng văn bản có thể quản lý, bởi vậy người ta đã chọn một giải pháp trung gian là cập nhật theo lô định kì chứ không cập nhật liên tục riêng lẻ từng văn bản hàng giờ hàng phút.
Những vấn đề thực tế đòi hỏi yêu cầu cần cập nhật đối với một hệ trích chọn thông tin gồm:
• Số lượng các trang tài liệu đang tăng hàng ngày, đối với toàn cầu là trung
bình 20MB mỗi ngày, chưa có một thống kê được biết nào ở Việt Nam.
• Nội dung các trang cũng không cố định mà thay đổi theo thời gian.
• Tuổi đời của các trang là không vĩnh viễn, nó sinh ra phát triển và rồi lại
chết đi.
• Tồn tại sự trùng lặp hoàn toàn về nội dung của những trang có địa chỉ
URL khác nhau (duplicates). Có đến 30% các trang trên thế giới là trùng lặp hoàn toàn về nội dung là kết quả một điều tra năm 1998[4].
• Sự xuất hiện của những từ mới đặc biệt là những thuật ngữ chuyên môn.
Nói chung những thuật ngữ này là từ ngoại lai.
Đối với Google thì định kỳ hàng tháng cập nhật một lần với văn bản thường, còn những trang tin tức thì cập nhật liên tục theo giờ, số lượng văn bản thường hiện tại Google đang quản lý là cỡ 3 tỉ văn bản trong khi đó những trang tin tức chỉ có 4500 trang. Google tách riêng các trang tin tức và văn bản thường quản lý riêng độc lập trong các CSDL độc lập với nhau.
Những hệ trích chọn lớn nổi tiếng còn có thể cập nhật thông tin từ CSDL của những hệ trích chọn khác.
2.7.2. Phương án cập nhật
2.7.2.1. Cập nhật văn bản thông thường
Văn bản thông thường là những văn bản mà nói chung chu kì cập nhật của chúng cỡ vài tuần hay vài tháng, với loại văn bản này mà đòi hỏi cập nhật hàng ngày là không cần thiết. Nói chung hầu hết các văn bản trên mạng là văn bản thông thường chỉ trừ các trang báo định kì, trang tin tức thời sự là có chu kỳ cập nhật tính theo giờ.
Cập nhật văn bản ở đây gồm những công việc sau:
• Xoá những văn bản không còn tồn tại ra khỏi hệ thống.
• Thay đổi các thông tin tương ứng của một văn bản đã thay đổi nội dung
trong CSDL tìm kiếm.
• Thêm những văn bản mới xuất hiện vào CSDL.
Thực tế tất cả các cách lưu chỉ mục phục vụ tìm kiếm đều đặt mục tiêu phản hồi thông tin user lên hàng đầu mà chấp nhận hạ thấp tiêu chí cập nhật dễ dàng, tất cả các cấu trúc lưu chỉ mục đều tiến hành lưu theo phân loại GroupId (hay TermId), trong khi muốn cập nhật dễ dàng thì phải lưu chỉ mục theo phân loại DocId. Thực tế là việc xoá bỏ hay sửa đổi nội dung chỉ mục của một văn bản không thể tiến hành theo lô nếu cập nhật trực tiếp vào file lưu chỉ mục phục vụ tìm kiếm, đấy là còn chưa kể đến yếu tố xung đột giữa tìm kiếm luôn đọc và cập nhật ghi/xoá sẽ gây sai lệch thông tin phản hồi.
Giải pháp được đưa ra là sẽ tiến hành cập nhật và tìm kiếm phản hồi thông tin sẽ tiến hành độc lập trên những file lưu chỉ mục riêng biệt, tức là cập nhật sẽ thực hiện nền và tạo mới lại luôn file lưu chỉ mục mới, việc tạo mới sẽ cho phép tiến hành cập nhật theo lô.
Quá trình cập nhật như sau:
Khi cập nhật thao tác tốn nhiều thời gian nhất là quá trình xây dựng chỉ mục cho các văn bản. Do đó, để tiết kiệm ta chỉ tiến hành đối với những văn bản có sự thay đổi về nội dung và những văn bản mới xuất hiện. Tiêu chí để cho biết một văn bản có sự thay đổi về nội dung là kích thước thay đổi, quả thực rất khó có văn bản nào có sự thay đổi về nội dung mà lại không có sự thay đổi về kích thước lưu trữ. Nhận xét này sẽ giúp giảm tải cho chức năng
Crawler không tải về những văn bản mà kích thước không khác biệt so với chính nó đã có trong kho.
Xây dựng một cơ cấu lưu chỉ mục phân loại theo DocId có thể xoá, thêm dễ dàng. Một giải pháp tốt là sử dụng MWBT cải tiến, đồng thời sẽ chia cơ cấu này thành nhiều phần theo miền giá trị DocId, với mỗi dải DocId này sẽ tương ứng một MWBT cải tiến, [4] cho thấy Google chia dải DocId thành 64 Barrels. ý tưởng chia nhỏ dải DocId sẽ giúp thao tác cập nhật càng dễ dàng hơn do kích thước MWBT cải tiến sẽ nhỏ hơn.
Sau khi cập nhật đầy đủ các văn bản cần thiết vào kho chỉ mục này rồi thì thực hiện chuyển hoá thành các file tạm, các file tạm này có cấu trúc hoàn toàn giống file tạm trong bước xây dựng chỉ mục.
Từ các file tạm xây dựng Lexicon và Inverted file, giống hệt ở bước xây dựng chỉ mục.
2.7.2.2. Cập nhật tin tức
Nói chung, khi cập nhật tin tức thì thường các trang tin tức đều đã thay đổi nội dung rồi, nên khi cập nhật đều giả thiết là tất cả các trang tin tức đã thay đổi nội dung, khi này quá trình cập nhật giống hệt quá trình tạo mới lại hoàn toàn hệ thống, vì số lượng các trang tin tức nhỏ hơn nhiều so với các văn bản thông thường nên quá trình tạo mới lại là hoàn toàn chấp nhận được về mặt chi phí tài nguyên và thời gian.
2.7.2.3. Cập nhật từ mới
Quả thực cập nhật từ mới sẽ đòi hỏi rất nhiều thời gian bởi chức năng
Indexing new Terms sẽ phải quét lại toàn bộ kho dữ liệu, để tránh việc phải quét lại toàn bộ kho dữ liệu thì phải cố gắng nhập đầy đủ các Term trong một vài chu kì đầu tiến hành cập nhật, đây là việc hoàn toàn có thể thực hiện được.
Đối với Term mới xuất hiện, thường là các thuật ngữ chuyên môn, thì chắc chắn sẽ chỉ xuất hiện trong một số văn bản và tin tức mới cập nhật, do đó chi phí cập nhật từ mới sẽ không cao vì chỉ phải quét lại một số ít văn bản thôi. Đây mới là nhiệm vụ chủ yếu của chức năng cập nhật Term mới.
Một biện pháp giúp người quản trị sớm cập nhật nhiều Term trong một số lần cập nhật đầu tiên, cũng như phát hiện Term mới xuất hiện có thể tích hợp trong quá trình phân tích từ:
Mỗi khi kiểm tra một tổ hợp không xuất hiện (đang xét tới từng văn bản) trong từ điển thì sẽ lưu ra một câu trúc, mỗi khi thấy một tổ hợp không
xuất hiện trong từ điển thì kiểm tra xem tổ hợp đó đã xuất hiện trong văn bản đó lần nào chưa, nếu rồi thì sẽ lưu ra một văn bản rồi sau đó người quản trị sẽ quyết định xem đó có phải là một Term mới hay không. Đây là quá trình học bán tự động. Việc xây dựng quá trình học tự động sẽ gây thừa nhiều Term, giảm hiệu quả của hệ thống.
PHẦN 3
TỔ CHỨC CẤU TRÚC DỮ LIỆU PHỤC VỤ HỆ THỐNG
3.1. CÂY ĐỎ ĐEN (RED-BLACK TREE) 3.1.1. Khái niệm
Định nghĩa: Cây đỏ đen là cây nhị phân tìm kiếm có các nút được tô bởi một trong 2 màu đỏ hoặc đen, và việc tô đó thoả mãn các điều kiện sau:
+ Các nút được gán màu đỏ hoặc đen. + Bất kì nút đỏ nào đều có cha là nút đen.
+ Số nút đen trên đường đi từ nút gốc đến các nút lá là bằng nhau.
Hệ quả: Độ dài đường đi từ nút gốc đến nút lá xa nhất (Lmax) không lớn hơn hai lần độ dài đường đi đến nút lá gần gốc nhất (Lmin):
Lmax ≤ 2Lmin
Hình 17: Cây đỏ đen
3.1.2. Mục đích sử dụng và so sánh với một số lựa chọn khác
Cây đỏ đen được sử dụng để làm bộ đêm văn bản, là bộ đệm chứa thông tin của một văn bản vừa hay đang phân tích Term, bộ đệm này chỉ tồn tại tạm thời trong bộ nhớ trong cần tính cập nhật dễ dàng mà có thể dễ sắp thứ tự.
Cây đỏ đen là một lựa chọn tốt, thoả mãn các yêu cầu trên, đồng thời có thêm tính năng chống thoái hoá gây giảm hiệu quả của cây.
Một lựa chọn tốt khác là cây cân bằng, nói chung đặc tính chống thoái hoá của cây cân bằng còn tốt hơn cây đỏ đen những cũng vì đó mà thao tác
xoay đối với cây cân bằng là thường xuyên hơn gây lãng phí, bởi bộ đệm
văn bản không cần tính năng chống thoái hoá nhiều như vậy.
3.2. CÂY CÂN BẰNG NHIỀU ĐƯỜNG (MULTI-WAY BALANCED TREE - MWBT)
3.2.1. Giới thiệu
Cây bằng nhiều đường (MWBT) là một cấu trúc phục vụ tìm kiếm tốc độ cao, đòi hỏi vào ra bộ nhớ ngoài rất ít trong khi lượng bộ nhớ trong đòi hỏi thường trú cũng rất ít so với tổng kích thước dữ liệu được lưu trữ.
Cấu tạo của MWBT gồm những node có cấu trúc như sau