Cài đặt theo cơ bản

Một phần của tài liệu (LUẬN văn THẠC sĩ) thuật toán đánh chỉ mục ngược với mapreduce và ứng dụng trong việc đánh giá ý kiến của học sinh hòa bình trên mạng xã hội​ (Trang 42 - 44)

MapReduce được thiết kế ngay từ đầu để sản xuất các cấu trúc dữ liệu khác nhau liên quan đến tìm kiếm web, bao gồm các chỉ số ngược và web đồ thị. Chúng ta bắt đầu với các thuật toán lập chỉ mục ngược cơ bản thể hiện trong thuật toán.

Đầu vào cho các mapper gồm id tài liệu (key) kết hợp với thực tế nội dung (value). Tài liệu cá nhân được xử lý song song bởi mappers. Đầu tiên, mỗi tài liệu được phân tích và chia nhỏ thành các thành phần term của nó. Các đường ống xử lý khác nhau tùy theo ứng dụng và loại tài liệu, nhưng đối với các trang web thường liên quan đến việc stripping out các thẻ HTML và các yếu tố khác như mã JavaScript, tokenizing, case folding, removing stopwords (các từ phổ biến như 'the', 'a', 'của', vv), và stemming (loại bỏ sẽ gắn từ từ để 'những con chó' trở thành 'chó'). Một khi các tài liệu đã được phân tích, tần số hạn được tính bằng cách duyệt qua tất cả các điều khoản và theo dõi đếm. Dòng 4 và 5 trong mã giả phản ánh quá trình tính toán tần số hạn, nhưng ẩn chứa các chi tiết của tài liệu xử lý. Sau khi biểu đồ này đã được xây dựng, các mapper sau đó lặp lại trên tất cả các kỳ hạn. Đối với mỗi học kỳ, một cặp bao gồm id tài liệu và tần số hạn được tạo ra. Mỗi cặp, ký hiệu là hn, H {t} i trong mã giả, đại diện một đăng tải cá nhân. Mapper sau đó phát ra một cặp key-value trung gian với term như là key và posting là value, trong dòng 7 của mapper pseudo-code. Mặc dù như đã trình bày ở đây chỉ có tần số hạn được lưu trữ trong việc posting, thuật toán này có thể dễ dàng tăng cường để lưu trữ thông tin bổ sung (ví dụ, vị trí term) trong payload.

Trong giai đoạn shuffle và sắp xếp, thời gian chạy MapReduce về cơ bản thực hiện một nhóm lớn, phân phối bởi các tin đăng bởi term. Không có bất kỳ nỗ lực thêm vào nào của các lập trình viên, các framework thực hiện tập hợp tất cả các bài đăng thuộc trong cùng một danh sách tin đăng. Việc này đơn giản hóa rất nhiều nhiệm vụ của reducer, chỉ cần đơn giản tập hợp lại với nhau tất cả các bài đăng và ghi chúng vào đĩa. Reducer bắt đầu bằng việc khởi tạo một danh sách rỗng và sau đó gắn thêm tất cả các tin đăng liên quan cùng một key (term) vào danh sách. Các tin đăng này sau đó được sắp xếp theo id tài liệu, và toàn bộ danh sách thông tin đăng phát ra như là một value, với term như là key. Thông thường, danh sách đăng được nén đầu tiên, nhưng chúng ta sẽ tạm bỏ lại điều này bây giờ. Các cặp key-value cuối cùng được ghi vào đĩa và bao gồm các chỉ số ngược. Vì mỗi reducer viết ra nó trong một file riêng biệt trong hệ thống tập tin phân phối, chỉ số cuối cùng của chúng tôi sẽ được chia trên các tập tin r, trong đó r là số reducers. Không cần thiết củng cố thêm những tập tin này. Xét một cách riêng biệt, chúng tôi cũng phải xây dựng một chỉ số cho bản thân các danh sách bài đăng cho công cụ phục hồi: việc này là điển hình trong hình thức của việc mapping từ term đến pairs (tập tin, byte offset), để đưa ra một thuật ngữ, các công cụ phục hồi có thể lấy danh sách tin đăng của mình bằng cách mở các tập tin thích hợp và tìm đến đúng vị trí byte offset trong tập tin đó.

Thực hiện các thuật toán hoàn chỉnh được minh họa trong hình với một ví dụ đồ chơi gồm ba tài liệu, ba mapper, và hai reducer. Cặp key-value trung gian (từ mapper) và các cặp key-value cuối cùng bao gồm các chỉ số đảo ngược (từ reducer) được hiển thị trong các hộp với các đường chấm. Các bài đăng được hiển thị như các cặp hộp (pairs of boxes), với id tài liệu ở bên trái và tần số term ở bên phải.

Hình 2.6: Minh họa đơn giản cơ sở thuật toán lập chỉ mục ngược trong MapReduce với ba mapper và hai reducer

Mô hình lập trình MapReduce cung cấp một biểu hiện rất ngắn gọn về các thuật toán lập chỉ mục ngược. Thực hiện của nó ngắn gọn tương tự: các thuật toán cơ bản có thể được thực hiện với chỉ một vài chục dòng mã trong Hadoop (với xử lý tài liệu tối thiểu). Một thực hiện như vậy có thể hoàn thành một nhiệm vụ lập trình kéo dài một tuần trong một khóa học cho học viên cao học hoặc sinh viên năm thứ nhất tốt nghiệp đại học. Trong một phi MapReduce indexer (non- MapReduce indexer), một phần đáng kể của các mã được dành cho nhóm đăng bởi term, hạn chế được áp đặt bởi bộ nhớ và đĩa (ví dụ, dung lượng bộ nhớ bị hạn chế, đĩa tìm là chậm, vv). Trong

MapReduce, các lập trình viên không cần phải lo lắng về bất cứ vấn đề này, hầu hết các nâng nặng được thực hiện bởi framework thực hiện.

Một phần của tài liệu (LUẬN văn THẠC sĩ) thuật toán đánh chỉ mục ngược với mapreduce và ứng dụng trong việc đánh giá ý kiến của học sinh hòa bình trên mạng xã hội​ (Trang 42 - 44)

Tải bản đầy đủ (PDF)

(77 trang)