Tải bản đầy đủ (.docx) (22 trang)

Báo cáo tìm các tập tài liệu tương tự bigdata

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (485.85 KB, 22 trang )

ĐẠI HỌC KHOA HỌC TỰ NHIÊN HÀ NỘI
KHOA TOÁN – CƠ – TIN HỌC
_________________________

BÁO CÁO NHẬP MÔN
KHAI PHÁ CÁC TẬP DỮ LIỆU LỚN

ĐỀ TÀI
TÌM CÁC TẬP DỮ LIỆU TƯƠNG TỰ

Teacher:

Cao Văn Chung

Students:

Lương Thị Thu Hương - 19000439
Ngô Phương Thảo - 19000488

MỤC LỤC


MỞ ĐẦU

2

CHƯƠNG I : TỔNG QUAN

4

1.



Bài tốn tìm kiếm các văn bản tương tự trong tập văn bản lớn

4

2.

Ý nghĩa của việc tìm tập dữ liệu tương tự

4

3.

Tương tự Jaccard

5

CHƯƠNG II : PHƯƠNG PHÁP SHINGLING

7

1.

Giới thiệu

7

2.

k-Shingles


7

3.

Chọn kích thước Shingle

8

4.

Hashing Shingles

8

5.

Shingles được xây dựng từ Words

8

CHƯƠNG III : PHƯƠNG PHÁP MINHASHING

10

1.

Giới thiệu

10


2.

Thuật toán MinHash

10

3.

Sự giống nhau của Minhashing và Jaccard

11

4.

Minhash Signatures

12

CHƯƠNG IV : PHƯƠNG PHÁP LOCALITY SENSITIVE HASHING

13

1.

Giới thiệu

13

2.


Phương pháp LSH cho Minhash Signatures

13

3.

Phân tích phương pháp LSH

14

CHƯƠNG V : TỔNG KẾT

16

TÀI LIỆU THAM KHẢO

17

2


MỞ ĐẦU
Trước đây, chúng ta mới chỉ biết đến dữ liệu có cấu trúc (structure data).
Ngày nay, với sự kết hợp của dữ liệu và internet, đã xuất hiện một dạng dữ liệu
khác là Big data (Dữ liệu lớn). Dữ liệu này có thể từ các nguồn như: hồ sơ hành
chính, giao dịch điện tử, dịng trạng thái, chia sẻ hình ảnh, bình luận, tin nhắn... của
chính chúng ta, nói cách khác chúng là dữ liệu được sản sinh qua q trình chia sẻ
thơng tin trực tuyến liên tục của người sử dụng. Dữ liệu lớn đề cập đến dữ liệu và
thông tin mà chúng ta không thể được xử lý hoặc xử lý thông qua các hệ thống

phần mềm truyền thống hiện tại. Dữ liệu lớn là bộ dữ liệu có cấu trúc và phi cấu
trúc lớn cần được xử lý bằng các kỹ thuật phân tích nâng cao và các kỹ thuật trừu
tượng để khám phá các mẫu ẩn và tìm các mối tương quan chưa biết giúp cải thiện
tiến trình đưa ra quyết định.
Một trong những vấn đề cơ bản trong khai thác dữ liệu lớn là khám phá dữ
liệu để tìm các mục tương tự với nhau. Trong thời đại công nghệ số như hiện nay,
các nguồn tài liệu là vô cùng phong phú. Việc “sao chép tài liệu” theo nghĩa tiêu
cực như đạo văn, sao chép các luận án, luận văn, đồ án trở nên phổ biến và là một
vấn nạn. Vậy phải làm thế nào để ngăn chặn vấn nạn này để chúng không trở nên
ngày một tệ hơn? Hiện tại đã có một số giải pháp cho việc phát hiện sao chép và
một vài công cụ phần mềm cho phép phát hiện một tài liệu (gọi là văn bản kiểm
tra) có sao chép từ một tập hợp các tài liệu nguồn hay không. Các phương pháp
này chủ yếu dựa trên tìm kiếm và so khớp chuỗi, chỉ thực sự có hiệu quả nếu việc
sao chép là “nguyên văn”. Trong bài báo cáo này, chúng em sẽ trình bày về các
phương pháp để tìm các tập dữ liệu tương tự. Cụ thể là tìm kiếm các văn bản tương
tự trong tập văn bản có khối lượng dữ liệu lớn.

3


CHƯƠNG I : TỔNG QUAN
1. Bài tốn tìm kiếm các văn bản tương tự trong tập văn bản lớn
Tìm các mục tương tự trong dữ liệu là một trong những vấn đề cơ bản với khai
phá dữ liệu. Phương pháp Shingling được sử dụng để giải quyết vấn đề tìm tài liệu,
văn bản, hình ảnh và âm thanh tương tự (gọi chung là tài liệu), dựa trên tập dữ liệu
lớn. Sau đó, các bộ dữ liệu lớn này có thể được nén dựa trên mức độ giống nhau
của các bộ chính và chúng có thể được phân biệt với các đối tác đã nén của chúng
bằng cách sử dụng Min Hashing. Nếu chúng ta muốn tránh so sánh tất cả các tài
liệu với nhau và chỉ so sánh các tài liệu có xác suất cao sẽ trùng lặp thì chúng ta
nên sử dụng phương pháp Locality-Sensitive Hashing (LSH). Trong bài báo cáo

