Tính toán tần số tương đối

Một phần của tài liệ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 (Trang 34 - 37)

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

2.1.3. Tính toán tần số tương đối

Ta sẽ xây dựng trên các cặp và các thuật toán Pairs trình bày trong phần trước và tiếp tục với ví dụ chạy của chúng ta xây dựng từ thể hiện ma trận M cho một ngữ liệu lớn. Nhớ lại rằng trong n vuông lớn × ma trận n, trong đó n = | V | (Kích thước từ vựng), tế bào mij chứa số lần từ wi đồng xảy ra với từ wj trong một bối cảnh cụ thể.

Hạn chế của số lượng tuyệt đối là nó không đưa vào tài khoản thực tế là một số từ xuất hiện thường xuyên hơn những người khác. Lời wi có thể cùng xảy ra thường xuyên với wj đơn giản chỉ vì một trong những từ này là rất phổ biến. Một phương thuốc đơn giản là chuyển đổi số lượng tuyệt đối vào tần số tương đối, f (wj | wi). Đó là, những gì tỷ lệ thời gian, không có gì wj xuất hiện trong bối cảnh wi? Điều này có thể được tính toán bằng cách sử dụng phương trình sau:

Ở đây, N (•, •) cho biết số lần xảy ra đồng thời cặp từ cụ thể được quan sát thấy trong các ngữ liệu. Chúng tôi cần đếm các sự kiện chung (từ cooccurrence), chia cho những gì được gọi là cận biên (tổng của số đếm của máy biến xảy ra đồng thời với bất cứ điều gì khác).

Tính toán tần suất tương đối với cách tiếp cận Pairs là đơn giản. Trong giảm, số lượng của tất cả các từ mà cùng xảy ra với các biến điều (wi trong ví dụ trên) có sẵn trong các mảng kết hợp. Do đó, nó cũng đủ để tổng hợp tất cả những tính để đi đến biên (tức là,.wt N (wi, wr)), và sau đó chia cho tất cả các tính chung của các biên để đi đến các tần số tương đối cho tất cả các từ. Điều này thực hiện yêu cầu sửa đổi tối thiểu để các thuật toán sọc gốc trong thuật toán, và minh họa việc sử dụng các cấu trúc dữ liệu phức tạp để phối hợp tính toán phân phối trong MapReduce. Thông qua cơ cấu thích hợp của các phím và các giá trị, người ta có thể sử dụng lập bản đồ Giảm khuôn khổ thực hiện để mang lại cùng tất cả các mảnh của dữ liệu cần thiết để thực hiện một tính toán. Lưu ý rằng, như với trước đây, thuật toán này cũng tổng hợp như mỗi mảng kết hợp phù hợp với bộ nhớ.

Làm thế nào người ta có thể tính toán tần suất tương đối với cách tiếp cận cặp?

Trong cách tiếp cận cặp, giảm nhận (wi, wj) như là chìa khóa và đếm như giá trị. Từ điều này một mình nó không thể tính f (wj | wi) kể từ khi chúng tôi làm không có biên.

May mắn thay, như trong lập bản đồ, bộ giảm có thể bảo quản nhà nước trên nhiều phím. Bên trong giảm tốc, chúng ta có thể đệm trong bộ nhớ tất cả những từ mà đồng xảy ra với wi và tội của họ, trong bản chất xây dựng các mảng kết hợp trong cách tiếp cận sọc. Để làm công việc này, chúng ta phải xác định thứ tự sắp xếp của các cặp để khóa đầu tiên được sắp xếp theo từ bên trái, và sau đó bằng những từ thích hợp. Với

đặt hàng này, chúng ta có thể dễ dàng phát hiện nếu tất cả các cặp kết hợp với các từ ngữ chúng tôi đều có điều trên (wi) đã gặp phải. Vào thời điểm đó chúng ta có thể quay trở lại thông qua bộ đệm trong bộ nhớ, tính toán tần số tương đối, và sau đó phát ra những kết quả trong cặp khóa-giá trị cuối cùng.

