1. Trang chủ
  2. » Giáo Dục - Đào Tạo

(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​

77 19 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề 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
Tác giả Lê Đinh Hợp
Người hướng dẫn PGS TS Đỗ Trung Tuấn
Trường học Đại học Thái Nguyên
Chuyên ngành Khoa học máy tính
Thể loại luận văn thạc sĩ
Năm xuất bản 2016
Thành phố Thái Nguyên
Định dạng
Số trang 77
Dung lượng 3,02 MB

Cấu trúc

  • CHƯƠNG 1 MÔ HÌNH MapReduce (12)
    • 1.1. Tổng quan về MapReduce (12)
      • 1.1.1. Sự quan trọng của MapReduce (12)
      • 1.1.2. Các ý tưởng của MapReduce (13)
      • 1.1.3. Cấu trúc dữ liệu trong MapReduce (15)
      • 1.1.4. Mapper và Reducer (15)
      • 1.1.5. Partitioner và Combiner (17)
    • 1.2. Bộ khung thực thi (19)
      • 1.2.1. Lập lịch (19)
      • 1.2.2. Di chuyển dữ liệu và mã lệnh (19)
      • 1.2.3. Đồng bộ hóa (20)
      • 1.2.4. Xử lý lỗi (20)
    • 1.3. Hệ thống file phân tán (20)
      • 1.3.1. Kiến trúc của HDFS (21)
      • 1.3.2. Nhiệm vụ của NameNode (21)
      • 1.3.3. Nhiệm vụ của DataNode (22)
      • 1.3.4. Nhiệm vụ của Secondary NameNode (23)
      • 2.1.1. Gộp lớn cục bộ (26)
      • 2.1.2. Bộ hai và bộ ba (31)
      • 2.1.3. Tính toán tần số tương đối (34)
      • 2.1.4. Sắp xếp thứ cấp (37)
    • 2.2 Thuật toán tính chỉ mục ngược để tìm kiếm dữ liệu văn bản (37)
      • 2.2.1. Dò tìm Web (38)
      • 2.2.2 Thuật toán chỉ mục ngược (40)
      • 2.2.3. Cài đặt theo cơ bản (42)
      • 2.2.4. Cài đặt thuật toán cải tiến (44)
      • 2.2.5. Nén chỉ mục (46)
    • 2.3. Về tìm kiếm (53)
  • CHƯƠNG 3 THỬ NGHIỆM THUẬT TOÁN ĐÁNH GIÁ Ý KIẾN TRÊN MẠNG XÃ HỘI (25)
    • 3.1 Mã nguồn mở Solr (57)
      • 3.1.1. Giới thiệu (57)
      • 3.1.2. Các tính năng chính của Solr (57)
    • 3.2 Mã nguồn mở Nutch (57)
      • 3.2.1. Các lý do để tự xây dựng một Search Engine (57)
      • 3.2.2. Các tính năng chính của Nutch (58)
    • 3.3. API biểu đồ Facebook (59)
    • 3.4. Solr trên Hadoop và tìm kiếm thử nghiệm (61)
      • 3.4.1. Sơ đồ (61)
      • 3.4.1. Cài đặt cụm máy Hadoop (63)
      • 3.4.2. Cài đặt Nutch tích hợp với Solr (68)
      • 3.4.3. Thu thập dữ liệu (70)
    • 3.5. Thực hiện tìm kiếm thử nghiệm trên tập chỉ mục đã thu thập được (73)
  • Kết luận (76)

Nội dung

MÔ HÌNH MapReduce

Tổng quan về MapReduce

1.1.1 Sự quan trọng của MapReduce

MapReduce là một công cụ hiệu quả cho việc giải quyết các bài toán dữ liệu lớn, đồng thời đã cách mạng hóa quy trình sắp xếp tính toán trên quy mô lớn.

MapReduce không phải là mô hình tính toán song song đầu tiên, mà mô hình PRAM (Parallel Random Access Machine) đã tồn tại từ nhiều thập kỷ trước PRAM cho phép nhiều vi xử lý chia sẻ một bộ nhớ lớn không giới hạn và hoạt động đồng thời trên dữ liệu chung để tạo ra kết quả Mặc dù có các mô hình khác như LogP và BSP (Bulk Synchronous Parallel), nhưng không có mô hình nào đạt được thành công như MapReduce.

MapReduce là một trong những mức trừu tượng thành công nhất cho tài nguyên tính toán mở rộng, nhưng nó cũng có những hạn chế Mặc dù MapReduce giúp đơn giản hóa nhiều công việc bằng cách ẩn đi sự phức tạp, nó cũng có thể làm cho một số tác vụ trở nên khó khăn hơn hoặc thậm chí không thể thực hiện Do đó, việc ứng dụng MapReduce trong một số bài toán gặp phải những giới hạn nhất định, cho thấy rằng đây không phải là mô hình cuối cùng cho việc xử lý tính toán quy mô lớn một cách hiệu quả.

1 http://en.wikipedia.org/wiki/Parallel_Random_Access_Machine

2 http://en.wikipedia.org/wiki/LogP_machine

3 http://en.wikipedia.org/wiki/Bulk_Synchronous_Parallel

Giải quyết bài toán dữ liệu lớn cần một phương pháp khác biệt, thường trái ngược với mô hình tính toán truyền thống MapReduce là một công cụ quan trọng trong việc xử lý dữ liệu lớn, cho phép phân chia và xử lý dữ liệu theo cách hiệu quả.

Mở rộng "ra" thay vì "lên" là giải pháp tối ưu để tăng cường sức mạnh xử lý, bằng cách tăng số lượng server thông dụng (low-end server) thay vì nâng cấp bộ vi xử lý và khả năng lưu trữ của máy tính với các server cao cấp (high-end server) Phương pháp này không chỉ tiết kiệm chi phí, mà còn tận dụng được các server hiện có, trong khi nâng cấp có thể yêu cầu mua mới toàn bộ hệ thống Hơn nữa, giá của một server chuyên dụng thường cao hơn nhiều so với một cụm máy tính thông thường có khả năng xử lý tương đương.

Chấp nhận rằng lỗi là điều thường xảy ra trong các cụm server là rất quan trọng Khi số lượng server trong một cluster tăng lên, việc gặp lỗi là không thể tránh khỏi Do đó, các dịch vụ phân tán cần phải được thiết kế để xử lý các lỗi phần cứng và phần mềm thường xuyên Mô hình lập trình MapReduce cung cấp khả năng xử lý lỗi hiệu quả thông qua các cơ chế như tự động khởi động lại các tác vụ trên các nút khác nhau trong cluster.

Trong các ứng dụng tính toán hiệu năng cao (HPC), việc tách rời giữa nút xử lý và nút lưu trữ thường dẫn đến thắt cổ chai trong mạng Nhiều công việc nặng nề về dữ liệu không yêu cầu xử lý cao, vì vậy việc chuyển xử lý đến dữ liệu thay vì di chuyển dữ liệu đến nơi xử lý là một giải pháp hiệu quả hơn Kiến trúc MapReduce kết hợp các bộ xử lý và đĩa lưu trữ cùng nhau, cho phép chạy mã trực tiếp trên khối dữ liệu cần xử lý, từ đó tận dụng lợi thế của dữ liệu cục bộ Hệ thống tập tin phân tán đóng vai trò quan trọng trong việc quản lý dữ liệu mà MapReduce xử lý.

Xử lý dữ liệu tuần tự và tránh truy cập ngẫu nhiên là cần thiết khi làm việc với lượng lớn dữ liệu, vì dung lượng bộ nhớ thường không đủ cho toàn bộ dữ liệu Do đó, dữ liệu phải được lưu trữ trên đĩa Thời gian truy cập ngẫu nhiên bị hạn chế bởi sự di chuyển của đầu đọc và tốc độ đĩa, dẫn đến việc làm chậm quá trình xử lý Để khắc phục vấn đề này, MapReduce được thiết kế để xử lý các khối dữ liệu trong một tập dữ liệu lớn.

MapReduce giúp các lập trình viên ứng dụng xử lý phân tán bằng cách che giấu các chi tiết hệ thống phức tạp Thay vì phải lo lắng về thực thi, nó cung cấp một mô hình lập trình trừu tượng với các giao diện đơn giản đã được định nghĩa sẵn, giúp tăng cường hiệu quả phát triển ứng dụng.

Phương pháp chia để trị là một giải pháp phổ biến cho các bài toán dữ liệu lớn, trong đó bài toán lớn được phân mảnh thành các bài toán con nhỏ hơn Những bài toán nhỏ này có thể được giải quyết độc lập và song song bởi các workers khác nhau, bao gồm các tiến trình trong bộ vi xử lý, bộ vi xử lý đa nhân, hoặc các máy trong một cụm máy tính Cuối cùng, các kết quả trung gian từ các worker sẽ được gộp lại để tạo thành kết quả cuối cùng.

Hình 1.1 Mô hình chia để trị

MapReduce xuất phát từ lập trình hàm, với các ngôn ngữ tiêu biểu như Lisp và ML Điểm nổi bật của lập trình hàm là khái niệm về hàm bậc cao, cho phép hàm nhận tham số là một hàm khác Hai hàm bậc cao phổ biến trong lập trình hàm là Map và Fold.

Hàm Map nhận một hàm f với một tham số và áp dụng nó cho tất cả các phần tử trong danh sách Ngược lại, hàm Fold nhận một hàm g với hai tham số và một giá trị khởi tạo; g được áp dụng cho giá trị khởi tạo và phần tử đầu tiên của danh sách, lưu kết quả vào biến trung gian, và tiếp tục sử dụng biến này cho phần tử tiếp theo trong danh sách.

Hàm g nhận hai tham số từ danh sách và thực hiện công việc lặp đi lặp lại cho đến khi hoàn tất toàn bộ danh sách Kết quả cuối cùng của hàm Fold là giá trị cuối cùng của biến trung gian.

Hình 1.2 Hàm Map và Fold trong Functional Programming

Hàm Map trong MapReduce tương ứng với hàm Map, hàm Reduce tương ứng với hàm Fold trong lập trình hàm

1.1.3 Cấu trúc dữ liệu trong MapReduce

Các cặp key-value là thành phần cơ bản trong cấu trúc dữ liệu MapReduce, trong đó key và value có thể là các kiểu dữ liệu cơ bản như số nguyên, số thực, chuỗi, hoặc các kiểu dữ liệu có cấu trúc do người dùng định nghĩa.

Một phần quan trọng của giải thuật MapReduce là xác định cấu trúc key-value trên các tập dữ liệu cần xử lý Ví dụ, trong một tập các trang web, các key có thể là URL và các value là nội dung HTML, trong khi đối với đồ thị, key có thể là node id và value là danh sách kề của node đó Một số thuật toán sử dụng key để phân biệt các bộ dữ liệu, tương tự như khái niệm khóa trong cơ sở dữ liệu, trong khi ở một số thuật toán khác, input key không quan trọng và thường bị bỏ qua.

Trong MapReduce, lập trình viên định nghĩa một lớp Mapper và một lớp Reducer với hai hàm cơ bản sau:

Bộ khung thực thi

Một trong những ý tưởng quan trọng trong MapReduce là tách biệt việc xử lý phân tán cái gì (what) ra khỏi cách thức xử lý phân tán như thế nào (how) Chương trình MapReduce bao gồm mã cho Mapper, Reducer, cùng với Partioner và Combiner, được đóng gói với các tham số cấu hình như vị trí tập tin đầu vào và nơi lưu trữ đầu ra Nhà phát triển tải chương trình lên node quản lý tác vụ trong cluster, gọi là JobTracker trong Hadoop, và execution framework sẽ xử lý mọi vấn đề liên quan đến thực thi mã lệnh phân tán Các chức năng chính của execution framework bao gồm việc quản lý và điều phối quá trình thực thi.

Mỗi chương trình MapReduce được chia nhỏ thành các đơn vị nhỏ gọi là tasks

Một map task trong Hadoop có nhiệm vụ xử lý một khối các cặp key-value (gọi là input split), trong khi đó, một reduce task sẽ đảm nhận việc xử lý một phần của không gian khóa.

1.2.2 Di chuyển dữ liệu và mã lệnh Ý tưởng của MapReduce là di chuyển mã lệnh, không phải di chuyển dữ liệu

Trong MapReduce, việc tính toán dữ liệu phụ thuộc vào hệ thống file phân tán, yêu cầu dữ liệu phải được đưa đến mã lệnh Để tối ưu hóa quá trình này, scheduler sẽ khởi động task tại node chứa khối dữ liệu cần thiết Nếu node đó đang bận với quá nhiều task, một task mới sẽ được khởi tạo ở node khác, và dữ liệu sẽ được truyền qua mạng để xử lý.

Việc đồng bộ hóa trong xử lý đồng thời cho phép các tiến trình kết hợp kết quả trung gian và trao đổi thông tin trạng thái Trong MapReduce, đồng bộ hóa diễn ra giữa pha map và reduce, nơi các cặp key-value trung gian cần được gộp theo khóa thông qua một phép toán sắp xếp phân tán lớn trên tất cả các node thực hiện map tasks và các node sẽ thực hiện reduce tasks.

Dữ liệu trung gian được copy qua mạng, vì thế tiến trình này thường được gọi là

In a MapReduce program with m mappers and r reducers, the "shuffle and sort" phase can involve up to m x r copy operations, as each mapper may produce output directed to all reducers.

Khung MapReduce cần phải hoàn thành tất cả các tác vụ trong môi trường có khả năng xảy ra lỗi thường xuyên Được thiết kế cho các cụm máy giá rẻ, MapReduce dễ gặp phải lỗi, đặc biệt trong các cụm lớn, với các sự cố liên quan đến đĩa cứng và RAM Do đó, khung MapReduce phải có khả năng xử lý hiệu quả những vấn đề này.

Hệ thống file phân tán

Chúng ta đã chú trọng vào việc xử lý dữ liệu lớn, nhưng cần nhớ rằng không có dữ liệu, chúng ta sẽ không có gì để xử lý Trong lĩnh vực tính toán hiệu năng cao (HPC) và các kiến trúc cụm truyền thống, lưu trữ được coi là một phần tách biệt với quá trình tính toán.

Có nhiều phương pháp cài đặt lưu trữ, trong đó Network-Attach Storage (NAS) và Storage Area Network (SAN) là hai lựa chọn phổ biến Dù sử dụng phương pháp nào, chu trình xử lý vẫn giữ nguyên: các node tính toán tiếp nhận dữ liệu từ nơi lưu trữ, nạp vào bộ nhớ, xử lý và ghi kết quả trở lại.

Khi kích thước dữ liệu tăng, khả năng xử lý cũng cần được nâng cao, nhưng điều này có thể gây khó khăn do sự liên kết giữa node lưu trữ và node xử lý Để đạt hiệu suất cao, cần mạng tốc độ cao như 10 gigabit Ethernet hoặc InfiniBand, nhưng đây không phải là giải pháp kinh tế Một phương pháp thay thế là kết hợp lưu trữ và tính toán, như trong hệ thống file phân tán của MapReduce Google File System (GFS) là hệ thống file phân tán riêng của Google, trong khi Hadoop Distributed File System (HDFS) là phiên bản mã nguồn mở của GFS Cả hai hệ thống này chia dữ liệu thành các khối và sao lưu trên các node trong cluster, với kích thước khối dữ liệu mặc định là 64MB Hệ thống file phân tán sử dụng kiến trúc master-slave, trong đó master quản lý metadata và cấu trúc thư mục, còn slave quản lý các khối dữ liệu Trong GFS, master được gọi là GFS Master và slave là GFS ChunkServer, trong khi trong Hadoop, master là NameNode và slave là DataNode Mặc dù hoạt động tương tự, HDFS không cho phép ghi thêm vào file và có hiệu suất chậm hơn GFS.

Hình 1.5 Kiến trúc của HDFS

NameNode là thành phần chủ chốt trong quản lý không gian tên của hệ thống file, chịu trách nhiệm duy trì metadata, cấu trúc thư mục, ánh xạ file đến các block, vị trí của các block và quyền truy cập Dữ liệu này được nạp vào bộ nhớ để tối ưu hóa tốc độ truy cập Ngoài ra, NameNode còn điều khiển các phép toán trên file của các ứng dụng khách.

Khách hàng đến với datanode để truy cập và phân phối các block phù hợp cho việc ghi dữ liệu Tất cả các giao tiếp diễn ra trực tiếp giữa khách hàng và datanode Khi một tệp tin bị xóa, HDFS không ngay lập tức giải phóng không gian lưu trữ, mà thay vào đó, các block sẽ được thu gom từ từ theo cách "lazily garbage collected".

Namenode định kỳ gửi thông điệp báo hiệu đến datanode để duy trì sự toàn vẹn của hệ thống file Khi phát hiện một block có số bản sao vượt quá yêu cầu, namenode sẽ điều chỉnh để tạo ra các bản sao mới Ngoài ra, namenode cũng chịu trách nhiệm cân bằng hệ thống file bằng cách chuyển các blocks từ datanode chứa nhiều blocks sang datanode có ít blocks hơn, đảm bảo hiệu suất hoạt động của hệ thống.

Thiết kế của GFS và HDFS có một điểm yếu rõ ràng là sự phụ thuộc vào master, vì khi master gặp lỗi, toàn bộ hệ thống và các MapReduce jobs sẽ ngừng hoạt động Tuy nhiên, điểm yếu này được giảm thiểu nhờ vào bản chất của các phép toán trong hệ thống file, khi mà không có dữ liệu đi qua NameNode và giao tiếp giữa clients và DataNode chủ yếu chỉ chứa metadata Do đó, NameNode không hoàn toàn là một điểm yếu, và trong nhiều trường hợp, lỗi do tràn dữ liệu có thể được tránh Thực tế cho thấy, điểm chết (Single Point Of Failure - SPOF) này không phải là một hạn chế nghiêm trọng, vì việc theo dõi NameNode thường xuyên giúp giảm thiểu thời gian lỗi trong các triển khai thương mại Hơn nữa, Hadoop đã được thiết kế với một NameNode dự phòng (Secondary NameNode) để có thể chuyển đổi nhanh chóng khi NameNode gặp sự cố.

DataNode chịu trách nhiệm đọc và ghi các block của HDFS vào hệ thống file cục bộ Khi cần truy cập một file HDFS, file đó sẽ được chia thành các block, và namenode sẽ thông báo cho client biết DataNode nào lưu trữ block nào Client sau đó sẽ kết nối trực tiếp với DataNode để lấy block dữ liệu cần thiết Bên cạnh đó, các DataNode cũng thực hiện việc giao tiếp với nhau để sao lưu dữ liệu, đảm bảo tính an toàn và khả năng phục hồi của hệ thống.

Hình ảnh minh họa vai trò của NameNode và DataNode trong hệ thống lưu trữ phân tán Có hai file: một file tại /user/chuck/data1 với 3 block (1, 2, 3) và một file tại /user/james/data2 với 2 block (4, 5) Nội dung các file được lưu trữ phân tán trên các DataNode, với mỗi block có 3 bản sao Chẳng hạn, block 1 được sao lưu trên 3 DataNode, đảm bảo rằng nếu một DataNode gặp sự cố, file vẫn có thể được truy cập từ các DataNode khác.

Hình 1.6 Vai trò của NameNode và DataNode trong HDFS

Các DataNode liên tục gửi báo cáo về NameNode, bắt đầu bằng việc thông báo các block mà chúng đang lưu trữ sau khi khởi tạo Sau đó, DataNode tiếp tục duy trì liên lạc với NameNode để cập nhật thông tin về sự thay đổi dữ liệu cục bộ và nhận chỉ thị để thực hiện các thao tác như tạo, di chuyển hoặc xóa các block trên đĩa cục bộ.

1.3.4 Nhiệm vụ của Secondary NameNode

Hình 1.7 Kiến trúc HDFS đầy đủ

Secondary NameNode (SNN) là một tiến trình nền (daemon) để hỗ trợ cho việc datanode daemon

Trong một cụm HDFS, bên cạnh NameNode, còn có Secondary NameNode (SNN) thường chạy trên một máy chủ riêng biệt SNN không có DataNode hay TaskTracker nào hoạt động trên máy chủ này Điểm khác biệt chính giữa SNN và NameNode là SNN không nhận và lưu trữ các thay đổi thời gian thực của HDFS, mà thay vào đó, nó liên hệ trực tiếp với NameNode để cập nhật trạng thái của HDFS sau một khoảng thời gian do người dùng cấu hình.

NameNode là một điểm yếu trong Hadoop cluster, và SNN giúp giảm thiểu thời gian lỗi cũng như mất dữ liệu Khi NameNode gặp sự cố, cần có sự can thiệp của con người để cấu hình lại cluster, cho phép SNN đảm nhận vai trò NameNode.

THUẬT TOÁN XỬ LÝ DỮ LIỆU VĂN BẢN VỚI

2.1 Thiết kế thuật toán MapReduce cơ bản

MapReduce nổi bật nhờ vào sự đơn giản, cho phép lập trình viên chỉ cần cài đặt mapper và reducer, cùng với partitioner và combiner để chuẩn bị dữ liệu đầu vào Toàn bộ quá trình thực thi diễn ra trên các cụm từ một đến hàng nghìn node, xử lý các tập dữ liệu lớn từ gigabytes đến petabytes Tuy nhiên, điều này cũng yêu cầu các thuật toán phải được mô tả theo cách nghiêm ngặt, vì không phải thuật toán nào cũng phù hợp với mô hình lập trình này Chương này sẽ cung cấp các ví dụ thiết kế thuật toán cho MapReduce, trong đó đồng bộ hóa là thách thức lớn nhất Trong xử lý song song, các tiến trình trên các node khác nhau cần phải đồng bộ hóa, đặc biệt trong giai đoạn sort và shuffle, khi các cặp key-value trung gian được chuyển từ mapper sang reducer Ngoài giai đoạn này, mapper và reducer hoạt động độc lập mà không có liên lạc trực tiếp, và lập trình viên có rất ít quyền kiểm soát đối với nhiều khía cạnh của quá trình thực thi.

 Chỉ định Node cho một Mapper hoặc Reducer cụ thể

 Chỉ định thời gian bắt đầu và kết thúc của Mapper hoặc Reducer Chỉ định Mapper sẽ xử lý cặp key-value cụ thể

 Chỉ định Reducer sẽ xử lý các cặp key-value trung gian

Tuy nhiên, lập trình viên cũng có một số kĩ thuật để điều khiển việc thực thi và quản lý dòng dữ liệu trong MapReduce Bao gồm:

 Khả năng xây dựng các cấu trúc dữ liệu phức tạp dùng làm keys và values để lưu trữ và giao tiếp các kết quả từng phần

 Khả năng thực thi các đoạn mã của người dùng lúc bắt đầu và kết thúc map và reduce task

 Khả năng bảo toàn trạng thái giữa các mapper và reducer qua nhiều khóa đầu vào hoặc trung gian

 Khả năng điều khiển thứ tự sắp xếp của các keys trung gian, do đó có thể biết được thứ tự các key mà reducer sẽ nhận

 Khả năng điều khiển phân mảnh không gian khóa, do đó có thể biết được thứ tự tập khóa mà một reducer nào đó sẽ nhận

Một MapReduce Job không thể biểu diễn tất cả các thuật toán, do đó, lập trình viên thường cần phân tích các thuật toán phức tạp thành chuỗi các jobs Điều này yêu cầu dữ liệu liên tục, với đầu ra của một job trở thành đầu vào cho job tiếp theo Nhiều thuật toán có tính chất lặp đi lặp lại, yêu cầu thực thi nhiều lần để đạt được ngưỡng hội tụ cần thiết.

Chương này sẽ trình bày các kỹ thuật điều khiển thực thi lệnh và dòng dữ liệu, giúp thiết kế thuật toán hiệu quả trong MapReduce.

Thuật toán tính chỉ mục ngược để tìm kiếm dữ liệu văn bản

Tìm kiếm web là một thách thức lớn liên quan đến dữ liệu tinh túy, nơi người dùng yêu cầu thông tin thông qua các truy vấn ngắn gọn Hệ thống tìm kiếm cần phải nhanh chóng lấy và trình bày các đối tượng web phù hợp, điều này trở nên khó khăn do khối lượng dữ liệu khổng lồ, ước tính lên đến terabytes chỉ riêng về văn bản Thời gian phản hồi từ công cụ tìm kiếm cần phải rất nhanh, vì bất kỳ độ trễ nào dài hơn vài trăm mili giây đều có thể làm giảm sự kiên nhẫn của người dùng Việc đáp ứng những yêu cầu này thực sự là một kỳ công, đặc biệt khi cần xử lý một lượng lớn dữ liệu liên quan.

Hầu hết các động cơ tìm kiếm văn bản đầy đủ hiện nay sử dụng cấu trúc dữ liệu gọi là chỉ số đảo ngược, cho phép truy cập vào danh sách tài liệu chứa các thuật ngữ tìm kiếm Trong lĩnh vực thông tin, các đối tượng được lấy lại được gọi chung là "tài liệu", có thể là trang web, file PDF hoặc mã nguồn Khi nhận truy vấn từ người dùng, các động cơ truy hồi sử dụng chỉ số đảo ngược để xác định tài liệu có chứa các thuật ngữ liên quan, dựa trên các mô hình xếp hạng và các yếu tố như tính thích hợp của thuật ngữ, khoảng cách giữa các thuật ngữ và thuộc tính của chúng trong tài liệu.

Các vấn đề tìm kiếm web bao gồm ba thành phần chính: thu thập nội dung, xây dựng chỉ số và xếp hạng văn bản cho truy vấn Crawling và indexing có những đặc điểm tương tự, nhưng khác với thu hồi Quá trình thu thập nội dung và xây dựng chỉ số thường không cần hoạt động trong thời gian thực, với indexing thường diễn ra theo chu kỳ Tần suất cập nhật phụ thuộc vào loại trang web; ví dụ, các tổ chức tin tức cần cập nhật thường xuyên, trong khi các trang web chính phủ thường ít thay đổi hơn Đối với các trang cập nhật thường xuyên, việc chậm trễ một vài phút trong việc tìm kiếm nội dung là chấp nhận được Tìm kiếm yêu cầu thời gian phản hồi dưới một giây, với độ trễ truy vấn thấp và khả năng phục vụ nhiều người dùng đồng thời là rất quan trọng Tải truy vấn có thể biến động tùy thuộc vào thời gian trong ngày và sự kiện đặc biệt, trong khi tiêu thụ tài nguyên cho indexing thường dễ dự đoán hơn.

Trước khi xây dựng chỉ số đảo ngược, cần có bộ sưu tập tài liệu để phát triển các chỉ số Trong học viện, việc này thường đơn giản với bộ sưu tập tiêu chuẩn như thông tin từ newswire text Đối với nghiên cứu web-scale retrieval, bộ sưu tập ClueWeb09 với một tỷ trang web và 25 terabyte dữ liệu là lựa chọn lý tưởng Tiếp cận các bộ sưu tập tiêu chuẩn thường chỉ cần ký giấy phép dữ liệu và thanh toán chi phí Tuy nhiên, việc thu thập dữ liệu cho tìm kiếm web thực tế phức tạp hơn, yêu cầu quá trình crawling, tức là duyệt qua các siêu liên kết để lưu trữ trang web cho xử lý sau Quá trình này bắt đầu bằng cách tạo hàng đợi với danh sách trang "hạt giống", trong đó crawler tải trang, trích xuất đường dẫn, lưu trữ và lặp lại Thực tế, một trình thu thập web cơ bản có thể được lập trình chỉ với vài trăm dòng mã.

Tuy nhiên, việc dò tìm web thực sự hiệu quả là một nhiệm vụ phức tạp, với nhiều thách thức mà các trình thu thập dữ liệu thực tế phải đối mặt.

Một trình thu thập web cần tuân thủ nghi thức để không làm quá tải máy chủ web Việc chờ một khoảng thời gian cố định trước khi gửi yêu cầu đến cùng một máy chủ là điều phổ biến Để đảm bảo tôn trọng các hạn chế mà vẫn duy trì hiệu suất tốt, một trình thu thập thường sử dụng nhiều luồng hoạt động song song và duy trì hàng trăm kết nối TCP mở cùng lúc.

Khi một trình thu thập thông tin hoạt động với băng thông và nguồn lực hạn chế, việc ưu tiên tải xuống các trang chưa xem là rất quan trọng Quyết định này cần được thực hiện trực tuyến trong một môi trường thù địch, nơi mà các spammer có thể tạo ra các trang đầy rẫy spam như "trang trại liên kết" và "bẫy nhện".

“spider traps”) để lừa một trình thu thập vào nội dung overrepresenting từ một trang web cụ thể