này, chúng em sẽ trình bày phương pháp sử dụng Locality Sensitive Hashing để
tìm kiếm các văn bản tương tự trong tập văn bản. Phương pháp này sẽ lần lượt thực
hiện qua ba bước. Bước đầu tiên là Shingling, đây là bước chuyển đổi tập dữ liệu
văn bản và thiết lập đại diện mỗi văn bản một ID, sau đó đến bước Min Hashing
chuyển đổi tập hợp dữ liệu lớn thành signatures trong khi vẫn giữ được tính chất
đặc trưng ban đầu của tập dữ liệu này. Bước cuối cùng là sử dụng phương pháp
Locality-Sensitive Hashing để tập trung so sánh các cặp signatures có thể trùng lặp
nhau và cho ra kết quả với xác suất cao nhất có thể.
2. Ý nghĩa của việc tìm tập dữ liệu tương tự
Ban đầu, chúng ta sẽ xem xét một số vấn đề về khai thác dữ liệu phù hợp với
mơ hình khai thác cho các tập hợp tương tự. Chúng ta có thể xem các trang web
dưới dạng tập hợp các từ chứa trong đó, nếu hai trang có các nhóm từ giống nhau,
có thể chúng cùng một chủ đề.
Ví dụ: Mọi người tạo hồ sơ dữ liệu về chính họ tại nhiều trang web khác nhau
như Google, Amazon, Facebook,... chúng ta có thể muốn biết khi nào hai bản ghi
đề cập đến cùng một cá nhân và nhu cầu này làm phát sinh vấn đề gọi là giải quyết
thực thể, xác định tập hợp các bản ghi đề cập đến cùng một cá nhân. Để xem vấn
đề, nhiều trang web sẽ yêu cầu số điện thoại nhưng bạn có thể cung cấp số điện
thoại cố định của mình ở một trang web, số điện thoại di động của bạn ở một trang
web khác, không cung cấp một số nào ở trang web thứ ba và nhập sai số của bạn ở
trang web thứ tư. Tuy nhiên chúng ta có thể vượt qua các lỗi và bằng cách coi bản
4


ghi là một tập hợp các cặp giá trị thuộc tính. Các bản ghi có bộ cặp giá trị thuộc
tính tương tự ngay cả khi không giống hệt nhau cũng có thể đại diện cho cùng một
cá nhân và những bản ghi này có thể được hợp nhất để kết hợp thông tin của
chúng.
Chúng ta sẽ tập trung vào một ứng dụng quan trọng cụ thể, tìm các tài liệu
tương tự nhau về mặt từ vựng trong một bộ sưu tập lớn các tài liệu chẳng hạn như

web. Các trang web phản chiếu thường gần như giống nhau, nhưng chúng sẽ khác
nhau như thông tin về trang chủ của trang và liên kết đến các trang phản chiếu
khác. Các công cụ tìm kiếm sử dụng một kỹ thuật giống như kỹ thuật mà chúng ta
sẽ học để chúng không hiển thị nhiều hơn một trong số các trang web nhân bản.
Một ứng dụng khác của việc tìm kiếm các tài liệu tương tự về mặt từ vựng là tìm
kiếm các văn bản đạo văn. Ví dụ những người gửi thư rác sẽ lấy trang web của
bạn, cung cấp cho trang một URL mới và đặt quảng cáo xung quanh đó. Người đạo
văn có thể thơng minh chỉ lấy một phần của tài liệu đạo văn, sắp xếp lại các phần
có thể thay đổi một từ ở đây và ở đó. Chúng ta vẫn muốn có thể tìm thấy các cặp
tài liệu như vậy trong một bộ sưu tập lớn như web mà không cần phải so sánh tất
cả các cặp tài liệu. Hay một vài ứng dụng khác liên quan đến các trang web như
Google News tổng hợp các câu chuyện mới. Một bài báo có thể được viết bởi
Associated Press và được phân phát cho hàng nghìn tờ báo và trang tin tức trực
tuyến. Mỗi người sẽ thực hiện các sửa đổi, có thể cắt ngắn câu chuyện, bao quanh
bởi các quảng cáo… Điều quan trọng đối với người tổng hợp là nhận ra rằng hai
trang web đang nói đến cùng một câu chuyện bởi vì chúng đến từ cùng một bản
gốc ngay cả khi chúng đã được sửa đổi đáng kể.
3. Tương tự Jaccard
Để tiếp cận bài toán, chúng ta cần tập trung vào khái niệm độ tương tự giữa các
văn bản trong tập dữ liệu văn bản. Một tài liệu sẽ được đại diện bởi một mục trong
tập dữ liệu văn bản lớn và sự giống nhau giữa các tài liệu sẽ phụ thuộc vào giao
điểm giữa các mục này. Dựa trên điều này, ta tìm kiếm mục gần nhất với những gì
chúng ta đang xem. Để phân tích sự tương đồng này, chúng em sẽ phân tích và
điều tra dựa trên Tương tự Jaccard. Độ giống nhau của Jaccard của hai tập hợp
bằng tỷ lệ giữa giá trị giao điểm của các tập hợp với giá trị liên hợp của nó. Cụ thể,
độ tương tự Jaccard của các tập S và T sẽ được thể hiện dưới dạng SIM(S,T), được
tính theo cơng thức sau:
5



