Mục tiêu của ứng dụng là có khả năng tìm kiếm nhanh ,chính xác tài liệu với từ khóa ,xây dựng theo hướng mở cho mọi người có thể phát triển thêm với mục tiêu xây dựng tất cảcác định dạng
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
Tel (84-511) 736 949, Fax (84-511) 842 771Website: itf.ud.edu.vn, E-mail: cntt@edu.ud.vn
LUẬN VĂN TỐT NGHIỆP KỸ SƯ
NGÀNH CÔNG NGHỆ THÔNG TIN
MÃ NGÀNH : 05115
ĐỀ TÀI : NGHIÊN CỨU HỆ THỐNG SEARCH ENGINE VÀ XÂY DỰNG
ỨNG DỤNG TÌM KIẾM NỘI DUNG TÀI LIỆU
Mã số : 06T4-041 Ngày bảo vệ : 15-16/06/2011
SINH VIÊN : PHẠM XUÂN QUANG LỚP : 06T4
CBHD : ThS.VÕ ĐỨC HOÀNG
ĐÀ NẴNG, 06/2011
Trang 2Đầu tiên, em xin gởi lời cảm ơn đến Thầy, Cô khoa Công nghệ Thông tin trường Đại học Bách Khoa Đà Nẵng đã tận tình dạy dỗ, dìu dắt em suốt năm năm đại học.
Xin cảm ơn Thầy Võ Đức Hoàng người đã tận tình hướng dẫn, chỉ bảo
em trong suốt thời gian thực hiện đề tài Trong thời gian làm việc với Thầy,
em không những học hỏi được nhiều kiến thức bổ ích mà còn học được tinh thần làm việc, thái độ nghiên cứu khoa học nghiêm túc của Thầy Xin gửi lời cảm ơn chân thành đến gia đình, ba mẹ và bè bạn vì đã luôn
là nguồn động viên to lớn, giúp đỡ em vượt qua những khó khăn trong suốt quá trình làm việc
Mặc dù đã cố gắng hoàn thiện luận văn với tất cả sự nỗ lực của bản thân, nhưng chắc chắn không thể tránh khỏi những thiếu sót Kính mong quý Thầy Cô tận tình chỉ bảo.
Một lần nữa, em xin chân thành cảm ơn và luôn mong nhận được sự đóng góp quý báu của tất cả mọi người.
Tp.Đà Nẵng, tháng 5/2011 Phạm Xuân Quang
Trang 3Tôi xin cam đoan :
1 Những nội dung trong luận văn này là do tôi thực hiện dưới sự hướng dẫn trực tiếp của thầy Võ Đức Hoàng
2 Mọi tham khảo dùng trong luận văn đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời gian, địa điểm công bố.
3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá,
tôi xin chịu hoàn toàn trách nhiệm.
Sinh viên, Phạm Xuân Quang
Trang 4
Đà Nẵng ,ngày … tháng … năm 2011 Cán bộ hướng dẫn
ThS Võ Đức Hoàng
Trang 5
Đà Nẵng, ngày … tháng … năm 2011
Cán bộ phản biện
Trang 6MỞ ĐẦU 1
I BỐI CẢNH THỰC HIỆN ĐỀ TÀI 1
II MỤC ĐÍCH ĐỀ TÀI 1
III NHIỆM VỤ THỰC HIỆN 2
IV PHƯƠNG PHÁP TRIỂN KHAI 2
GIỚI THIỆU HỆ THỐNG SEARCH ENGINE 4
I TỔNG QUAN VỀ TÌM KIẾM THÔNG TIN 4
I.1 Giới thiệu về tìm kiếm thông tin 4
I.1.1 Mô hình toán tử Boolean 5
I.1.2 Mô hình toán tử Boolean mở rộng 5
I.1.3 Mô hình xác xuất 5
I.1.4 Mô hình không gian vector 5
II HỆ THỐNG SEARCH ENGINE 7
II.1 Các Thành Phần Của Hệ Thống Search Engine 7
II.1.1 Bộ thu thập thông tin – Robot 7
II.1.2 Bộ lập chỉ mục – Index 7
II.1.3 Bộ tìm kiếm thông tin – Search Engine 7
II.2 Nguyên lý hoạt động 8
III BỘ THU THẬP THÔNG TIN –ROBOT 8
III.1 Robot Thống kê, phân tích và tìm kiếm 8
III.1.1 Phân tích, thống kê – Statistical Analysis 8
III.1.2 Duy trì siêu liên kế - Maintenance 8
III.1.3 Ánh xạ địa chỉ – Mirroring 8
III.1.4 Phát hiện tài nguyên – Resource Discovery 9
III.2 Robot chỉ mục – Robot Indexing 9
IV BỘ LẬP CHỈ MỤC INDEX 9
IV.1 Khái quát về hệ thống lập chỉ mục 9
IV.2 Tổng quan về phương pháp lập chỉ mục 11
IV.2.1 Xác định mục từ quan trọng cần lập chỉ mục 11
IV.2.2 Lập chỉ mục tự động cho tài liệu 12
IV.2.3 Tập tin nghich đảo tài liệu 13
IV.2.4 Phương pháp hỗ trợ tách từ tự động ngôn ngữ 14
IV.3 Lập chỉ mục cho tài liệu tiếng Việt 15
IV.3.1 Khó khăn cho việc lập chỉ mục tiếng Việt 15
IV.3.2 Đặc điểm về từ trong tiếng Việt và việc tách từ 16
IV.3.3 Giải quyết các vấn đề hiển thị của tiếng Việt (vấn đề chính tả) 17
IV.3.4 Giải quyết các vấn đề về từ của tiếng Việt 19
V BỘ TÌM KIẾM THÔNG TIN – SEARCH ENGINE 20
V.1 Các phương thức tìm kiếm 20
V.1.1 Tìm theo từ khoá – Keyword searching 20
V.1.2 Những khó khăn khi tìm theo từ khoá 20
V.1.3 Tìm theo ngữ nghĩa – Concept-based searching 20
Trang 7V.2.3 Tối ưu câu truy vấn 21
V.2.4 Truy vấn bằng ví dụ 22
CÔNG NGHỆ 23
I KỶ THUẬT 23
I.1 Kỷ thuật tìm kiếm toàn văn (Full Text Search) 23
I.2 Chiến thuật tìm kiếm và thu thập thông tin file tài liệu 24
I.2.1 Thuật toán vét cạn : 24
I.2.2 Bài toán cụ thể : 24
I.3 Kỷ thuật lập trình đa luồng 25
I.3.1 Luồng (Thread) 25
I.3.2 Các trạng thái hoạt động của luồng (Thread) 26
I.3.3 Lập trình đa luồng trong C# 26
I.3.4 Độ ưu tiên của luồng (Thread) : 27
I.3.5 Sự đồng bộ các luồng (Thread) 27
II THƯ VIỆN 28
II.1 Giới thiệu về Lucene 28
II.1.1 Tổng quan 28
II.1.2 Tại sao chọn Lucene xây dựng 2 bộ Index và Search 29
II.1.3 Các thành phần của Lucene API 30
II.2 Lập Chỉ Mục – Index của Lucene 31
II.2.1 Phương pháp lập chỉ mục 31
II.3 Tìm kiếm thông tin của Lucene (Search Engine) 36
II.3.1 Phương pháp tìm kiếm 36
II.4 Dữ Liệu Lucene 37
II.4.1 Dữ liệu Index 37
II.4.2 Trọng số và xếp hạng mục từ 40
II.4.3 Cấu trúc tập tin nghịch đảo Index (FTS index types) 41
II.4.4 Tối ưu hóa bộ nhớ Index 43
PHÂN TÍCH HỆ THỐNG 45
I PHÂN TÍCH YÊU CẦU 45
I.1 Khảo sát hiện trạng 45
I.2 Phân tích xác định yêu cầu 45
II Mô hình hoạt động : 47
II.1 Mô Hình hoạt động chi tiết 47
II.1.1 Mô hình chung 47
II.1.2 Mô hình chi tiết hệ thống 48
II.2 Module Thu Thập Thông tin 48
II.2.1 Hoạt động 48
II.2.2 Thuật toán : 49
II.3 Module Lập chỉ mục Index 49
II.3.1 Hoạt động 49
II.3.2 Thuật toán : 50
II.4 Module Tìm Kiếm 51
Trang 8II.4.1 Hoạt động 51
II.4.2 Thuật toán : 51
II.5 Tối ưu hoạt động của các Module 52
II.5.1 Phương pháp tối ưu cho 2 Module tìm kiếm thông tin và lập Index 52
II.5.2 Phương pháp tối ưu cho Module tìm kiếm và hiện kết quả 53
III Dữ liệu hệ thống 54
III.1 Định dạng file dữ liệu Data 54
III.1.1 Phần header và phần đệm: 56
III.1.2 Phần dữ liệu 57
IV Mô hình Use Case 57
IV.1 Xác định Actor và Use-case : 57
IV.2 Mô hình Use-case 57
V Đặc tả Use-case 58
V.1 Tìm kiếm (Search) 58
V.1.1 Mô hình sequence 59
V.1.2 Giao diện minh họa 59
V.2 Lập chỉ mục (Manual Index) 59
V.2.1 Mô hình Sequence 60
V.2.2 Giao diện minh họa 60
V.3 Xem File (View File) 60
V.3.1 Mô hình Sequence 61
V.3.2 Giao diện minh họa 62
V.4 Thêm ,Xóa Spyder 62
V.4.1 Mô hình Sequence 63
V.4.2 Giao diện minh họa 63
VI Biểu đồ gói 64
VII Biểu đồ Class 65
VII.1 Biểu đồ gói Data Index 65
VII.2 Biểu đồ class của gói Core 66
VII.3 Biểu đồ class của gói UI 66
DEMO & ĐÁNH GIÁ KẾT QUẢ 67
I DEMO 67
I.1 Giao diện tìm kiếm thông tin và tự động lập chỉ mục 67
I.2 Giao diện phần lập chỉ mục thủ công 71
I.3 Giao diện phần tìm kiếm 73
II So sánh hiệu quả ứng dụng 80
KẾT LUẬN 81
III Đánh giá 81
III.1 Ưu điểm 81
III.2 Khuyết điểm 82
IV Hướng phát triển 82
IV.1 Đối với từng module 82
IV.2 Đối với toàn luận văn: 82
Trang 9DANH MỤC HÌNH ẢNH
Hình 1 : Quá trình tìm kiếm thông tin 4
Hình 2 : Biểu diển các vector tài liệu trong không gian 2 chiều 6
Hình 3 : Lưu đồ xử lí hệ thống lập chỉ mục 10
Hình 4 : Mô hình hoạt động phương pháp Longest Matching 15
Hình 5 : Cấu trúc bên trong Lucene 28
Hình 6 : Quá trình hoạt động của Lucene 29
Hình 7 : Mô hình lập Index của Lucene 32
Hình 8 : Quá trình Analyser 33
Hình 9 : Mô hình Rosette Linguistics Platform 35
Hình 10 : Mô Hình Tìm kiếm của Search Lucene 36
Hình 11 : Mô hình xếp hạng ranking Lucene 40
Hình 12: Nhập Index mỗi tài liệu lại với nhau 44
Hình 13 : Chi tiết việc nhập Index 44
Hình 14 : Tạo ngăn xếp cho tài liệu 44
Hình 15 : Mô hình chung ứng dụng 47
Hình 16 :Mô hình chi tiết hệ thống 48
Hình 17 : Quá trình hoạt động của robot spyder 49
Hình 18 : Quá trình lập chỉ mục 50
Hình 19 : Hoạt động module tìm kiếm 51
Hình 20 : Giải pháp tối ưu hóa các Module 53
Hình 21 : Sử dụng nhiều luồng trình bày kết quả 54
Hình 22 : Cấu trúc file nhị phân 55
Hình 23 : Mô hình Use Case hệ thống 58
Hình 24 : Mô hình sequence tìm kiếm 59
Hình 25 : Giao diện minh họa tìm kiếm 59
Hình 26 : Mô hình sequence Manual Index 60
Hình 27 : Giao diện minh họa Manual Index 60
Hình 28 : Mô hình sequence View file 61
Hình 29 : Giao diện minh họa View File 62
Hình 30 : Mô hình sequence thêm xóa Spider 63
Hình 31 : Giao diện minh họa việc thêm xóa Spyder 64
Hình 32 : Biểu đồ gói 65
Hình 33 : Biểu đồ class của gói Data Index 65
Hình 34 : Biểu đồ class của gói Core 66
Hình 35 : Biểu đồ class của gói UI 66
Hình 36 : Giao diện thêm ,xóa ,spider tìm kiếm file cho việc lập chỉ mục 67
Hình 37 : Thêm robot mới tìm kiếm file trong thư mục D:/ebook 68
Hình 38 :Thông tin quản lí file hoạt động trong thư mục D:/ebook 68
Hình 39 :Xóa robot spyder hoạt động tại thư mục 69
Hình 40 : Dừng hoạt động của spyder hoạt động 69
Hình 41 :Khởi động spyder hoạt động việc hoạt động 70
Hình 42 :Các hoạt động robot tìm kiếm đã dừng hoạt động 70
Hình 43 :Giao diện lập chỉ mục thủ công 71
Hình 44 :Chọn file cần lập chỉ mục 71
Hình 45 :Thông tin File cần lập chỉ mục thủ công 72
Trang 10Hình 46 :Đã lập Index file chỉ định 72
Hình 47 : Giao diện tìm kiếm 73
Hình 48 : Kết quả tìm kiếm với từ khóa “Lucene” 73
Hình 49 : Đường dẫn file tài liệu cần xem 74
Hình 50 : Kết quả sau khi kích vào link xem file 74
Hình 51 :Ứng dụng tìm kiếm chạy mặc định dưới thanh tastbar 75
Hình 52 : Cấu trúc Project Visual Studio 75
Hình 53 : Thư mục file hệ thống 76
Hình 54 : Thư mục cache 76
Hình 55 : Thư mục extractor 77
Hình 56 : Thư mục chứa Index 77
Hình 57 : Thư mục chứa các processor 78
Hình 58 : File dữ liệu ứng dụng 78
Trang 11DANH MỤC BẢNG BIỂU
Table 1 : Các tập tin nghịch đảo lưu trữ Error! Bookmark not defined.
Table 2 : Tập tin trực tiếp lưu trữ 14
Table 3 :Thêm 1 tài liệu mới vào tập tin nghich đảo 14
Table 4 : Các câu truy vấn 22
Table 5 : Bảng các mục từ nghich đảo 41
Table 6 : Chức năng hệ thống 46
Table 7 : Bảng so sánh hiệu năng ứng dụng 80
Trang 12DANH MỤC VÍ DỤ
Vidu 1: Mô hình toán tử Boolean 5
Vidu 2 : Bỏ hậu tố Error! Bookmark not defined. Vidu 3 : Xử lí hậu tố 13
Vidu 4 : Xử lí ngôn ngữ tiếng Anh 33
Vidu 5 : Về Streaming 34
Vidu 6 : Sử dụng từ điển 34
Vidu 7 : Sử dụng bảng Inverted Index 42
Vidu 8 : Nếu không sử dụng luồng trình bày kết quả 53
Trang 13I BỐI CẢNH THỰC HIỆN ĐỀ TÀI
Ngày nay sự phát triển công nghệ thông tin đang tiến bộ không ngừng ,kéo theo sự giatăng số lượng các tài liệu điện tử cũng gia tăng từng ngày Hiện nay,tài liệu điện tử quánhiều không thể thống kê.Tài liệu mang số lượng thông tin rất lớn bởi vậy nhu cầu khai tháctrong kho dữ liệu khổng lồ này để tìm kiếm những thông tin cần thiết đang là nhu cầu cầnthiết thực của người sử dụng Tuy nhiên, một trong những khó khăn hiện con người gặp phảitrong việc khai thác thông tin là khả năng tìm chính xác thông tin đúng với mục đích
Và có nhu thì có cầu, những hệ thống tìm kiếm bắt đầu phát triển và đưa vào ứng dụng,phổ biến là các hệ thống tìm kiếm theo từ khóa
Đặc biệt trên môi trường Internet thì rất nhiều hệ thống hoạt động rất hiệu quả nhưGoogle, Bing, Yahoo!…Bởi lẽ thị trường này mang một lượng thông tin nhiều và thu đượcnhiều lợi nhuận hơn cho các nhà phát triển nên họ tập trung phát triển cho thi trường này
Và điều hiển nhiên là thị trường tìm kiếm trong máy tính cá nhân chưa thật sự được tậptrung đầu tư Dù ở ở thị trường tìm kiếm trên máy tính cá nhân thì nhu cầu người sử dụngcũng không ít hơn tìm kiếm trên môi trường Internet.Hơn nữa phần lớn các công cụ tìm kiếmtrên máy tính cá nhân hiện là những sản phẩm thương mại và mã nguồn được giữ bí mật vàchưa thõa mãn hoàn toàn nhu cầu tìm kiếm như là sản phẩn tìm kiếm trên mạng Internet
Ví dụ một số ứng dụng tìm kiếm toàn văn trên máy cá nhân như Windows Search,Google Desktop, foxit reader … đã chưa thật sự đáp ứng tốt nhu cầu của người sử dụngnhư miễn phí cho cá nhân,thời gian tìm kiếm, bảo mật thông tin ,mã nguồn mở cho ngườiphát triển ,hỗ trợ ngôn ngữ riêng biệt cho từng địa phương…
Nhận ra vấn đề đó, em đã cố gắng nghiên cứu xây dựng một hệ thống tìm kiếm trên máytính cá nhân phục vụ cho người dùng.Và đó là lí do em chọn đề tài :
“Nghiên cứu hệ thống Search Engine và xây dựng ứng dụng tìm kiếm nội dung tàiliệu”
II MỤC ĐÍCH ĐỀ TÀI
Bởi lẽ mô hình tìm kiếm thông tin tối ưu nhất hiện nay chính là mô hình Search Engine.Vìvậy nghiên cứu một hệ thống Search Engine hoàn chỉnh là việc cần thiết để có thể xây dựngmột hệ thống tốt Và trong thời gian tìm hiểu thì em nhận ra rằng nếu sử dụng thư việnLucene và phát triển thêm để xây dựng một phần trong hệ thống tìm kiếm là một giải pháprất tốt sẽ có ứng dụng cao,cạnh tranh,hiểu quả cao trong thực tế Bới lẽ Lucene được đánh
Trang 14Mục tiêu của ứng dụng là có khả năng tìm kiếm nhanh ,chính xác tài liệu với từ khóa ,xây dựng theo hướng mở cho mọi người có thể phát triển thêm với mục tiêu xây dựng tất cảcác định dạng tài liệu, và tối ưu cho ngôn ngữ tiếng Việt
Ứng dụng sẽ được xây dựng dựa trên những thành phần cơ bản của của hệ thống SearchEngine như :
1 Bộ Thu Thập Thông Tin
2 Bộ Lập Chỉ Mục
3 Bộ Tìm Kiếm Thông Tin
Bước đầu xây dựng ứng dụng tìm kiếm các định dạng file tài liệu cơ bản được lưu trữtrong máy tính như pdf ,.docx,.html,.xml,.rtf…Ứng dụng chuẩn hóa việc lập trình cho việcviết thêm phần hỗ trợ cho các định dạng file con lại theo hướng mở
Ứng dụng có khả năng tự tìm kiếm các file tài liệu lưu trong máy và tự động lập index Tìm kiếm nội dung từ và các từ khóa được in đậm trong file kết quả Mở file kết quả tìmkiếm bằng click chuột
III NHIỆM VỤ THỰC HIỆN
Tìm hiểu các bộ phận cấu thành hệ thống search engine và nguyên lí hoạt động
Tìm hiểu các phương pháp thường sử dụng trong từng bộ , xây dựng thêm hệ thống táchvăn bản trong hỗ trợ từng loại file như pdf,.docx,.html,.xml,.rtf…
Tìm hiểu về thư viện Lucene và cách hoạt động Xây dựng thêm hệ thống tìm kiếm File.Tìm hiểu về hỗ trợ tài liệu Tiếng Việt trong tìm kiếm, xây dựng thêm 1 số hàm thư viện
hỗ trợ Lucene như VietnamAnalyser, VietnamProcessor , VNI2UNICODE…
Xây dựng ứng dụng dựa trên thư viện Lucene để xây dựng 2 bộ Lập chỉ mục & Tìm kiếmthông tin trong hệ thống ,các bộ còn lại nghiên cứu phat triển tối ưu
Quản lí hoạt động của ứng dụng sao cho sử dụng ít tài nguyên CPU
IV PHƯƠNG PHÁP TRIỂN KHAI
Trình bày tổng quan về tìm kiếm thông tin
Trình bày về các bộ trong hệ thống Search Engine
Phương pháp xây dựng các bộ trong hệ thống Search Engine
Trang 15Trình bày về các kĩ thuật sử dụng để xây dựng ứng dụng
Trình bày về thư viện Lucene và cách hoạt động và lí do chọn thư viện này phát triển ứngdụng
Trình bày những phát triển về xử lí ngôn ngữ Tiếng Việt
Phát triển trên ứng dụng nền Dotnet với sự hỗ trợ của Visual Studio 2008
Kiểm tra lại ứng dụng , đánh giá kết quả đạt được
Lập bảng so sánh với các ứng dụng tìm kiếm khác
Trang 16CHƯƠNG 1
GIỚI THIỆU HỆ THỐNG SEARCH ENGINE
I.1 Giới thiệu về tìm kiếm thông tin
Tìm kiếm thông tin là tìm kiếm nội dung trên một tập hợp các dữ liệu phi cấu trúc đượclưu trữ trên máy tính nhằm phục vụ nhu cầu thông tin Mục đích của tìm kiếm là trả lại chongười sử dụng thông tin thỏa mãn nhu cầu của họ Chúng ta định nghĩa rằng thông tin cầnthiết là “câu truy vấn” và các thông tin được chọn là “tài liệu”
Có nhiều cách để xây dựng mô hình tìm kiếm thông tin Mục đích là để thực hiện tự độngqui trình kiểm tra các tài liệu bằng cách tính toán độ tương quan giữa các câu truy vấn và tàiliệu.Và đưa ra kết quả tài liệu càng liên quan càng tốt Qui trình tự động này thành công khi
nó trả về các kết quả giống với các kết quả được con người tạo ra khi so sánh câu truy vấnvới các tài liệu
Hình 1 : Quá trình tìm kiếm thông tin
Một số mô hình tìm kiếm thông tin cơ bản :
Mô hình không gian vector
Mô hình tìm kiếm Boolean
Mô hình tìm kiếm Boolean mở rộng
IR system Retrieval
Document
collection
IR system
Trang 17 Mô hình xác xuất
Là một mô hình mà chúng ta có thể xem mỗi câu truy vấn là một biểu thức logic các mục
từ, trong đó gồm các mục từ kết hợp với các toán tử logic (AND, OR, và NOT) Câu hỏi đưavào phải ở dạng biểu thức Boolean :
1 Ngữ nghĩa rõ ràng
2 Hình thức ngắn gọn
Mô hình sẽ xem mỗi tài liệu là một tập hợp các mục từ Mỗi mục từ sẽ chứa một danh sáchcác tài liệu có chứa nó, danh sách này gọi là posting, việc so khớp sẽ duyệt qua danh sáchposting để kiểm tra các tài liệu có chứa mục từ hay không
Vidu 1: Mô hình toán tử Boolean
Đưa vào câu hỏi dạng như sau như : t1 and t2 và sau khi tìm kiếm ta xác định được các tài liệu tìm kiếm liên quan đến t1 là {d1,d5,d5} và các tài liệu liên quan đến t2 là {d3,d5,d7} Với phép and các tài liệu thõa mãn yêu cầu người dùng là d3 và d5.
Vì vậy nên mô hình này có những khuyết điểm như sau :
1 Các tài liệu trả về không được sắp xếp (ranking)
2 Câu hỏi tìm kiếm phải đúng định dạng của biểu thức Boolean gây khó khăn chongười dùng
3 Kết quả trả về có thể là quá ít hoặc quá nhiều
Vì những khuyết điểm của mô hình toán tử Boolean mà sinh ra mô hình toán tử Boolean
mở rộng nhằm hỗ trợ việc sắp xếp và kết quả trả về dựa trên ý tưởng cơ bản là đánh trọng sốcho mỗi từ trong câu hỏi và trong tài liệu Ví dụ câu hỏi yêu cầu (t1 or t2) và 1 tài liệu D cóchứa t1 với trọng số w1 và t2 với trọng số w2 Nếu w1 và w2 đều bằng một thì tài liệu nào
có chứa 2 tài liệu này sẽ có kết quả cao nhất Tài liệu nào không có chứa 2 từ này sẽ có thứ
tự sắp xếp thấp nhất
Mô hình tìm kiếm xác xuất tính toán độ tương phản giữa câu hỏi và tài liệu dựa vào xácxuất mà tài liệu đó liên quan đến câu hỏi Các lí thuyết về xác xuất được áp dụng để tínhtoán độ liên quan giữa câu hỏi và tài liệu Các từ trong câu hỏi được xem là đầu mối để xácđịnh các tài liệu liên quan Ý tưởng chính là tính xác xuất của mỗi từ trong câu hỏi và sau đó
sử dụng chúng để tính xác xuất mà tài liệu liên quan đến câu hỏi
Mô hình không gian vector tính toán độ tương quan giữa các câu hỏi bằng cách định nghĩa
1 vector biểu diễn cho 1 tài liệu và 1 vector biểu diển cho câu hỏi Mô hình dựa trên ý tưởngchính là ý nghĩa của 1 tài liệu thì phụ thuộc vào các từ được sử dụng bên trong nó Vector tài
Trang 18liệu và vector câu hỏi sẽ được tính toán để xác định độ tương quan của chúng Độ tương quancàng lớn chứng tỏ tài liệu đó càng liên quan đến câu hỏi
Hình 2 : Biểu diển các vector tài liệu trong không gian 2 chiều
Giả sử một tập tài liệu chỉ gồm có 2 từ t1 và t2.Vector xây dựng gồm 2 thành phần :Thành phần 1 biểu diễn sự xuất hiện của t1 , thành phần 2 biểu diễn cho sự xuất hiện t2.Cách đơn giản nhất để xây dựng để xây dựng vector là đánh 1 vào thành phần tương ứngnếu đó xuất hiện , và đánh 0 vào thành phần không xuất hiện.Giả sử tài liệu chỉ có 2 từ t1.Tabiểu diễn tài liệu này bằng vector nhị phân sau <1,0>.Tuy nhiên biểu diễn như vậy khôngcho thấy được tần số xuất hiện của mỗi từ trong tài liệu.Trong trường hợp này , vector nênđược biểu diễn như sau <2,0>
Đối với câu hỏi đã cho , thay vì chỉ căn cứ so sánh các từ trong tài liệu với tập các từ trongcâu hỏi , ta nên xem xét đến tần quan trọng của mỗi từ Ý tưởng chính là một từ xuất hiện tậptrung trong 1 số tài liệu thì có trọng số cao hơn so với 1 từ phân bố trong tài liệu Trọng sốđược tính dựa trên tần số tài liệu nghịch đảo (Invert document) liên quan đến các từ đã cho :N: số từ phân biệt trong tài liệu
Tf(ij) :số lần xuất hiện của từ tj trong tài liệu Di
Df(i) :Số tài liệu có chứa từ tj
D là tổng số tài liệu
Vector được xây dựng cho mỗi tài liệu gồm n thành phần , mỗi thành phần là giá tri trọng
số đã được tính toán cho mỗi từ trong tập tài liệu.Các từ trong tài liệu được gán trọng số tựđộng dựa vào tần số xuất hiện của chúng trong tập tài liệu và sự xuất hiện của mỗi từ trongtập tài liệu riêng biệt Trọng số của 1 từ tăng nếu từ đó xuất hiện thường xuyên trong 1 tài
Idf(i) =log (10) df d (i)
Trang 19liệu và giảm nếu tài liệu đó xuất hiện thường xuyên trong tất cả các tài liệu Để tính trọng sốcủa từ thứ i(j) trong tài liệu D(i), dựa vào công thức :
D(i,j) : là trọng số của từ t(j) trong tài liệu D(i)
Tf(ij) :số lần xuất hiện của từ tj trong tài liệu D(i)
II HỆ THỐNG SEARCH ENGINE
II.1 Các Thành Phần Của Hệ Thống Search Engine
Robot là một chương trình tự động duyệt qua các cấu trúc siêu liên kết để thu thập tài liệu
& một cách đệ quy nó nhận về tất cả tài liệu có liên kết với tài liệu này Robot được biết đếndưới nhiều tên gọi khác nhau : spider, wanderer hoặc worm,… Những tên gọi này đôi khigây nhầm lẫn, như từ ‘spider’, ‘wanderer’ làm người ta nghĩ rằng robot tự nó di chuyển và từ
‘worm’ làm người ta liên tưởng đến virus Về bản chất robot chỉ là một chương trình duyệt
và thu thập thông tin Những trình duyệt,ứng dụng thông thường không được xem là robot dothiếu tính chủ động, chúng chỉ duyệt khi có sự tác động của con người
Hệ thống lập chỉ mục hay còn gọi là hệ thống phân tích và xử lý dữ liệu, thực hiện việcphân tích, trích chọn những thông tin cần thiết (thường là các từ đơn , từ ghép , cụm từ quantrọng) từ những dữ liệu mà robot thu thập được và tổ chức thành cơ sở dữ liệu riêng để có thểtìm kiếm trên đó một cách nhanh chóng, hiệu quả Hệ thống chỉ mục là danh sách các từkhoá, chỉ rõ các từ khoá nào xuất hiện ở trang nào, địa chỉ nào
Search engine là cụm từ dùng chỉ toàn bộ hệ thống bao gồm bộ thu thập thông tin, bộ lậpchỉ mục & bộ tìm kiếm thông tin Các bộ này hoạt động liên tục từ lúc khởi động hệ thống,chúng phụ thuộc lẫn nhau về mặt dữ liệu nhưng độc lập với nhau về mặt hoạt động Searchengine tương tác với user thông qua giao diện, có nhiệm vụ tiếp nhận & trả về những tài liệuthoả yêu cầu của user Nói nôm na, tìm kiếm từ là tìm kiếm các thông tin mà những từ trongcâu truy vấn (query) xuất hiện nhiều nhất, ngoại trừ stopword (các từ quá thông dụng nhưmạo từ a, an, the,…) Một từ càng xuất hiện nhiều trong một trang thì trang đó càng đượcchọn để trả về cho người dùng Và một trang chứa tất cả các từ trong câu truy vấn thì tốt hơn
là một trang không chứa một hoặc một số từ Ngày nay, hầu hết các search engine đều hỗ trợchức năng tìm cơ bản và nâng cao, tìm từ đơn, từ ghép, cụm từ, danh từ riêng, hay giới hạnphạm vi tìm kiếm như trên đề mục, tiêu đề, đoạn văn bản giới thiệu về trang tài liệu, web,… Ngoài chiến lược tìm chính xác theo từ khoá, các search engine còn cố gắng ‘ hiểu ‘ ý nghĩa
D(ij) = tf(i,j)*idf(j)
Trang 20thực sự của câu hỏi thông qua những câu chữ do người dùng cung cấp Điều này được thểhiện qua chức năng sửa lỗi chính tả, tìm cả những hình thức biến đổi khác nhau của một từ.
Ví dụ : search engine sẽ tìm những từ như speaker, speaking, spoke khi người dùng nhập vào
từ speak
II.2 Nguyên lý hoạt động
Search engine điều khiển robot đi thu thập thông tin thông qua các liên kết Khi robotphát hiện ra một thông tin mới, nó gởi thông tin về cho server chính để tạo cơ sở dữ liệu chỉmục phục vụ cho nhu cầu tìm kiếm thông tin
Bởi vì thông tin luôn thay đổi nên robot phải liên tục cập nhật các thông tin cũ Mật
độ cập nhật phụ thuộc vào từng hệ thống search engine Khi search engine nhận câu truy vấn
từ user, nó sẽ tiến hành phân tích, tìm trong cơ sở dữ liệu chỉ mục & trả về những tài liệuthoả yêu cầu
III BỘ THU THẬP THÔNG TIN –ROBOT
Bộ thu thập thông tin hay robot được xâu dựng với nhiều mục đích khác nhau như :
1 Robot Thống kê, phân tích và tìm kiếm
2 Robot chỉ mục – Robot Indexing
III.1 Robot Thống kê, phân tích và tìm kiếm
Robot đầu tiên được dùng để đếm số lượng , số tài liệu trung bình , tỉ lệ các dạng file khácnhau, kích thước trung bình của một trang, độ kết dính, …
Một trong những khó khăn của việc duy trì một siêu liên kết là nó liên kết với những trang
bị hỏng khi những trang này bị thay đổi hoặc thậm chí bị xóa Thật không may vẫn chưa có
cơ chế nào cảnh báo các bộ duy trì về sự thay đổi này Trên thực tế khi các tác giả nhận ra tàiliệu của mình chứa những liên kết hỏng, họ sẽ thông báo cho nhau
Một số robot, chẳng hạn MOMspider có thể trợ giúp tác giả phát hiện các liên kết hỏngcũng như duy trì các cấu trúc liên kết cùng nội dung lưu trữ nó Chức năng này lặp lại liêntục mỗi khi một tài liệu được cập nhật, nhờ đó mọi vấn đề xảy ra sẽ được giải quyết nhanhchóng
Mirroring là một kỹ thuật phổ biến trong việc duy trì các kho dữ liệu của FPT Một ánh xạ
sẽ sao chép toàn bộ cấu trúc cây thư mục và thường xuyên cập nhật những file bị thay đổi.Điều này cho phép nhiều người cùng truy xuất một nguồn dữ liệu, giảm số liên kết bị thất
Trang 21bại, nhanh hơn và ít chi phí hơn so với truy cập trực tiếp vào site thực sự chứa các dữ liệunày
Có lẽ ứng dụng thú vị nhất của robot là dùng nó để phát hiện tài nguyên Con ngườikhông thể kiểm soát nổi một khối lượng thông tin khổng lồ trong môi trường mạng Robot sẽgiúp thu thập tài liệu, tạo và duy trì cơ sở dữ liệu, phát hiện và xoá bỏ các liên kết hỏng nếu
có, kết hợp với công cụ tìm kiếm cung cấp thông tin cần thiết cho con người
III.2 Robot chỉ mục – Robot Indexing
Trong quá trình thu thập thông tin phục vụ cho bộ lập chỉ mục, ta cần giải quyết nhữngvấn đề sau :
Trong môi trường máy tính hoặc mạng, robot lấy thông tin từ các file hay site Vậyrobot sẽ bắt đầu từ file hay site nào ? Điều này hoàn toàn phụ thuộc vào robot Mỗirobot khác nhau sẽ có những chiến lược khác nhau Thường thì robot sẽ viếngthăm các file hay site phổ biến hoặc những file hay site có nhiều liên kết dẫn đếnnó
Ai sẽ cung cấp địa chỉ của các file hay site này cho robot ? Có 2 nguồn : Robotnhận các URL ban đầu từ user và Robot phân tích các file hay site để lấy các URLmới, đến lượt các URL này trở thành địa chỉ đầu vào cho robot Quá trình nàyđược lặp lại liên tục
Chọn dữ liệu nào trong tài liệu để lập chỉ mục ?Quyết định chọn dữ liệu nào trongtài liệu cũng hoàn toàn phụ thuộc vào robot, thường thì những từ được liệt kê nhưsau được xem là quan trọng : ở góc cao của tài liệu,trong các đề mục,được inđậm,trong URL,trong tiêu đề trong phần miêu tả trang web ,trong các thẻ dành chohình ảnh,trong các thẻ chứa từ khóa,trong các text liên kết
Một số robot lập chỉ mục trên tiêu đề, hoặc một số đoạn văn bản đầu tiên hoặctoàn bộ tài liệu (full text) Một số khác lại lập chỉ mục trên các thẻ META(METAtags) hoặc các thẻ ẩn, nhờ vậy tác giả của trang web được quyền ấn định từ khoácho tài liệu của mình Tuy nhiên chức năng này bị lạm dụng quá nhiều do đó cácthẻ META không còn giữ được giá trị ban đầu của chúng nữa
IV BỘ LẬP CHỈ MỤC INDEX
IV.1 Khái quát về hệ thống lập chỉ mục
Các robot sau khi thu thập về sẽ được phân tích, trích chọn những thông tin cần thiết(thường là các từ đơn , từ ghép , cụm từ quan trọng) để lưu trữ trong cơ sở dữ liệu nhằmphục vụ cho nhu cầu tìm kiếm sau này Mô hình tổng quát hệ thống lập chỉ mục :
Trang 22Hình 3 : Lưu đồ xử lí hệ thống lập chỉ mục
Lập chỉ mục là quá trình phân tích và xác định các từ , cụm từ thích hợp cốt lõi có khả năngđại diện cho nội dung của tài liệu Như vậy, vấn đề đặt ra là phải rút trích ra những thôngtin chính, có khả năng đại diện cho nội dung của tài liệu Thông tin này phải “vừa đủ”, nghĩa
là không thiếu để trả ra kết quả đầy đủ so với nhu cầu tìm kiếm, nhưng cũng phải không dư
để giảm chi phí lưu trữ và chi phí tìm kiếm và để loại bỏ kết quả dư thừa không phù hợp.Việc rút trích này chính là việc lập chỉ mục trên tài liệu Trước đây , quá trình này thườngđược các chuyên viên đã qua đào tạo thực hiện một cách “thủ công “ nên có độ chính xáccao Nhưng trong môi trường hiện đại ngày nay, với lượng thông tin khổng lồ thì việc lập chỉmục bằng tay không còn phù hợp, phương pháp lập chỉ mục tự động mang lại hiệu quả caohơn
Một thủ tục lập chỉ mục tự động cơ bản cho các tài liệu tiếng Anh có thể được xử lý như sau:
1 Step of tokenization: Tách văn bản ra thành các chuỗi nhờ vào khoảng trắng, mỗi
chuỗi xem như là một từ
2 Step of removal of stop words: bỏ những từ thường xuyên xuất hiện trong hầu hết
các tài liệu nhưng lại không quan trọng trong các tài liệu như tính từ, đại từ
3 Step of stemming: loại bỏ các hậu tố (suffixes) để đưa về các từ gốc
Lọc các thông tin thừa, chuyển tài liệu về dạng
văn bảnTách văn bản thành các
từ
Loại bỏ stop-word
Tính trọng số và loại bỏ những từ có trọng số
thấp
Lập chỉ mục
Danh sách các trang file hay site cần lập chỉ mục
Danh sách các từ stop-word
TỪ ĐIỂN
CSDL chỉ mục thông tin
Loại bỏ hậu tố Danh sách
các hậu tố
Trang 23Các từ thu được sẽ được lập chỉ mục Tuy nhiên hai bước đầu cũng cần cho quá trình lậpchỉ mục cho các tài liệu tiếng Việt, bước thứ ba không cần vì tiếng Việt thuộc dòng ngôn ngữđơn thể.
IV.2 Tổng quan về phương pháp lập chỉ mục
Phương pháp lập chỉ mục gồm 2 phần chính yếu sau :
1 Đầu tiên là xác định các mục từ , khái niệm mà có khả năng đại diện cho văn bản
sẽ được lưu trữ (bao gồm cả việc tách từ, loại bỏ stop-word, xử lý hậu tố…)
2 Thứ hai là xác định trọng số cho từng mục từ , trọng số này là giá trị phản ánhtầm quan trọng của mục từ đó trong văn bản
Mục từ hay còn gọi là mục từ chỉ mục, là đơn vị cơ sở cho quá trình lập chỉ mục Mục từ cóthể là từ đơn, từ phức hay một tổ hợp từ có nghĩa trong một ngữ cảnh cụ thể Ta xác địnhmục từ của 1 văn bản dựa vào chính nội dung của văn bản đó , hoặc dựa vào tiêu đề hoặctóm tắt nội dung của văn bản đó
Hầu hết việc lập chỉ mục tự động bắt đầu với việc khảo sát tần số xuất hiện của từng loại
từ riêng rẽ trong văn bản Nếu tất cả các từ xuất hiên trong tập tài liêu với những tần số băngnhau, thì không thể phân biệt các mục từ theo tiêu chuẩn định lượng Tuy nhiên, trong vănbản ngôn ngữ tự nhiên, tần số xuất hiện của từ có tính thất thường, Do đó những mục từ cóthể được phân biệt bởi tần số xuất hiên của chúng
Đặc trưng xuất hiện của từ vựng có thể được định bởi hằng số “thứ hạng - tần số”(Rank_Frequency ) theo luật của Zipf :
Biểu thức luật Zipf có thể dẫn ra những hệ số ý nghĩa của từ dựa vào những đặc trưngcủa tần số xuất hiện của mục từ riêng lẽ trong những văn bản tài liệu
Một đề xuất dựa theo sự xem xét chung sau:
1 Cho một tập hợp n tài liệu, trong mỗi tài liệu tính toán tần số xuất hiện của cácmục từ trong tài liệu đó
Fik (Frequency): tần số xuất hiện của mục từ k trong tài liệu i
2 Xác định tổng số tập tấn số xuất hiện TFk (Total Frequency) cho mỗi từ bằngcách cộng những tần số của mỗi mục từ duy nhất trên tất cả n tài liệu
n
Tần số xuất hiên * thứ hạng = Hằng số.
Trang 24TFk = ∑ Fik
i=1
3 Sắp xếp những thứ tự giảm theo tập tần số xuất hiện của chúng Quyết địnhgiá trị ngữơng cao và loại bỏ tất cả những từ có tập tần số xuất hiện cao trênngữơng nay Những từ bị loại bỏ là những từ xuất hiện phổ biến ở hầu hết cáctài liệu Đó chính là các stop-word
4 Tương tư, loại trừ những từ được xem là có tần số xuất hiện thấp Việc xoánhững mục từ như vậy hiếm khi xảy ra trong tập hợp mà sự mặt của chúngkhông làm ảnh hưởng lớn đến việc thực hiện truy vấn
5 Những từ xuất hiện trung bình còn lại bây giờ được dùng cho việc ấn định tớinhững tài liệu như những mục từ chỉ mục
Chú ý: Một khái niệm xuất hiện ít nhất hai lần trong cùng một đoạn thì được xem là một
khái niệm chính Một khái niệm xuất hiện trong hai đoạn văn liên tiếp cũng được xem là mộtkhái niệm chính mặc dù nó chỉ xuất hiện duy nhất một lần trong đoạn đang xét Tất cả nhữngchú giải về những khái niệm chính được liệt kê theo một tiêu chuẩn nhất định nào đó
Thực tế cho thấy rằng ý tưởng trên khá cứng nhắc , vì nếu lọai bỏ tất cả những từ có tần
số xuất hiện cao sẽ làm giảm giá trị recall (độ tương tự), tức giảm hiệu quả trong việc trả về
số lượng lớn của những mục tin thích đáng Ngược lại, sự loại bỏ những mục từ có tần sốxuất hiện thấp có thể làm giảm giá trị của độ chính xác Một vấn đề khác là sự cần thiết đểchọn những ngưỡng thích hợp theo thứ tự để phân biệt những mục từ hữu ích có tần số xuấthiện trung bình trong phần còn lại
Vấn đề chính của lập chỉ mục tự động là xác định tự động mục từ chỉ mục cho các tài liệu.Trong các ngôn ngữ gốc Ấn – Âu thì tách từ có thể nói là đơn giản vì khoảng trắng là ký tự
để phân biệt từ Vấn đề cần quan tâm là xác định những từ này là từ khoá, có thể đại diện chotoàn bộ nội dung của tài liệu Loại bỏ các từ stop-word có tần số xuất hiện cao, những từ nàythường chiếm đến 40-50% trong số các từ của một văn bản Những từ này có độ phân biệtkém và không thể sử dụng để xác định nội dung của tài liệu Trong tiếng Anh, có khoảng 250
từ Số lượng từ này không nhiều lắm nên giải pháp đơn giản nhất là lưu các từ này vào trongmột tự điển, và sau đó chỉ cần thực hiện so sánh từ cần phân tích với từ điển để loại bỏ.Bước tiếp theo là nhận ra các chỉ mục tốt Để giảm bớt dung lượng lưu trữ, các mục từ cần
được biến đổi về nguyên gốc (step of stemming đối với tiếng Anh), Phải loại bỏ đi các tiền
tố, hậu tố, các biến thể số nhiều, quá khứ…Giải pháp là sử dụng một danh sách các hâu tố.Trong khi loại bỏ hậu tố thì những hậu tố dài được ưu tiên loại bỏ trước, rồi sau đó mới loại
bỏ những hậu tố ngắn hơn Sau đây là một số vấn đề khi loại bỏ trong tiếng Anh:
1 Chỉ rõ chiều dài tối thiểu của một từ gốc sau khi loại bỏ hậu tố Ví dụ việc loại bỏhậu tố “ability” ra khỏi “computability” hay loại bỏ “ing” ra khỏi “singing” là hợp
Trang 25lý Tuy nhiên, những hậu tố đó không cần phải loại bỏ trong các từ “ability” và
“sing”
2 Nếu nhiều hậu tố được kết hợp vào một gốc thì ta sẽ áp dụng đệ quy cho quá trìnhloại bỏ hậu tố vài lần hoặc lập từ điển hậu tố rồi loại bỏ những hậu tố dài hơntrước rồi đến các hậu tố ngắn sau “effectiveness” “effective” “effect”
3 Trong tiếng Anh, từ gốc có thể bị biến đổi sau khi đã loại bỏ hậu tố Do đó, ta cầnphải có những luật nhất định để phục hồi từ gốc Chẳng hạn loại bỏ một trong hai
kí tự trùng nhau của những từ có sự xuất hiện b, d, d, l, m, n, p, r, s, t ở cuối củacác từ gốc sau khi đã loại bỏ hậu tố “beginning” “beginn” “begin”
4 Một số ngoại lệ phụ thuộc vào ngữ cảnh đặc biệt phải được chú ý, sử dụng các quytắc cảm ngữ cảnh
Phân biệt giữa tập tin trực tiếp (direct file) và tập tin nghich đảo (inverted file) :
Tập tin trực tiếp (direct file) là tập tin mà chính các mục thông tin đã cung cấp thứ tựchính của tập tin
Tập tin nghich đảo (inverted file) được sắp xếp theo chủ đề , mỗi chủ đề lại bao gồm mộttập các mục thông tin
Giả sử có 1 tập các tài liệu ,mỗi tài liệu chứa danh sách các từ Nếu 1 từ xuất hiện trong 1tài liệu, ghi số 1.Ngược lại ghi 0 Khi đó tập tin trực tiếp và tập tin nghich đảo sẽ lưu trữ nhưsau :
Trang 26Từ 1 Từ 2 Từ 3 Từ 4
Table 2 : Tập tin trực tiếp lưu trữ
Tại sao sử dụng tập tin nghich đảo để lập chỉ mục ?
Trong hệ thống tìm kiếm thông tin , tập tin nghịch đảo có ý nghĩa rất lớn, giúp việc truycập thông tin rất nhanh chóng Giả sử khi người dùng nhập một câu truy vấn , hệ thống sẽtách ra làm 2 từ là “ từ 1” và “từ 2”.Dựa vào tập tin nghịch đảo ,ta sẽ dễ dàng được các tàiliệu liên quan đến 2 từ này để trả về cho người tìm kiếm Tuy nhiên , khó khăn chính của tậptin nghich đảo là khi thêm một tài liệu mới, tất cả các từu có liên quan đến tài liệu này đềuphải được cập nhật lại.Ví dụ khi thêm tài liệu 4 có chứa 2 từ là “từ 3” và “từ 4 “ vào tập tinnghich đảo
Tài liệu 1 Tài liệu 2 Tài liệu 3 Tài liệu 4
Table 3 :Thêm 1 tài liệu mới vào tập tin nghich đảo
Rõ ràng việc này tốn một chi phí lớn nếu tập tin nghịch đảo lớn ,trong thực tế tập tinnghich đảo có chứa hang trăm ngàn từ Tuy nhiên trong các hệ thống tìm kiếm thông tin ,người ta chỉ cập nhật lại tập tin tại một khoảng thời gian định kì Vì vậy tập tin nghich đảovẫn được sử dụng để lập chỉ mục
Hiện nay có rất nhiều phương pháp hỗ trợ tách từ nhưng nổi bật là phương pháp LongestMatching
Phương pháp Longest Matching :Tách từ dựa vào từ điển có sẵn, theo phương pháp này
để tách từ ta đi từ trái sang phải và chọn từ có nhiều âm tiết nhất mà có mặt trong từ điển ,rồi tiếp tục cho từ kế tiếp cho đến hết câu Với cách này ta dễ dàng tách các ngữ / câu như :
“hợp tác/mua bán “;”thành lập/nhà nước/việt nam /chủ nghĩa/xã hội/”…
Trang 27Hình 4 : Mô hình hoạt động phương pháp Longest Matching
IV.3 Lập chỉ mục cho tài liệu tiếng Việt
Các điểm khó khăn khi thực hiện quá trình lập chỉ mục cho tài liệu tiếng Việt so với tàiliệu tiếng Anh mà chúng ta phải giải quyết :
Xác định ranh giới giữa các từ trong câu Đối với tiếng Anh điều này quá dễ dàng
vì khoảng trắng chính là ranh giới phân biệt các từ ngược lại tiếng Việt thì khoảngtrắng không phải là ranh giới để xác định các từ mà chỉ là ranh giới để xác địnhcác tiếng
Chính tả tiếng Việt còn một số điểm chưa thống nhất như sử dụng "y" hay "i" ( ví
dụ "quý" hay "quí" ), cách bỏ dấu ( "lựơng" hay "lượng" ), cách viết hoa tên riêng( "Khoa học Tự nhiên" hay "Khoa Học Tự Nhiên") đòi hỏi quá trình hiệu chỉnhchính tả cho văn bản cần lập chỉ mục và cho từ điển chỉ mục
Tồn tại nhiều bảng mã tiếng Việt đòi hỏi khả năng xử lý tài liệu ở các bảng mãkhác nhau Cách giải quyết là đưa tất cả về bảng mã chuẩn của hệ thống
Sự phong phú về nghĩa của một từ (từ đa nghĩa) Một từ có thể có nhiều nghĩakhác nhau trong những ngữ cảnh khác nhau nên việc tìm kiếm khó có được kếtquả với độ chính xác cao
Từ đồng nghĩa hoặc từ gần nghĩa: có nhiều từ khác nhau nhưng lại có cùng ýnghĩa Do đó, việc tìm kiếm theo từ khoá thường không tìm thấy các websites chứa
Trang 28từ đồng nghĩa hoặc gần nghĩa với từ cần tìm Vì vậy, việc tìm kiếm cho ra kết quảkhông đầy đủ
Có quá nhiều từ mà mật độ xuất hiện cao nhưng không mang ý nghĩa cụ thể nào
mà chỉ là những từ nối, từ đệm hoặc chỉ mang sắc thái biểu cảm như những từ láy.Những từ này cần phải được xác định và loại bỏ ra khỏi tập các mục từ Nó giốngnhư stop-word trong tiếng Anh
Các văn bản có nội dung chính là một vấn đề cụ thể, một đề tài nghiên cứu khoahọc nhưng đôi khi trọng số của các từ chuyên môn này thấp so với toàn tập tàiliệu Vì vậy, một số thuật toán tính trọng số bỏ sót những trường hợp như vậy Kếtquả là các từ chuyên môn đó không được lập chỉ mục
Trong các vấn đề trên thì vấn đề xác định ranh giới từ trong câu là quan trọng nhất vì nóảnh hưởng lớn đến hiệu quả của quá trình lập chỉ mục ( nếu quá trình tách từ sai có nghĩa lànội dung của câu bị phân tích sai ) và cũng là vấn đề khó khăn nhất Các vấn đề còn lại chỉ
là thuần tuý về mặt kỹ thuật mà hầu như chúng ta có thể giải quyết một cách triệt để
Tiếng Việt là ngôn ngữ đơn lập Đặc điểm này bao quát tiếng Việt cả về mặt ngữ âm, ngữnghĩa, ngữ pháp Khác với các ngôn ngữ Ấn-Âu, mỗi từ là một nhóm các ký tự có nghĩađược cách nhau bởi một khoảng trắng Còn tiếng Việt, và các ngôn ngữ đơn lập khác, thìkhoảng trắng không phải là căn cứ để nhận diện từ
1 Tiếng
Trong tiếng Việt trước hết cần chú ý đến đơn vị xưa nay vẫn quan gọi là tiếng Về mặtngữ nghĩa, ngữ âm, ngữ pháp, đều có giá trị quan trọng
Sử dụng tiếng để tạo từ có hai trường hợp:
Trường hợp một tiếng: đây là trường hợp một tiếng được dùng làm một từ, gọi là từđơn Tuy nhiên không phải tiếng nào cũng tạo thành một từ
Trường hợp hai tiếng trở lên: đây là trường hợp hai hay nhiều tiếng kết hợp với nhau,
cả khối kết hợp với nhau gắn bó tương đối chặt chẽ, mới có tư cách ngữ pháp là một từ Đây
Trang 29Việc xác định từ trong tiếng Việt là rất khó và tốn nhiều chi phí Do đó, cách đơn giảnnhất là sử dụng từ điển được lập sẵn Tách tài liệu thành các từ, loại bỏ các từ láy, từ nối, từđệm, các từ không quan trọng trong tài liệu Một câu gồm nhiều từ ghép lại, tuy nhiên trongmột câu có thể có nhiều cách phân tích từ khác nhau.
Vidu 3 : Ví dụ tách từ tiếng Việt
Xét câu "Tốc độ truyền thông tin sẽ tăng cao" có thể phân tích từ theo các cách sau:
Tốc độ / truyền/ thông tin / sẽ / tăng cao
Tốc độ / truyền thông / tin / sẽ / tăng cao
Hiện đã có nhiều giải pháp cho vấn đề này với kết quả thu được rất cao Tuy nhiên thờigian, chi phí tính toán, xử lý lớn không thích hợp cho việc lập chỉ mục cho hệ thống tìmkiếm thông tin vì số lượng tài liệu phải xử lý là rất lớn
Khi phân tích một trang tài liệu HTML, dựa vào thông tin <charset> thì có thể biết đượcbảng mã nào đang được sử dụng, ví dụ: charset = UTF-8 thì đó là bảng mã Unicode
Tuy nhiên, trong một tài liệu có thể sử dụng nhiều bảng mã khác nhau nên không thể xácđịnh bảng mã của tài liệu theo cách trên Ta có thể áp dụng phương pháp phân tích từ khoá
để xác định bảng mã như sau: dựa trên sự thống kê số lần xuất hiện của các ký tự đặc biệttheo từng bảng mã, bảng mã nào có tần số sử dụng nhiều nhất thì xem như trang đó sử dụngbảng mã đó
Thật ra, không cần phải xác định bảng mã vẫn có thể lập chỉ mục cho hệ thống bằng cáchchuyển mã tài liệu sang một kiểu định dạng, theo bảng mã quy định của hệ thống tìm kiếm.Trong thực tế, các bảng mã đều có một phần chung và một phần các ký tự đặc biệt là khácnhau Do đó, nhằm hạn chế thời gian và chi phí xử lý, ta sẽ chuyển những ký tự khác nhau vềbảng mã quy định Các bước thực hiện như sau: Đọc một từ, nếu là từ mang dấu tổ hợpnguyên âm hay dấu thanh thì thực hiện so sánh với tất cả các bảng mã chuẩn để xác địnhbảng mã của từ đó Nếu bảng mã đó không trùng với bảng mã quy định của hệ thống thì thựchiện chuyển từ bảng mã đó sang bảng mã quy định Cứ vậy, tiếp tục cho đến hết văn bản vàdừng
Có thể dùng một bảng mã thông dụng nào đó để làm bảng mã quy định cho hệ thống,chẳng hạn Unicode vì hiện nay theo xu hướng chung thì số lượng các trang web, tài liệudùng Unicode rất lớn và đang tăng nhanh, nên sẽ hạn chế được số lượng các trang web cầnchuyển đổi
Trang 30 Vấn đề dấu thanh
Do cách bỏ dấu tiếng Việt chưa thống nhất nên có khi cùng một từ lại có nhiều các bỏ dấukhác nhau, ví dụ "thuý" và "thúy", rõ ràng hệ thống tìm kiếm thông tin cần nhận ra hai từ này
là một Phương pháp giải quyết dựa trên đặc điểm một từ đơn tiếng Việt chỉ có một dấu nên
ta sẽ chuyển dấu từ ra sau cùng, ví dụ:
quý -> thuy1qúy -> thuy1Khi đó tất cả các từ giống nhau cho dù bỏ dấu khác nhau thì qua quá trình xử lý đều chochuỗi kí tự giống nhau thuận tiện cho việc so sánh từ
Vấn đề dấu tổ hợp nguyên âm
Một tài liệu hay một câu truy vấn không thể tránh khỏi trường hợp bỏ thiếu dấu tổ hợpnguyên âm Ví dụ: nuớc(nước), trừong(trường),…Như vậy, ta cần phải xây dựng một modulexác định và sửa lỗi cho từ Giải pháp đề nghị ở đây là chuyển các từ về một định dạng riêng,gồm hai phần: phần đầu là các ký tự không dấu, phần sau là dấu tổ hợp nguyên âm và dấuthanh Giai đoạn chuyển mã sẽ thực hiện chuyển các dấu tổ hợp nguyên âm và dấu thanh racuối của từ
hường truong772
hừơng truong772
hừong truong772
huờng truong772
Như vậy, dù dấu thanh có bỏ ở vị trí nào thì cũng cho chuỗi ký tự giống nhau sau khi xử
lý Ngoài ra, nó còn có khả năng phát hiện ra những từ mà người dùng gõ thiếu dấu tổ hợpnguyên âm Ví dụ: huờng huong72, chương trình sẽ tìm kiếm trong cơ sở dữ liệu và sẽthấy đúng được phần đầu, còn về dấu thanh thì sẽ chọn một trong các tổ hợp gần nhất có thể
có trong từ điển như:
Trang 31IV.3.4 Giải quyết các vấn đề về từ của tiếng Việt
Luật xác định các từ láy
Từ láy không là từ có ý nghĩa quan trọng trong tài liệu Vì vậy, ta cần xác định từ láy đểgiảm số lượng các từ ghép cần lập chỉ mục Trong các loại từ láy thì láy hai là nhiều nhất Vìvậy, ta cần phải xây dựng luật để xác định nó Mỗi luật tương ứng với một loại từ láy:
Từ láy hoàn toàn Ví dụ: xanh xanh =>Luật xác định từ láy hoàn toàn
Từ láy phụ âm đầu Ví dụ: biêng biếc=>Luật xác định từ láy phụ âm đầu
Từ láy vần Ví dụ: chót vót =>Luật xác định từ láy vần
Luật xác định các liên từ
Liên từ đầu câu cũng không đóng vai trò quan trọng trong tài liệu Hầu hết các trường hợpthì theo sau các liên từ đầu câu là dấu phẩy Ví dụ: Vì thê,…Do đó,…Ta có thể dựa vào cúpháp này để xây dựng luật xác định các liên từ để giảm số lượng từ cần lập chỉ mục
Xây dựng từ điển tiếng Việt
Việc xác định từ cho tiếng Việt thì phương pháp giải quyết là dùng từ điển từ được lập
sẵn
Tuy nhiên không thể có một từ điển đầy đủ được vì có những từ có thể "sinh ra thêm"trong tương lai Ví dụ do sự ra đời của nhiều ngành khoa học công nghệ mới đòi hỏi phảiphát sinh thêm từ mới để mô tả chúng , hoặc do nhu cầu sử dụng tiếng nước ngoài ngàycàng tăng dẫn đến tình trạng Việt hoá các từ thông dụng như bit, bite, inch,…
Do đó bên cạnh việc sử dụng từ điển đòi hỏi phải có phương pháp để phát hiện thêm từtiếng Việt mới chưa có trong từ điển để bổ sung cho từ điển Một "từ" tiếng Việt là sự kếthợp của hai hay nhiều "tiếng" có thể dễ dàng xác định bằng khoảng trắng, phương pháp xácđịnh "từ" gồm nhiều "tiếng" ghép lại dựa trên việc xem xét độ gắn kết (cohesion) của chúng:
Sự kết hợp 2 tiếng có khả năng cho ra từ cao khi cohesion của chúng cao (2 tiếngthường xuất hiện chung với nhau thì nó có khả năng là một từ)
Giải pháp đề nghị là dùng từ điển được lập sẵn ,với một chi phí thấp hơn ta có thể lậpđược một từ điển tương đối đầy đủ mà kết quả chính xác hơn rất nhiều
Quá trình xác định thêm số từ thiếu có thể được cài đặt bằng phương pháp xác định từghép tự động như đã nêu trên với tập tài liệu mẫu cho việc xác định từ ghép được chỉ định,hoặc bổ sung thêm từ mới vào từ điển
Tuy nhiên, khi xác định một từ mới thì không thể thêm ngay nó vào từ điển Vì làm nhưvậy sẽ dẫn đến tình trạng bùng nổ dữ liệu Bởi vì một từ là mới do quá trình tách từ chưa hẳn
là từ mới thật sự Do đó, ta sẽ xây dựng thêm từ điển phụ để chứa các từ mới này, sau mộtkhoảng thời gian kiểm tra các thông số như:
Số lần xuất hiện trong tất cả các tài liệu mà hệ thống xử lý
Trang 32Số tài liệu mà từ đó xuất hiện
Nếu các thông số trên đạt một tiêu chuẩn nào đó thì mới chính thức thêm nó vào từ điểnchính và xoá nó ra khỏi từ điển phụ
V BỘ TÌM KIẾM THÔNG TIN – SEARCH ENGINE
V.1 Các phương thức tìm kiếm
Đây là phương pháp được áp dụng với hầu hết các search engine Trừ khi tác giả của tàiliệu hay trang xác định từ khóa cho tài liệu của mình, ngược lại điều này phụ thuộc vàosearch engine Như vậy các search engine sẽ tự mình chọn và đánh chỉ mục cho những từ màchúng cho quan trọng có thể giúp phân biệt các tài liệu khác nhau Các từ được đề cập trongphần II chương II hoặc các từ lặp lại nhiều lần đều được chú ý Một số site lập chỉ mục chotất cả các từ có trong một trang web, một số khác chỉ chọn một số đoạn văn bản
Các hệ thống đánh chỉ mục trên toàn văn bản (full-text indexing systems) đếm số lần xuấthiện của mỗi từ trong tài liệu ngoại trừ các từ stopword Có những công cụ tìm kiếm cònphân biệt cả chữ hoa lẫn chữ thường
Search engine thường gặp rắc rối với những từ đồng âm khác nghĩa (ví dụ hard cider, hardstone, a hard exam, hard drive) hoặc những từ có các biến thể khác nhau do có tiền tố và hậu
tố như big, bigger, student, students, … Bên cạnh đó search engine cũng không thể trả vềcác tài liệu chứa những từ đồng nghĩa với các từ trong câu truy vấn
Excite đã từng nổi tiếng với chiến thuật tìm theo ngữ nghĩa nhưng giờ đây chiến thuật nàykhông còn được sử dụng nữa Không giống các hệ thống tìm theo từ khoá, hệ thống tìm theongữ nghĩa sẽ ‘đoán’ ý muốn của người dùng thông qua câu chữ Tìm theo ngữ nghĩa hoạtđộng dựa trên hình thức gom nhóm tài liệu, phức tạp hơn thì dựa vào ngôn ngữ học, cácthuyết về trí tuệ nhân tạo Excite tiếp cận dựa vào phương pháp tính toán bằng cách đếm sốlần xuất hiện của các từ quan trọng Khi nhiều từ hoặc những cụm từ có nghĩa đặt gần nhautrong tài liệu thì Excite sẽ cho rằng chúng đang ám chỉ một chủ đề nào đó
Ví dụ, khi từ ‘heart‘ đứng gần các từ như ‘attack‘ (cơn đau tim), ‘blood‘ (sự sống),
‘stroke‘ (sự say nắng), thì search engine sẽ xếp những trang chứa các từ này vào chủ đề y học
và sức khoẻ Ngược lại, khi từ ‘heart‘ đứng gần các từ ‘flowers’, ‘candy’, … thì searchengine sẽ xếp những trang chứa các từ này vào chủ đề trữ tình
Trang 33V.2 Các chiến lược tìm kiếm
Giống như tìm sách trong thư viện, cân nhắc giữa tìm theo tác giả, tiêu đề, chủ đề, tathường chọn chủ đề để có thể bao quát một vùng thông tin rộng hơn
Khi hoàn toàn xác định mình cần tìm những gì ta nên bắt đầu từ một thư mục web như thưmục của Yahoo hoặc Google,…vì thư mục web tập trung nhiều vào chủ đề đang được quantâm hơn là một công cụ tìm kiếm
Gần đây các web site thường kết hợp thư mục web và các công cụ tìm với nhau Ví dụ nếu
ta sử dụng Google để tìm thông tin và một trong những kết quả này nằm trong thư mục webcủa Google, Google sẽ cung cấp cho ta một liên kết dẫn vào thư mục
Một số công cụ tìm kiếm gặp rắc rối với dữ liệu đầu vào của người dùng Ví dụ : những từ
chứa các ký tự đặc biệt như C++ , những từ chứa stopword như to be or not to be Xét ví dụ
khác ít rõ ràng hơn Giả sử ta là một người rất thích tiểu thuyết trinh thám và muốn tìmnhững trang nói về các tác giả yêu thích Nếu đơn giản chỉ nhập vào các từ ‘mystery‘ và
‘writer’, phần lớn các search engine sẽ trả về các liên kết dẫn đến các trang chứa một trong 2
từ trên hoặc cả 2 Như vậy có khả năng hàng trăm, thậm chí hàng ngàn URL không mongmuốn Tuy nhiên nếu ta nhập vào 1 cụm từ, kết quả sẽ khả quan hơn
Rất nhiều search engine áp dụng các toán tử Boolean (Boolean operators) hoặc các bộđịnh vị trí (proximai locators) để tối ưu câu truy vấn Đó là các từ khoá sau :
Trang 34STT Từ khóa Ý nghĩa
1 AND / phép toán + Mọi từ trong câu truy vấn phải có trong tài liệu
2 OR Tài liệu chứa ít nhất một từ cần tìm
3 NOT / phép toán - Tài liệu không chứa [các] từ sau từ khoá
4 NEAR Các từ cần tìm cách nhau bao nhiêu ký tự trong tài
liệu
5 FOLLOWED BY /
ADJ
Các từ cần tìm phải đứng cạnh nhau trong tài liệu
Table 4 : Các câu truy vấn
Trang 35I KỶ THUẬT
I.1 Kỷ thuật tìm kiếm toàn văn (Full Text Search)
Kỷ thuật tìm kiếm toàn văn (full text search) đề cập đến một kỹ thuật cho việc tìmkiếm một máy tính, tài liệu lưu trữ hoặc cơ sở dữ liệu
Trong tìm kiếm toàn văn (full text search) ,các công cụ tìm kiếm xem xét tất cả các từtrong mỗi tài liệu được lưu trữ Và nó sẽ cố gắng cho kết quả phù hợp với mong muốn tìmkiếm từ của người dùng
Kỷ thuật tìm kiếm toàn văn (full text search) trở nên phổ biến bởi những thư viện cơ sở
dữ liệu trực tuyến vào khoảng những năm 1990.Và nhiều ứng dụng và trang web đã cung cấpkhả năng tìm kiếm toàn văn Một số ứng dụng hay trang web được đánh giá cao như Googledestop,window search , trang web Google, yahoo…
Với các công cụ tìm kiếm nâng cao của kỹ thuật Full-Text search, bạn có thể mở rộng cáctruy vấn trên các cột văn bản để:
Đánh giá kết quả theo thứ tự một cách thường xuyên và tìm kiếm mục từ xuấthiện trong các tài liệu được chọn Ví dụ, bạn có thể có được một danh sách các đềmục tài liệu tham khảo các từ "chọn lọc" năm hay nhiều lần
Chọn văn bản trong đó các từ bạn tìm kiếm xuất hiện trong số n từ của nhau Ví
dụ, bạn có thể tìm kiếm chỉ cho các tài liệu đó bao gồm các từ "Saint Bernard" và
"Alps Thụy Sĩ" và xuất hiện trong vòng 10 từ của nhau
Chọn văn bản mà bao gồm tất cả các yếu tố tìm kiếm mà bạn chỉ định trong mộtđoạn văn hoặc một câu Ví dụ, bạn có thể truy vấn các tài liệu đó bao gồm các từ
"Saint Bernard" trong cùng một đoạn văn hoặc câu là các từ "Thụy Sĩ Alps."
Chọn tài liệu có chứa một hoặc nhiều từ đồng nghĩa của từ mà bạn chỉ định Ví dụ,bạn có thể chọn các tài liệu thảo luận "chó", và nó trả về các tài liệu có chứa các từ
"chó", "chó", "chú chó", "chó con", và như vậy
Tạo từ điển của riêng bạn Ví dụ, bạn có thể tạo ra một từ điển tùy chỉnh bao gồm
"những con chó làm việc," "St Bernard, "" con chó lớn, "và" Giống châu Âu "là từđồng nghĩa của" Saint Bernard "
Tạo chủ đề mà cụ thể tiêu chuẩn tìm kiếm là một truy vấn Ví dụ, bạn có thể tạomột chủ đề để trả về các tài liệu có bao gồm cụm từ "Saint Bernard" hoặc
"Thánh Bernard, "theo sau các tài liệu có bao gồm cụm từ" làm việc chó "," conchó lớn, "hoặc" Giống châu Âu "
Quay trở lại tài liệu được nhóm lại thành cụm để cung cấp cho bạn một lựa chọntrong những chủ đề chính được đề cập trong các tài liệu
Chọn một phần của văn bản có liên quan trong một tài liệu và tìm kiếm khác, cáctài liệu tương tự
Trang 36 Chỉ số tài liệu các loại khác nhau, chẳng hạn như Microsoft Word, vàFrameMaker
Phân loại tài liệu bằng cách sử dụng lên đến 16 hàng đợi sắp xếp
Tích hợp khả năng sao lưu và khôi phục lại
Thay đổi giá trị của một tham số cấu hình bằng cách sử dụng một quy trình hệthống
Tối ưu hóa các chỉ mục cho các tìm kiếm văn bản khi máy chủ của bạn không hoạtđộng, để nâng cao hiệu suất
Tạo thêm các hệ thống quản lý báo cáo để xem thông tin cài đặt
Khả năng mang lại cơ sở dữ liệu trực tuyến tự động cho các tìm kiếm văn bản
I.2 Chiến thuật tìm kiếm và thu thập thông tin file tài liệu
Vét cạn là một trong những thuật toán giải bài toán tối ưu Thuật toán vét cạn là thuật toántìm phương án tối ưu của bài toán bằng cách lựa chọn một phương án trong tập hợp tất cả cácphương án của bài toán để tìm ra phương án tối ưu Trong nhiều bài toán, không gian cácphương án quá lớn Do vậy, khi áp dụng thuật toán vét cạn không đảm bảo về thời gian cũngnhư kĩ thuật Vấn đề đặt ra là phải cải tiến thuật toán vét cạn như thế nào để giải quyết cácyếu điểm đó ở đây tôi giới thiệu với các bạn phương pháp đánh giá nhánh cận Đây làphương pháp có thể hạn chế số phương án phải duyệt của bài toán Trong quá trình duyệt taluôn giữ lại 1 phương án là phương án mẫu, phương án mẫu là phương án có giá nhỏ nhất tạithời điểm đó Phương pháp đánh giá nhánh cận là phương pháp tính giá của phương án ngaytrong quá trình xây dựng các thành phần của phương án, có nghĩa là ta sẽ tính xem việc xâydựng phương án theo hướng đó có thể có thể tốt hơn phương án mẫu hay không Nếu khôngtốt hơn ta lựa chọn hướng khác Bằng cách này ta đã hạn chế được nhiều phương án mà chắcrằng trong đó không chứa phương án tối ưu Một yêu cầu đặt ra là tính toán đặt nhánh cậnnhư thế nào, để có thể hạn chế tối đa các phương án phải duyệt
Trong 1 thư mục hay ổ đĩa gồm n file nhiều loại Spyder duyệt n file đó, mỗi file duyệtqua đúng một lần và sau đó quay về file xuất phát Giả sử biết thời gian chuyển giữa cácfile là (a[i,j]>0) Hãy lập trình tìm phương án với thời gain ngắn nhất
Phương án của bài toán là x[1], x[2] x[n], x[1] Trong đó x[1] là đỉnh xuất phát, x[ i] làđỉnh thứ i trong hành trình duyệt file Lúc đó tổng thời gian duyệt file được tính như sau:
S = a[x[1],x[2]]+ a[x[2],x[3]]+ + a[x[n-1],x[n]]+ a[x[n],x[1]]
Trong quá trình xây dựng các thành phần của phương án ta tiến hành đặt nhánh cận như sau:Xây dựng thành phần thứ i của phương án (x) ta có tổng thời gian là i-1 thành phần đã đượcxây dựng Thành phần thứ i của phương án phải thoả mãn biểu thức sau:
Trang 37S + a[x[i-1], x]+(n-i)*Amin +X1min < Min.
Trong đó: + Amin là thời gian nhỏ nhất trong bảng thời gian a[i,j]
+ X1min là thời gian nhỏ nhất từ x[1] đến các file còn lại
+ Min là thời gian của phương án mẫu
I.3 Kỷ thuật lập trình đa luồng
Là 1 chuỗi liên tiếp những sự thực thi trong chương trình Trong 1 chương trình C# ,việcthực thi bắt đầu bằng phương thức main() và tiếp tục cho đến khi kết thúc hàm main()
Cấu trúc này rất hay cho những chương trình có 1 chuỗi xác định những nhiệm vụ liên tiếp nhưng thường thì 1 chương trình cần làm nhiều công việc hơn vào cùng một lúc
Ví dụ : trong Internet Explorer khi ta đang tải 1 trang web thì ta nhấn nút back hay 1 linknào đó , để làm việc này Internet Explorer sẽ phải làm ít nhất là 3 việc :
- Lấy dữ liệu đưọc trả về từ internet cùng với các tập tin đi kèm
- Thể hiện trang web
- Xem người dùng có nhập để làm thứ gì khác không
Để đơn giản vấn đề ta giả sử Internet Explorer chỉ làm 2 công việc :
- Trình bày trang web
- Xem người dùng có nhập gì không
Để thực hành việc này ta sẽ viết 1 phương thức dùng để lấy và thể hiện trang web Giả sửrằng việc trình bày trang web mất nhiều thời gian ( do phải thi hành các đoạn javascript haycác hiệu ứng nào đó ) Vì thế sau một khoảng thời gian ngắn khoảng 1/12 giây , phươngthức sẽ kiểm tra xem người dùng có nhập gì không Nếu có thì nó sẽ đuơc xử lí, nếu khôngthì việc trình bày trang sẽ được tiếp tục Và sau 1/12 giây việc kiểm tra sẽ được lặp lại.Tuynhiên viết phương thức này thì rất phức tạp do đó ta sẽ dùng kiến trúc event trong windownghĩa là khi việc nhập xảy ra hệ thống sẽ thông báo cho ứng dụng bằng cách đưa ra mộtevent Ta sẽ cập nhật phương thức để cho phép dùng các event :
Ta sẽ viết 1 bộ xử lí event để đáp ứng đối với việc nhập của người dùng
Ta sẽ viết 1 phương thức để lấy và trình bày dữ liệu Phương thức này được thực thi khi takhông làm bất cứ điều gì khác
Ta hãy xem cách phương thức lấy và trình bày trang web làm việc : đầu tiên nó sẽ tự địnhthời gian Trong khi nó đang chạy, máy tính không thể đáp ứng việc nhập của người dùng
Do đó nó phải chú ý đến việc định thời gian để gọi phương thức kiểm tra việc nhập củangười dùng ,nghĩa là phương thức vừa chạy vừa quan sát thời gian.bên cạnh đó nó còn phảiquan tâm đến việc lưu trữ trạng thái trước khi nó gọi phương thức khác để sau khi phươngthức khác thực hiện xong nó sẽ trả về đúng chỗ nó đã dừng
- New :Thread mới được tạo.
- Ready : Thread chờ được cấp phát CPU.
- Running : Thread đang thực thi
- Blocked (wait) : Thread chờ được cấp phát
một tài nguyên, hay chờ một sự kiện xảy ra
- End : Thread hoàn tất xử lý.
2
Trang 38Tại một thời điểm, chỉ có một Thread có thể nhận trạng thái running trên một bộ xử lý nào
đó Trong khi đó, có thể có nhiều Thread ở trạng thái blocked hay ready
Các cung chuyển tiếp trong sơ đồ trạng thái biễu diễn sáu sự chuyển trạng thái có thể xảy
ra trong các điều kiện sau :
1- Thread mới tạo được đưa vào hệ thống
2- Bộ điều phối cấp phát cho tiểu trình một khoảng thời gian sử dụng CPU
3- Tiến trình kết thúc
4- Thread yêu cầu một tài nguyên nhưng chưa được đáp ứng vì tài nguyên chưa sẵnsàng; hoặc Thread phải chờ một sự kiện hay thao tác nhập/xuất
5- Thread tạm dừng, bộ điều phối sẽ chọn một Thread khác để cho xử lý
6- Tài nguyên mà tiểu trình yêu cầu trở nên sẵn sàng để cấp phát ; hay sự kiện hoặc thaotác nhập/xuất Thread đang đợi Thread đã hoàn tất
Net cung cấp lớp Thread trong namespace System.Threading cùng với những phươngthức cần thiết để giúp lập trình viên sử dụng một cách đơn giản và hiệu quả
Để tạo một thread mới:
- Tạo phương thức (gọi là phương thức callback) sẽ thực thi ghi thread được gọi: Phươngthức này phải không có tham số hoặc chỉ có một tham số là kiểu object và kiểu trả về là void.Bước này có thể bỏ qua vì ta có thể sử dụng sử dụng anonymous method hoặc lambdaexpression để tạo đoạn mã lệnh thực thi in-line cùng với lệnh khởi tạo thread
- Tạo đối tượng Thread và truyền một delegate ThreadStart chứa phương thức sẽ thực thi vàoconstructor của Thread
- Chạy thread: Gọi phương thức Start() của đối tượng thread vừa tạo
Sau đây là các phương thức thông dụng của Thread :
- Abort(): khi phương thức này được gọi, hệ thống sẽ ném ra một ngoại lệThreadAbortException để kết thúc thread Sau khi gọi phương thức này,thuộc tính ThreadState sẽ chuyển sang giá trị Stopped
- Suspend(): phương thức này sẽ tạm dừng việc thực thi của Thread vô thời
Trang 39hạn cho đến khi nó được yêu cầu chạy tiếp tục với phương thức Resume().Tuy nhiên hai phương thức này được gắn attribute Obsolete để khuyến cáorằng bạn nên sử dụng những phương pháp khác để thay thế Các kĩ thuật này
sẽ được giới thiệu trong một bài khác
- Sleep(): để dừng thread hiện tại trong một khoảng thời gian tính bằngmilisecond, khi đó thread sẽ chuyển sang trạng thái WaitSleepJoin Chú ýrằng đây là một phương thức static và bạn không cần tạo đối tượng Threadkhi gọi nó, ví dụ: Thread.Sleep(1000) Tôi nhấn mạnh chữ hiện tại tức là tùyvào vị trí mà bạn gọi Thread.Sleep(), mà Thread thực thi dòng lệnh này sẽ
bị ảnh hưởng Nếu như bạn không tạo thêm Thread thì Thread đang thực thichương trình sẽ bị ảnh hưởng (chương trình sẽ tạm ngừng hoạt động)
Ta có thể đăng kí các độ ưu tiên khác nhau cho các luồng khác nhau trong 1 tiến trình.Nói chung , 1 luồng không đưọc cấp phát 1 time slice nào nếu có 1 luồng có độ ưu tiên caohơn đang làm việc Lợi điểm của điều này là ta có thể thiết lập độ ưu tiên cao hơn cho luồng
xử lí việc nhập của người dùng
Các luồng có độ ưu tiên cao có thể cản trở các luồng có độ ưu tiên thấp cho đó ta cần thậntrọng khi cấp quyền ưu tiên độ ưu tiên của luồng được định nghĩa là các giá trị trong bảnliệt kê ThreadPriority các giá trị : Highest, AboveNormal, Normal, BelowNormal, LowestLưu ý rằng mỗi luồng có 1 độ ưu tiên cơ sở và những giá trị này liên quan đến độ ưu tiêntrong tiến trình cho 1 luồng có độ ưu tiên cao hơn đảm bảo nó sẽ chiếm quyền ưu tiên so vớicác luồng khác trong tiến trình nhưng cũng có 1 số luồng khác của hệ thống đang chạy cóquyền ưu tiên còn cao hơn Windows có khuynh hướng đặt độ ưu tiên cao cho các luồng hệđiều hành của riêng nó
Vấn đề bảo toàn dữ liệu khi dùng thread là rất quan trọng vì có thể gây ra những sai sótkhi nhiều thread cùng thay đổi cùng dữ liệu tại một thời điểm Vì thế Net cung cấp một số kĩthuật để đồng bộ việc truy xuất dữ liệu Một khi được sử dụng, dữ liệu sẽ bị khóa lại và cácthread khác muốn sử dụng phải chờ cho đến khi dữ liệu hay tài nguyên được giải phóng
.Net cung cấp một số giải pháp cho vấn đề này như Monitor, SpinLock, Mutex, WaitHandle,
… Tham số sử dụng cho từ khóa lock phải là một đối tượng có kiểu tham chiếu Bất kìthread nào sử dụng đối tượng syncObj trên để đồng bộ hóa thông qua lock đều phải chờ chođến khi đối tượng này được giải phóng Nếu có nhiều thread cùng chờ, chúng sẽ được đặttrong một danh sách kiểu queue (FIFO – First In First Out) để được xử lý theo thứ tự
I.4 Xử lí dữ liệu nhị phân
Một tập tin nhị phân là tập tin của máy tính mà có thể chứa bất kì loại dữ liệu , mã hóadưới dạng nhị phân để tiện việc xử lí Có thể tạo cấu trúc cho file nhị phân để dễ dàng quản lí
và truy cập bất kì Ta có thể sử dụng binary-search và random access để tăng tốc thực thi
Trang 40Xây dựng cấu trúc file để hỗ trợ việc kiểm tra tính hợp lệ và sửa chữa file khi bị hỏng.Cóthể dễ dàng truy cập nhanh và kiểm tra sự tồn tại của dữ liệu.Không tốn thời gian duyệt từngphần tử
Bởi những ưu điểm trên ta sẽ dùng file dữ liệu nhị phân để quản lí file dữ liệu chứa danhsách các file đã được lập index, thời gian lập index và thời gian thay đổi cuối cùng kể từ khilập index…
II THƯ VIỆN
II.1 Giới thiệu về Lucene
Lucene là một thư viện cho việc tìm kiếm toàn văn, được phát triển bởi Dough Cutting(hiện đang làm việc cho Apache) Thư viện này cung cấp các hàm cơ bản hỗ trợ cho việcđánh chỉ mục và tìm kiếm Để có thể sử dụng Lucene, bạn cần phải có sẵn dữ liệu Dữ liệu
có thể là tập hợp các tập tin dạng PDF, Word hay là các trang web HTML… Hoặc là dữ liệulưu trong các hệ quản trị CSDL như MS SQL Server hay MySQL Dùng Lucene, bạn có thểtiến hành đánh chỉ mục trên dữ liệu hiện có để sau này có thể thực hiện thao tác tìm kiếmtoàn văn trên dữ liệu đó
Hình 5 : Cấu trúc bên trong Lucene
Lucene là một thư viện tìm kiếm thông tin có khả năng xử lý và khả năng mở rộng ở mứccao, cho phép chúng ta có thể tích hợp vào các ứng dụng Lucene là một dự án mã nguồn mở
và nguyên thuỷ được phát triển bằng ngôn ngữ Java, ngày nay Lucene được phát triển bằngnhiều ngôn ngữ khác nhau như Delphi, Perl, C#, C++, Python, Ruby và PHP…