49
i ĐẠI HC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ Phm ThHng PHÁT HIỆN STRÙNG LẶP NI DUNG CỦA CÁC BÀI BÁO KHOÁ LUẬN TT NGHIỆP ĐẠI HC HCHÍNH QUY Ngành: Công nghệ thông tin HÀ NỘI 2013

PHÁT HIỆN SỰ P N I DUNG CỦA CÁC BÀI BÁOuet.vnu.edu.vn/~thuyhq/Student_Thesis/K54_Pham_Thi_Hong_Thesis.pdf · DANH SÁCH CÁC BẢNG ... Kết quả 4-shingling cho một

  • Upload
    lamkiet

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

i

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƢỜNG ĐẠI HỌC CÔNG NGHỆ

Phạm Thị Hồng

PHÁT HIỆN SỰ TRÙNG LẶP

NỘI DUNG CỦA CÁC BÀI BÁO

KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY

Ngành: Công nghệ thông tin

HÀ NỘI – 2013

ii

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƢỜNG ĐẠI HỌC CÔNG NGHỆ

Phạm Thị Hồng

PHÁT HIỆN SỰ TRÙNG LẶP

NỘI DUNG CỦA CÁC BÀI BÁO

KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY

Ngành: Công nghệ thông tin

Cán bộ hƣớng dẫn: TS. Phan Xuân Hiếu

Cán bộ đồng hƣớng dẫn: ThS. Trần Mai Vũ

HÀ NỘI – 2013

iii

PHÁT HIỆN SỰ TRÙNG LẶP NỘI DUNG CỦA CÁC BÀI BÁO

Phạm Thị Hồng

Khóa QH-2009-I/CQ, ngành hệ thống thông tin

Tóm tắt Khóa luận tốt nghiệp:

Hiện nay sự phát triển nhanh chóng của báo Điện tử đã dẫn đến một loạt các bài

báo có nội dung giống nhau xuất hiện ở nhiều trang web. Do đó bài toán phát hiện sự

trùng lặp của các bài báo là bài toán thời sự, có ý nghĩa, đặc biệt trong các hệ thống

tìm kiếm.

Bản sao của các bài báo trên Web là khá nhiều. Các bài báo là bản sao của nhau

có sự khác nhau trong phần quảng cáo, font chữ, cỡ chữ, nhãn thời gian… sự khác biệt

như vậy là không thích hợp đối với các trang tìm kiếm. Trên cơ sở phân tích và tìm

hiểu một số hướng tiếp cận bài toán về so sánh hai tài liệu, khóa luận áp dụng phương

pháp lấy dấu vân của tài liệu và so sánh dấu vân để phát hiện sự giống nhau. Dữ liệu

được thu thập từ web được lưu trữ trong các file text và tiến hành quá trình xử lý dữ

liệu, từ đó làm dữ liệu đầu vào cho mô hình học dữ liệu để tìm ra dấu vân đặc trưng

cho từng bài báo. Khóa luận đưa ra mô hình thử nghiệm dựa trên mô hình lấy dấu vân

simhash, tìm ra được tập đặc trưng và trọng số của chúng của mỗi bài báo. Kết quả

bước đầu cho thấy, mô hình là khả quan và có thể tiếp tục thực nghiệm các pha xử lý

tiếp theo.

Từ khóa: Trùnglặp, đạo văn, sao chép, phát hiện, Simhash, Rabin, dấu vân, chữ

iv

LỜI CAM ĐOAN

Em xin cam đoan đây là phần nghiên cứu và thực hiện khóa luận của riêng em,

dưới sự hướng dẫn của PTS.TS Hà Quang Thụy và TS. Phan Xuân Hiếu cùng ThS.

Trần Mai Vũ, không sao chép từ các công trình nghiên cứu khác. Em đã trích dẫn đầy

đủ các tài liệu tham khảo, các công trình nghiên cứu liên quan ở trong nước và quốc tế.

Nếu sai em xin chịu hoàn toàn trách nhiệm và chịu mọi kỷ luật của ĐHQH Hà Nội và

Nhà trường.

Hà Nội, ngày 19 tháng 5 năm 2013

Sinh viên

Phạm Thị Hồng

v

LỜI CẢM ƠN

Trước tiên, em muốn gửi lời cảm ơn sâu sắc nhất đến các thầy giáo PGS.TS Hà

Quang Thụy và TS.Phan Xuân Hiếu cùng ThS.Trần Mai Vũ những người đã tận tình

hướng dẫn em suốt quá trình nghiên cứu khoa học và thực hiện khóa luận tốt nghiệp.

Em xin chân thành cảm ơn các thầy, cô giáo đã giảng dạy em trong bốn năm học

qua, những kiến thức mà em nhận được trên giảng đường đại học sẽ là hành trang giúp

em vững bước trong tương lai.

Em cũng xin gửi lời cảm ơn tới các anh chị, các bạn sinh viên tại phòng thí

nghiệm KT-Sislab đã cho em những lời khuyên bổ ích về chuyên môn trong quá trình

nghiên cứu.

Em xin gửi lời cảm ơn tới các bạn trong lớp K54CD đã ủng hộ khuyến khích em

trong suốt quá trình học tập tại trường.

Cuối cùng, em muốn được gửi lời cảm ơn sâu sắcđến tất cả bạn bè, và đặc biệt là

ba mẹ và các chị - những người thân yêu luôn kịp thời động viện và giúp đỡ em vượt

qua những khó khăn trong học tập cũng như trong cuộc sống.

Hà Nội, ngày 19 tháng 05 năm 2013

Sinh viên

Phạm Thị Hồng

vi

MỤC LỤC

Tóm tắt Khóa luận tốt nghiệp ............................................................................................................ iii

LỜI CAM ĐOAN ............................................................................................................................. iv

DANH SÁCH CÁC BẢNG ............................................................................................................ viii

DANH SÁCH CÁC HÌNH VẼ.......................................................................................................... ix

DANH SÁCH CÁC TỪ VIẾT TẮT ................................................................................................... x

MỞ ĐẦU ........................................................................................................................................... 1

Chương 1. Sự phát hiện các bài báo là bản sao hoặc gần như bản sao của nhau ................................... 3

1.1. Sự phát triển của các trang web hiện nay ............................................................................. 3

1.2. Phát hiện sự trùng lặp ......................................................................................................... 4

1.2.1. Động lực và mục đích ................................................................................................. 4

1.2.2. Các văn bản trùng lặp và gần trùng lặp nhau................................................................ 5

1.2.3. Phát biểu bài toán phát hiện sự trùng lặp nội dung của các bài báo. .............................. 5

Chương 2. Một số hướng tiếp cận bài toán, các khái niệm và công việc liên quan. .............................. 7

2.1. Shingling ............................................................................................................................ 7

2.2. I-Match .............................................................................................................................. 8

2.3. Phép chiếu ngẫu nhiên .......................................................................................................10

2.4. SpotSigs ............................................................................................................................10

2.5. Sự tương đồng (resemblance) giữa hai tài liệu. ...................................................................11

2.6. Ước tính sự tương đồng (resemblance) ..............................................................................14

2.7. Lấy dấu vân các shingle .....................................................................................................17

2.7.1. Lấy dấu vân của shingle bằng dấu vân Simhash ..........................................................17

2.8. Nén dấu vân ......................................................................................................................26

Chương 3. Mô hình thực nghiệm .......................................................................................................28

3.1. Loại bỏ từ dừng ......................................................................................................................29

3.2. Quá trình shingling tài liệu .....................................................................................................29

3.3. Lấy dấu vân tài liệu bằng simhash ..........................................................................................30

3.4. So sánh các dấu vân................................................................................................................30

Chương 4. Thực nghiệm và đánh giá kết quả .....................................................................................31

4.1. Môi trường thực nghiệm .........................................................................................................31

4.1.1. Cấu hình phần cứng .............................................................................................................31

4.1.2. Công cụ phần mềm ..............................................................................................................31

4.2. Dữ liệu thực nghiệm ...............................................................................................................32

vii

4.3. Thực nghiệm ..........................................................................................................................33

4.4. Kết quả thực nghiệm ..............................................................................................................35

4.5. Nhận xét .................................................................................................................................36

Kết Luận ...........................................................................................................................................37

Tài liệu tham khảo ............................................................................................................................38

viii

DANH SÁCH CÁC BẢNG

Bảng 1: Bảng các từ dừng .......................................................................................... 29

Bảng 2: Cấu hình phần cứng ...................................................................................... 31

Bảng 3: Công cụ phần mềm ....................................................................................... 31

ix

DANH SÁCH CÁC HÌNH VẼ

Hình 1:Ảnh chụp từ 2 bài báo của 2 trang web khác nhau ............................................ 3

Hình 2: Độ tương đồng của hai tài liệu D1 và D2 ........................................................ 13

Hình 3:Minh họa lấy dấu vân bằng simhash [5] ........................................................ 18

Hình 4: Độ chính xác và độ hồi tưởng với giá trị khác nhau của k [5] ........................ 21

Hình 5: Sự phân bố của các 1-bit hàng đầu [5] ........................................................... 22

Hình 6: Bucketization của các dấu vân [5] ................................................................. 23

Hình 7: File dữ liệu thực nghiệm ............................................................................... 32

Hình 8: Nội dung của một bài báo ............................................................................. 32

Hình 9: Nội dung một bài báo đã được loại bỏ các thẻ html ....................................... 33

Hình 10: Kết quả sử dụng JvnTextPro cho một bài báo .............................................. 34

Hình 11: Kết quả 4-shingling cho một bài báo ........................................................... 34

Hình 12: Kết quả lấy dấu vân của 2000 bài báo ......................................................... 35

Hình 13: Kết quả thực nghiệm ................................................................................... 36

x

DANH SÁCH CÁC TỪ VIẾT TẮT

Từ viết tắt Mô tả

IR Information Retrieval

NDD Near Dupplicate Detection

IDF Inverse Document Frequency

TF-IDF Term Frequency- Inverse Document Frequency

LSH Locality Sensitive Hashing

1

MỞ ĐẦU

Sự phát triển mạnh mẽ của Internet và các trang báo mạng ngày nay dẫn đến sự

bùng nổ về thông tin, và trình thu thập thông tin trên Web là một phần không thể tách

rời của cơ sở hạ tầng các công cụ tìm kiếm. Đối với trình thu thập thông tin Web, vấn