S ∩T

SIM(S,T) = S ∪ T
Tức là tỷ số của kích thước giao điểm của S và T với kích thước của giao hội của
chúng. Khía cạnh tương tự giữa các văn bản mà chúng ta đang đề cập ở đây là sự
tương đồng về mức độ của các ký tự trong một văn bản chứ không phải là sự giống
nhau về ý nghĩa của các văn bản. Đó là lý do tại sao chúng ta nên xét tất cả các ký
tự hiện có trong tài liệu. Tìm kiếm điểm tương đồng trong các văn bản có các ứng
dụng khác nhau, một số ứng dụng bao gồm tìm kiếm các văn bản lặp lại, các văn
bản tương tự nhau và phát hiện đạo văn.
Ví dụ: Nếu chúng ta có hai câu này từ bản tóm tắt trên giấy:
1. India is one of the epicentres of the global diabetes mellitus pandemic.
2. Diabetes mellitus occurs commonly in the older patient and is frequently
undiagnosed.
Vì vậy, các từ khơng dừng trong tài liệu 1 và 2 là:
{'diabetes', 'epicentres', 'global', 'india', 'mellitus', 'one', 'pandemic'}
{'commonly', 'diabetes', 'frequently', 'mellitus', 'occurs', 'older', 'patient',
'undiagnosed'}

Có hai từ chung (diabetes, mellitus) và tổng cộng có 13 từ.
Vậy chỉ số tương tự Jaccard của hai tài liệu là 2/13 = 15%.

6


7


CHƯƠNG II : PHƯƠNG PHÁP SHINGLING
1. Giới thiệu

Cách hiệu quả nhất để biểu diễn các tài liệu dưới dạng các tập hợp, với mục
đích xác định các tài liệu tương tự về mặt từ vựng là xây dựng từ tài liệu tập hợp
các chuỗi ngắn xuất hiện trong đó. Nếu chúng ta làm như vậy, thì các tài liệu chia
sẻ các phần ngắn như câu hoặc thậm chí cả cụm từ sẽ có nhiều thành phần chung
trong tập hợp của chúng, ngay cả khi những câu đó xuất hiện theo thứ tự khác nhau
trong hai tài liệu.
Một trong những phương pháp hiệu quả nhất để xác định các tài liệu văn bản
tương tự là Shingling. Trong phương pháp này, các tài liệu được hiển thị dưới dạng
bộ. Có nghĩa là các bộ được tạo bằng cách sử dụng các tài liệu. Các bộ này bao
gồm các chuỗi ngắn được chọn từ các tài liệu. Những chuỗi ngắn này được gọi là
Shingling. Điều đó có nghĩa là các shingles được chọn của từng tài liệu và sẽ được
đặt trong bộ liên quan đến tài liệu đó. Sử dụng độ tương tự Jaccard của các bộ này,
có thể tính được mức độ tương tự của chúng.
Shingling được trình bày vào năm 1997 bởi Broder và cộng sự. Thuật toán
Shingling dựa trên tập hợp các bộ từ (token) chồng lên nhau (giả sử là k token).
Trong Shingling, tất cả các chuỗi con từ của các từ liền kề sẽ được trích xuất. Qua
đó, mỗi tài liệu D lấy được một tập SD. Đó là việc chuyển đổi một tài liệu thành
một tập hợp của các shingle (có thể là các k-gram) độc nhất (tức là các chuỗi con
kề nhau của k tokens). Sự giống nhau giữa hai tài liệu được đo bằng cách sử dụng
hệ số Jaccard giữa các vectơ shingle. Các tài liệu có độ tương đồng cao được coi là
gần như trùng lặp. Xem xét trình tự của các từ trong một tài liệu. Tập hợp các
shingle cấu thành tập các đặc trưng của một tài liệu. Shingling có thể kiểm tra
trùng lặp giữ lại một phần ngữ cảnh của tài liệu. Tuy nhiên có một vấn đề xảy ra
khi lưu trữ tập shingle lớn, việc kiểm tra trùng lặp trở nên khó khăn và khơng khả
thi trong thực tế.
2. k-Shingles