Hầu hết các trình thu thập web hiện nay hoạt động trên các cụm máy phân tán, thường được phân bố cục bộ Để tránh việc tải một trang nhiều lần và đảm bảo tính nhất quán của dữ liệu, cần có cơ chế phối hợp và cân bằng tải giữa các trình thu thập Đồng thời, hệ thống cũng cần phải đủ mạnh mẽ để xử lý các tình huống như máy bị lỗi, mất mạng và các loại sự cố khác.

Tần suất thay đổi nội dung trên các trang web khác nhau, phụ thuộc vào bản chất của nội dung và đặc điểm của từng trang Để tối ưu hóa quá trình thu thập dữ liệu, các trình thu thập web cần xác định tần suất thu thập phù hợp; quá thường xuyên có thể gây lãng phí tài nguyên, trong khi thu thập không đủ thường xuyên sẽ dẫn đến việc sử dụng nội dung lỗi thời.

Các trang web hiện nay chứa nhiều nội dung trùng lặp, bao gồm các bản sao của bài viết hội nghị phổ biến, mẫu từ các trang như Wikipedia và nội dung từ newswire Vấn đề trở nên phức tạp hơn khi các trang này không hoàn toàn giống nhau mà chỉ gần giống, với các yếu tố khác nhau như quảng cáo và thanh menu Việc xác định và lựa chọn bản sao tốt nhất để chỉ mục trong quá trình thu thập thông tin là một thách thức đáng lưu tâm.