đề lọc các trang web có nội dung gần như trùng lặp trong thu thập dữ liệu nói chung

vẫn chưa được chú ý.

Các bài báo là bản sao chính xác của nhau thì dễ dàng được phát hiện. Một vấn

đề khó khăn hơn là việc phải xác định các bài báo mà chúng chỉ gần giống nhau

(không phải giống nhau hoàn toàn). Hai bài báo như vậy là giống nhau về nội dung,

nhưng khác nhau ở bố cục và câu từ đã bị đổi.

Loại bỏ các bản sao tiết kiệm băng thông mạng, giảm tri phí lưu trữ và cải thiện

chất lượng tìm kiếm, mang lại lợi ích cho người dùng web khi họ muốn tìm kiếm. Nó

cũng giúp giảm tải trên máy chủ từ xa đang phục vụ các trang web như vậy.

Hệ thống phát hiện các bài báo có nội dung gần trùng lặp phải đối mặt với một số

thách thức. Đầu tiên là vấn đề về quy mô: Công cụ tìm kiếm trên hàng tỷ trang web.

Thứ hai, công cụ tìm kiếm thông tin có thể phải thu thập hàng tỷ trang web mỗi ngày.

Vì vậy việc đánh dấu và loại bỏ một trang mới thu thập là bản sao của một trang web

khác nên được thực hiện nhanh để người sử dụng thấy thoải mái nhất khi tìm kiếm,

đồng thời phát triển trình thu thập, cập nhật thông tin và hệ thống đánh giá trang tin

tức web.

Bài toán được đặt ra là phát hiện các trang báo điện tử có nội dung giống/gần

giống với nhau để phục vụ các công cụ tìm kiếm tin tức gom nhóm được các bài báo

cùng nội dung, sau đó loại bỏ nó trong sự tìm kiếm của người dùng.

Để giải quyết vấn đề, chúng tôi đã tìm hiểu nhiều phương pháp tiếp cận cho bài

toán “phát hiện sự trùng lặp nội dung của các bài báo”, chủ yếu dựa trên các phương

pháp giải quyết bài toán phát hiện sự trùng lặp của các tài liệu, mà Broder và cộng sự

đã trình bày một kỹ thuật shingling tài liệu [4] để giải quyết vấn đề này.

Chúng tôi thử nghiệm phát hiện trên các báo điện tử viết bằng Tiếng Việt dựa

trên các kỹ thuật shingling của Broder và lấy dấu vân simhash.

Nội dung của khóa luận được bố cục gồm 4 chương:

Chƣơng 1: Giới thiệu khái quát về bài toán phát hiện sự trùng lặp nội dung của

các bài báo.

2

Chƣơng 2: Giới thiệu các hướng tiếp cận giải quyết bài toán phát hiện sự trùng

lặp nội dung của các bài báo. Chương này tập trung vào việc giới thiệu các phương

pháp mà nhiều tác giả đề xuất. Đây là cơ sở phương pháp luận quan trọng để khóa luận

đưa ra mô hình thực nghiệm một phần mô hình hệ thống được các tác giả xây dựng.

Chƣơng 3: Khóa luận xây dựng mô hình thực nghiệm, xác định sự trùng lặp dựa

vào nghiên cứu của Border và cộng sự. Chúng tôi sẽ tiến hành xây dựng mô hình thực

nghiệm dựa trên phương pháp lấy dấu vân Simhash – được hướng dẫn bởi các tác giả.

Chƣơng 4: Tiến hành thực nghiệm một phần của mô hình. Đánh giá kết quả

Phần kết luận và định hƣớng phát triển khóa luận: Tóm tắt những nội dung

chính đạt được của khóa luận đồng thời chỉ ra những điểm cần khắc phục và đưa ra

những định hướng nghiên cứu trong thời gian sắp tới.

3

Chƣơng 1. Sự phát hiện các bài báo là bản sao hoặc gần nhƣ bản sao

của nhau

1.1. Sự phát triển của các trang web hiện nay

Sự phát triển mạnh mẽ của Internet và các mạng tin tức ngày nay dẫn đến sự

bùng nổ về thông tin, kèm theo đó là sự tràn ngập lượng lớn các trang web tin tức

trong kết quả tìm kiếm làm chúng vô ích cho người sử dụng do đó tạo ra một vấn đề

nghiêm trọng đối với các công cụ tìm kiếm Internet. Kết quả của sự phát triển không

ngừng của Web và thương mại điện tử đã dẫn đến sự gia tăng nhu cầu của những trang

web mới và các ứng dụng Web. Trang web nhân bản mà bao gồm cấu trúc giống hệt

nhau nhưng dữ liệu khác nhau có thể được coi là bắt chước. Việc xác định các cặp

tương tự hoặc gần như trùng lặp trong một bộ sưu tập lớn là một vấn đề quan trọng với

các ứng dụng rộng rãi. Vấn đề đã được tính toán cho các loại dữ liệu khác nhau (ví dụ

như tài liệu văn bản, các điểm không gian và các bản ghi liên quan) trong các thiết lập

khác nhau. Một cụ thể hóa hiện thời khác của vấn đề là việc xác định hiệu quả các

trang web gần như trùng lặp. Điều này chắc chắn là thách thức đối với các trang web

chứa các dữ liệu đồ sộ và số chiều lớn.

Hinh 1:Ảnh chụp từ 2 bài báo của 2 trang web khác nhau

Hình trên minh họa sự trùng lặp nội dung của cùng 1 bài báo trên hai trang web khác

nhau.

4

1.2. Phát hiện sự trùng lặp

1.2.1. Động lực và mục đích

Do sự tăng trưởng nhanh chóng của các trang báo điện tử, nhiều bài báo cùng

đưa một thông tin như nhau, dẫn đến dư thừa thông tin. Một trong những lý do của vấn

đề này là các bài báo bị lặp, bị sao chép hay chỉnh sửa lại được tồn tại và đăng tại

nhiều vị trí khác nhau trên các trang Web khác nhau hoặc trên cùng một trang web. Số

lượng các cổng tin tức điện tử đã tăng lên song song với sự gia tăng của thông tin điện

tử. Trong cổng thông tin, tin tức từ các nguồn khác nhau được biểu thị tới người dùng

trong một cách đã được phân loại. Trong quá trình này việc tạo ra một phần hoặc hoàn

toàn các nội dung của bản tin giống hệt nhau là không thể tránh khỏi, bởi vì các trang

báo điện tử thường xuất bản tin tức lấy từ các hãng thông tấn rồi thay đổi chút ít hoặc

giữ nguyên nó như vậy.

Để sử dụng các thông tin có sẵn trên các trang web rất nhiều công nghệ đã xuất

hiện, và hệ thống tìm kiếm thông tin là một trong số đó. Nhưng sự tồn tại của các bài

báo điện tử trùng lặp làm giảm cả tính hữu dụng và sự hiệu quả của các công cụ tìm

kiếm. Bởi vì các kết quả trùng lặp cho các truy vấn của người sử dụng sẽ làm giảm số

lượng các kết quả hợp lệ của các truy vấn và điều này cũng làm giảm hiệu quả của hệ

thống. Xử lý các kết quả trùng lặp rất tốn thời gian và cũng không thêm bất kỳ giá trị

nào về thông tin cung cấp cho người dùng. Vì vậy, các bài báo là bản sao nội dung của

các bài báo khác làm giảm hiệu quả của một công cụ tìm kiếm, không đánh giá chính

xác chất lượng cung cấp tin của các trang báo điện tử. Trong khi đó, người sử dụng

muốn có được thông tin gốc, còn người cung cấp tin muốn khẳng định chất lượng

cung cấp tin của mình. Vì vậy, việc phát hiện các bài báo có cùng nội dung là thực sự

cần thiết cho trình thu thập thông tin, đảm bảo thông tin cung cấp tới người dùng đúng

và đủ.

Việc phát hiện sự trùng lặp của các tài liệu đã trở thành một lĩnh vực nghiên cứu.

Trong khóa luận này, chúng tôi tập trung tìm cách nhận dạng một bài báo điện tử có

nội dung giống hoặc gần giống với các bài báo điện tử đã có sẵn trong kho lưu trữ hay

không. Mục đích chính là để phát hiện và gom nhóm các bài báo dư thừa, tăng chất

lượng tìm kiếm và quá trình lưu trữ của công cụ tìm kiếm được hiệu quả. Ví dụ,

Google không hiển thị các kết quả tìm kiếm bản sao của một truy vấn. Google News

một lần nữa loại bỏ tin tức trùng lặp ở bước đầu tiên. Phát hiện các bài báo có nội dung

trùng lặp một cách nhanh chóng có tầm quan trọng rất lớn cho người sử dụng, bởi vì

người dùng không muốn chờ đợi trong quá trình này. Họ muốn tiếp cận thông tin

nhanh nhất có thể và nếu phát hiện trùng lặp bắt đầu làm chậm truy cập vào các thông

tin, sau đó họ có thể chọn để lấy thông tin trùng lặp. Cổng thông tin cung cấp loại bỏ

nhanh các bản sao bằng cách phát hiện thông tin trùng lặp trong giai đoạn lập chỉ mục

5

và thực hiện trùng lặp loại bỏ trong quá trình tìm kiếm thông tin. Một tùy chọn khác để

truy cập vào các văn bản tin tức là sử dụng công cụ siêu tìm kiếm tin tức [LIU2007].

Các công cụ tìm kiếm đó không tạo chỉ mục tài liệu như trong trường hợp của cỗ máy

tìm kiếm dựa trên crawler, thay vào đó chúng sử dụng một số công cụ tìm kiếm khác

hoặc các cơ sở dữ liệu của các trang tin tức. Kể từ khi các văn bản tin tức được đưa ra

tại thời điểm người sử dụng yêu cầu, thì việc loại bỏ trùng lặp nên được thực hiện ở

giai đoạn này. Loại bỏ các văn bản web gần như trùng lặp làm tăng sự đa dạng của kết

quả tìm kiếm vì mỗi nhóm trùng lặp chỉ được hiển thị một văn bản, do đó mà hiển thị

được nhiều bài báo cho sự tìm kiếm của người dùng hơn.

Các tài liệu là bản sao chính xác của nhau (do phản chiếu và đạo văn) là dễ dàng