Tài liệu là một chuỗi ký tự. Định nghĩa một k-shingle cho một tài liệu là bất kỳ
chuỗi con nào có độ dài k được tìm thấy trong tài liệu. Sau đó, ta có thể liên kết với
mỗi tài liệu tập hợp k-shingles xuất hiện một hoặc nhiều lần trong tài liệu đó. Có

8


một số tùy chọn liên quan đến cách xử lý khoảng trắng (trống, tab, dịng mới, v.v.).
Có thể hợp lý khi thay thế bất kỳ chuỗi nào gồm một hoặc nhiều ký tự khoảng
trắng bằng một khoảng trống. Bằng cách đó, ta phân biệt được shingles bao gồm
hai từ trở lên với những từ khơng có.
Ví dụ 1: Giả sử tài liệu D là chuỗi ‘abcdabd’ và chúng ta chọn k = 2. Sau đó, tập 2
shingles cho D là {ab, bc, cd, da, bd}.
Lưu ý rằng chuỗi con ab xuất hiện hai lần trong D, nhưng chỉ xuất hiện một lần
dưới dạng shingle. Một biến thể của shingling tạo ra một cái túi, thay vì một bộ, vì
vậy mỗi shingling sẽ xuất hiện trong kết quả nhiều lần như nó xuất hiện trong tài
liệu.
Ví dụ 2: Nếu chúng ta sử dụng k = 9, nhưng loại bỏ hoàn toàn khoảng trắng, thì
chúng ta sẽ thấy một số điểm tương đồng về từ vựng trong câu "The plane was
ready for touchdown" và "The quarterback scored a touchdown". Tuy nhiên, nếu
chúng ta giữ lại các ơ trống, thì ơ đầu tiên có các shingles “touch and touch down”,
trong khi ơ thứ hai có các ơ “touch down”. Nếu chúng ta loại bỏ các khoảng trống,
thì cả hai sẽ có “touch”.

3. Chọn kích thước Shingle
Chúng ta có thể chọn k là bất kỳ hằng số nào chúng ta muốn. Tuy nhiên, nếu
chúng ta chọn k quá nhỏ, thì chúng ta sẽ mong đợi hầu hết các chuỗi ký tự k xuất
hiện trong hầu hết các tài liệu. Nếu đúng như vậy, thì chúng ta có thể có các tài liệu
có shingle-sets có độ tương đồng Jaccard cao, nhưng các tài liệu không có câu
hoặc thậm chí cụm từ nào giống nhau. Một ví dụ cực đoan, nếu chúng ta sử dụng k
= 1, hầu hết các trang Web sẽ có hầu hết các ký tự phổ biến và ít ký tự khác, vì vậy
hầu hết các trang Web sẽ có độ tương đồng cao.
Độ lớn của k phụ thuộc vào độ dài của các tài liệu điển hình và độ lớn của tập
hợp các ký tự điển hình. Vì vậy k nên được chọn đủ lớn để xác suất của bất kỳ

shingle nhất định nào xuất hiện trong bất kỳ tài liệu cụ thể nào là thấp.
9


4. Hashing Shingles
Thay vì sử dụng các chuỗi con trực tiếp như shingles, chúng ta có thể chọn một
hàm băm ánh xạ các chuỗi có độ dài k tới một số nhóm và coi số nhóm kết quả là
shingle. Tập hợp đại diện cho một tài liệu sau đó là tập hợp các số nguyên là số
nhóm của một hoặc nhiều k-shingles xuất hiện trong tài liệu. Chẳng hạn, chúng ta
có thể xây dựng tập hợp 9-shingles cho một tài liệu và sau đó ánh xạ từng lớp trong
số 9 shingles đó tới một số nhóm trong khoảng từ 0 đến 2 32 - 1. Do đó, mỗi lớp
shingle được biểu thị bằng bốn bytes thay vì chín. Dữ liệu khơng chỉ được nén mà
giờ đây chúng ta có thể thao tác (băm) shingles bằng các thao tác máy đơn từ. Lưu
ý rằng chúng ta có thể phân biệt các tài liệu tốt hơn nếu chúng ta sử dụng 9shingles và băm chúng xuống còn 4 bytes so với sử dụng 4-shingles, mặc dù không
gian được sử dụng để biểu diễn một shingle là như nhau. Nếu chúng ta sử dụng 4shingles, hầu hết các chuỗi 4 bytes sẽ không thể hoặc khơng thể tìm thấy trong các
tài liệu điển hình. Do đó, số lượng hiệu quả của shingles khác nhau ít hơn nhiều so
với 232 - 1.
5. Shingles được xây dựng từ Words
Một dạng thay thế của Shingle a cho thấy hiệu quả đối với vấn đề xác định các bài
báo tương tự. Điểm khác biệt có thể khai thác đối với vấn đề này là các văn bản
được viết theo một phong cách khá khác so với các yếu tố khác thường xuất hiện
trên trang có văn bản. Tuy nhiên, đối với vấn đề tìm kiếm các văn bản tương tự,
người ta thấy rằng việc xác định shingle là một từ theo sau là hai từ tiếp theo, bất
kể chúng có phải là từ đó hay khơng, đã tạo thành một tập hợp shingle hữu ích. Ưu
điểm của cách tiếp cận này là văn bản sau đó sẽ đóng góp nhiều shingle hơn cho
tập hợp đại diện cho trang Web hơn là các yếu tố xung quanh. Nhớ lại rằng mục
tiêu của bài tập là tìm các trang có cùng bài viết, bất kể các yếu tố xung quanh.
Bằng cách thiên vị tập hợp các shingle có lợi cho bài báo, các trang có cùng một
bài báo và các tài liệu xung quanh khác nhau có độ tương đồng Jaccard cao hơn
các trang có cùng tài liệu xung quanh nhưng có một bài báo khác.


