intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Luận văn Thạc sĩ Máy tính: Ứng dụng mã nguồn mở Elasticsearch vào hệ thống tìm kiếm danh bạ y tế hiệu quả

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:98

77
lượt xem
13
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Mục tiêu của đề tài là nghiên cứu, phân tích, thiết kế và triển khai hệ thống tìm kiếm thông tin về danh bạ y tế nghiên cứu các kỹ thuật về truy hồi thông tin và các công nghệ, nền tảng nổi bậc về các Search Engine, trong đó trọng tâm nghiên cứu ElasticSearch để xây dựng một ứng dụng tìm kiếm danh bạ y tế; sản phẩm sẽ giúp người dùng dễ dàng tìm kiếm các thông tin, danh bạ y tế mà mình cần và tạo các tính năng tương tính tác trên hệ thống để tăng độ tin cậy cho người dùng sau.

Chủ đề:
Lưu

Nội dung Text: Luận văn Thạc sĩ Máy tính: Ứng dụng mã nguồn mở Elasticsearch vào hệ thống tìm kiếm danh bạ y tế hiệu quả

  1. NGUYỄN VĂN THÌN BỘ GIÁO DỤC VIỆN HÀN LÂM VÀ ĐÀO TẠO KHOA HỌC VÀ CÔNG NGHỆ VN HỌC VIỆN KHOA HỌC VÀ CÔNG NGHỆ Nguyễn Văn Thìn HỆ THỐNG THÔNG TIN ỨNG DỤNG MÃ NGUỒN MỞ ELASTICSEARCH VÀO HỆ THỐNG TÌM KIẾM DANH BẠ Y TẾ HIỆU QUẢ LUẬN VĂN THẠC SĨ NGÀNH MÁY TÍNH 2021 Thành phố Hồ Chí Minh - 2021
  2. BỘ GIÁO DỤC VIỆN HÀN LÂM VÀ ĐÀO TẠO KHOA HỌC VÀ CÔNG NGHỆ VN HỌC VIỆN KHOA HỌC VÀ CÔNG NGHỆ Nguyễn Văn Thì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Ả Chuyên ngành : Hệ Thống Thông Tin. Mã số : 8480104 LUẬN VĂN THẠC SĨ NGÀNH MÁY TÍNH NGƯỜI HƯỚNG DẪN KHOA HỌC: TS TRẦN TRỌNG TOÀN Thành phố Hồ Chí Minh – 2021
  3. i LỜI CAM ĐOAN Tôi cam đoan luận vă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ả” là công trình nghiên cứu của riêng tôi dưới sự hướng dẫn của Thầy TS Trần Trọng Toàn. Sự gần gũi và nhiệt tình hướng dẫn của thầy là nguồn động lực rất lớn đối với tôi trong suốt thời gian thực hiện. Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai công bố trong bất kỳ công trình nào khác. Thành phố Hồ Chí Minh, ngày tháng năm 2021 Học viên thực hiện Nguyễn Văn Thìn
  4. ii LỜI CẢM ƠN Tôi xin gửi lời cảm ơn sâu sắc đến thầy TS. Trần Trọng Toàn đã tận tình hướng dẫn và giúp đỡ tôi trong suốt quá trình thực hiện luận văn. Cảm ơn quý thầy cô Khoa Công Nghệ Thông Tin và Viễn Thông, cũng như các Thầy Cô của Học Viện Khoa học và Công Nghệ, quý thầy cô tham gia giảng dạy và truyền đạt kiến thức cho bản thân tôi trong suốt khóa học 2018 – 2020. Cho phép tôi gửi lời cảm ơn tới các bạn, đồng nghiệp đã thường xuyên quan tâm, giúp đỡ, chia sẽ kinh nghiệm trong suốt thời gian học tập, nghiên cứu tại Học viện cũng như trong suốt quá trình thực hiện luận văn. Tôi xin bày tỏ sự biết ơn sâu sắc đến cha, mẹ, vợ, những người thân trong gia đình đã luôn ở bên tôi, động viên, dành cho tôi những gì tốt đẹp nhất trong suốt quá trình thực hiện luận văn này. Cuối cùng tôi xin chân thành cảm ơn Công ty Cổ phần MediHub đã tạo điều kiện giúp tôi thực hiện tốt luận văn. Trân trọng cảm ơn!
  5. iii MỤC LỤC LỜI CAM ĐOAN ........................................................................................................ i LỜI CẢM ƠN .............................................................................................................ii MỤC LỤC ................................................................................................................. iii DANH MỤC VIẾT TẮT ........................................................................................... iv DANH MỤC CÁC BẢNG......................................................................................... vi DANH MỤC CÁC HÌNH MINH HỌA ...................................................................vii MỞ ĐẦU ..................................................................................................................... 1 CHƯƠNG 1 - TỔNG QUAN VỀ HỆ THỐNG TÌM KIẾM THÔNG TIN ............... 4 1.1 Khái niệm về tìm kiếm thông tin ....................................................................... 4 1.2 Khái niệm về hệ thống tìm kiếm thông tin ........................................................ 6 1.2.1 Khái niệm về hệ thống tìm kiếm thông tin .................................................. 6 1.2.2 Các bộ phận cấu thành hệ thống tìm kiếm thông tin ................................... 6 CHƯƠNG 2 - GIỚI THIỆU BÀI TOÁN VÀ LỰA CHỌN CÔNG NGHỆ .............. 9 2.1 Giới thiệu bài toán ............................................................................................. 9 2.2 Phương pháp giải quyết ..................................................................................... 9 2.3 Tổng quan ElasticSearch ................................................................................. 10 2.3.1 Khái niệm về ElasticSearch ....................................................................... 10 2.3.2 Các khái niệm cần biết trong ElasticSearch .............................................. 13 2.3.3. Analyzers và mô hình truy hồi thông tin của ElasticSearch .................... 21 2.3.4. Query DSL (domain- Specific Language) trong ElasticSearch .............. 29 2.3.5 Mô hình truy hồi thông tin của ElasticSearch ........................................... 36 CHƯƠNG 3. THỰC NGHIỆM XÂY DỰNG WEBSITE TÌM KIẾM DANH BẠ Y TẾ .............................................................................................................................. 45 3.1 Phân tích .......................................................................................................... 45 3.2 Thiết kế ............................................................................................................ 46 3.3 Cài đặt .............................................................................................................. 55 3.4 Giao diện .......................................................................................................... 55
  6. iv 3.4.1. Giao diện cho người sử dụng ................................................................... 55 3.4.2. Giao diện cho người quản trị .................................................................... 64 3.5 Đánh giá và thử nghiệm ................................................................................... 66 3.5.1. Mô hình kiến trúc ứng dụng thử nghiệm .................................................. 66 3.5.2. Kịch bản và kết quả .................................................................................. 67 3.5.3 Đánh giá kết quả nghiên cứu ..................................................................... 70 CHƯƠNG 4. KẾT LUẬN......................................................................................... 72 DANH MỤC TÀI LIỆU THAM KHẢO .................................................................. 73
  7. v DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT CNTT Công nghệ thông tin CSDL Cơ sở dữ liệu Server Máy chủ Document Tài liệu Index Chỉ mục ES ElasticSearch EHR Hồ sơ sức khỏe điện tử IR Information Retrieval Shard Phân đoạn Query Truy vấn DSL domain- Specific Language URL Địa chỉ website Term Từ khóa tìm kiếm Boost Tăng cường API Application Programming Interface RESTful API Một tiêu chuẩn trong việc thiết kế API row Dòng table bảng là 1 thuật ngữ được sử dụng trong mạng máy tính để mô tả cách thức truyền tin được gửi từ 1 điểm Unicast đến 1 điểm khác link Liên kết
  8. vi DANH MỤC CÁC BẢNG Bảng 1: Số liệu mapping các từ khóa. ...................................................................... 53 Bảng 2: Kịch bản tìm kiếm. ....................................................................................... 68
  9. vii DANH MỤC CÁC HÌNH MINH HỌA Hình 1: Lịch sử hình thành công ty ElasticSearch ................................................... 10 Hình 2: Các tập đoàn sử dụng ElasticSearch ........................................................... 11 Hình 3: Các đối thủ của ElasticSearch ..................................................................... 11 Hình 4: Bảng so sánh các dịch vụ ............................................................................. 12 Hình 5: Hệ thống phân tán của ElasticSearch ......................................................... 13 Hình 6: Các khái niệm cần biết trong ElasticSearch................................................ 13 Hình 7: Index trong ElasticSearch ............................................................................ 14 Hình 8: Sharding trong Index ................................................................................... 15 Hình 9: Primary Shard và Replica Shard ................................................................. 15 Hình 10: quá trình chuyển dữ liệu ............................................................................ 17 Hình 11: Cluster trong ElasticSearch ....................................................................... 18 Hình 12: Ví dụ về sơ đồ cơ sở dữ liệu của Mapping ................................................ 19 Hình 13: Analyzer trong ElasticSearch .................................................................... 21 Hình 14: Kết quả tìm kiếm Match all query.............................................................. 30 Hình 15: Kết quả Match query.................................................................................. 30 Hình 16: Kết quả Match query thêm and .................................................................. 31 Hình 17: Kết quả Match phrase query ...................................................................... 31 Hình 18: Kết quả Match Phrase Prefix Query ......................................................... 32 Hình 19: Kết quả Multi Match Query ....................................................................... 32 Hình 20: Query có các parameters ........................................................................... 33 Hình 21: Query với format ngày ............................................................................... 33 Hình 22: Wildcard Query.......................................................................................... 34 Hình 23: Bool Query ................................................................................................. 34 Hình 24: Fuzzy Query ............................................................................................... 36 Hình 25: B25M .......................................................................................................... 38 Hình 26: BM25 tiệm cận ........................................................................................... 40 Hình 27: BM25 với độ dài trung bình ....................................................................... 41 Hình 28: Mô hình tìm kiếm văn bản tiếng Việt ......................................................... 46 Hình 29: lược đồ về Analyzer ................................................................................... 47 Hình 30: lược đồ cơ sở dữ liệu Danh bạ y tế ............................................................ 53 Hình 31: Mô hình cho người sử dụng ....................................................................... 54 Hình 32: giao diện gợi ý khi nhập từ khóa ............................................................... 56 Hình 33: kết quả tìm kiếm có dấu ............................................................................. 56 Hình 34: kết quả tìm kiếm tiếng Việt không dấu ....................................................... 57
  10. viii Hình 35: Kết quả tìm kiếm ........................................................................................ 58 Hình 36: Kết quả theo định vị ................................................................................... 59 Hình 37: Tìm kiếm theo chuyên khoa ........................................................................ 61 Hình 38 thông tin chi tiết .......................................................................................... 61 Hình 39: thông tin bản đồ theo địa chỉ của Profile .................................................. 62 Hình 40: nút lưu profile ............................................................................................ 62 Hình 41: hỏi đáp. ...................................................................................................... 63 Hình 42: Thông tin đã lưu, thích ............................................................................... 63 Hình 43: Trang quản trị Admin ................................................................................ 64 Hình 44: Cập nhật dữ liệu mới ................................................................................. 65 Hình 45: Quản trị tài khoản ...................................................................................... 65 Hình 46 Kiến trúc Mô hình thử nghiệm .................................................................... 67
  11. 1 MỞ ĐẦU Hiện nay sức khỏe đang là mối quan tâm hàng đầu của nhiều người. Ngoài mong muốn được tiếp cận các thông tin sức khỏe chính thống - hữu ích để chăm sóc bản thân và gia đình tốt hơn, nhu cầu tìm kiếm nơi khám chữa bệnh uy tín, bác sĩ giỏi chuyên môn của người dân cũng rất cao. Để đáp ứng nhu cầu này thì cần có các công cụ tìm kiếm nhanh, ngoài hỗ trợ người dân tiếp cận các thông tin cần biết, còn giúp chọn lựa được nơi chăm sóc sức khỏe, bác sĩ tốt nhất thông qua những tính năng tương tác trên các website trực tuyến. Song song đó, cùng với sự phát triển của Internet và điện thoại thông minh cho phép người dùng có thể kết nối mạng ở bất cứ đâu, truy cập hồ sơ bác sĩ/cơ sở khám chữa bệnh một cách dễ dàng để đánh giá, bình luận… điều này giúp tăng độ tin cậy và chính xác của các thông tin trên. Càng ngày, với sự “góp sức” của nhiều người, những thông tin ngày càng được hoàn thiện và thực sự hữu ích cho người dùng sau. Tuy nhiên, trong lĩnh vực y tế, việc phân chia các cơ sở khám chữa bệnh, hồ sơ bác sĩ về chuyên khoa; dịch vụ khám chữa bệnh, địa chỉ, số điện thoại, thời gian làm việc… sao cho người dùng có thể tìm kiếm một cách dễ dàng – nhanh chóng – chính xác nhất thực sự là vấn đề nan giải. Các website về lĩnh vực y tế trong nước như edoctor.io, bacsi247.net … đã có hỗ trợ thông tin tìm kiếm bác sĩ, phòng khám, bệnh viện… tuy nhiên việc tìm kiếm tiếng Việt vẫn là vấn đề nan giải và các website này vẫn chưa đáp ứng được. Gần đây, nhiều thư viện nguồn mở hỗ trợ mạnh việc tìm kiếm thông tin nhanh như Elastic Search, Solr … Điều đặc biệt hơn cả là việc xuất hiện nhiều mã nguồn mở xử lý ngôn ngữ tiếng Việt do các kỹ sư CNTT hay các nhà khoa học tại Việt Nam phát triển như underthesea, vn_tokenizer… đã làm cho việc tìm kiếm dữ liệu tiếng Việt ngày càng chính xác hơn. Ngoài ra các Website lớn trên thế giới như eBay [1], Vimeo [2] đã sử dụng ElasticSearch vào việc phát triển hệ thống tìm kiếm của mình, và về lĩnh vực y tế - sức khỏe UCLA Health [3] đã sử dụng ElasticSearch vào hệ thống Hồ sơ sức khỏe điện tử (EHR) để phục vụ cho các Bác sĩ lâm sàng và các nhà nghiên cứu trong việc tìm kiếm bệnh lý, bao gồm ghi chú lâm sàng, kết quả phòng thí nghiệm, văn bản, lịch sử khám chữa bệnh của bệnh nhân để giúp chẩn đoán bệnh. Trong nước, cũng có khá nhiều tác giả quan tâm nghiên cứu về lĩnh vực tìm kiếm thông tin như “Hỗ trợ Tìm kiếm Thông tin, thuộc lãnh vực CNTT trên Internet qua
  12. 2 từ khóa bằng Tiếng Việt” [4], “Phát Triển hệ truy hồi thông tin tiếng Việt dựa trên mã nguồn mở” [5]. Tuy nhiên chúng ta vẫn chưa thấy một hệ thống tìm kiếm nào về danh bạ y tế đáp ứng được nhu cầu của người dân hiện nay, và chúng ta vẫn còn phụ thuộc vào công cụ tìm kiếm Google nên đôi khi phải mất nhiều thời gian mới tìm thấy được những thông tin mà mình cần. Tính cấp thiết của đề tài: Từ những khó khăn như phân tích ở trên, yêu cầu cấp thiết là 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 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á,… làm tăng độ tin cậy của thông tin cho người dùng sau. Đối tượng và phạm vi nghiên cứu: Để xây dựng được hệ thống tìm kiếm Tiếng Việt mang tính cấp thiết như đã đề cập ở trên, đối tượng nghiên cứu được chọn là: Nghiên cứu dữ liệu và thông tin y tế với nguồn dữ liệu từ hệ thống tìm kiếm cơ sở y tế của công ty MediHub. Nghiên cứu về tìm kiếm thông tin, hệ thống tìm kiếm thông tin và các thành phần cấu tạo. Nghiên cứu mã nguồn mở ElasticSearch để ứng dụng vào việc đánh chỉ mục cho hệ thống tìm kiếm thông tin. Nghiên cứu Asp.Net Core, C# để xây dựng một hệ thống tìm kiếm thông tin hoàn chỉnh và các tính năng tương tác trên danh bạ y tế. Mục tiêu nghiên cứu: Để thực hiện thành công, luận văn cần nghiên cứu các nội dung sau: Nghiên cứu, phân tích, thiết kế và triển khai hệ thống tìm kiếm thông tin về danh bạ y tế. Nghiên cứu các kỹ thuật về truy hồi thông tin và các công nghệ, nền tảng nổi bậc về các Search Engine, trong đó trọng tâm nghiên cứu ElasticSearch để xây dựng một ứng dụng tìm kiếm danh bạ y tế.
  13. 3 Sản phẩm sẽ giúp người dùng dễ dàng tìm kiếm các thông tin, danh bạ y tế mà mình cần và tạo các tính năng tương tính tác trên hệ thống để tăng độ tin cậy cho người dùng sau. Phương pháp nghiên cứu: Để đạt được mục tiêu đặt ra, luận văn sử dụng các phương pháp sau: Thu thập, phân tích và chuẩn hóa dữ liệu danh bạ y tế đã có. Đánh giá và chọn lọc các thuật toán, tính năng trong ElasticSearch để làm cho phần tìm kiếm dữ liệu. Phân tích và thiết kế hệ thống Tìm kiếm thông tin, tích hợp ElasticSearch để trả kết quả tìm kiếm Tiếng Việt chính xác hơn, đồng thời cũng xây dựng các tính năng tiện ích giúp người dùng dễ dàng tìm kiếm và tương tác trên Website. Để thực hiện mục tiêu đã đề ra chúng tôi bố cục của luận văn như sau: Chương 1: Nghiên cứu tổng quan về hệ thống tìm kiếm thông tin, các thành phần và nguyên lý hoạt động của hệ thống tìm kiếm thông tin. Chương 2: Giới thiệu bài toán và lựa chọn công nghệ. Chương 3: Trên cơ sở nghiên cứu về Hệ thống tìm kiếm thông tin và mã nguồn mở ElasticSearch, tôi đề xuất xây dựng thử nghiệm hệ thống tìm kiếm Danh bạ y tế với hai thành phần chính là: Tạo chỉ mục và Tìm kiếm.
  14. 4 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:
  15. 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.5% {800} {800}
  16. 6 1.2 Khái niệm về hệ thống tìm kiếm thông tin 1.2.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. 1.2.2 Các bộ phận cấu thành hệ thống tìm kiếm thông tin [7] 1.2.2.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ẽ
  17. 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. 1.2.2.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. 1.2.2.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
  18. 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.
  19. 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.Net Core để xây dựng một hệ thống tìm kiếm thông tin. 2.2 Phương pháp giải quyết Để giải quyết được bài toán đã nêu bên trên, chúng tôi đã lựa chọn các phương pháp sau: - Sử dụng mã nguồn mở ElasticSearch cho việc đánh lập chỉ mục. - Nghiên cứu tổng quan về ElasticSearch và kiến trúc của nó để cài đặt và cấu hình hệ thống phù hợp. - Nghiên cứu Plugin “Vietnamese Analysis Plugin for Elasticsearch” của tác giả Duy Đỗ [14] để phân tích và tìm kiếm với dữ liệu text là tiếng Việt. Trong plugin tác giả cũng đã kế thừa và sử dụng lại bộ công cụ tách từ tiếng Việt “Lê Hồng Phương”, công cụ này sử dụng từ điển và ngram, trong đó mô hình ngram được huấn luyện để sử dụng treebank tiếng Việt với độ chính xác 97% [15]
  20. 10 - Nghiên cứu về Analyzer và mô hình truy hồi thông tin của ElasticSearch, sử dụng các Analyzer có sẵn của ElasticSearch hoặc tạo ra các analyzer mới để tách từ và cấu trúc lại dữ liệu phục vụ cho việc tìm kiếm nhanh và hiệu quả hơn. Ngoài ra tài liệu [16] cũng đã đề cập sử dụng Analyzer của ElasticSearch cho việc truy vấn mở rộng (Query Expansion) cũng như tìm kiếm theo ngữ nghĩa (semantic search). - Nghiên cứu về các loại truy vấn trong ElasticSearch để lựa chọn các loại truy vấn phù hợp cho việc tìm kiếm dữ liệu. - Nghiên cứu về truy vấn Geo_Point và cách tổ chức dữ liệu để phục vụ cho việc tìm kiếm dữ liệu theo tọa độ và đưa ra các kết quả tìm kiếm gần với vị trí người dùng. 2.3 Tổng quan ElasticSearch Trong phần này sẽ trình bày tổng quan về mã nguồn mở ElasticSeach và các tính năng của ElasticSeach dựa trên các tài liệu [17, 18, 19] . 2.3.1 Khái niệm về ElasticSearch ElasticSearch là một công cụ tìm kiếm (Search Engine) dựa trên nền tảng Apache Lucene. Nó cung cấp một bộ máy tìm kiếm dạng phân tán, có đầy đủ công cụ với một giao diện web HTTP có hỗ trợ dữ liệu JSON. ElasticSearch được phát triển bằng Java và được phát hành dạng nguồn mở theo giấy phép Apache. Tiền thân của ElasticSearch là Compas được Shay Banon tạo ra vào 2004 và đến 2/2010 Shay Banon cho ra phiên bản đầu tiên. Công ty Elasticsearch được thành lập vào năm 2012 và vào tháng 5 năm 2015 thì đổi tên thành công ty Elastic. Hình 1: Lịch sử hình thành công ty ElasticSearch
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2