để xác định bằng các kỹ thuật kiểm tra tiêu chuẩn tổng hợp. Một vấn đề khó khăn hơn

là việc xác định các tài liệu gần như trùng lặp.

1.2.2. Các văn bản trùng lặp và gần trùng lặp nhau

Khi hai tài liệu có nội dung giống hệt nhau thì chúng được coi là bản sao của

nhau, hay còn gọi là các văn bản trùng lặp. Các tập tin giống nhau nhiều mà không

được xác định là bản sao chính xác của nhau, nhưng chúng lại giống nhau đến một

mức độ đáng chú ý thì được gọi là gần trùng lặp. Sau đây là một số ví dụ về các tài

liệu gần trùng lặp:

- Các văn bản có vài từ khác nhau - hình thức phổ biến nhất của gần trùng

lặp.

- Các văn bản có cùng nội dung nhưng định dạng khác nhau - ví dụ, các

tài liệu có thể chứa cùng một văn bản, nhưng phông chữ không giống nhau (đậm hoặc

in nghiêng,…), bố cục khác nhau, …

- Các văn bản có cùng nội dung nhưng loại tập tin khác nhau - ví dụ,

Microsoft Word và PDF - các phiên bản của cùng một tập tin.

Tương tự, hai bản tin tức được coi là giống hoặc gần giống nhau về nội dung là

khi chúng có nội dung giống nhau hoàn toàn hoặc có nội dung tương tự nhau nhưng có

một số ít từ khác nhau, hoặc hai bản tin có cùng nội dung nhưng định dạng font chữ,

cấu trúc hiển thị khác nhau, …

1.2.3. Phát biểu bài toán phát hiện sự trùng lặp nội dung của các bài báo.

Bài toán phát hiện sự trùng lặp nội dung của các bài báo thực chất là bài toán tìm

sự tương đồng giữa hai tài liệu.

Các bài báo trên Web sẽ được thu thập và lưu trữ, sau đó được xử lý loại bỏ các

thẻ định dạng, các quảng cáo, chỉ lấy nội dung … và sau đó được coi như một văn bản

6

text. Từ đó ta áp dụng các phương pháp như đối với các tài liệu dạng văn bản. Kể từ

đây sẽ coi nội dung của một bài báo điện tử như là một tài liệu D (khi đã được loại bỏ

nhiễu ở trang web).

Phát biểu bài toán:

Input:

- Tập các bài báo được thu thập trên web.

- Bài báo mới được thu thập, cần kiểm tra sự trùng lặp.

Output:

- Các bài báo giống hoặc gần giống với bài báo được đưa vào kiểm

tra.

Tóm tắt chƣơng 1

Trong chương này, khóa luận đã giới thiệu khái quát một số nội dung liên quan

và trình bày về động cơ và mục đích của bài toán phát hiện sự trùng lặp của các bài

báo. Trong chương tiếp theo, khóa luận sẽ tập trung làm rõ một số hướng tiếp cận về

bài toán phát hiện sự trùng lặp giữa các bài báo.

7

Chƣơng 2. Một số hƣớng tiếp cận bài toán, các khái niệm và công việc

liên quan.

Vì đã xử lý loại bỏ các định dạng không cần thiết, và coi mỗi bài báo được thu

thập về như một tài liệu dạng văn bản nên chúng tôi đã tìm hiểu một số phương pháp

tiếp cận của bài toán “Phát hiện sự trùng lặp của các tài liệu” như các phần dưới đây.

Gọi là các phương pháp NDD (Near Duplicate Detection).

2.1. Shingling

Là một trong những phương pháp NDD sớm nhất, một kỹ thuật để ước lượng độ

tương tự giữa các cặp tài liệu, được trình bày vào năm 1997 bởi Broder và cộng sự.

Thuật toán Shingling không dựa trên bất kỳ tri thức ngôn ngữ nào khác ngoài khả năng

tokenize các tài liệu vào một chuỗi các token ( thẻ). 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 mã hóa 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). Đễ dễ xử lý hơn nữa, mỗi

k-gram lại được mã hóa bởi một dấu vân Rabin 64-bit và được gọi là một shingle. 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. Một shingle là một giá trị băm của

một k-gram (k –gram là một dãy gồm k từ kế tiếp nhau). 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. Lựa chọn giá trị cho k là rất quan trọng, nó

ảnh hưởng tới kích thước của shingle.

- Kích thước shingle dài: Những thay đổi ngẫu nhiên nhỏ của tài liệu gây ảnh

hưởng lớn.

- Kích thước shingle ngắn: Các tài liệu không liên quan có thể có quá nhiều sự

tương đồng.

Kích thước tốt là từ 3-10.

Giá trị băm của k-gram có thể được tính rất hiệu quả bằng cách sử dụng kỹ thuật

dấu vân của Rabin [6]. Vì lý do được giải thích trong [7], đặc biệt thuận lợi để sử dụng

dấu vân Rabin, có một phần mềm rất tốt đã thực hiện [8].

Có thể chọn cách tạo các shingles khác nhau. Manber [9] đã tạo các shingle trên

ký tự. Hệ thống COPS được Brin và cộng sự dựng [10] lại dùng các câu để tạo ra các

shingle. Broder và cộng sự [11, 12] đã tạo các shingle trên các từ (word). Tổng số các

shingle của mỗi tài liệu là lớn. Do vậy một chữ ký có kích thước nhỏ tính toán trên tập

8

các shingle nên được tạo ra để giảm không gian lưu trữ. Tính toán khoảng cách q –

gram với khoảng cách edit [13].

Một vấn đề khi áp dụng trực tiếp độ tương tự Jaccard là khả năng thay đổi kích

thước khác nhau của các tập shingle, chúng tăng tuyến tính theo số lượng của các

token trong tài liệu.

Bên cạnh việc lấy dấu vân cho các shingle, thành phần thiết yếu được Border và

cộng sự giới thiệu là hoán vị min-wise independent để giải quyết vấn đề trên, bằng

cách ánh xạ mỗi tập các shingle vào một vector m chiều, với m thường nhỏ hơn số

lượng ban đầu của các token trong tài liệu. Trong quá trình này, các hàm băm m khác

nhau h1, … , hm được tạo và áp dụng cho tất cả các shingle. Cho tập các shingle của tài

liệu D là S(D) = { s1, s2, … , sn}. Thành phần thứ j trong vector cuối cùng được xác

định như giá trị băm nhỏ nhất của hj.

Mỗi vector m chiều có thể được ánh xạ tiếp vào một tập nhỏ hơn của các siêu

shingles (super shingles) bằng cách: Đầu tiên chia các phần tử vào trong m’ tập con rời

nhau có kích thước bằng nhau và sau đó lấy dấu vân mỗi tập con của các phần tử bằng

cách sử dụng một hàm băm khác. Quá trình này một cách hiệu quả làm giảm hiệu quả

số chiều của mỗi vector từ m về m’, và do đó việc lưu trữ tốt hơn và tốc độ cũng nhanh

hơn.

Chú ý rằng trong phương thức shingling chuẩn, việc xây dựng các vector chữ ký

của tài liệu thì hoàn toàn thuộc về cú pháp – tất cả k-grams trong tài liệu được đối xử

như nhau.

Ngoài ra, Hoad và Zobe đã thử nghiệm với chiến lược lựa chọn k-grams khác khi

lập mã các shingles, chẳng hạn dựa trên các điểm TF-IDF của họ. Những từ có giá trị

TF-IDF cao là những từ xuất hiện nhiều trong văn bản này, và xuất hiện ít trong các

văn bản khác. Việc này giúp lọc ra những từ phổ biến và giữ lại những từ có giá trị cao

(từ khoá của văn bản đó).

2.2. I-Match

Không giống như Shingling là tạo một chuỗi các giá trị băm dựa trên một mẫu

ngẫu nhiên của k-grams của tài liệu gốc, I-Match ánh xạ mỗi tài liệu riêng vào trong

một giá trị băm shingle sử dụng giải thuật băm SHA1. Hai tài liệu được coi là gần như

bản sao nếu và chỉ nếu các giá trị băm tương ứng của chúng là đồng nhất.

Quá trình tạo chữ ký của I-Match coi một tài liệu như một túi của các từ. Ngoài

ra, chỉ những thuật ngữ quan trọng mới được giữ ở trong túi.

9

Đầu tiên định nghĩa một từ điển I-Match L dựa trên sự thống kê bộ thuật ngữ, sử

dụng một bộ lớn các tài liệu. Một lựa chọn thường được sử dụng là tài liệu nghịch đảo

tần số (IDF), với L chỉ bao gồm các thuật ngữ có giá trị IDF tầm trung. Đối với mỗi tài

liệu D mà gồm tập các thuật ngữ độc nhất U, sự giao nhau S = L∩U được dùng như

tập thuật ngữ biểu diễn D để tạo chữ ký.

Một vấn đề ẩn chứa với I-Match xảy ra khi túi các từ được giữ S là nhỏ ( tức là

|S| << |U|). Bởi vì các tài liệu được đại diện một cách hiệu quả chỉ sử dụng một số ít

các thuật ngữ, các tài liệu khác nhau có thể bị dự đoán nhầm thành gần như bản sao dễ

dàng. Để đối phó với trường hợp này, một ràng buộc được đặt đối với chiều dài tối

thiểu của một tài liệu sao cho một chữ ký hợp lệ có thể được sinh ra. Để tạo I-Match

hiệu quả hơn với các lỗi false-positive như vậy, Kolcz và cộng sự đã đề xuất sử dụng

m từ điển được lấy ngẫu nhiên, đồng thời theo sau là quá trình sinh chữ ký I-Match

tương tự. Kết quả là, một vector m chiều được sử dụng để biểu diễn một tài liệu. Hai

tài liệu được coi là gần bản sao chỉ nếu chúng có đủ số các chữ ký khớp nhau.

Bước 1: Lấy tài liệu

Bước 2: Phân tách tài liệu D vào một chuỗi các token, xóa bỏ các thẻ định dạng

Bước 3: Sử dụng “ngưỡng” (IDF), chỉ giữ lại các token quan trọng

Bước 4: Chèn các token thích hợp vào cây Unicode sắp xếp của các token

Bước 5: Duyệt cây và thêm mỗi token duy nhất cho SHA1 băm. Trên mỗi vòng

lặp của cây, xác định một bộ (doc_id, SHA1 Digest).