10


CHƯƠNG III : PHƯƠNG PHÁP MINHASHING
1. Giới thiệu
MinHash là một cách tiếp cận mới với khả năng sử dụng bộ nhớ không phụ
thuộc vào độ dài của tài liệu đồng thời cung cấp phương thức tốt hơn để tính tốn
độ tương đồng. Cách tiếp cận này dựa trên việc băm mỗi tài liệu ra một tập cố định
các hash như một dạng chữ kí thơ của tài liệu đó. Việc làm này có 2 lợi điểm lớn:
Về lưu trữ mỗi tài liệu chỉ yêu cầu không gian lưu trữ O(1) về mặt độ phức tạp tính
tốn trùng lặp cặp tài liệu đem ra so sánh cũng chỉ là O(1). Các đặc trưng mà
chúng ta muốn xây dựng cho các tập hợp bao gồm các kết quả của một số lượng
lớn các phép tính, chẳng hạn như vài trăm phép tính, mỗi phép tính là một
“minhash” của ma trận đặc trưng. Để minhash một tập hợp được đại diện bởi một
cột của ma trận đặc trưng, hãy chọn một hoán vị của các hàng. Giá trị minhash của
bất kỳ cột nào là số của hàng đầu tiên, theo thứ tự hoán vị, trong đó cột có 1.
Thuật tốn MinHash sẽ giúp chúng ta một giá trị xấp xỉ giá trị của Jaccard
Similarity của hai tập dữ liệu. Ưu điểm của MinHash:
- Có chiều dài đầu ra cố định
- Khơng phụ thuộc vào chiều dài đầu vào.
Để tính giá trị xấp xỉ Jaccard Similarity (MinHash signatures), đầu tiên ta sẽ tính
MinHash của hai tập data, được 2 giá trị hash, sau đó đếm giá trị trùng nhau của 2
chuỗi hash và chia chiều dài giá trị hash, chúng ta sẽ được một giá trị xấp xỉ giá trị
Jaccard Similarity.
Sử dụng Minhash đã cải thiện rất lớn việc tính tốn trùng lặp giữa cặp tài liệu
bất kì. Nhưng trong thực tế chúng ta phải đối mặt với vấn đề truy vấn việc trùng
lặp một tài liệu mới với một tập các tài liệu có sẵn, áp dụng phương pháp này thì
độ phức tạp thời gian tính tốn đã trở nên tuyến tính O(n). Chúng ta phải thu thập
tất cả dữ liệu từ các bài tin và xác định tất cả sự trùng lặp của các trang tin, số

lượng tin tức phải xử lý trùng lặp lên đến hàng triệu trang, ở điểm này dường như
Minhash có thể trở nên hạn chế hơn về tốc độ.
2. Thuật toán MinHash
Ý tưởng của thuật toán:
11


h(x) = (ax+b)
Trong đó:
h(x) là hàm hash.
x là số nguyên đầu vào, a và b là hai số được chọn ngẫu nhiên với điều kiện
a và b < x.
c là số nguyên tố được chọn ngẫu nhiên, với điều kiện c lớn hơn x.
Cách thuật toán thực hiện như sau:
Với 1 văn bản, chạy thuật toán hash 10 lần, do ta có số a và b là ngẫu nhiên
nên 10 lần chạy sẽ cho ra các kết quả khác nhau, lấy giá trị hash nhỏ nhất (do đó
thuật tốn có tên là Minhash) làm thành phần đầu tiên của MinHash signature. Lặp
lại q trình trên 10 lần, chúng ta có MinHash signature với 10 giá trị.
3. Sự giống nhau của Minhashing và Jaccard
Có một mối liên hệ đáng chú ý giữa sự tương đồng giữa Minhashing và Jaccard
của các bộ được minhash. Xác suất mà hàm minhash đối với một hoán vị ngẫu
nhiên của các hàng tạo ra cùng một giá trị cho hai tập hợp bằng với độ tương tự
Jaccard của các tập hợp đó.
Để biết tại sao, chúng ta cần hình dung các cột của hai tập hợp đó. Nếu chúng ta
giới hạn bản thân trong các cột của tập hợp S1 và S2, thì các hàng có thể được chia
thành ba lớp:
1. Loại X hàng có 1 trong cả hai cột.
2. Hàng loại Y có 1 ở một trong các cột và 0 ở cột kia
3. Loại Z hàng có 0 trong cả hai cột.
Vì ma trận thưa thớt nên hầu hết các hàng thuộc loại Z. Tuy nhiên, tỷ lệ giữa các số

