Bài toán đánh chỉ mục dữ liệu (Index data)

Một phần của tài liệu Xây dựng, thử nghiệm giải pháp tìm kiếm theo yêu cầu người dùng, sử dụng cloud computing và thuật toán mapreduce (Trang 45 - 47)

Có rất nhiều thuật toán đánh chỉ mục dữ liệu, trong đó phần lớn các phương pháp đều tập trung vào quá trình đánh chỉ mục toàn văn bản các tài liệu. Mục đích của việc đánh chỉ mục dữ liệu là tối ưu hóa tốc độ, hiệu quả trong việc tìm kiếm tài liệu liên quan đến một truy vấn tìm kiếm. Nếu không có chỉ mục, các máy tìm kiếm sẽ phải quét toàn bộ các văn bản để tìm ra cụm từ cần tìm kiếm. Ví dụ, khi tìm kiếm trong chỉ mục của 10.000 văn bản chỉ cần trong vài mili giây, trong khi tìm kiếm tất cả các từ trong 10.000 văn bản này sẽ mất hàng giờ.

Có khá nhiều cách tạo cấu trúc dữ liệu của chỉ mục, chúng ta có thể liệt kê ở đây:

- Cây hậu tố: Xây dựng cấu trúc cây, lưu trữ các hậu tố của từ. Cây hậu tố hỗ trợ mở rộng hàm băm, tìm kiếm theo mẫu. Nhưng nhược điểm lớn nhất của cách đánh chỉ mục này là số lượng lưu trữ của một từ trong câu có thể nhiều hơn lưu trữ của chính từ đó. Có phương pháp thay thế là mảng hậu tố, chiếm ít bộ nhớ hơn và hỗ trợ thuật toán nén BWT.

- Chỉ mục đảo ngược: lưu trữ tần suất xuất hiện của các yếu tố tìm kiếm bé nhất, thông thường lưu trữ ở dạng bảng băm hoặc cây nhị phân.

- Chỉ mục trích dẫn: lưu trữ trích dẫn hoặc liên kết giữa các tài liệu để hỗ trợ phân tích.

- Chỉ mục Ngram: lưu trữ dãy độ dài dữ liệu, hỗ trợ cho các dạng tìm kiếm hoặc khai phá dữ liệu khác.

- Ma trận tài liệu từ: được sử dụng để phân tích ngữ nghĩa, lưu trữ toàn bộ tần suất xuất hiện của các từ trong văn bản trong một ma trận thưa hai chiều.

Hiện nay các engine đánh chỉ mục hay sử dụng cách đánh chỉ mục đảo ngược, cách này giúp thu gọn lại dung lượng chỉ mục, dễ dàng tìm kiếm theo độ tương quan của các từ trong văn bản.

- Phân tách các từ theo một quy luật định trước, ví dụ như tách từ theo dấu cách. - Chuẩn hóa các từ, bỏ các dấu hoặc các ký tự đặc biệt như dấu “:”, dấu “,”,…. Chuẩn hóa các từ về một quy chuẩn ví dụ như thành chữ thường.

- Ghi các từ trong văn bản thành một vecto bao gồm từ và chỉ mục của văn bản. - Ghép các từ thành dãy bao gồm vị trí ở trong các văn bản và tần suất xuất hiện trong văn bản.

Như thế kết quả của quá trình đánh chỉ mục là các từ và tần suất xuất hiện của nó.

Ví dụ có hai văn bản chứa hai câu: T0 = “I did enact Julias Caesar: I was killed i’ the Capitol; Brutus killed me”, và câu thứ hai T1 = “So let it be with Ceasar. The noble Bruti hath told you Caesar was ambitious”

Như vậy quá trình xử lý sẽ gồm các bước

- Bước 1: tách từ loại trong từng câu, ở đây mỗi câu sẽ được tách thành từng từ, và lưu trữ dưới dạng bảng băm với key là từ còn value là số thứ tự của văn bản lưu trữ từ đó.

Ví dụ: I →1, did → 1,.. so →2

- Bước 2: Sắp xếp lại các từ theo thứ tự, ở đây chúng ta sử dụng thứ tự trong bảng chữ cái xếp theo vần abc.

Thứ tự sau khi đã sắp xếp sẽ là: ambitious – 2, be – 2, brutus – 1, brutus – 2,….

- Bước 3: gom tất cả các từ giống nhau, tạo thành một danh sách gồm có từ, tần suất hiện của từ đó, và danh sách các văn bản đã xuất từ đó.

Ví dụ ở đây từ ambitious xuất hiện một lần ở văn bản thứ hai, sẽ được lưu trữ như sau: ambitious – 1 – 2. Còn từ brutus được xuất hiện 2 lần ở văn bản số 1 và số 2, như vậy từ này sẽ được lưu trữ dưới dạng: brutus – 2 – 1 →2.

Hình ảnh dưới đây minh họa toàn bộ quá trình tách từ và đánh chỉ mục ngược toàn bộ dữ liệu

Hình 3.2-1: Inverted index

Một phần của tài liệu Xây dựng, thử nghiệm giải pháp tìm kiếm theo yêu cầu người dùng, sử dụng cloud computing và thuật toán mapreduce (Trang 45 - 47)