Bước 6: Các bộ (doc_id, SHA1 Digest) được chèn vào cấu trúc dữ liệu lưu trữ

dựa trên khóa SHA1 Digest.

Bước 7: Nếu có một sự va chạm của các giá trị digest thì tài liệu là tương tự.

Thuật toán I-Match[16]

Thời gian chạy của I-Match là O(d log d) trong trường hợp xấu nhất khi tất cả các tài

liệu là trùng nhau với mỗi tài liệu khác, và O(d) trong trường hợp khác.

Có 2 cách tính giá trị IDF. Cách thứ nhất là dùng một tập chung và sử dụng các giá trị

IDF cho tập phát hiện trùng lặp. Cách thứ hai là tính IDF cho mỗi bộ sưu tập.

10

2.3. Phép chiếu ngẫu nhiên

Như đã chỉ ra bởi Charikar, phương pháp hoán vị min-wise independent được sử

dụng trong Shingling là một trường hợp cụ thể thực tế của một sơ đồ băm LSH

(Locality Sensitive Hashing) được giới thiệu bởi Dyk và Motwani. Xác suất mà hai giá

trị băm khớp với nhau cũng giống như sự tương đồng Jaccard của hai vectơ k-gram.

Ngược lại, cách tiếp cận dựa trên phép chiếu ngẫu nhiên được đề xuất bởi Charikar và

sau đó áp dụng cho miền tài liệu web của Henzinger là một mô hình LSH đặc biệt cho

độ tương đồng cosin dựa trên các vector thuật ngữ. Theo thực hiện được mô tả trong

[10], thuật toán này tạo ra một vector nhị phân với f bit để đại diện cho các tài liệu

bằng cách sử dụng các bước sau đây:

Đầu tiên, mỗi thuật ngữ duy nhất trong tài liệu đích được chiếu vào trong một

vector có giá trị thực ngẫu nhiên f chiều, mỗi thành phần là ngẫu nhiên được chọn

trong khoảng [-1, 1]. Tất cả các vector ngẫu nhiên được sinh ra từ các thuật ngữ (term)

trong tài liệu này sau đó được thêm vào với nhau. Vector nhị phân f chiều biểu diễn

cho tài liệu này được suy ra từ cách thiết lập mỗi phần tử trong vector là 1 nếu giá trị

thực tương ứng là dương và là 0 nếu ngược lại.

Nhận thấy rằng các phương pháp Shingling thường tạo ra các trường hợp dương

tính giả nhiều hơn, Henzinger phát minh ra một phương pháp tiếp cận lai áp dụng

phương pháp chiếu ngẫu nhiên Charikar để tiềm năng các cặp gần như trùng lặp được

phát hiện bởi Shingling [10]. Kết quả là, độ chính xác được cải thiện đáng kể mà

không bị mất quá nhiều độ hồi tưởng.

2.4. SpotSigs

Việc xác định các k-gram trong một tài liệu nên được sử dụng để tạo các chữ ký,

phương pháp SpotSigs của Theobald và cộng sự rất sáng tạo và thú vị [20]. Khi phát

triển các phương pháp phát hiện sự trùng lặp cho phân nhóm các bài báo hiển thị trên

các trang web khác nhau, họ quan sát thấy các từ dừng lại hiếm khi xảy ra trong các

khối mẫu không quan trọng như điều hướng bên hoặc các liên kết thể hiện ở dưới cùng

của trang. Dựa trên quan sát này, đầu tiên họ quét tài liệu để tìm các từ dừng bên trong

nó như các điểm neo. k tokens ngay sau khi một điểm neo ngoại trừ các từ dừng thì

được nhóm lại như một k-gram đặc biệt, hay còn gọi là một "chữ ký điểm" trong thuật

ngữ của họ. Đại diện thô của từng tài liệu đích là một tập hợp các chữ ký điểm. Việc

xây dựng các chữ ký điểm có thể được xem như là một phỏng đoán đơn giản và hiệu

quả để lọc các thuật ngữ trong các khối mẫu sao cho các k-gram chỉ được trích xuất từ

các khối nội dung chính. Một khi các chữ ký điểm được trích ra, các kỹ thuật tương tự

sử dụng hàm băm như đã thấy trong các phương pháp NDD khác có thể được áp dụng

trực tiếp để giảm độ dài của các vectơ chữ ký ngay tại chỗ.

11

Ngoài ra, Theobaldet và cộng sự đề xuất một thuật toán hiệu quả để tính toán

trực tiếp độ đo tương đồng Jaccard trên các vectơ chữ ký điểm thô, với sự giúp đỡ của

một chỉ số đảo ngược cấu trúc dữ liệu đã tỉa.

2.5. Sự tƣơng đồng (resemblance) giữa hai tài liệu.

Sự tương đồng giữa hai tài liệu là sự giống nhau về nội dung giữa hai tài liệu đó.

Do đó, hai tài liệu là bản sao hoặc gần bản sao của nhau thì sẽ có nội dung giống nhau

nhiều, hay “độ tương đồng” giữa hai tài liệu là cao. Độ tương đồng nằm trong khoảng

[0, 1], như vậy độ tương đồng càng gần 1 thì khả năng các tài liệu là bản sao hoặc gần

sao của nhau là cao, và ngược lại.

Do đó, để xét xem các tài liệu có phải là bản sao hoặc gần sao của nhau hay

không ta phải đi tính độ tương đồng giữa chúng.

Để tính toán độ tương đồng giữa hai tài liệu, ta làm như sau:

Chúng ta coi mỗi tài liệu như một chuỗi các token. Chúng ta có thể lấy các token

là các chữ cái, từ, hoặc cả dòng. Chúng tôi dùng một chương trình phân tích cú pháp

cho một tài liệu bất kỳ và rút gọn nó thành một chuỗi con đúng quy tắc của các token.

Một chuỗi con kề nhau của w tokens chứa trong tài liệu D được gọi là một

shingle. Một shingle độ dài k cũng được biết đến như một k-gram (khi các token được

chọn là các chữ cái Alphabet mà không phải là câu hay từ). Cho một tài liệu D, w-

shingling được định nghĩa như tập của tất cả các shingle có kích thước là w đã có trong

D.

Ví dụ, tài liệu D khi đã được rút gọn thành một chuỗi các token theo[1] :

(a, rose, is, a, rose, is, a, rose)

Quá trình xác định w-shingling của tài liệu D:

Chọn w = 4

Một 4-shingle là một chuỗi con của 4 từ kề nhau, có trong D:

a, rose, is, a

rose, is, a, rose

is, a, rose, is

a, rose, is, a

rose, is, a, rose

12

Loại bỏ tất cả các 4-shingle bị trùng thì ta được tập SD là một tập các 4-shingle

duy nhất.

{ (a, rose, is, a, rose), (rose, is, a, rose), (is, a, rose, is)}

Thực hiện lấy dấu vân của các shingle.

Liên kết tới mỗi tài liệu D một tập SD, là kết quả lấy dấu vân của các Shingle

trong D. Coi Shingle là một chuỗi liền của các token.

Từ đó, khi w cố định ta có một số định nghĩa[2]:

- Độ tương tự 𝑟(𝐴, 𝐵) của hai tài liệu 𝐴 và 𝐵:

𝑟(𝐴, 𝐵) =|𝑆𝐴 ∩ 𝑆𝐵|

|𝑆𝐴 ∪ 𝑆𝐵|

Ở đó | 𝐴 | là độ lớn của tập 𝐴.

- Độ chứa của tập 𝐴 trong tập 𝐵:

𝑐(𝐴, 𝐵) =|𝑆𝐴 ∩ 𝑆𝐵|

|𝑆𝐴|

Độ tương tự r (resemblance) là một số nằm trong khoảng [0, 1], và ta luôn luôn

có 𝑟 𝐴, 𝐵 = 1, tức là một tài liệu 𝐴 thì tương đồng với chính nó 100%. Như hình

minh họa dưới đây:

13

Hinh 2: Độ tƣơng đồng của hai tài liệu D1 và D2

Tương tự, độ chứa c (containment) cũng là một số nằm trong khoảng [0, 1] và

nếu 𝐴 ⊆ 𝐵 thì 𝑐 𝐴, 𝐵 = 1.

Ta có một ví dụ, nếu :

𝐴 = (a, rose, is, a, rose, is, a, rose)

Và 𝐵 = (a, rose, is, a, flower, which, is, a, rose)

Độ tương tự về kích thước shingle 1 là 70%, 50% kích thước shingle 2, 30% kích

thước shingle 3.

Tuy nhiên nhận thấy rằng ngay cả dưới tùy chọn shingling tài liệu như trên, nếu

𝐴 giống 𝐵 100% khi kích thước shingle là 1 thì nó chỉ có nghĩa 𝐵 là một hoán vị tùy ý

của 𝐴, đối với kích thước lớn hơn của single, nếu 𝐴 lại tương đồng với 𝐵 100% cũng

có những trường hợp 𝐵 có thể là một hoán vị của 𝐴 nhưng chỉ hoán vị nào mà: ví dụ

(a, c, a, b, a) giống (a, b, a, c, a) 100% với kích thước shingle là 2. Để làm cho độ

tương tự nhạy cảm hơn với những thay đổi hoán vị chúng tôi phải có một kích thước

lớn hơn, mặt khác có kích thước lớn có thể là quá nhạy cảm với những thay đổi nhỏ kể

từ khi thay đổi một mã thông báo một token ảnh hưởng đến 𝑤 shingle.

14

Nhận thấy rằng tính giống nhau (resemblance) của các tài liệu không bắc cầu. Sự

giống nhau giữa các phiên bản liên tiếp của cùng một tài liệu là lớn, nhưng phiên bản

thứ 100 có thể sẽ rất khác với phiên bản thứ nhất. Vì thế ta có thêm khoảng cách tương

đồng (resemblance distance).

- Khoảng cách tương đồng 𝑑(𝐴,𝐵) của hai tài liệu A và B:

𝑑 𝐴,𝐵 = 1 − 𝑟(𝐴,𝐵)

là một thước đo và nó tuân theo bất đẳng thức tam giác. Tức là:

𝑑 𝐴,𝐵 < 𝑑 𝐴, 𝐵 + 𝑑(𝐴,𝐵)

Quy trình w-shingling tài liệu D cũng có thể được thực hiện dựa trên định nghĩa