của hàng loại X và loại Y xác định cả SIM(S1, S2) và xác suất mà h(S1) = h(S2).
Giả sử có x hàng loại X và y hàng loại Y . Khi đó SIM(S1, S2) = x/(x + y). Lý do
là x là kích thước của S1 ∩ S2 và x + y là kích thước của S1 ∪ S2.
Bây giờ, hãy xem xét xác suất mà h(S1) = h(S2). Nếu chúng ta tưởng tượng
các hàng được hoán vị ngẫu nhiên và chúng ta tiến hành từ trên xuống, thì xác suất
chúng ta gặp hàng loại X trước khi gặp hàng loại Y là x/(x + y). Nhưng nếu hàng
đầu tiên từ trên xuống khơng phải hàng loại Z là hàng loại X thì chắc chắn h(S1) =
h(S2). Mặt khác, nếu hàng đầu tiên không phải là hàng loại Z mà chúng ta gặp là
hàng loại Y, thì tập hợp có 1 sẽ lấy hàng đó làm giá trị minhash của nó. Tuy nhiên,
12


tập hợp có 0 trong hàng đó chắc chắn sẽ có một số hàng tiếp theo trong danh sách
được hốn vị. Do đó, chúng ta biết h(S1) khác h(S2) nếu lần đầu tiên chúng ta gặp
một hàng loại Y. Chúng tôi kết luận xác suất mà h(S1) = h(S2) là x/(x + y), đây
cũng là sự tương tự Jaccard của S1 và S2.
4. Minhash Signatures
Một tập hợp các tập hợp được biểu diễn bởi ma trận đặc trưng M của chúng.
Để biểu diễn các tập hợp, chúng ta chọn ngẫu nhiên một số n hoán vị của các hàng
của M. Có lẽ 100 hốn vị hoặc vài trăm hốn vị là đủ. Gọi các hàm minhash được
xác định bởi các hoán vị h1, h2, . . . , hn. Từ cột đại diện cho tập hợp S, hãy xây
dựng chữ ký minhash cho S, vectơ [h1(S), h2(S), . . . , hn(S)]. Do đó, chúng ta có
thể tạo từ ma trận M một ma trận chữ ký, trong đó cột thứ i của M được thay thế
bằng chữ ký minhash cho (tập hợp) cột thứ i. Ma trận chữ ký có cùng số cột như M
nhưng chỉ có n hàng. Ngay cả khi M không được biểu diễn rõ ràng, nhưng ở dạng
nén nào đó phù hợp với ma trận thưa thớt (ví dụ: theo vị trí của các số 1 của nó),
ma trận chữ ký nhỏ hơn nhiều so với M là điều bình thường.
Khơng thể hốn vị rõ ràng một ma trận đặc trưng lớn. Ngay cả việc chọn
một hoán vị ngẫu nhiên của hàng triệu hoặc hàng tỷ hàng cũng tốn thời gian và
việc sắp xếp các hàng cần thiết sẽ còn mất nhiều thời gian hơn. May mắn thay, có

thể mơ phỏng tác động của hốn vị ngẫu nhiên bằng một hàm băm ngẫu nhiên ánh
xạ số hàng tới nhiều nhóm cũng như số hàng. Hàm băm ánh xạ các số nguyên 0,
1, . . . , k - 1 tới các số nhóm từ 0 đến k-1 thường sẽ ánh xạ một số cặp số nguyên
vào cùng một nhóm và để trống các nhóm khác. Tuy nhiên, sự khác biệt khơng
quan trọng vì u cầu dài lớn và khơng có q nhiều va chạm. Chúng ta có thể duy
trì giả thuyết rằng hàm băm h của chúng ta “hốn vị” hàng r sang vị trí h(r) theo
thứ tự được hốn vị. Do đó, thay vì chọn n hoán vị ngẫu nhiên của các hàng, chúng
ta chọn n hàm băm được chọn ngẫu nhiên h1, h2, . . . , hn trên các hàng. Chúng ta
xây dựng ma trận chữ ký bằng cách xem xét từng hàng theo thứ tự nhất định của
chúng. Đặt SIG(i, c) là phần tử của ma trận chữ ký cho hàm băm thứ i và cột c.
Ban đầu, đặt SIG(i, c) thành ∞ cho tất cả i và c. Chúng ta xử lý hàng r bằng cách
làm như sau:
1. Tính h1(r), h2(r), . . . , hn(r).
2. Đối với mỗi cột c, hãy làm như sau:
a. Nếu c có 0 trong hàng r, khơng làm gì cả.
13


b. Nếu c có 1 trong hàng r, thì với mỗi i = 1, 2, . . . , n đặt SIG(i, c) thành
giá trị nhỏ hơn của giá trị hiện tại của SIG(i, c) và hi(r).

