CHƯƠNG 1 - TỔNG QUAN VỀ HỆ THỐNG TÌM KIẾM THÔNG TIN 1.1 Khái niệm về tìm kiếm thông tin Ngày nay sự phát triển mạnh mẽ và phổ biến của công nghệ thông tin, dữ liệu, văn bản có đến hàng tỉ trang website, song song đó, nhu cầu khai thác thông tin này để phục vụ công việc là nhu cầu cần thiết và cấp bách. Bất cứ hệ thống nào sau khi xây dựng đều đòi hỏi có hỗ trợ chức năng tìm kiếm, tuy nhiên đối với việc tìm kiếm nội dung trong văn bản lại là vấn đề lớn. Có những công cụ hỗ trợ tìm kiếm thông tin và hoạt động hiệu quả như Google, Bing, Yahoo, Baidu, Yandex, DuckDuckGo… tuy nhiên, vì đây là những sản phẩm đã được thương mại hóa như bài báo khoa học [6] cũng đã đề cập, nên chúng ta không thể biết được các kỹ thuật triển khai bên dưới cũng như công nghệ ứng dụng của chúng. Sau đây sẽ là định nghĩa về tìm kiếm thông tin của một số tác giả [6] Khái niệm [6]: Tìm kiếm thông tin (Information Retrieval – IR) là tìm kiếm tài nguyên (thường là các tài liệu - documents) trên một tập lớn các dữ liệu phi cấu trúc (thường là văn bản – text) được lưu trữ trên các máy tính nhằm thỏa mãn nhu cầu về thông tin [6].
Mục đích cuối cùng trong việc tìm kiếm là đưa ra thông tin sao cho đúng với nhu cầu tìm kiếm của người dùng, do đó cần phải có cách lưu trữ thông tin và tổ chức lại dữ liệu sao cho dễ dàng tìm kiếm và truy xuất nhanh và hiệu quả nhất. Trong việc tìm kiếm có 2 phần chính: • Các kỹ thuật để biễu diễn thông tin: bao gồm cách biểu diễn thông tin nào cần thiết cho việc truy vấn (query) từ nhu cầu người dùng, và các thông tin nào được chọn (văn bản, tài liệu). • Các phương pháp so sánh khi biễu diễn thông tin, nhằm mục đích là để kiểm tra so sánh tính toán dữ liệu, sao cho cuối cùng kết quả tính toán trả về phải giống với kết quả được mong đợi khi người dùng thực hiện câu truy vấn. Việc đánh giá mức độ xử lý khi trả về kết quả trong việc tìm kiếm thông tin trong một tập tài liệu và câu truy vấn cho tài liệu đó dựa vào các cách sau: 5 • Độ chính xác (Precision): được đo bởi tỉ lệ của tài liệu trả về chính xác trên tổng tài liệu nhận được [6].
{tài liệu liên quan} {tài liệu nhận được} Độ chính xác = (1) {tài liệu nhận được} • Độ bao phủ (Recall): tỉ lệ tài liệu trả về chính xác trên tổng tài liệu có liên quan [6]. {tài liệu liên quan} {tài liệu nhận được} Độ bao phủ = (2) {tài liệu liên quan} • Kết quả sai (fall - out): tỉ lệ tài liệu không có liên quan trả về trên tổng tài liệu không liên quan [6]. {tài liệu không liên quan} {tài liệu nhận được} Kết quả sai = (3) {tài liệu không liên quan} Ví dụ [6]: trong tập 1000 tài liệu được sử dụng cho tìm kiếm với 200 tài liệu liên quan đến thông tin “tin học”, một hệ thống tìm kiếm thông tin “tin học” trả về được 150 tài liệu, trong đó có 130 tài liệu chính xác. Khi đó: {200} ∩ {150} {130} Độ chính xác = = ≈ 87% {150} {150} {200} ∩ {150} {130} Độ bao phủ = = ≈ 65% {200} {200} {800} ∩ {150} {20} Kết quả sai = = ≈ 2.2 Khái niệm về hệ thống tìm kiếm thông tin 1.1 Khái niệm về hệ thống tìm kiếm thông tin [7] Theo Kowalski [8] đã định nghĩa về hệ thống tìm kiếm thông tin như sau: “Hệ thống truy tìm thông tin là một hệ thống có khả năng lưu trữ, truy tìm và duy trì thông tin.
Thông tin trong các trường hợp này có thể bao gồm văn bản (bao gồm cả số liệu ngày tháng), hình ảnh, âm thanh, video và những đối tượng đa phương tiện khác.” Gerard Salton [9, 10]: “Hệ thống tìm kiếm thông tin là một hệ thống thông tin được sử dụng để lưu trữ các mục thông tin cần được xử lý, tìm kiếm, truy xuất và trả về cho người dùng với các yêu cầu khác nhau. Việc truy tìm những thông tin phụ thuộc vào tổ chức thông tin được lưu trữ và các phương pháp tìm kiếm nhanh chóng từ các yêu cầu, được đánh giá bằng cách so sánh các giá trị của các thuộc tính đối với thông tin được lưu trữ và các yêu cầu về thông tin.” Do đó ta có thể tóm lại đơn giản hơn: hệ thống tìm kiếm thông tin là một hệ thống thông tin dùng để lưu trữ, xử lý, tìm kiếm và đưa ra các thông tin cho người sử dụng. Hệ thống tìm kiếm thông tin thường thao tác các dữ liệu dạng văn bản và không có giới hạn về nội dung và thông tin trong văn bản.2 Các bộ phận cấu thành hệ thống tìm kiếm thông tin [7] 1.1 Bộ phận thu thập thông tin - Robot Bộ phận thu thập thông tin [11] là một chương trình chạy tự động dùng duyệt qua các cấu trúc siêu liên kết (hyperlink) để đi thu thập tài liệu, và một cách đệ quy nó sẽ nhận về tài liệu có liên kết với tài liệu này, nó sẽ quét để trích xuất toàn bộ thông tin của website đó từ tiêu đề, hình ảnh đến từ khóa, các liên kết (link) đến trang khác. Dữ liệu sẽ được quét theo thứ tự từ trên xuống dưới từ trái qua phải.
Thực tế, bộ phận thu thập dữ liệu sẽ có những con Robot thu thập dữ liệu, được gọi là spider, những spider này sẽ truy cập từng trang web, thu thập dữ liệu trên trang đó một cách âm thầm và nhanh chóng. Sau đó nó lấy dữ liệu và lưu trữ các nội dung từ các trang web trên Internet. Bộ phận này có các thành phần chính: một thành phần để theo dõi và phát hiện các URL mới, hoặc các URL đã thay đổi. Một thành phần dùng để đọc nội dung tài liệu của tất cả các trang web một cách đệ quy từ một tập các URL đã có, sau đó nó sẽ 7 phân tích tài liệu, trích xuất nội dung tài liệu dưới các định dạng như html, pdf, excel… và lưu trữ về cơ sở dữ liệu thu thập.2 Bộ phận lập chỉ mục - Index 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ệc phân tích và tối ưu hóa tốc độ và hiệu suất trong việc tìm kiếm các tài liệu có liên quan cho một truy vấn tìm kiếm [11].
Với các từ khoá nhập vào của người dùng nó có thể chỉ rõ các từ khoá nào xuất hiện ở trang nào, địa chỉ nào. Nếu không có chỉ mục, công cụ tìm kiếm sẽ quét tất cả các tài liệu trong cơ sở dữ liệu lưu trữ, đòi hỏi thời gian và tài nguyên tính toán đáng kể. Ví dụ [12] như Google là máy tìm kiếm phổ biến nhất hiện nay, được đồng sáng chế bởi Lary Page và Sergey Brin năm 1997, đi vào hoạt động từ năm 1998. Google hoạt động dựa vào lập trình hệ thống PageRank (bằng sáng chế năm 1998) và là Search Engine hiện đại nhất ngày nay.
Trung bình, hệ thống PageRank xử lý hơn 3 tỷ truy vấn mỗi ngày, và hàng tỷ thông tin được xử lý, cập nhật vào hệ thống cơ sở dữ liệu của Google. Với tốc độ xử lý ưu việt, và luôn phát triển, đổi mới với những thuật toán chống spam, thao túng kết quả tìm kiếm. Google luôn mong muốn mang đến những thông tin hữu ích và trải nghiệm tốt nhất cho người dùng trên toàn thế giới.3 Bộ phận tìm kiếm thông tin và Search Engine Bộ phận này chịu trách nhiệm tìm kiếm các tài liệu từ yêu cầu của người sử dụng, sau đó trả về danh sách các tài liệu chính xác với yêu cầu nhất, do số lượng các trang web rất lớn và thông thường người dùng chỉ đưa đưa vào một vài từ khóa trong câu truy vấn nên tập kết quả thường rất lớn. Tiền xử lý khoá tìm kiếm, thực hiện phân tích từ khoá tìm kiếm, xử lý các toán tử tìm kiếm cơ bản (AND, OR, NOT,.), xử lý tìm kiếm chính xác và xây dựng câu truy vấn dữ liệu.
Vì vậy bộ xếp hạng (Ranking) có nhiệm vụ sắp xếp các tài liệu này theo mức độ hợp lệ với yêu cầu tìm kiếm và hiển thị kết quả cho người sử dụng [5]. 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ập chỉ mục và bộ tìm kiếm thông tin [13]. Các bộ phận 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. Nguyên lý hoạt động của Search Engine: Search Engine điều khiển các robot đi thu thập thông tin trên mạng thông qua các siêu liên kết (hyperlink).
Khi các robot phát hiện ra một website mới, nó gởi tài liệu (nội dung trong web page) về cho máy chủ (Server) chính để tạo cơ sở dữ liệu 8 chỉ mục phục vụ cho nhu cầu tìm kiếm thông tin [12, 13]. Bởi vì thông tin trên mạng luôn thay đổi nên các robot phải liên tục cập nhật các website cũ. Mật độ cập nhật phụ thuộc vào từng hệ thống Search Engine về cách cấu hình thời gian cập nhật. Khi Search Engine nhận câu truy vấn từ người dùng, nó sẽ tiến hành phân tích, tìm trong cơ sở dữ liệu chỉ mục và trả về những tài liệu thoả yêu cầu.
9 CHƯƠNG 2 - GIỚI THIỆU BÀI TOÁN VÀ LỰA CHỌN CÔNG NGHỆ 2.1 Giới thiệu bài toán Từ những khó khăn trong việc tìm kiếm tiếng Việt đã được nêu ở phần mở đầu, cũng như việc tạo ra một hệ thống tìm kiếm thông tin về lĩnh vực y tế để đáp ứng các nhu cầu tìm kiếm của người dùng. Bài toán: “Ứng dụng mã nguồn mở ElasticSearch vào hệ thống tìm kiếm danh bạ y tế hiệu quả” sẽ giải quyết các vấn đề sau: - Xây dựng một hệ thống tìm kiếm Tiếng Việt về danh bạ y tế để giúp người dùng dễ dàng tìm kiếm các thông tin như: hồ sơ bác sĩ, phòng khám, bệnh viện… - Đồng thời người dùng có thể tiếp cận được các thông tin hữu ích về sức khỏe chính thống từ các bác sĩ, chuyên gia y tế, và cũng chính họ là người sẽ tương tác với các tính năng sẵn có của hệ thống như bình luận, đánh giá,… - Tăng độ tin cậy của thông tin cho người dùng sau. Luận văn sử dụng thư viện mã nguồn mở ElasticSearch cho phần lập chỉ mục và tìm kiếm, kết hợp với ngôn ngữ lập trình Web như Asp.