khác, định nghĩa w-shingling của D là một tập chứa cả trọng số của các shingle sinh ra

từ D, ví dụ, cũng với tài liệu D trên:

D: a rose is a rose is a rose

{(a, rose, is, a, 1), (rose, is, a, rose, 1), (is, a, rose, is, 1),

(a, rose, is, a, 2), (rose, is, a, rose, 2)}

Sau đó thay vì làm việc trực tiếp với các shingle để đo độ tương tự giữa hai tài

liệu, mà lấy dấu vân của các shingle (để giảm kích thước lưu trữ), như phần trình bày

tiếp theo.

2.6. Ƣớc tính sự tƣơng đồng (resemblance)

Phương pháp tiếp cận của Broder trong [1] liên quan tới quá trình lấy mẫu được

phát triển độc lập bởi Heintze[14], dù có định nghĩa khác nhau về các độ đo được sử

dụng. Liên quan tới cơ chế lấy mẫu để xác định độ tương tự cũng được phát triển bởi

Manber [9] và trong dự án Stanford SCAM [10][17][18].

Để tính sự tương đồng của hai tài liệu [1], cố định một sketch. Các sketch đó có

thể được tính rất nhanh (tuyến tính với kích thước của các tài liệu), và cho hai sketch,

sự tương đồng của hai tài liệu tương ứng được tính trong thời gian tuyến tính với kích

thước của các sketch.

Giả sử rằng, đối với tất cả các tài liệu được xét SD ⊆ {0, … , n – 1} = [n] . (trong

thực tế n = 264

).

Theo [2][7]:

15

Cố định kích thước của một shingle là w

Cho U là tập tất cả các shingle có kích thước w. Không làm mất tính tổng

quát chúng ta coi U như một tập của các số.

Chỉnh tham số s

Cho một tập W ⊆ U định nghĩa MINs(W) là:

MINs(W) = 𝑇ậ𝑝 𝑔ồ𝑚 𝒔 𝑠ℎ𝑖𝑛𝑔𝑙𝑒𝑠 𝑛ℎỏ 𝑛ℎấ𝑡 𝑡𝑟𝑜𝑛𝑔 𝑊, 𝑛ế𝑢 𝑊 ≥ 𝒔;𝑊 𝑛𝑔ượ𝑐 𝑙ạ𝑖.

“shingle nhỏ nhất” là nói đến tập các số trên U (khi coi U như một tập các

số).

MODm(W) = Tập các shingle x của W với x (mod m) = 0

Định lý: Cho 𝛱: U U là một hoán vị của U được chọn thống nhất ngẫu nhiên.

Cho F(A) = MINs(𝛱(SA)) và V(A) = MODm(𝛱(SA)). Định nghĩa F(B) và V(B)

tương tự.

Thì giá trị:

|𝑀𝐼𝑁𝑠 𝐹 𝐴 ∪ 𝐹 𝐵 ∩ 𝐹 𝐴 ∩ 𝐹(𝐵)|

|𝑀𝐼𝑁𝑠(𝐹 𝐴 ∪ 𝐹 𝐵 )|

là giá trị tương đồng 𝑟(𝐴,𝐵) của hai tài liệu A và B

giá trị :

|𝑉 𝐴 ∩ 𝑉(𝐵)|

|𝑉 𝐴 ∪ 𝑉(𝐵)|

Là giá trị tương đồng của hai tài liệu 𝐴 và 𝐵.

Giá trị :

|𝑉 𝐴 ∩ 𝑉(𝐵)|

|𝑉(𝐴)|

Là độ chứa 𝑐(𝐴, 𝐵) của 𝐴 trong 𝐵.

Chứng minh :

Dễ thấy được rằng :

MINs (𝐹 𝐴 ∪ 𝐹 𝐵 ) = MINs(𝛱(SA) ∪ 𝛱(SB)) = MINs(𝛱(SA) ∪ ( SB))

Cho α là thành phần nhỏ nhất trong 𝛱(SA ∪ SB).

16

Khi đó 𝑚𝑖𝑛{𝛱(SA)} = 𝑚𝑖𝑛{𝛱(SA)} nếu và chỉ nếu α là ảnh của một thành phần

trong 𝑆𝐴 ∩ 𝑆𝐵 . Do đó,

Pr(min{𝛱(SA)} = min{𝛱(SB)}) = Pr(𝛱−1 α ∈ SA ∩ SB)

= |𝑆𝐴 ∩ 𝑆𝐵 |

|𝑆𝐴 ∪ 𝑆𝐵 | = 𝑟(𝐴, 𝐵) (*)

Chứng minh: 𝛱 được chọn thống nhất ngẫu nhiên, đối với bất kỳ tập X ⊆ [𝑛] và

bất kỳ x ∈ X, chúng ta có

Pr(min{𝛱 𝑋 } = 𝛱(𝑥))) = 𝛱 𝑥 = 1

|𝑋| (**)

Theo trên, chúng ta có thể chọn một hoán vị ngẫu nhiên và sau đó giữ mỗi tài

liệu một bản phác thảo (sketch) chỉ gồm các tập F(D) và/hoặc V(D). Các bản phác

thảo này đủ để tính độ tương đồng hoặc độ chứa của bất kỳ cặp tài liệu nào mà không

cần bất cứ file nguồn.

Nhận xét : Tập F(D) có lợi là nó có kích thước cố định, nhưng nó chỉ cho phép

tính độ tương đồng. Còn kích thước của tập V(D) thì tăng khi D tăng, nhưng nó cho

phép tính được cả độ tương đồng lẫn độ chứa của các cặp tài liệu.

Để hạn chế kích thước của V(D) chúng ta có thể làm như sau[2]:

Đối với các tài liệu có kích thước giữa 100*2i và 100*2

i+1, chúng ta lưu

trữ tập Vi(D) = MOD2i(𝛱(SD)).

Kích thước được kỳ vọng của Vi(D) luôn luôn nằm giữa 50 và 100. Mặt

khác, chúng ta có thể dễ dàng tính Vi+1(D) từ Vi(D). (chỉ giữ duy nhất các

thành phần chia hết cho 2i+1

).

Vì vậy, nếu chúng ta được cho hai tài liệu A và B, và 2i được sử dụng bởi

các tài liệu dài hơn, chúng ta sử dụng Vi(A) và Vi(B) để tính toán.

Điểm không thuận lợi của cách tiếp cận này là việc tính độ chứa của các

tài liệu rất ngắn bên trong một tài liệu lớn hơn, nó rất dễ lỗi, đưa ra kết quả

không chính xác.

Từ đây, chúng ta có thể chọn, một lần cho tất cả, một tập t hoán vị độc lập ngẫu

nhiên π1, π1, …, πt .(ví dụ có thể lấy t = 100). Đối với mỗi tài liệu D, chúng ta lưu trữ

một sketch là danh sách

𝑆𝐴 = (min{π1(SA)}, min{π2(SA)},…, min{πt(SA)}).

17

Sau đó có thể tính sự tương đồng của A và B bằng cách tính xem có bao nhiêu

thành phần tương ứng trong 𝑆𝐴 và 𝑆𝐵 có giá trị bằng nhau. (Ở [11] cho thấy trong

thực tế chúng ta có thể sử dụng một hoán vị ngẫu nhiên duy nhất, lưu t thành phần nhỏ

nhất của ảnh của nó, và sau đó sắp xếp các sketch).

Trong thực tế, chúng ta phải đối mặt với việc không thể chọn và biểu diễn π thống nhất một cách ngẫu nhiên trong Sn đối với n lớn. Chúng ta xem xét các họ hoán

vị nhỏ hơn mà vẫn đảm bảo điều kiện min-wise independence cho bởi phương trình

(**).

2.7. Lấy dấu vân các shingle

2.7.1. Lấy dấu vân của shingle bằng dấu vân Simhash

Simhash của Charikar’s [3] [4] là một kỹ thuật giảm chiều. Nó ánh xạ các vector

nhiều chiều vào các dấu vân có kích thước nhỏ. Được áp dụng cho các trang web như

sau: Đầu tiên chuyển đổi một trang web vào một tập các đặc trưng, mỗi đặc trưng

được gắn trọng số. Các đặc trưng được tính sử dụng chuẩn công nghệ IR như

tokenization, trường hợp gấp, loại từ dừng, … . Một tập các đặc trưng được gán trọng

số cấu thành một vector nhiều chiều, với mỗi chiều cho một đặc trưng duy nhất trong

tài liệu. Với simhash, chúng ta có thể chuyển một vector nhiều chiều như vậy vào

trong một dấu vân f-bit với f nhỏ.

Sự tính toán:

Cho một tập các đặc trưng được trích chọn từ một tài liệu và các trọng số tương

ứng của chúng, chúng ta sử dụng simhash để sinh ra một dấu vân f-bit như sau:

Chúng ta duy trì một vector V có f chiều, mỗi chiều được khởi tạo giá trị

là 0.

Một đặc trưng được băm vào một giá trị băm f-bit.

f bits này tăng/giảm giá trị bằng cách: Nếu bit thứ i của giá trị băm là 1,

thành phần thứ i của V được cộng với trọng số của đặc trưng đó. Nếu bit thứ i

của giá trị băm là 0, thành phần thứ i của V bị trừ đi giá trị trọng số của đặc trưng

đó.

Khi tất cả các đặc trưng được làm như trên, ta sẽ thu được vector V với

các giá trị của mỗi chiều của nó là dương hoặc âm. Dựa vào dấu của các giá trị

đó ta xác định được các bit tương ứng trong dấu vân cuối cùng (dấm âm thì giá

trị bit tương ứng là 0, dương thì giá trị bit tương ứng là 1)

18

Như hình minh họa dưới đây:

Hinh 3:Minh họa lấy dấu vân bằng simhash [5]

Ví dụ:

Tropical fish include fish found in tropical environments around the world,

including both freshwater and salt water species.

(a) Văn bản gốc

Tropical 2 fish 2 include 1 found 1 environments 1 around 1 world 1 including 1

both 1 freshwater 1 salt 1 water 1 species 1

(b) Các từ với trọng số của nó

19

Tropical 2x 01100001 fish 2x10101011 include 11100110

Found 00011110 environments 00101101 around 10001011

World 00101010 including 11000000 both 10101110

Freshwater 00111111 salt 10110101 water 00100101