CHƯƠNG IV : PHƯƠNG PHÁP LOCALITY SENSITIVE HASHING
1. Giới thiệu
Mặc dù chúng ta có thể sử dụng minhashing để nén các tài liệu lớn thành các
chữ ký số và duy trì sự giống nhau dự kiến của bất kỳ cặp tài liệu nào, vẫn có thể
khơng thể tìm thấy các cặp có độ tương đồng lớn nhất một cách hiệu quả. Lý do là
số lượng cặp tài liệu có thể quá lớn, ngay cả khi khơng có q nhiều tài liệu. Nếu
mục tiêu của chúng ta là tính tốn độ giống nhau của mỗi cặp, thì chúng ta khơng
thể làm gì để giảm bớt cơng việc, mặc dù tính song song có thể giảm thời gian trôi
qua. Tuy nhiên, chúng ta thường chỉ muốn các cặp giống nhau nhất hoặc tất cả các

cặp nằm trên một giới hạn dưới nào đó về độ tương tự. Nếu vậy, thì chúng ta chỉ
cần tập trung chú ý vào các cặp có khả năng giống nhau mà khơng cần điều tra
từng cặp. Có một lý thuyết chung về cách cung cấp tiêu điểm như vậy, được gọi là
Locality sensitive hashing (LSH) hoặc tìm kiếm lân cận.
Lý thuyết chung cho phương pháp LSH là chúng ta băm các thành phần nhiều
lần sao cho các thành gần giống nhau sẽ băm vào một mảng chung. Sau đó, trong
mỗi phép băm, mỗi cặp được kết nối với một nhóm sẽ được coi như một cặp ứng
cử viên. Để tìm các tài liệu văn bản tương tự nhau trong tập dữ liệu văn bản, ta chỉ
cần xét các cặp ứng cử viên. Trong bài toán phát hiện văn bản giống nhau mà ta
đang giải quyết, tất cả các tài liệu văn bản trong tập dữ liệu sẽ không được xét,
những tài liệu nào không liên quan sẽ được bỏ qua, từ đó hạn chế được nhiều chi
phí cũng như tối ưu hóa được phương pháp giải bài tốn.
2. Phương pháp LSH cho Minhash Signatures
Nếu ta có một minhash signatures của các items trong tập dữ liệu, ta có thể áp
dụng phương pháp LSH bằng cách chia ma trận signatures thành b dải sao cho mỗi
dải bao gồm r hàng (n = br). Sau đó đối với mỗi dải ta sẽ chọn một hàm băm và
hàm vector này sẽ cung cấp nhiều nhóm sử dụng r số nguyên cùng với một số
lượng lớn các hàm băm cho chúng. Chúng ta có thể sử dụng cùng một hàm băm
cho tất cả các dải, nhưng chúng ta sử dụng một mảng riêng để băm trong mỗi dải
để các cột có vector tương tự khơng được kết nối với cùng một nhóm trong các dải
khác nhau.
14


Ví dụ:

Hay như ví dụ bên dưới cho thấy các thành phần của ma trận signatures bao gồm
12 dòng được chia thành 4 dải và mỗi dải có 3 hàng:

15



Trong hình trên, cột thứ hai và thứ tư trong dải đầu tiên hiển thị vectơ [0, 2, 1]
và chúng được kết nối với cùng một nhóm trong phép băm của dải đầu tiên. Do đó,
bất kể thực tế là các cột này có giống nhau ở ba dải khác hay khơng, cặp cột này có
thể được coi là một cặp ứng cử viên. Hơn nữa, hai cột không phù hợp trong dải đầu
tiên có cơ hội trở thành một cặp ứng cử viên trong ba dải khác. Trên thực tế, có thể
chúng giống nhau ở mỗi nhóm khác. Ở bất kỳ mức độ nào, hai cột cực kỳ giống
nhau sẽ giống nhau nhất ở một số dải. Do đó, phương pháp này trực tiếp “match”
các cột tương tự lại với nhau với xác suất cao hơn so với các cặp khác nhau.

3. Phân tích phương pháp LSH
Giả sử ta sử dụng b dải, mỗi dải chứa r hàng và giả sử một cặp tài liệu văn bản
nào đó có Jaccard Similarity với giá trị là s. Ta biết rằng khả năng các minhash
signatures cho các tài liệu văn bản này trong mỗi dòng nhất định của ma trận
signatures phù hợp với nhau bằng s. Khả năng các tài liệu này (hoặc tốt nhất là
signatures của chúng) là một cặp ứng cử viên có thể được tính tốn như sau:
1. Khả năng các signatures trong tất cả các dòng từ một dải nào đó thẳng hàng
với nhau bằng sr
2. Khả năng các signatures trong ít nhất một dịng từ một dải nào đó khơng
thẳng hàng với nhau bằng 1 – sr
3. Khả năng các signatures trong tất cả các dòng từ mỗi dải không thẳng hàng
với nhau bằng (1 – sr)b
16