Có thêm một thay đổi cần thiết để làm cho công việc của thuật toán này. Chúng ta phải đảm bảo rằng tất cả các cặp với từ trái cùng được gửi đến giảm tương tự. Điều này, không may, không xảy ra tự động: nhớ lại rằng các phân vùng mặc định dựa trên giá trị băm của khóa trung gian, theo modulo số lượng gia giảm. Đối với một chìa khóa phức tạp, các đại diện byte liệu được sử dụng để tính toán các giá trị băm. Kết quả là, không có đảm bảo rằng, ví dụ, (chó, lợn đất) và (chó, ngựa vằn) được gán cho là sản phẩm giảm tương tự. Để sản xuất ra các hành vi mong muốn, chúng ta phải xác định một phân vùng tùy chỉnh mà chỉ chú ý đến từ bên trái. Đó là, các phân vùng cần phân vùng dựa trên các hash của chỉ từ bên trái.

Thuật toán này sẽ thực sự làm việc, nhưng nó bị những hạn chế tương tự như phương pháp Pairs: như kích thước của tập văn bản phát triển, do đó, không có kích thước từ vựng, và tại một số điểm sẽ không có đủ bộ nhớ để lưu trữ tất cả các đồng xảy ra từ và đếm của họ cho từ chúng tôi đang điều trên. Đối với việc tính toán ma trận đồng xảy ra, lợi thế của phương pháp tiếp cận cặp là nó không bị bất kỳ tắc nghẽn bộ nhớ. Có cách nào để thay đổi cách tiếp cận cặp cơ bản để lợi thế này được giữ lại?

Khi nó quay ra, một thuật toán như vậy là thực sự tốt, mặc dù nó đòi hỏi sự phối hợp của một số cơ chế trong MapReduce. Sự thấu hiểu nằm trong trình tự đúng liệu trình bày đến giảm tốc. Nếu nó đã có thể đôi khi cách tính (hoặc nếu không có được quyền truy cập vào) các biên trong giảm tốc trước khi xử lý số lượng doanh, bộ giảm chỉ có thể phân chia số lượng chung của các biên để tính toán tần số tương đối.

Khái niệm "trước" và "sau" có thể bị bắt trong sự sắp đặt của cặp khóa-giá trị, có thể được kiểm soát một cách rõ ràng bởi các lập trình viên. Đó là, các lập trình viên có thể xác định thứ tự sắp xếp của các phím để các dữ liệu cần thiết trước đó được trình bày cho các dữ liệu giảm mui được- đó là cần thiết sau này. Tuy nhiên, chúng ta vẫn cần phải tính toán số lượng biên. Nhớ lại rằng trong thuật toán cặp căn bản, mỗi mapper phát ra một cặp khóa-giá trị với các cặp từ xảy ra đồng thời như là chìa khóa. Để tính toán tần số tương đối, chúng ta sửa đổi các mapper để nó thêm phát ra một "đặc biệt"

quan trọng của hình thức (wi, *), với giá trị của một, đại diện cho sự đóng góp của các cặp từ để các biên. Với việc sử dụng các tổ hợp, các tính biên một phần sẽ được tổng hợp trước khi được gửi đến gia giảm. Ngoài ra, mô hình kết hợp trong mapper có thể được sử dụng để tổng hợp nhiều hơn hiệu quả đếm biên.

Trong giảm tốc, chúng ta phải đảm bảo rằng các cặp khóa-giá trị đặc biệt của đại diện resenting những đóng góp biên một phần được xử lý trước khi các cặp khóa- giá trị bình thường đại diện cho số lượng doanh. Điều này được thực hiện bằng cách

xác định thứ tự sắp xếp của các phím để cặp với các biểu tượng đặc biệt trong mẫu (wi, *) được đặt hàng trước bất kỳ cặp khóa-giá trị khác mà từ trái là wi. Ngoài ra, như với trước khi chúng ta cũng phải xác định đúng các phân vùng phải chú ý đến chỉ từ trái trong mỗi cặp. Với các dữ liệu trình tự đúng cách, giảm tốc có thể trực tiếp tính toán tần số tương đối.

Một ví dụ cụ thể được thể hiện trong hình, trong đó liệt kê trình tự các cặp giá trị Key-mà giảm có thể gặp. Thứ nhất, giảm được trình bày với các phím đặc biệt (dog,

*) và một số các giá trị, mỗi trong số đó đại diện cho một biệt tiềm đóng góp biên từ giai đoạn bản đồ (giả sử ở đây, hoặc tổ hợp hoặc trong-mapper kết hợp, vì vậy các giá trị đại diện cho số lượng một phần tổng hợp). Việc giảm tích tụ các tính đến nơi ở biên,.wt N (dog, wr).