Species 11101110

(c) Các giá trị băm 8 bits cho mỗi từ

1 -5 9 -9 3 1 3 3

(d) Vector V khi cộng các trọng số

Ở trên, thành phần thứ 2 của vector V được tính như sau:

v2 = 2 – 2 + 1 – 1 – 1 – 1 – 1 + 1 – 1 – 1 – 1 – 1 + 1 = -5

Tương tự ta tính được các thành phần của vector V như (d)

Dựa vào vector V, ta ánh xạ về dấu vân 8-bit, nếu thành phần thứ i của V là nhỏ

hơn hoặc bằng 0 thì bit thứ i của dấu vân được sinh ra sẽ có giá trị là 0, và ngược

lại, thành phần thứ i của V dương thì giá trị bit thứ i sẽ là 1.

Từ đó dấu vân được sinh ra từ V là:

1 0 1 0 1 1 1 1

(e) dấu vân 8-bit của V

20

Các thuộc tính của simhash:

Simhash có hai thuộc tính trái ngược nhau:

Dấu vân của một tài liệu là một giá trị băm của các đặc trưng của nó

Các tài liệu giống nhau có giá trị băm giống nhau.

Thuộc tính thứ hai là một đặc thù của các hàm băm. Để minh họa, xem hai tài

liệu khác nhau chỉ 1 byte đơn. Các hàm băm mật mã (để tạo chữ ký) giống như SHA-1

hoặc MD5 sẽ băm hai tài liệu đó thành các giá trị băm khác nhau hoàn toàn (khoảng

cách hamming giữa các giá trị băm lớn). Tuy nhiên, simhash lại băm chúng thành các

giá trị băm tương tự nhau (khoảng cách hamming nhỏ).

Chọn các tham số:

Một số phương pháp lấy dấu vân cho tài liệu cần nhiều byte, khi dùng simhash

với 8 tỷ tài liệu ta chỉ cần dùng 64 bit, điều đó được chứng tỏ trong [4]:

Họ thử với 234

= 8 tỷ các dấu vân simhash. Họ thay đổi giá trị của k từ 1 tới 10.

Với mỗi k, lấy mẫu ngẫu nhiên số lượng như nhau của các cặp dấu vân mà khoảng

cách hamming giữa chúng chính xác bằng k. Gán bằng tay mỗi cặp bằng một trong 3

giá trị: dương thật; dương giả, không xác định. Họ đã sử dụng nguyên tắc từ [5] để xác

định chọn giá trị trong 3 giá trị trên cho một cặp:

Các cặp khác nhau hoàn toàn là dương tính giả;

Các trang hơi khác nhau, chỉ về số đếm, … là dương tính thật;

Và các trang không được tính toán (ví dụ là các trang không có nội dung

bằng Tiếng Anh, phải login hay truy cập, …) được đánh dấu là không xác

định.

Hình 4 [5] là đồ thị họ thu được cho độ chính xác và độ hồi tưởng với các giá trị

k khác nhau tương ứng. Độ chính xác (Precision) được định nghĩa như một phần của

các tài liệu gần trùng lặp được trả về (có khoảng cách hamming nhiều nhất là k) là

dương tính thật. Độ hồi tưởng (Recall) là phần trong tổng số các cặp tài liệu gần trùng

lặp (trong mẫu của họ) mà được xác định có khoảng cách Hamming nhiều nhất là k.

Hình 2 cho thấy rõ sự cân bằng của các giá trị k khác nhau: Một giá trị quá thấp

sẽ bỏ qua nhiều tài liệu gần trùng lặp (dương tính giả), một giá trị quá cao sẽ đánh dấu

không chính xác các cặp gần như trùng lặp (dương tính giả).

21

Hinh 4: Độ chính xác và độ hồi tƣởng với giá trị khác nhau của k [5]

Với các giá trị k thay đổi trong khoảng 1 tới 10.

Chọn k = 3 là hợp lý bởi vì cả độ chính xác và độ hồi tưởng là gần 0.75. Vì vậy,

đối với các dấu vân 64-bit, việc xác định hai tài liệu là gần trùng, gần giống nhau khi

các dấu vân khác nhau nhiều nhất ở 3 bits là đạt được độ chính xác khá cao.

Sự phân bố của các dấu vân:

22

Hinh 5: Sự phân bố của các 1-bit hàng đầu [5]

Ở hình trên, minh họa sự phân bố của các vị trí bit của 1-bit đứng đầu trong phép

XOR của các dấu vân kề nhau. Nếu các dấu vân đó thực sự ngẫu nhiên, thì có một sự

phân bố đối xứng phân rã theo cấp số nhân (giá trị y sẽ giảm một nửa đối với sự

tăng/giảm giá trị x). Chú ý rằng nửa bên phải của sự phân bố cho thấy rõ trạng thái

này. Tuy nhiên, nửa bên trái của phân bố không được dốc rõ ràng; Đây rõ ràng là do

phân nhóm của các tài liệu; có các cặp tài liệu mà giá trị simhash của chúng khác vừa

phải số lượng bit bởi vì chúng có nội dung tương tự.

23

Hinh 6: Bucketization của các dấu vân [5]

Hình 4 mô tả sự phân bố của các dấu vân trong 128 buckets; các đường bao của

bucket được xác định bằng cách chia không gian của 2f dấu vân vào trong 128 khoảng

liên tiếp kích thước bằng nhau. Các dấu vân có khoảng cách như nhau. Có một vài

điểm nhọn. Điều đó xảy ra do các nguyên nhân khác nhau, ví dụ:

- Vài trang web bị trống; tất cả những trang này có giá trị simhash

của 0.

- Có vài trường hợp không tìm thấy trang.

- Nhiều trang web sử dụng bảng để đưa tin.

Sau khi chuyển các tài liệu vào các dấu vân simhash, một vấn đề gặp phải là phải

tìm ra cách nhanh nhất để xác định một dấu vân 64-bit của nội dung một trang web

vừa được thu thập có khác nhiều nhất k vị trí bit hay không. Đây là bài toán khoảng

cách Hamming.

Khoảng cách Hamming

Trong lý thuyết thông tin, khoảng cách Hamming giữa hai dãy ký tự (strings) có

chiều dài bằng nhau là số các ký tự ở vị trí tương đương có giá trị khác nhau. Nói một

24

cách khác, khoảng cách Hamming đo số lượng cần thay thế phải có để đổi giá trị của

một dãy ký tự sang một dãy ký tự khác.

Ví dụ:

Khoảng cách Hamming giữa 1011101 và 1001001 là 2.

Khoảng cách Hamming giữa 2143896 và 2233796 là 3.

Khoảng cách Hamming giữa “toned” và “roses” là 3.

Đối với hai dãy ký tự nhị phân (binary strings) a và b, phép toán này tương đương với

phép toán a XOR b. Ví dụ (1011101) XOR (1001001) = 2

Bài toán khoảng cách Hamming

Định nghĩa: Cho một tập các dấu vân f-bit và một dấu vân truy vấn F, đánh dấu

một dấu vân đã tồn tại khác với F nhiều nhất ở k bits hoặc không.

Cụ thể, xét một tập 8 tỷ dấu vân 64-bit [4], khoảng 64GB. Đối với một dấu vân F

truy vấn, phải xác định trong một vài mili giây xem liệu có bất kỳ một dấu vân nào

trong 8 tỷ dấu vân đã tồn tại mà khác với F nhiều nhất 3 bits. Xem xét hai phương

pháp tiếp cận đơn giản:

Xây dựng một bảng các dấu vân đã tồn tại, được sắp xếp. Cho F, thăm dò

mỗi bảng với mỗi F’ có khoảng cách Hamming với F nhiều nhất là k. Tổng

số đầu dò là rất lớn: với các dấu vân 64-bit và k = 3, cần 643 = 41664 đầu

dò.

Tính trước tất cả các F’ mà những dấu vân đã tồn tại có khoảng cách

Hamming với F’ lớn nhất là k. Việc này cũng rất vất vả vì số dấu vân được

tính trước có thể gấp nhiều lần 41664.

Vấn đề đặt ra là phải giải quyết bài toán với số đầu dò nhỏ.

Theo [4], họ xây dựng t bảng: T1, T2, … Tt. Liên kết với bảng Ti là 2 đại lượng :

Một số nguyên pi và một hoán vị πi trên f vị trí bit. Bảng Ti được xây dựng bằng cách

áp dụng hoán vị πi cho mỗi dấu vân tay đang tồn tại; Tập hợp kết quả của hoán vị dấu

vân f-bit đều được sắp xếp. Cho trước dấu vân tay F và k là một số nguyên, thăm dò

các bảng một cách song song:

Bƣớc 1: Xác định tất cả các dấu vân tay hoán vị trong Ti có top pi các vị trí bit phù

hợp với top pi các vị trí bit của πi (F).

25

Bƣớc 2: Đối với mỗi hoán vị của các dấu vân tay được xác định ở bước 1, kiểm tra

xem nó có khác với πi (F) ở hầu hết k vị trí bit hay không.

Trong Bước 1, xác định dấu vân tay đầu tiên trong bảng Ti có top pi-bit các vị trí phù

hợp với pi top-bit vị trí của πi (F) có thể được thực hiện trong O (pi) các bước tìm

kiếm nhị phân.

Thăm dò các thông số thiết kế :

Ví dụ[4]: Xét f = 64 (các dấu vân tay 64-bit), và k = 3 do đó, các dấu vân gần như

trùng lặp khác nhau trong tối đa 3 vị trí bit. Giả sử chúng ta có 8B = 234

các dấu vân

đang có, tức là d = 34. Dưới đây là bốn mẫu thiết kế khác nhau, mỗi mẫu thiết kế có

một tập khác nhau của các hoán vị và các giá trị pi.

20 bảng:

Chia 64 bit thành 6 khối có 11, 11, 11, 11, 10 và 10 bit tương ứng. Có 63 = 20 cách

chọn 3 khối trong 6 khối này. Đối với mỗi sự lựa chọn như vậy, hoán vị π tương ứng

để tạo các bit nằm trong các bit khối lựa chọn hàng đầu bit (có một số là hoán vị như

vậy; chọn một trong số chúng thống nhất một cách ngẫu nhiên). Giá trị của pi là tổng

số bit trong các khối đã chọn.Vì vậy pi = 31, 32 hoặc 33. Trung bình, một thăm dò lấy