4. Khả năng các signatures trong ít nhất một dải và tất cả các dịng của dải đó
thẳng hàng với nhau bằng 1 – (1- sr)b
Bất kể các hằng số b và r có giá trị là bao nhiêu thì đồ thị hàm số f(s) = 1 – (1 – s r)b
đều có dạng đường cong như sau:


Ta có một khái niệm mới là “giới hạn ngưỡng” (threshold limit), là số lượng
cặp văn bản tương tự trong s khi quá trình tăng dần của biểu đồ đạt đến giới hạn
cao nhất. Số lượng giới hạn ngưỡng giúp ta xác định chất lượng của sự phát hiện
tương đồng. Chất lượng của sự tương đồng này phụ thuộc vào hai giá trị false
positive và false negative. Giới hạn ngưỡng này là một hàm số của b và r và giá trị
được tính bằng xấp xỉ t = [(1/b)] ^ (1/r). Ví dụ: nếu b = 16 và r = 4, thì ngưỡng xấp
xỉ tại s = ½, vì căn mũ 4 của 1/16 là ½.
Trong phương pháp LSH, có hai khả năng xảy ra là false positive và false
negative. Các kết quả false positive là các cặp khác nhau được băm vào cùng một
nhóm và false negative là các cặp tương tự khơng được gửi đến cùng một nhóm.
Có nghĩa là các kết quả false negative là các cặp bị nhầm lẫn khơng được coi là
một cặp ứng viên. Như đã trình bày ở trên, khả năng hai cặp có Jaccard Similarity
của s có thể trở thành một cặp ứng cử viên bằng 1 – [(1 – s r)b. Bản chất bên trong
của đồ thị hàm số f(s) = 1 – [(1 – sr)]b này cho ta biết nếu tính từ 0 đến giới hạn
ngưỡng (t) sẽ được kết quả bằng số lượng false positive vì các cặp có Jaccard
Similarity nhỏ hơn t sẽ không được coi là cặp ứng viên. Trong hình dưới đây biểu
diễn đồ thị của hàm f(s) cùng với các khu vực liên quan đến số lượng false positive
và false negative.
17


Ví dụ: Giả sử có 100,000 cột của ma trận M (100k docs). Chọn b = 20 dải của r = 5
số nguyên/dải. Tìm các cặp tài liệu giống nhau ít nhất s = 0.8.
Lời giải:
● Ta có: sim(C1, C2) = 0.8
● Xác suất C1, C2 giống nhau ở một dải cụ thể: (0.8)5 = 0.328
● Xác suất C1, C2 không giống nhau trong tất cả 20 dải: (1-0.328) 20 =
0.00035.
Chúng ta sẽ tìm thấy 99.965% các cặp tài liệu thực sự giống nhau.


CHƯƠNG V: KẾT QUẢ THỰC NGHIỆM
Đầu tiên, chúng em thực hiện tải tài liệu từ driver lên, chúng em sử dụng bộ tài liệu
chứa 497 file doc là các bài báo trên các trang báo:
Sau đó, import các thư viện cần dùng, dùng hàm tiền xử lý các văn bản trong tài
liệu như loại bỏ khoảng trống,...

Hàm calculate_join_grams chuyển đổi một tài liệu thành một tập hợp của các
shingle:

18


Hàm create_permutations dùng để tạo ra các hoán vị:

Đầu ra của phương pháp Shingling:

Đầu ra của phương pháp Minhashing:

19


Đầu ra của phương pháp LSH: chúng em chia thành 20 dải và 5 hàng.
Các đoạn văn có độ tương tự cao sẽ được đưa vào cùng bucket:

Cuối cùng, chúng em truyền vào một đoạn văn, xét với độ tương tự là 80% và tìm
ra bài báo như yêu cầu:

helo


CHƯƠNG V : TỔNG KẾT
Trong bài viết hiện tại, trước tiên chúng em đã xem xét một số phương pháp
tìm các tài liệu tương tự từ một bộ dữ liệu khổng lồ. Phương pháp đầu tiên được
nghiên cứu là phương pháp shingling và nó đã chỉ ra rằng vấn đề tương tự có thể
biến thành một vấn đề dựa trên tập hợp như thế nào. Sau đó, để tránh so sánh, tất
cả các cặp tài liệu đã được xem xét bằng các phương pháp dựa trên bộ lọc. Các
phương pháp này bao gồm lọc dựa trên độ dài và lập chỉ mục tiền tố. Trong các
phương pháp này, chỉ những cặp tương tự nhau có xác suất cao hơn mới được so
sánh.
Sau khi xem xét các phương pháp này, một phương pháp tìm kiếm các tài
liệu tương tự dựa trên sự lặp lại của từng shingle hoặc ký tự trong tài liệu đã được
trình bày. Trong kết quả thực tế, người ta cũng chỉ ra rằng phương pháp được trình
bày cần ít so sánh hơn để tìm các tài liệu tương tự so với các phương pháp trước
20



×