Các trang web đa ngôn ngữ thường không đảm bảo rằng các liên kết chỉ dẫn đến nội dung trong cùng một ngôn ngữ Chẳng hạn, một giáo sư tại Châu Á có thể sử dụng ngôn ngữ địa phương cho trang web của mình nhưng lại liên kết đến các ấn phẩm bằng tiếng Anh Ngoài ra, nhiều trang còn chứa hỗn hợp văn bản từ các ngôn ngữ khác nhau Do các kỹ thuật xử lý tài liệu như tokenization và stemming khác nhau theo từng ngôn ngữ, việc xác định ngôn ngữ chính trên một trang là rất quan trọng.

2.2.2 Thuật toán chỉ mục ngược

Chỉ mục ngược là một cấu trúc dữ liệu quan trọng trong tìm kiếm thông tin, bao gồm danh sách các tin đăng và liên kết đến từng thuật ngữ trong bộ sưu tập Mỗi tin đăng chứa id tài liệu và trọng số, cho biết tần suất xuất hiện của thuật ngữ trong tài liệu Trọng số đơn giản nhất là sự hiện diện của thuật ngữ, trong khi trọng số phổ biến hơn là tần số hạn (tf), phản ánh số lần thuật ngữ xuất hiện Các trọng số phức tạp hơn có thể bao gồm vị trí của thuật ngữ, tính chất của nó trong tài liệu, và thông tin bổ sung từ xử lý ngôn ngữ Trong môi trường web, thông tin văn bản từ các siêu liên kết cũng giúp làm phong phú thêm đại diện của tài liệu Ví dụ, thuật ngữ 1 xuất hiện trong {d1, d5, d6, d11, }, thuật ngữ 2 trong {d11, d23, d59, d84, }, và thuật ngữ 3 trong {d1, d4, d11, d19, }.

