Tìm hiểu kiến trúc của search engine framework lucene và ứng dụng nutch

30 1,117 5
  • Loading ...
1/30 trang

Thông tin tài liệu

Ngày đăng: 06/07/2014, 18:14

Tìm hiểu kiến trúc của search engine framework lucene và ứng dụng nutch, Tìm hiểu kiến trúc của search engine framework lucene và ứng dụng nutch Tìm hiểu kiến trúc của search engine framework lucene và ứng dụng nutch Tìm hiểu kiến trúc của search engine framework lucene và ứng dụng nutch Tìm hiểu kiến trúc của search engine framework lucene và ứng dụng nutch Bài tập lớn xử lý ngôn ngữ tự nhiên TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ──────── * ─────── BÀI TẬP LỚN MÔN: XỬ LÝ NGÔN NGỮ TỰ NHIÊN ĐỀ TÀI: TÌM HIỂU KIẾN TRÚC CỦA SEARCH ENGINE FRAMEWORK LUCENE & ỨNG DỤNG NUTCH GVHD: Th.s Hoàng Anh Việt Nhóm sinh viên: Nguyễn Thế Anh 20080070 Trần Anh Thơ 20082569 Nguyễn Vương Quyền 20082142 Nguyễn Văn Hưng 20081293 Lớp: Công nghệ phần mềm K53 Hà Nội - 11/2012 1 Bài tập lớn xử lý ngôn ngữ tự nhiên MỤC LỤC MỤC LỤC 2 PHẦN I: NGUYÊN LÝ VÀ MÔ HÌNH CHUNG CỦA SEARCH ENGINE 3 1. Giới thiệu chung 3 2. Phân loại 4 2.1. Máy tìm kiếm thông thường 4 2.2. Máy siêu tìm kiếm - Meta Search Engine 4 3. Nguyên lý hoạt động của search engine 5 4. Mô hình của seach engine 6 4.1. Bộ tìm duyệt Crawler 6 4.2. Kho dữ liệu Repository 8 4.3. Bộ lập chỉ mục Indexer 10 4.4. Bộ tìm kiếm thông tin – Search Engine 11 4.5. Phân hạng trang (Page Rank) 13 PHẦN II: FRAMEWORK LUCENE 15 2.1. Các thành phần indexing 16 PHẦN III: ỨNG DỤNG NUTCH 24 2 Bài tập lớn xử lý ngôn ngữ tự nhiên PHẦN I: NGUYÊN LÝ VÀ MÔ HÌNH CHUNG CỦA SEARCH ENGINE 1. Giới thiệu chung Máy tìm kiếm Search Engine nguyên thuỷ là một phần mềm nhằm tìm ra các trang trên mạng Internet có nội dung theo yêu cầu người dùng dựa vào các thông tin mà người sử dụng cung cấp qua từ khoá tìm kiếm. Máy tìm kiếm sẽ truy tìm trong cơ sở dữ liệu của nó và trả về danh mục các trang web có chứa từ khoá mà người sử dụng đưa vào ban đầu. Thuật ngữ “Search Engine” được dùng chung để chỉ 2 hệ thống tìm kiếm: Một do các chương trình máy tính tự động tạo ra (Crawler-Based Search Engines) và dạng thư mục Internet do con người quản lý (Human-Powered Directories). Hai hệ thống tìm kiếm này tìm và lập danh mục website theo 2 cách khác nhau. Crawler-Based Search Engines: Các máy tìm kiếm loại này chúng sử dụng các chương trình máy tính, được gọi là Robots, Spiders, hay Crawlers để lần tìm các trang trên mạng, rồi tự động phân tích các trang lấy về và đưa vào cơ sở dữ liệu của nó. Khi có một yêu cầu tìm kiếm, các Search Engine đối chiếu từ khóa cần tìm vào trong bảng chỉ mục và trả về các thông tin lưu trữ tương ứng. Các cỗ máy tìm kiếm loại này có cơ chế cập nhật nội dung của web định kỳ để phát hiện sự thay đối (nếu có) của các trang web. Human-Powered Directories: các thư mục Internet hoàn toàn phụ thuộc vào sự quản lý của con người. Nếu người sử dụng muốn các Search Engine tìm thấy trang web của mình thì họ phải đăng ký vào thư mục bằng cách gửi bản đăng ký đến ban biên tập của Search Engine. Ngày nay hầu hết các hệ thống tìm kiếm đều là sự tổng hợpcủa hệ thống tìm kiếm tự động và hệ thống tìm theo thư mục do người dùng quản lý. 3 Bài tập lớn xử lý ngôn ngữ tự nhiên 2. Phân loại Xét theo phương pháp tìm kiếm thì các Search Engine được chia làm hai loại chính: Tìm kiếm thông thường và siêu tìm kiếm. 2.1. Máy tìm kiếm thông thường Các máy tìm kiếm thông thường thực hiện công việc tìm kiếm theoqui trình thu thập tài liệu, phân loại và tạo chỉ mục. Chúng gồm hai loại,Search Engine sử dụng thư mục chủ đề và Search Engine tạo chỉ mục tự động. Các Search Engine sử dụng thư mục chủ đề phân lớp sẵn các trangtrên Internet vào các thư mục chủ đề và theo các cấp chi tiết hơn của chủ đề. 2.2. Máy siêu tìm kiếm - Meta Search Engine Meta Search Engine là loại máy truy tìm ảo, nó hoạt động dựa trên sự tồn tại của các Search Engine sẵn có. Các Meta Search Engine không có cơ sở dữ liệu của riêng mình. Khi có yêu cầu tìm kiếm máy siêu tìm kiếm sẽ gửi từ khóa đến các Search Engine khác một cách đồng loạt và nhận về các kết quả tìm được. Nhiệm vụ còn lại của máy siêu tìm kiếm là phân tích và phân hạng lại các kết quả tìm được. 4 Bài tập lớn xử lý ngôn ngữ tự nhiên 3. Nguyên lý hoạt động của search engine Search engine điều khiển 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 robot phát hiện ra một site mới, nó gởi tài liệu (web page) 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 trên mạng luôn thay đổi nên robots phải liên tục cập nhật các site 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ệu thoả yêu cầu. 5 Bài tập lớn xử lý ngôn ngữ tự nhiên 4. Mô hình của seach engine 4.1. Bộ tìm duyệt Crawler Bộ tìm duyệt Crawler thu thập các trang trên Internet rồi chuyển chobộ đánh chỉ mục Indexer. Crawler xuất phát từ tập các URL ban đầu S0. Đầutiên nó sắp xếp các phần tử trong tập S0 vào một hàng đợi, sau đó lấy dầncác URL theo thứ tự và tải về các trang tương ứng, Crawler trích tất cả cácURL có trong các trang vừa tải về rồi lại đưa vào hàng đợi. Quá trình trêntiếp tục cho đến khi Crawler quyết định dừng lại. Do số lượng các trang tảivề rất lớn và tốc độ thay đổi nhanh chóng của Web nên xuất hiện những vấnđề cần giải quyết: • Lựa chọn các trang để tải về. • Cách cập nhật các trang: Crawler phải xem xét trang nào nên ghé thăm lại trang nào không. • Song song hoá quá trình dò tìm trang web: Các Crawlers song songphải được bố trí một cách hợp lý sao cho một Crawler không ghé thăm cáctrang mà một Crawler khác đã thăm. 4.1.1. Page selection (lựa chọn các trang) Bộ tìm duyệt Crawler tải về các trang theo thứ tự trang nào “quantrọng” sẽ tải về trước. Như vậy ta phải tìm hiểu cách mà Crawler xác địnhmức độ quan trọng của các trang. Cho một trang web P, ta định nghĩa mức độ “quan trọng” của trang P theo các cách sau: - Interest Driven: là phương pháp xác định mức độ quan trọng của các trang dựa vào mức độ quan tâm của người sử dụng với các trang đó. - Popularity Driven: xác định mức độ quan trọng của một trang dựa vào mức độ phổ biến của trang. Một trong các cách để định nghĩa độ phổ biến của trang là sử đếm số liên kết đến trang đó (số back link). - Location Driven: xác định mức độ quan trong của trang P dựa vào địa chỉ của nó. 6 Bài tập lớn xử lý ngôn ngữ tự nhiên 4.1.2 Mô hình Crawler Crawler được thiết kế để có khả năng ghé thăm các trang theo thứ tựcác trang có mức độ quan trọng cao hơn thăm trước các trang có hạng thấphơn thăm sau. Bộ Crawler đánh giá các trang dựa vào giá trị phân hạng.Từsự đánh giá này Crawler biết được các trang có mức độ quan trọng cao hơnđể lấy về trong lần kế tiếp. Để đánh giá chất lượng của Crawler người ta cóthể định nghĩa độ đo chất lượng quality metric của nó bằng một trong haicách sau: - Crawl & stop: Bộ Crawler C xuất phát từ trang khởi đầu P0 và dừng lại sau khi ghé thăm k trang, k là số lượng trang mà Crawler có thể tải về trong một lần duyệt. Một Crawler tốt sẽ ghé thăm các trang theo thứ tự R1,….Rk trongđó R1 là trang có thứ hạng cao nhất, lần lượt đến R2,… . Gọi R1, …,RK là cáctrang hot. Trong số k trang được Crawler ghé thăm chỉ có m trang (m<=k) sẽđược sắp thứ hạng cao hơn hoặc bằng trang Rk - Crawl & Stop with Threshold: vẫn giả sử rằng bộ Crawler ghé thăm ktrang. Tuy nhiên lúc này đích quan trọng G đã được cho sẵn, và bất cứ trang nào có độ quan trọng lớn hơn G thì đều được coi là trang hot. - Độ đo thứ hạng (Ordering Metrics): Một Crawler lưu giữ những URLs mà nó đã ghé thăm trong quá trình dò tìm vào một hàng đợi. Sau đó nó lựa chọnmột URL trong hàng đợi cho lần ghé thăm tiếp theo. Ở mỗi lần lựa chọn thì Crawler chọn URL u có giá trị Orderingcao nhất để ghé thăm. Độ đo thứ hạng (Ordering Metric) được thiết lập dựa vào một trong các độ đo khác. Ví dụ nếu ta đang thực hiện tìm những trang có giá trị IB(P) cao, thì ta sẽ lấygiá trị IB’(P) làm độ đo thứ hạng, trong đó P là trang mà được trang u trỏ tới. 4.1.3 Page Refresh Khi Crawler lựa chọn và tải về các trang “quan trọng”, sau một khoảng thời gian nhất định nó phải thực hiện cập nhật các trang đó. Có rất nhiều cách để cập nhật các trang web, và các cách khác nhau sẽ cho các kếtquả khác nhau. Sau đây là hai cách: - Uniform refresh policy: Chiến lược cập nhật đồng loạt. Crawler ghé thăm lại tất cả các trang theo cùng một tần suất f. - Proportional refresh policy: Cập nhật theo tỷ lệ, một trang thường xuyên thay đổi thì Crawler ghé thăm thường xuyên hơn. Để chính xác hơn ta giả sử μi là tần suất thay đổi của trang ei, và fi là tần suất mà Crawler ghé thăm lại trang ei. Crawler phải ước lượng μi của mỗi trang để thiết lập chiến lược ghé thăm lại mỗi trang thích hợp.Việc ước lượng này dựa vào quá trình thay đổi của trang trước đó mà Crawler đã ghi lại được. Độ đo cập nhật (freshness metric): Giả sử có hai tập các trang web A, B mỗi tập gồm 20 trang, trong đó tập A có trung bình 10 trang được cập nhật, tập B có 15 trang được cập nhật. Người ta nói rằng tập B “cập nhật” hơn (“fresher”) tập A. Thêm nữa nếu tập A được cập nhật một ngày trước đây, tập B được cập nhật một năm trước đây thì ta nói tập A hiện hành hơn (“more current”) tập B, dẫn đến khái niệm tuổi “age”: 7 Bài tập lớn xử lý ngôn ngữ tự nhiên Dựa trên khái niệm trực giác này chúng ta đưa ra định nghĩa freshness và age như sau: - Freshness: Đặt S={e1,…,en} là tập hợp N trang đã được Crawler tải về. reshness được định nghĩa như sau: Freshness của trang ei tại thời điểm t là - Age: Để biết được “tuổi” của một tập chúng ta định nghĩa khái niệm “age” như sau: “age” của trang ei tại thời điểm t là A(ei, t) Freshness và age của tập các trang cục bộ có thể thay đổi theo thời gian. Do vậy chúng ta cần tính độ freshness trung bình trong một khoảng thời gian dài và sử dụng giá trị này làm độ freshness của cả tập hợp. Chiến lược cập nhật Trong một khoảng thời gian nhất định các Crawler chỉ có thể tải về hoặc cập nhật số lượng giới hạn các trang. Tuỳ thuộc vào chiến lược cập nhật trang, nguồn download trang sẽ được phân phối cho các trang khác nhau theo các cách khác nhau. 4.2. Kho dữ liệu Repository Bộ phận page Repository là một hệ thống lưu trữ có khả năng mở rộng. Hệ thống này quản lý một tập lớn các trang web. Nó thực hiện hai chức năngchính: chức năng thứ nhất, cho phép Crawler lưu trữ các trang web. Thứ hai,nó phải cung cấp API truy cập 8 Bài tập lớn xử lý ngôn ngữ tự nhiên hiệu quả để bộ Indexer và bộ CollectionAnalysis có thể sử dụng để lấy các trang từ kho dữ liệu. 4.2.1 Các yêu cầu đối với repository - Một Repository quản lý một tập các đối tượng dữ liệu “data object” lớn. - Có khả năng mở rộng - Có cách truy cập kép (dual access mode): Truy nhập ngẫu nhiên được sử dụng để nhanh chóng nhận về trang web và gán cho mỗi trang một định danh duy nhất. Truy cập tuần tự được sử dụng để nhận về tập hợp hoàn chỉnh, hay vài tập hợp con lớn. - Có thể cập nhật khối lượng lớn. - Loại bỏ những trang không còn tồn tại. - Kho dữ liệu được thiết kế phân tán (Distributed Repository). 4.2.2 Nguyên tắc phân tán trang Các trang có thể được gán cho các nút dựa trên một số nguyên tắc khác nhau. Như nguyên tắc phân tán đồng bộ (Uniform distribution), tất cả các nút được xử lý đồng nhất. Một trang có thể được gán cho một nút bất kỳ trong hệ thống. Các nút sẽ chứa các phần của tập hợp các trang tuỳ theo khả năng lưu trữ của nút. Ngược lại, với cách phân tán băm (hash distribution) việc định vị các trang vào các nút dựa trên định danh của trang. 4.2.3 Phương pháp tổ chức trang vật lý Trong một nút đơn, có 3 thao tác có thể thực hiện: thêm trang/chèntrang (page addition/insertion), truy cập tuần tự tốc độ cao, và truy cập ngẫu nhiên. Cách tổ chức các trang theo kiểu vật lý tại mỗi nút chính là việc xem xét xem mức độ hỗ trợ mỗi thao tác trên của nút đó. 4.2.4 Chiến lược cập nhật Việc thiết kế chiến lược cập nhật phụ thuộc vào tính chất của Crawler. Có hai cách cấu trúc Crawler: Batch-mode hoặc Steady Crawler: một Crawler kiểu batch-mode được xử lý định kỳ mỗi tháng một lần, và cho phép duyệt một số lần nhất định (hoặc đến khi toàn bộ các trang trong tập đích đã được duyệt) sauđó Crawler dừng lại. Với bộ Crawler như trên thì kho dữ liệu web được cập nhật trong một số ngày nhất định trong tháng. Ngược lại, một bộ Crawler ổn định (steady Crawler) chạy liên tục, nó liên tục cập nhật và bổ sung các trang mới cho Repository. 9 Bài tập lớn xử lý ngôn ngữ tự nhiên 4.3. Bộ lập chỉ mục Indexer Các tài liệu tải về cần phải được xử lý thích hợp trước khi thực hiện việc tìm kiếm. Việc sử dụng các từ khoá hay thuật ngữ để mô tả nội dung của tài liệu theo một khuôn dạng ngắn gọn hơn được gọi là tạo chỉ mục cho tài liệu. Modul Indexer và Collection Analysis có chức năng tạo ra nhiều loại chỉ mục khác nhau. Modul Indexer tạo ra hai loại chỉ mục chính đó là chỉ mục Text Index (chỉ mục nội dung) và chỉ mục Structure Index (chỉ mục liên kết). Dựa vào hai loại chỉ mục này bộ Collection Analysis tạo ra nhiều loại chỉ mục hữu ích khác: Link Index: tạo chỉ mục liên kết, các đoạn web đã duyệt được biểu diễn dưới dạng đồ thị với các đỉnh và các cạnh. Text Index: Phương pháp đánh chỉ mục dựa theo nội dung (text-based) là một phương pháp quan trọng để định danh các trang có liên quan đến yêu cầu tìm kiếm. Chỉ mục kết hợp: Số lượng và kiểu của các chỉ mục Utility được quy định bởi bộ Collection Analysis tuỳ thuộc vào chức năng của bộ máy truy vấn và kiểu thông tin mà modul Ranking sử dụng. 4.3.1 Các bước lập chỉ mục Bước 1: Xác định các mục từ, khái niệm có khả năng đại diện cho vănbản sẽ được lưu trữ. Bước 2: Xác định trọng số cho từng mục từ, trọng số này là giá trịphản ánh tầm quan trọng của mục từ đó trong văn bản. 4.3.1.1 Xác định mục từ quan trọng 10 [...]... các tính năng của Nutch bằng cách phát triển thêm các plugin Tất cả các thao tác phân tách tài liệu, lập chỉ mục và tìm kiếm đều thật sự được thực hiện bởi các plugin 1.3 Nutch và Lucene Nutch được xây dựng trên phần ngọn của Lucene, một API cho việc đánh chỉ mục và tìm kiếm văn bản Một câu hỏi thường thấy là “Ta lên sử dụng Lucene hay Nutch? ” câu trả lời đơn giản ở đây là bạn sử dụng Lucene nếu bạn... chức năng xây dựng chỉ mục và tìm kiếm Bản thân Lucene cũng là một dự án của Apache Software Foundation, được khởi xướng bởi Dough Cutting Nutch sử dụng Lucene để thực hiện tạo chỉ mục cho các tài liệu thu thập được và áp dụng vào chức năng tìm kiếm, chấm điểm (ranking) của search engine 2.2 Hadoop Hadoop là một framework nguồn mở viết bằng Java cho phép phát triển các ứng dụng phân tán có thể xử lý... đó và site đó chỉ có 1 link outbound dẫn đến bài viết trên site của ta 14 Bài tập lớn xử lý ngôn ngữ tự nhiên PHẦN II: FRAMEWORK LUCENE 1 Giới thiệu Lucene là một thư viện mã nguồn mở viết bằng java cho phép dễ dàng tích hợp thêm chức năng tìm kiếm đến bất cứ ứng dụng nào Nó cung cấp các API hỗ trợ cho việc đánh chỉ mục và tìm kiếm Lucene có thể được sử dụng để tích hợp chức năng tìm kiếm vào ứng dụng. .. dụng để lấy ra các giá trị Document và các điểm trọng số của các tài liệu tương ứng 23 Bài tập lớn xử lý ngôn ngữ tự nhiên PHẦN III: ỨNG DỤNG NUTCH 1 Giới thiệu về Nutch 1.1 Định nghĩa Nutch là một search engine mã nguồn mở cài đặt trên ngôn ngữ lập trình Java Nutch cung cấp tất cả các công cụ cần thiết để cho phép bạn tạo ra một search engine (SE) của riêng bạn Cài đặt Nutch trên một trong các quy mô:... giao diện tìm kiếm, cách thực thi tìm kiếm và hiển thị kết quả tìm kiếm Các ứng dụng tìm kiếm có nhiều biến thể khác nhau Một số chạy như một thành phần nhỏ được nhúng vào trong một ứng dụng Một số có thể chạy trên một website, một cơ sở hạ tầng server chuyên biệt và tương tác với nhiều người sử dụng thông qua trình duyệt web hoặc mobile Số khác có thể chạy trong mạng intranet của một công ty và tìm kiếm... hãy lần lượt xem các thành phần tìm kiếm của một search engine a Search user interface User interface là phần mà người sử dụng tương tác trực tiếp trên trình duyệt, ứng dụng desktop hoặc thiết bị di động khi họ tương tác với ứng dụng tìm kiếm Lucene không cung cấp bất cứ giao diện tìm kiếm mặc định nào, nó phải được chúng ta tự xây dựng Khi mà người sử dụng submit yêu cầu tìm kiếm, nó phải được dịch ra... phẩm QueryParser mặc định của Lucene thường đáp ứng được yêu cầu của một ứng dụng thông thường Đôi khi, chúng ta sẽ muốn sử dụng đầu ra của QueryParser và cộng thêm các logic riêng để hiệu chỉnh lại đối tượng Query Bây giờ chúng ta có thể sẵn sàng để thực thi yêu cầu tìm kiếm 19 Bài tập lớn xử lý ngôn ngữ tự nhiên c Search Query Search Query là quá trình tra cứu chỉ mục tìm kiếm và lấy ra các tài liệu... là HTML và Plain Text Muốn mở rộng ra cho các tài liệu khác, ta phải cấu hình lại Nutch Cũng nhờ vào kiến trúc Plugin-based của Nutch mà ta có thể viết thêm các Plugin để xử lý các tài liệu khác 1.2.3 Chạy trên hệ thống phân tán Nutch được phát triển trên nền tảng Hadoop Do vậy ứng dụng Nutch sẽ phát huy được sức mạnh của nó nếu chạy trên một Hadoop cluster 1.2.4 Linh hoạt với plugin Nhờ kiến trúc plugin-based,... hợp cho search engine b Xây dựng truy vấn (Build query) Khi người sử dụng dùng search engine để tìm kiếm, họ sẽ submit yêu cầu tìm kiếm lên server Sau đó, yêu cầu này phải được dịch thành đối tượng Query của search engine Chúng ta gọi bước này là build query Các đối tượng Query có thể đơn giản hoặc phức tạp Lucene cung cấp một gói được gọi là QueryParser để biến câu truy vấn người sử dụng nhập vào thành... dụng cho quá trình tạo chỉ mục 3 Kiến trúc của Nutch Kiến trúc của Nutch được phân chia một cách tự nhiên thành các thành phần chính: crawler, indexer và searcher Các thành phần thực hiện các chức năng: o Crawler thực hiện thu thập các tài liệu, phân tách các tài liệu, kết quả của crawler là một tập dữ liệu segments gồm nhiều segments o Indexer lấy dữ liệu do crawler tạo ra để tạo chỉ mục ngược o Searcher . CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ──────── * ─────── BÀI TẬP LỚN MÔN: XỬ LÝ NGÔN NGỮ TỰ NHIÊN ĐỀ TÀI: TÌM HIỂU KIẾN TRÚC CỦA SEARCH ENGINE FRAMEWORK LUCENE & ỨNG DỤNG NUTCH GVHD: Th.s Hoàng. LÝ VÀ MÔ HÌNH CHUNG CỦA SEARCH ENGINE 3 1. Giới thiệu chung 3 2. Phân loại 4 2.1. Máy tìm kiếm thông thường 4 2.2. Máy siêu tìm kiếm - Meta Search Engine 4 3. Nguyên lý hoạt động của search engine. thuộc vào sự quản lý của con người. Nếu người sử dụng muốn các Search Engine tìm thấy trang web của mình thì họ phải đăng ký vào thư mục bằng cách gửi bản đăng ký đến ban biên tập của Search Engine. Ngày
- Xem thêm -

Xem thêm: Tìm hiểu kiến trúc của search engine framework lucene và ứng dụng nutch, Tìm hiểu kiến trúc của search engine framework lucene và ứng dụng nutch, Tìm hiểu kiến trúc của search engine framework lucene và ứng dụng nutch, PHẦN I: NGUYÊN LÝ VÀ MÔ HÌNH CHUNG CỦA SEARCH ENGINE, Mô hình của seach engine, PHẦN II: FRAMEWORK LUCENE, PHẦN III: ỨNG DỤNG NUTCH

Từ khóa liên quan

Gợi ý tài liệu liên quan cho bạn