Việc giảm nắm giữ trên để giá trị này là nó xử lý các khóa tiếp theo. Sau (dog,

*), là sản phẩm giảm sẽ gặp phải một loạt các phím đại diện cho số lượng doanh; hãy nói rằng người đầu tiên trong số này là khóa (dog, aarvark). Kết hợp với khóa này

Hình 2.4. Ví dụ minh họa cặp giá trị

Ví dụ về trình tự các cặp khóa-giá trị trình bày với Reducer trong thuật toán cặp để tính tần số tương đối. Điều này cho thấy việc áp dụng các mẫu thiết kế để đảo ngược. Sẽ có một danh sách các giá trị đại diện cho số lượng doanh một phần từ giai đoạn bản đồ (hai giá trị riêng biệt trong trường hợp này). Tổng hợp các tính sẽ mang tính liên kết, tức là, số lần con chó và lợn đất đồng xảy ra trong toàn bộ bộ sưu tập. Tại thời điểm này, kể từ khi giảm tốc đã biết biên, giản ple số học đủ để tính toán tần số tương đối. Tất cả các tính chung sau đó được xử lý một cách chính xác theo cách tương tự. Khi giảm tốc gặp sự đặc biệt tiếp theo cặp khóa-giá trị (doge, *), là sản phẩm giảm reset trạng thái nội bộ của mình và bắt đầu tích lũy biên trên một lần nữa. Nhận thấy rằng các yêu cầu bộ nhớ cho thuật toán này là rất ít, vì chỉ có biên (một số nguyên) cần phải được lưu trữ. Không đệm đếm từ xảy ra đồng cá nhân là cần thiết, và do đó chúng tôi đã loại bỏ các nút cổ chai khả năng mở rộng của thuật toán trước đó.

Mẫu thiết kế này, mà chúng ta gọi là "trật tự đảo ngược", xuất hiện đáng ngạc nhiên thường xuyên và trên các ứng dụng trong nhiều lĩnh vực. Nó như vậy được đặt tên vì thông qua sự phối hợp thích hợp, chúng ta có thể truy cập vào kết quả của một

phép tính trong giảm tốc (ví dụ, một số liệu thống kê tổng hợp) trước khi xử lý các dữ liệu cần thiết để tính toán đó. Sự thấu hiểu chính là chuyển đổi các trình tự tính toán vào một vấn đề phân loại. Trong hầu hết các trường hợp, một thuật toán đòi hỏi dữ liệu theo một trật tự nhất định: bằng cách kiểm soát cách các phím được sắp xếp và làm thế nào các không gian chính là phân vùng, chúng tôi có thể trình bày dữ liệu đến giảm theo thứ tự cần thiết để thực hiện các tính toán thích hợp. Điều này giúp giảm số lượng kết quả một phần là giảm tốc cần nắm giữ trong bộ nhớ.

Để tóm tắt, các ứng dụng cụ thể của các mẫu thiết kế để đảo ngược để tính toán tần số tương đối yêu cầu sau đây:

1. Phát ra một cặp khóa-giá trị đặc biệt cho mỗi cặp từ đồng xảy ra trong mapper để nắm bắt việc đóng góp cho biên.

2. Kiểm soát thứ tự sắp xếp của các chính trung gian để các cặp khóa-giá trị thể hiện sự đóng góp cận biên được xử lý bởi giảm tốc trước khi bất kỳ của các cặp đại diện từ doanh đếm đồng xảy ra.

3. Xác định một phân vùng tùy chỉnh để đảm bảo rằng tất cả các cặp cùng bên trái từ được xáo trộn đến giảm tương tự.

4. Bảo tồn nhà nước trên nhiều phím trong bộ giảm đầu tiên tính toán biên dựa trên các cặp khóa-giá trị đặc biệt và sau đó chia cho số đếm chung của dữ liệu lề để đi đến các tần số tương đối.

Như chúng ta sẽ thấy, mẫu thiết kế này cũng được sử dụng trong xây dựng chỉ số ngược để thiết lập đúng thông số nén cho các danh sách thông tin đăng.

Một phần của tài liệ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 (Trang 34 - 37)

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

(77 trang)