Trong quá trình thực hiện, chúng tôi giả định rằng tài liệu được xác định bởi một số nguyên từ 1 đến n, với n là tổng số tài liệu Thông tin đăng thường được sắp xếp theo id tài liệu, mặc dù có thể có các phương pháp sắp xếp khác Id tài liệu không mang ý nghĩa ngữ nghĩa cố định, nhưng việc gán id cho các văn bản không nhất thiết phải ngẫu nhiên Ví dụ, các trang từ cùng một tên miền có thể được đánh số liên tiếp, hoặc các trang có chất lượng cao hơn, dựa trên giá trị PageRank, có thể được gán giá trị số nhỏ hơn để hiển thị trước trong danh sách Do đó, cần có một cấu trúc dữ liệu phụ trợ để duy trì ánh xạ từ id tài liệu số nguyên sang các xử lý có ý nghĩa hơn, như URL.

Hình 2.5 Minh họa đơn giản của một chỉ mục ngược

Mỗi thuật ngữ liên quan đến một danh sách thông tin đăng, trong đó mỗi niêm yết bao gồm một ID tài liệu và một trọng số được ký hiệu là p Chỉ số đảo ngược cho phép truy cập nhanh chóng đến ID tài liệu chứa từ khóa cụ thể.

Khi thực hiện một truy vấn, việc thu hồi thông tin liên quan từ danh sách đăng là rất quan trọng, bao gồm việc kết hợp các điều khoản truy vấn và xử lý các tin đăng để tính toán kết quả Trong trường hợp đơn giản nhất, phương pháp thu hồi boolean sử dụng hoạt động hợp nhất cho boolean OR và giao cắt cho boolean AND trên danh sách tin đăng, điều này có thể thực hiện hiệu quả với các bài đăng được sắp xếp theo ID tài liệu Tuy nhiên, trong trường hợp tổng quát, cần tính toán điểm số truy vấn tài liệu, một phần được lưu trữ trong các cấu trúc gọi là tích lũy Cuối cùng, sau khi tất cả các tin đăng đã được xử lý, các tài liệu hàng đầu sẽ được giải nén để áp dụng chiến lược tối ưu hóa trong việc đánh giá truy vấn, nhằm giảm thiểu số lượng đăng mà động cơ thu hồi cần kiểm tra.