nhiều nhất là 234-31

= 8 (hoán vị) các dấu vân.

16 bảng:

Chia 64 bit thành 4 khối, mỗi khối có 16 bit. Có 41 = 4 cách lựa chọn 1 khối trong 4

khối này. Đối với mỗi sự lựa chọn như vậy, chia 48 bit còn lại vào bốn khối, mỗi khối

có 12 bit. Có 41 = 4 cách lựa chọn 1 trong 4 khối này. Hoán vị cho một bảng tương

ứng với cách đặt các bit vào các khối đã chọn ở các vị trí hàng đầu (leading). Giá trị

của pi là 28 tất cả các khối. Trung bình, một thăm dò lấy 234-28

= 64 (hoán vị) các dấu

vân.

10 bảng:

Chia 64 bit thành 5 khối có 13,13,13,13 và 12 bit tương ứng. Có Có 52 = 10 cách

chọn 2 khối trong 5 khối này. Đối với mỗi sự lựa chọn như vậy, hoán vị π Tương ứng

để tạo các bit nằm trong các khối lựa chọn hàng đầu bit. Giá trị của pi là tổng số bit

trong các khối đã chọn. Vì vậy pi = 25 hoặc 26. Trung bình, một thăm dò lấy nhiều

nhất là 234-25

= 512 (hoán vị) các dấu vân.

26

4 bảng:

Chia 64 bit thành 4 khối, có 16 bit. Có 41 = 4 cách lựa chọn 1 khối trong 4 khối

này. Đối với mỗi sự lựa chọn như vậy, hoán vị π Tương ứng để làm cho các bit nằm

trong các khối lựa chọn hàng đầu bit. Giá trị của pi là tổng số bit trong các khối đã

chọn.Vì vậy pi = 16. Trung bình, một thăm dò lấy nhiều nhất là 234-16

= 256 K (hoán

vị) các dấu vân.

Ví dụ trên cho thấy có thể có nhiều lựa chọn thiết kế khác nhau đối với một sự lựa

chọn cố định của f và k. Tăng số lượng các bảng sẽ tăng pi do đó làm giảm thời gian

truy vấn. Giảm số lượng các bảng làm giảm các yêu cầu lưu trữ, nhưng giảm pi dẫn

đến làm tăng thời gian truy vấn

2.8. Nén dấu vân

Nén dấu vân có thể giảm bớt kích thước của các bảng lưu trữ dấu vân. Ví dụ,

kích thước bảng cho 8 tỷ tài liệu và các dấu vân 64-bit có thể được giảm còn xấp xỉ

một nửa kích thước của chúng.

Cái nhìn sâu sắc chính là các dấu vân tay lần lượt chia sẻ các d bit hàng đầu trong

kỳ vọng[4]. Để h biểu thị vị trí của 1 bit có ý nghĩa nhất trong XOR của hai dấu vân

tay liên tiếp. Như vậy h lấy các giá trị giữa 0 và f - 1. Đối với một bảng được đưa ra,

đầu tiên tính toán sự phân bố của các giá trị h và sau đó tính toán một mã Huffiman

trên [0; f - 1] cho phân phối này. Tiếp theo, chọn một tham số B biểu thị kích thước

block. Một giá trị tiêu biểu cho B sẽ là 1024 bytes. Một block với B bytes sẽ có 8B

bits. Quét các chuỗi được sắp xếp của các dấu vân ở bảng và trình tự sắp xếp (hoán vị)

dấu vân tay trong một bảng và ở các khối liên tiếp như sau:

Bƣớc 1: Các dấu vân tay đầu tiên trong block được ghi nhớ hoàn toàn. Việc này

tốn 8f bit. Sau đó, Bước 2 được lặp đi lặp lại cho dấu vân tay kế tiếp cho đến khi một

block đầy, tức là, không thể thực hiện Bước 2 mà không cần 8B + 1 bit hoặc hơn.

Bƣớc 2: Tính toán XOR của dấu vân tay hiện tại với dấu vân tay trước. Tìm vị trí

của 1 bit có ý nghĩa nhất. Gắn thêm mã Huffman cho vị trí bit này đến block. Sau đó,

(gắn) thêm các bit vào bên phải của 1-bit có ý nghĩa nhất khối đến block.

key liên quan đến một block là vân cuối cùng đã được ghi nhớ trong khối đó. Khi một

dấu vân (hoán vị), một tìm kiếm nội suy trên các key giúp tìm ra khối để giải nén. Tùy

thuộc vào giá trị của số pi và d, và sự phân bố các dấu vân tay (simhash có xu hướng

nhóm các tài liệu tương tự với nhau).

27

Tóm tắt chƣơng 2

Giới thiệu một số nghiên cứu và hướng tiếp cận giải quyết bài toán phát hiện sự

trùng lặp cho các bài báo. Chương này tập trung vào việc nêu ra đặc trưng của các

hướng tiếp cận, và trình bày chi tiết thực hiện một số kỹ thuật cơ bản, đây là cơ sở

phương pháp luận quan trọng để khóa luận đưa ra mô hình thực nghiệm dựa trên mô

hình hệ thống được các tác giả xây dựng.

28

Chƣơng 3. Mô hinh thực nghiệm

Trên cơ sở đã phân tích các hướng tiếp cận giải quyết phát hiện sự trùng lặp các

bài báo, khóa luận đã lựa chọn cách giải quyết bài toán này là xác định mỗi bài báo

một dấu vân dựa trên simhash. Sau đó so sánh các dấu vân với nhau, hai tài liệu khác

nhau ở nhiều nhất k vị trí bit của dấu vân sẽ được đánh giá là có nội dung giống/gần

giống nhau (với giá trị k nhỏ).

Chương trình thực nghiệm của tôi thực hiện kiểm tra một bài báo điện tử được

thu thập về xem có giống/gần giống với các bài đã được thu thập trước đó hay không,

lấy các bài báo điện tử được viết bằng Tiếng Việt.

Bƣớc 1: Thu thập các bài báo điện tử

Bƣớc 2: Lấy nội dung của các bài báo đã được thu thập và loại bỏ nhiễu (loại bỏ

các thẻ, định dạng, quảng cáo, nhãn thời gian, … có trong bài báo để

29

lấy nội dung sau đó loại bỏ sơ một số từ có tần số xuất hiện cao mà

không có nhiều ý nghĩa. Ở đây chúng tôi thực hiện loại bỏ từ dừng như

các chữ số, từ phủ định, …).

Bƣớc 3: Thực hiện shingling cho mỗi tài liệu.

Bƣớc 4: Lấy dấu vân cho mỗi tài liệu.

Bƣớc 5: So sánh và cho ra kết quả

3.1. Loại bỏ từ dừng

Một số từ có tần số xuất hiện cao trong các tài liệu mà không mang nhiều ý

nghĩa, nó có thể bị thay thế ở các tài liệu khác, chỉnh sửa nội dung để biến thành bài

viết của họ. Đó gọi là đạo văn. Chúng tôi loại bỏ nó để giảm số lượng shingle của mỗi

tài liệu, do đó giảm không gian lưu trữ và công việc cần làm cũng nhẹ nhàng hơn, mà

lại không quá ảnh hưởng tới chất lượng phát hiện sự trùng lặp bởi các từ đó không

mang nhiều ý nghĩa.

Danh sách các từ dừng được tạo bằng tay, dựa trên bảng thống kê sau:

Bảng 1: Bảng các từ dừng

Loại từ Ví dụ

Từ đếm Một, hai, ba, …

Số đếm 1, 2, 3, …

Từ phủ định Không, ngược lại, …

Từ nối Và, nhưng, tuy nhiên, vì thế, vì vậy, …

Giới từ Ở, trong, trên, …

Từ chỉ định Ấy, đó, nhỉ, …

3.2. Quá trinh shingling tài liệu

Chúng tôi chọn cách tạo ra các shingle của mỗi tài liệu dựa trên các từ, mà không

phải là dựa trên các chữ cái như q-gram.

30

Coi nội dung của các bài báo điện tử thu thập được là một tài liệu D (sau khi đã

thực hiện bước loại bỏ nhiễu ở 3.1).

Để sinh ra tập w-shingling của mỗi tài liệu D, chọn w = 4, chương trình sẽ tự

động nhóm 4 tiếng cạnh nhau trong ở tài liệu D và ghi vào file .txt

3.3. Lấy dấu vân tài liệu bằng simhash

Thực hiện lấy dấu vân đặc trưng cho mỗi tài liệu D như mô tả ở phần trên, chọn

các token là các từ.

Mỗi từ trong Tiếng Việt có thể chứa nhiều tiếng, ví dụ quyển_sách, hình_ảnh,

điện_thoại,… chỉ là một từ.

Mỗi shingle gồm 4 từ, và được băm vào một hàm băm 64bit. Sau đó tính giá trị

vecto 64 chiều, và lấy được dấu vân cuối cùng theo 2.7.1

3.4. So sánh các dấu vân

Sau khi lấy được dấu vân cho mỗi tài liệu trong bộ sưu tập, ta lưu vào cơ sở dữ

liệu mã tài liệu và dấu vân tương ứng.

Mỗi khi thu thập được một trang web mới, lại thực hiện lấy dấu vân của trang

web đó và so sánh với các dấu vân đã có trong tài liệu bằng cách tìm khoảng cách

Hamming.

Xác định ngưỡng k cho khoảng cách Hamming, nếu khoảng cách Hamming giữa

hai bài báo nhỏ hơn hoặc bằng k thì kết luận chúng là trùng lặp với nhau.

Tóm tắt chƣơng 3

Trên cơ sở phân tích và dựa vào miền dữ liệu, khóa luận đã lựa chọn và xây dựng

mô hình thực nghiệm, phát hiện trùng lặp nội dung bài báo dựa vào kỹ thuật shingling

của Broder và cộng sự, đồng thời sử dụng simhash để lấy dấu vân cho tài liệu phục vụ

cho quá trình so sánh và phát hiện sự trùng lặp.

Do hạn chế về mặt thời gian và kiến thức chúng tôi tiến hành thực nghiệm một

phần mô hình đề xuất. Quá trình thực nghiệm và kết quả thực nghiệm một phần của

mô hình chúng tôi sẽ trình bày ở chương tiếp theo sau đây.

31