THỬ NGHIỆM THUẬT TOÁN ĐÁNH GIÁ Ý KIẾN TRÊN MẠNG XÃ HỘI

Ngày đăng: 12/04/2022, 21:57

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] . Data-Intensive Text Processing with MapReduce - Jimmy Lin The iSchool University of Maryland Sách, tạp chí
Tiêu đề: Data-Intensive Text Processing with MapReduce
[2] . MapReduce: Simplified Data Processing on Large Clusters - Jeffrey Dean and Sanjay Ghemawat Google Inc Sách, tạp chí
Tiêu đề: MapReduce: Simplified Data Processing on Large Clusters
[3] . Azza Abouzeid, Kamil Bajda-Pawlikowski, Daniel Abadi, Avi Silberschatz, and Alexander Rasin. HadoopDB: An architectural hybrid of MapReduce and DBMS technologies for analytical workloads. In Proceedingsof the 35th International Conference on Very Large Data Base (VLDB 2009), pages 922{933, Lyon, France, 2009 Sách, tạp chí
Tiêu đề: An architectural hybrid of MapReduce and DBMS technologies for analytical workloads. In Proceedingsof the 35th International Conference on Very Large Data Base
[4] . Vo Ngoc Anh and Alistair Mo_at. Inverted index compression using word-aligned binary codes. Information Retrieval, 8 (1):151{166, 2005 Sách, tạp chí
Tiêu đề: Inverted index compression using word-aligned binary codes
[5] . Stefan Buttcher, Charles L. A. Clarke, and Gordon V. Cormack. Information Retrieval: Implementing and Evaluating Search Engines.MIT Press, Cambridge, Massachusetts, 2010 Sách, tạp chí
Tiêu đề: Information Retrieval: Implementing and Evaluating Search Engines
[6] . Jonathan Cohen. Graph twiddling in a MapReduce world. Computing in Science and Engineering, 11 (4):29{41, 2009 Sách, tạp chí
Tiêu đề: Graph twiddling in a MapReduce world
[7] . Jeffrey Dean and Sanjay Ghemawat. MapReduce: A exible data processing tool. Communications of the ACM, 53 (1):72{77, 2010 Khác
[8] . F. N. Afrati, A. D. Sarma, D. Menestrina, A. G. Parameswaran, and J. D. Ullman. Fuzzy joins using mapreduce. In ICDE, pages 498–509, 2012. [3] F. N. Afrati and J. D. Ullman. Optimizing multiway joins in a map-reduce environment. TKDE, 23 (9):1282–1298, 2011 Khác
[9] . S. Blanas, J. M. Patel, V. Ercegovac, J. Rao, E. J. Shekita, and Y. Tian. A comparison of join algorithms for log processing in mapreduce. In SIGMOD, pages 975–986, 2010 Khác

HÌNH ẢNH LIÊN QUAN

Hình 1.1. Mô hình chia để trị - (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​
Hình 1.1. Mô hình chia để trị (Trang 14)
Hình 1.2. Hàm Map và Fold trong Functional Programming - (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​
Hình 1.2. Hàm Map và Fold trong Functional Programming (Trang 15)
Hình 5 mô tả 2 giai đoạn của một MapReduce job. - (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​
Hình 5 mô tả 2 giai đoạn của một MapReduce job (Trang 16)
Hình 1.4. Mô hình MapReduce đầy đủ các thành phần - (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​
Hình 1.4. Mô hình MapReduce đầy đủ các thành phần (Trang 19)
Hình 1.5. Kiến trúc của HDFS - (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​
Hình 1.5. Kiến trúc của HDFS (Trang 21)
Hình 1.7. Kiến trúc HDFS đầy đủ - (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​
Hình 1.7. Kiến trúc HDFS đầy đủ (Trang 23)
Hình 1.6. Vai trò của NameNode và DataNode trong HDFS - (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​
Hình 1.6. Vai trò của NameNode và DataNode trong HDFS (Trang 23)
Hình 2.1. Bảo toàn trạng thái trong Hadoop - (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​
Hình 2.1. Bảo toàn trạng thái trong Hadoop (Trang 26)
Hình mô tả việc tạo đối tượng và bản toàn trạng thái trong Hadoop, một đối  tượng Mapper và Reducer được tạo ra tương ứng với một task, hàm Configure được  chạy lúc khởi tạo đối tượng, hàm map/reduce chạy tương ứng với mỗi cặp key-value,  hàm close được c - (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​
Hình m ô tả việc tạo đối tượng và bản toàn trạng thái trong Hadoop, một đối tượng Mapper và Reducer được tạo ra tương ứng với một task, hàm Configure được chạy lúc khởi tạo đối tượng, hàm map/reduce chạy tương ứng với mỗi cặp key-value, hàm close được c (Trang 27)
Hình 2.3. Thời gian chạy của thuật toán "pairs" và "stripes" - (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​
Hình 2.3. Thời gian chạy của thuật toán "pairs" và "stripes" (Trang 33)
Hình cho thấy thời gian để tính toán ma trận đồng hiện trên các phần phân đoạn  khác  nhau  của  tập  văn  bản  APW - (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​
Hình cho thấy thời gian để tính toán ma trận đồng hiện trên các phần phân đoạn khác nhau của tập văn bản APW (Trang 33)
Hình 2.4. Ví dụ minh họa cặp giá trị - (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​
Hình 2.4. Ví dụ minh họa cặp giá trị (Trang 36)
Hình 2.5. Minh họa đơn giản của một chỉ mục ngược. - (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​
Hình 2.5. Minh họa đơn giản của một chỉ mục ngược (Trang 41)
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 - (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​
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 (Trang 44)
Hình  2.7.  Mười  số  nguyên  dương  đầu  tiên  trong  nguyên  phân,  γ,  và  mã  Golomb (b = 5, 10) - (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​
nh 2.7. Mười số nguyên dương đầu tiên trong nguyên phân, γ, và mã Golomb (b = 5, 10) (Trang 50)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w