Chƣơng 4. Thực nghiệm và đánh giá kết quả

4.1. Môi trƣờng thực nghiệm

Chúng tôi tiến hành thực nghiệm trên máy tính có cấu hình ổn định. Với CPU có

nhân Intel Core i3 2.27GHz, Ram 2G, dung lượng ổ cứng 500G, cài hệ điều hành

Window 7 Ultimate 32bit.

Cùng với đó là các công cụ phần mềm có sẵn, phục vụ cho quá trình thực hiện

thực nghiệm.

4.1.1. Cấu hinh phần cứng

Bảng 2: Cấu hinh phần cứng

Thành phần Chỉ số

CPU Intel Core i3 2.27Ghz

RAM 2G

HDD 500G

OS Window 7 Ultimate 32 bit

4.1.2. Công cụ phần mềm

Bảng 3: Công cụ phần mềm

STT Tên phần mềm Tác giả Nguồn

1 Crawler http://code.google.com/p/crawler4j/

2 Eclipse SDK 4.2.0 http://www.eclipse.org/dowloads

3 SQL Server 2008 Microsoft http://www.microsoft.com/

4 JVnTextPro-v.2.0 Phan Xuân Hiếu,

Nguyễn Cẩm Tú

http://sourceforge.net/projects/jvntex

tpro/files/v2.0/

32

4.2. Dữ liệu thực nghiệm

Dữ liệu được lấy từ 5.000 bài báo trên khoảng 30 trang báo điện tử uy tín của

Việt Nam, Sau quá trình phân tích và tiến hành loại bỏ parser các dữ liệu nhiễu, không

phải nội dung của bài báo ta thu được các bài báo “sạch” ở dạng .txt được lưu trong

file News.

Hinh 7: File dữ liệu thực nghiệm

Hinh 8: Nội dung của một bài báo

Tiêu đề

Nội

dung

33

4.3. Thực nghiệm

Thực nghiệm được tiến hành qua các bước như mô tả dưới đây:

Bước 1: Sử dụng công cụ Crawler để lấy dữ liệu từ các trang báo điện tử từ trang

Baomoi.com

Bước 2: Lọc lần 1: bỏ thẻ HTML lấy nội dung của từng bài báo.

Hinh 9: Nội dung một bài báo đã đƣợc loại bỏ các thẻ html

Hình 9 minh họa cho kết quả thu được khi thực hiện bước 2. Nội dung của mỗi bài báo

được lấy, đã không còn thẻ html

Bước 3: Lọc lần 2:

- Sử dụng bộ công cụ JvnTextPro của tác giả Phan Xuân Hiếu và

Nguyễn Cẩm Tú để tách câu, tách từ.

- Sử dụng StopWord để loại bỏ từ dừng và các ký tự đặc biệt.

Bước 4: Shingling tài liệu, sử dụng chương trình 4Words cho dữ liệu thu được ở

bước 3.

Bước 5: Lấy dấu vân cho từng bài báo, sử dụng chương trình fingerprint cho dữ

liệu thu được ở bước 4.

Bước 6: So sánh và đưa ra kết quả.

34

Hinh 10: Kết quả sử dụng JvnTextPro cho một bài báo

Hinh 11: Kết quả 4-shingling cho một bài báo

35

Hinh 12: Kết quả lấy dấu vân của 2000 bài báo

4.4. Kết quả thực nghiệm

Độ chính xác, độ hồi tưởng và độ đo F1 đo được với các giá trị k khác nhau như

hình 13.

Với k nhỏ, độ chính xác cao, nhưng độ hồi tưởng thấp, giá trị của k càng lớn thì

độ chính xác càng thấp, độ hồi tưởng càng cao. Theo thực nghiệm cho bộ test, giá trị k

= 2 là hợp lý, cho độ đo F1 lớn nhất.

Với các giá trị k khác nhau, ta có thể áp dụng như nhau cho bài toán sao chép và

bài toán trùng lặp.

36

Hinh 13: Kết quả thực nghiệm

4.5. Nhận xét

Bước đầu thực nghiệm đã xử lý được dữ liệu để phục vụ cho quá trình shingling

và lấy dấu vân cho từng bài báo. Qua mô hình chúng tôi đã lấy được dấu vân đặc trưng

cho từng tài liệu là 64bit. Dấu vân đó là đặc trưng cho mỗi tài liệu. Sử dụng chương

trình tính khoảng cách Hamming cho các cặp dấu vân đã phát hiện được sự trùng lặp

của nội dung các bài báo. Bên cạnh đó vẫn còn trường hợp các từ bị phân tách không

đúng, dẫn đến file shingle chưa được đảm bảo cho dữ liệu đầu vào và do số lượng dữ

liệu rất lớn nên sử dụng kỹ thuật loại từ dừng, từ nhiễu chưa được như ý. Chưa thử

nghiệm được trên toàn bộ tập dữ liệu test, do đó chưa đánh giá được độ chính xác và

hồi tưởng của chương trình.

37

Kết Luận

Từ việc nghiên cứu bài toán phát hiện sự trùng lặp của các tài liệu, các kỹ thuật

đưa ra bởi Broder và cộng sự [1, 2, 8, 11], khóa luận đã đưa ra mô hình phát hiện sự

trùng lặp nội dung của các bài báo, phục vụ cho việc tìm kiếm, đánh giá chất lượng

các trang tin tức điện tử và ngăn chặn sự đạo tin, cung cấp cho người dùng những bản

tin thiết thực và đáng tin cậy nhất.

Khóa luận đã đạt được những kết quả sau:

Giới thiệu bài toán phát hiện sự trùng lặp nội dung của các bài báo điện tử,

động lực và mục đích nghiên cứu của khóa luận.

Tìm hiểu và trình bày một số phương pháp để tiếp cận bài toán xác định

sự trùng lặp dựa trên nhiều kỹ thuật của nhiều tác giả khác nhau. Chủ yếu

là 3 kỹ thuật chính: Độ tương đồng, shingling, lấy dấu vân.

Thực hiện thu thập nội dung của các bài báo, loại bỏ được nhiễu và chỉ lấy

duy nhất nội dung.

Dựa vào đặc trưng của Tiếng Việt, thực hiện loại bỏ từ có ý nghĩa thấp đối

với nội dung của bài báo, phục vụ cho việc phát hiện trùng lặp trên dữ liệu

là các bài báo viết Tiếng Việt.

Khóa luận đã thực hiện cài đặt thực nghiệm theo các bước của mô hình và

thu được dấu vân của mỗi tài liệu.

Dữ liệu sau khi xử lý được lưu trữ trong cơ sở dữ liệu để làm đầu vào cho

các pha xử lý tiếp theo.

Do hạn chế về mặt thời gian và kiến thức, khóa luận còn một số khiếm khuyết:

Mới chỉ tiến hành thực nghiệm được một phần của mô hình đề xuất

Lấy được dấu vân đặc trưng cho mỗi tài liệu mà chưa thử nghiệm với

nhiều giá trị tham số khác nhau, do đó chưa đánh giá đúng đắn chất lượng

của mô hình.

Hướng phát triển:

Thực nghiệm của khóa luận mới chỉ dừng ở mức lấy dấu vân bằng simhash mà

chưa tiến hành thực nghiệm với các phương pháp khác, do đó chúng tôi xác định các

công việc cho thời gian sắp tới là tiến hành thực nghiệm bằng nhiều phương pháp khác

nhau để tìm ra phương pháp tối ưu giải quyết bài toán đã đặt ra. Có thể áp dụng vào

cài đặt tìm kiếm online trên các trang web tin tức cho mục đích sử dụng.

38

Tài liệu tham khảo

[1] A. Z. Broder. Identifying and Filtering Near-Duplicate Documents. Combinatorial

Pattern Matching. Spinger, 2000

[2] A. Z. Broder, S. C. Glassman, M. S. Manasse, G. Zweig. Syntactic Clustering of

the Web. Computer Networks, 29(8-13):1157-1166, 1997

[3] M. Charikar. Similarity estimation techniques from rounding algorithms. In Proc.

34th

Annual Symposium on Theory of Computing(STOC2002), pages 380-388, 2002.

[4] G.S Manku, A. Jain, A. D. Sarma. Detecting Near-Duplicates for Web Crawling

2007. Conference on World Wide Web, 2007

[5] M. R. Henzinger. Finding near-duplicate web pages: a large-scale evaluation of

algorithms. In SIGIR 2006, pages 284-291, 2006

[6] M. O. Rabin. Fingerprinting byrandom polynomials. Technical Report Report TR-

15-81, Center for Research in Computing Techonlogy, Harvard University, 1981.

[7] A. Z. Broder. On the resemblance and containment of documents. In Proceedings

of Compression and Complexity of Sequences 1997, pages 21-29. IEEE Computer

Society, 1997.

[8] A. Z. Broder. Some applications of Rabin's fingerprinting method. In R. Capocelli,

A. De Santis, and U. Vaccaro, editors, Sequences II: Methods in Communications,

Security, and Computer Science, pages 143-152. Springer-Verlag, 1993.

[9] U. Manber. Finding similar files in a large file system. In Proc. 1994 USENIX

Conference, pages 1-10, Jan. 1994.

[10] S. Brin, J. Davis, and H. Garcia-Molina. Copy detection mechanisms for digital

documents. In Proc. ACM SIGMOD Annual Conference, pages 398-409, May1995.

[11] A. Broder. On the resemblance and containment of documents. In Compression

and Complexity of Sequences, 1998.

[12] A. Broder, S. C. Glassman, M. Manasse, and G. Zweig. Syntactic clustering of

the web. Computer Networks, 29(8-13):1157-1166, 1997.

[13] E. Ukkonen. Approximate string-matching distance and the q -gram distance. In

R. Capocelli, A. De Santis, and U. Vaccaro, editors, Sequences II: Methods in

Communications, Security, and Computer Science, pages 300-312. Springer-Verlag,

1993.

39

[14] N. Heintze. Scalable Document Fingerprinting. Proceedings of the Second

USENIX Workshop on Electronic Commerce, pages 191-200, 1996.

[15] N. Shivakumar and H. Garía-Molina. Building a Scalable and Accurate Copy

Detection Mechanism. Proceedings of the 3nd International Conference on Theory

and Practice of Digital Libraries , 1996.

[16] E. Uyar Near-duplicate news detection using name entities, 2009