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

Ứng dụng khoảng cách levenstein để so sánh mức độ giống nhau của hai văn bản

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 (413.61 KB, 22 trang )

ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA

TRẦN NGỌC CHIẾN

ỨNG DỤNG KHOẢNG CÁCH
LEVENSTEIN ĐỂ SO SÁNH MỨC ĐỘ
GIỐNG NHAU CỦA HAI VĂN BẢN

Chuyên ngành: Khoa học máy tính
Mã số: 60.48.01.01

TÓM TẮT LUẬN VĂN THẠC SĨ KỸ THUẬT

Đà Nẵng - Năm 2017


Công trình được hoàn thành tại
TRƯỜNG ĐẠI HỌC BÁCH KHOA

Người hướng dẫn khoa học: PGS.TS. VÕ TRUNG HÙNG

Phản biện 1: TS. LÊ THỊ MỸ HẠNH

Phản biện 2: PGS.TS. HOÀNG XUÂN HIỆP

Luận văn được bảo vệ trước Hội đồng chấm Luận văn tốt
nghiệp thạc sĩ kỹ thuật chuyên ngành Khoa học máy tính họp tại
Trường Đại học Trà Vinh vào ngày 16 tháng 09 năm 2017

Có thể tìm hiểu luận văn tại:


- Trung tâm Học liệu, Đại học Đà Nẵng tại Trường Đại học
Bách khoa
- Thư viện Khoa Công nghệ thông tin, Trường Đại học
Bách khoa - ĐHĐN


1
MỞ ĐẦU
1. Lý do chọn đề tài
Ngày nay, mạng Internet mang lại rất nhiều lợi
ích cho con người. Chúng cung cấp một khối lượng lớn
thông tin và dịch vụ. Các dịch vụ phổ biến trên Internet
như: hệ thống thư điện tử, mạng xã hội, công cụ tìm
kiếm, các dịch vụ về thương mại, y tế, học tập, giải trí…
Internet còn chứa đựng một kho kiến thức khổng lồ.
Chúng ta có thể tìm kiếm hầu như mọi thông tin trong tất
cả các lĩnh vực trong nước và quốc tế, các bài báo khoa
học, luận văn tốt nghiệp, các công trình nghiên cứu…
đều được chia sẻ cho mọi người trên toàn cầu. Do đó,
việc đo lường mức độ giống nhau của các tài liệu đã
đóng một vai trò quan trọng trong các lĩnh vực như: tìm
kiếm thông tin dựa trên nội dung của tài liệu, phân nhóm
tài liệu dựa vào sự tương đồng về nội dung, phát hiện sao
chép luận văn, bài báo,… Vì vậy, xây dựng một công cụ
để so sánh mức độ giống nhau của hai văn bản là cần
thiết.
Hiện nay, trên thế giới thường sử dụng các hệ thống
Turnitin, CheckforPlagiarism hay PlagScan… để kiểm tra
sự trùng lặp của các văn bản, tài liệu viết bằng tiếng Anh.



2

Tuy nhiên, không phải ai cũng có thể sử dụng được các
công cụ này bởi các hệ thống có thu phí sử dụng khá cao.
Xuất phát từ thực tế nêu trên cùng với sự hướng dẫn
tận tình của thầy Võ Trung Hùng, tôi đề xuất thực hiện đề
tài “Ứng dụng khoảng cách levenshtein để so sánh mức độ
giống nhau của hai văn bản” cho luận văn tốt nghiệp.
2. Mục tiêu và nhiệm vụ
a. Mục tiêu
Mục tiêu của đề tài là ứng dụng giải thuật
Levenshtein để xây dựng công cụ kiểm tra để đánh giá mức
độ giống nhau của hai văn bản.
b. Nhiệm vụ của đề tài
Để đạt được mục tiêu đề ra, nhiệm vụ của đề tài
gồm:
Nghiên cứu tổng quan các phương pháp đánh giá
mức độ giống nhau của hai văn bản;
Nghiên cứu các giải thuật đánh giá mức độ giống
nhau của văn bản dựa trên ký tự;
Nghiên cứu lựa chọn ngôn ngữ và môi trường
phát triển ứng dụng;
Thử nghiệm giải thuật đánh giá mức độ giống
nhau của văn bản.
3. Đối tượng và phạm vi nghiên cứu


3


a. Đối tượng nghiên cứu
Đối tượng nghiên cứu của đề tài là: cơ sở lý
thuyết các phương pháp và các thuật toán đánh giá sự
giống nhau của hai văn bản, ngôn ngữ lập trình, môi
trường phát triển.
b. Phạm vi nghiên cứu
Trong khuôn khổ của một luận văn chỉ giới hạn thử
nghiệm tạo công cụ đánh giá mức độ giống nhau của hai
văn bản.
4. Giả thiết nghiên cứu
Việc so sánh mức độ giống nhau của hai văn bản
đáp ứng rất nhiều các nhu cầu khác nhau trong nhiều lĩnh
vực từ tìm kiếm thông tin đến phát hiện sao chép văn bản.
Nó cũng góp phần phân loại tài liệu dựa vào nội dung liên
quan. Cụ thể, cũng có thể áp dụng để xây dựng công cụ
phát hiện sao chép tài liệu giữa các sinh viên ở một trường
đại học dựa vào kho dữ liệu đề tài, bài báo của trường.
5. Phương pháp nghiên cứu
a. Phương pháp nghiên cứu tài liệu
Các tài liệu về cơ sở lý thuyết: các phương pháp
đánh giá văn bản, các giải thuật về đánh giá mức độ
giống nhau của hai văn bản, các tài liệu mô tả một số


4

công cụ lập trình, các tài liệu liên quan đến một số nghiên
cứu khác.
b. Phương pháp thực nghiệm
Xây dựng chương trình thử nghiệm tính hiệu quả

của giải thuật nghiên cứu.
6. Ý nghĩa khoa học và thực tiễn của đề tài
a. Ý nghĩa khoa học
Đề tài tập trung nghiên cứu các phương pháp khác
nhau để đánh giá mức độ giống nhau của hai văn bản;
nghiên cứu các thuật toán đánh giá dựa trên ký tự.
b. Ý nghĩa thực tiễn
Xây dựng công cụ để đánh giá mức độ giống nhau
của hai văn bản. Việc đánh giá mức độ giống nhau của
hai văn bản có thể áp dụng trong các lĩnh vực như: tìm
kiếm nội dung tài liệu, phân nhóm nội dung tài liệu, phát
hiện sao chép,…
7. Bố cục của luận văn
Chương 1. TỔNG QUAN
Chương này trình bày kết quả nghiên cứu các nội
dung tổng quan về các phương pháp đánh giá mức độ giống
nhau của hai văn bản, các thuật toán dựa trên ký tự, so sánh
các thuật toán.


5

Chương 2. GIẢI PHÁP XÂY DỰNG CÔNG CỤ
Chương này trình bày kết quả nghiên cứu các nội
dung tổng quan về mô hình so sánh mức độ giống nhau của
hai văn bản, giải pháp chuyển dữ liệu nguồn từ dạng word,
pdf sang dạng text để so sánh, so sánh mức độ giống nhau
của hai văn bản.
Chương 3. THỰC NGHIỆM
Chương này trình bày kết quả nghiên cứu các nội

dung sau: lựa chọn công cụ phát triển, xây dựng các môđun ứng dụng như: chuyển đổi dữ liệu từ word, pdf sang
dạng text, so sánh mức độ giống nhau của văn bản. Tiến
hành chạy thử nghiệm chương trình và đánh giá kết quả thử
nghiệm.


6

CHƯƠNG 1. TỔNG QUAN
Chương này trình bày kết quả nghiên cứu các nội
dung tổng quan về các phương pháp đánh giá mức độ
giống nhau của hai văn bản, các thuật toán dựa trên ký tự,
so sánh các thuật toán.
1.1. Giới thiệu
Với việc phát triển mạnh mẽ của Internet trong
những năm qua, chúng đã đem lại lợi ích to lớn cho
người sử dụng Internet. Internet đã cung cấp nguồn thông
tin khổng lồ của nhiều lĩnh vực đến người dùng cũng như
những dịch vụ mà nó mang lại. Do đó, để đánh giá mức
độ giống nhau của các tài liệu đã góp phần quan trọng
trong các lĩnh vực như: tìm kiếm thông tin dựa vào nội
dung, phân nhóm tài liệu dựa vào sự tương đồng về nội
dung, kiểm tra sao chép,…
Để đánh giá mức độ giống nhau của văn bản thì
việc tìm kiếm sự giống nhau của các từ ngữ là một phần
quan trọng, từ đó đánh giá sự giống nhau của một câu,
một đoạn văn hay một tài liệu. Từ ngữ có thể được đánh
giá giống nhau theo mặt từ vựng hoặc ngữ nghĩa. Các từ
mà tương tự về từ vựng nếu chúng có các chuỗi ký tự
giống nhau. Các từ mà tương tự về ngữ nghĩa nếu chúng



7

nói về cùng một việc, sử dụng trong cùng một bối cảnh
và có ý nghĩa giống nhau.
Các phương pháp đánh giá mức độ giống nhau của
văn bản có thể chia ra như sau:
-

Đánh giá dựa trên chuỗi ký tự (String-Based
Similarity Measures).

-

Đánh giá dựa trên từ vựng (Corpus-Based
Similarity Measures).

-

Đánh giá dựa trên ngữ nghĩa (KnowledgeBased Similarity Measures).

Trong luận văn tập trung nghiên cứu về các phương
pháp đánh giá mức độ giống nhau của văn bản dựa trên
chuỗi ký tự, cụ thể sẽ ứng dụng khoảng cách Levenshtein
để so sánh mức độ giống nhau của hai văn bản.
1.2. Các phương pháp đánh giá mức độ giống nhau
của hai văn bản
1.2.1. Đánh giá dựa trên chuỗi (String-based Similarity
Measures)

1.2.2. Đánh giá dựa trên từ vựng (Corpus-Based
Similarity Measures)
1.2.3. Đánh giá dựa trên ngữ nghĩa (Knowledge-Based
Similarity Measures)


8

1.3. Thuật toán dựa trên ký tự
1.3.1. Thuật toán Jaro - Winkler distance
Jaro – Winkler distance được cải tiến bởi William
E. Winkler (1990) dựa theo thuật toán Jaro distance của
Matthew A. Jaro (1989). Jaro – Winkler distance được
dùng để đánh giá mức độ giống nhau giữa hai chuỗi.
Khoảng cách Jaro – Winkler có giá trị càng ngắn thì mức
độ giống nhau của hai chuỗi dữ liệu càng nhiều.
1.3.2. Thuật toán Hamming distance
Khoảng cách Hamming giữa hai chuỗi 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 cách khác, khoảng cách Hamming đo
số lượng ký tự cần thay thế ít nhất để thay đổi một chuỗi
này thành một chuỗi khác, hay số lượng lỗi xảy ra ít nhất
để chuyển đổi chuỗi này thành chuỗi khác.
1.3.3. Thuật toán Smith – Waterman
Thuật toán Smith – Waterman được đề xuất lần
đầu bởi Temple F. Smith and Michael S. Waterman vào
năm 1981. Thuật toán thực hiện việc sắp xếp chuỗi cục
bộ, xác định vị trí giống nhau của hai chuỗi. Smith –
Waterman là thuật toán quy hoạch động, thay vì tìm kiếm
toàn bộ chuỗi, thuật toán sẽ so sánh các đoạn trong chuỗi

và tìm kiếm các đoạn gần giống nhau của hai chuỗi.


9

1.3.4. Thuật toán Levenshtein distance
Khoảng cách Levenshtein giữa hai chuỗi là số
bước ít nhất để biến đổi chuỗi này thành chuỗi kia thông
qua ba phép biến đổi: thêm một ký tự, xóa một ký tự,
thay thế ký tự.
1.3.5. So sánh các thuật toán
Bảng 1.1. Bảng so sánh các thuật toán
Thuật toán
Jaro - Winkler
distance

Độ phức tạp
O(n+m)

Ứng dụng
chuỗi dữ liệu ngắn
như: họ tên, địa chỉ
tính khoảng cách

Hamming distance

O(n)

giữa các gen trong
di truyền

thực hiện trên các

Smith – Waterman

O(n*m)

vấn đề có quy mô
nhỏ
thực hiện trên

Levenshtein
distance

O(n*m)

chuỗi dữ liệu có độ
dài không bằng
nhau


10

CHƯƠNG 2. GIẢI PHÁP XÂY DỰNG
CÔNG CỤ
Chương này trình bày kết quả nghiên cứu các nội
dung tổng quan về mô hình so sánh mức độ giống nhau
của hai văn bản, giải pháp chuyển dữ liệu nguồn từ dạng
word, pdf sang dạng text để so sánh, so sánh mức độ
giống nhau của hai văn bản.
2.1. Giới thiệu

Để đánh giá mức độ giống nhau của hai văn bản
thì trước hết phải tìm được sự giống nhau giữa các từ
ngữ. Để đánh giá từ ngữ đó giống nhau như thế nào
người ta đánh giá từ ngữ đó dựa trên chuỗi ký tự hoặc
đánh giá dựa trên ngữ nghĩa. Từ đó làm cơ sở để đánh giá
cho cả câu hay cả đoạn văn. Levenshtein Distance là giải
thuật được xây dựng để đánh giá mức độ giống nhau của
hai văn bản dựa trên ký tự. Đề tài sẽ ứng dụng giải thuật
Levenshtein Distance để xây dựng công cụ so sánh mức
độ giống nhau của hai văn bản.


11

2.2. Mô hình hệ thống
-

Mô hình hệ thống tổng thể của ứng dụng như
sau:

Đoạn-

văn
Công cụ so sánh mức

bản

Kết quả tỉ lệ giống

độ giống nhau của hai


nhau của hai văn bản

văn bản

Đoạn
văn
bản

Hình 2.1. Mô hình tổng thể
-

Mô hình tổng thể chi tiết:

Đoạn văn bản thứ 1

Đoạn văn bản thứ 2

Tiền xử lý đoạn văn

Tiền xử lý đoạn văn

bản thứ 1

bản thứ 2

So sánh mức độ giống nhau của
hai văn bản

Kết quả tỉ lệ giống nhau của hai

văn bản

Hình 2.2. Mô hình tổng thể chi tiết


12

2.3. Giải thuật
2.3.1. Chuyển dữ liệu nguồn (word, pdf) sang dạng Text
2.3.1.1. Chuyển dữ liệu nguồn từ word sang dạng Text
2.3.1.2. Chuyển dữ liệu nguồn từ pdf sang dạng Text
2.3.2. So sánh mức độ giống nhau của hai văn bản theo
khoảng cách Levenshtein

Hình 2.3. Lưu đồ so sánh mức độ giống nhau của hai
văn bản


13

 Mã giả:
-

Tính khoảng cách Levenshtein:
begin
accept S1
accept S2
get length n of S1
get length m of S2
array d[n+1][m+1]

if n = 0
return m
if m = 0
return n
for i = 0 to n
begin
d[i][0] = i++
endfor
for j = 0 to m
begin
d[0][j] = j++
endfor
for i = 1 to n
begin
for j = 1 to m
begin


14
if

S1[i-1] = S2[j-1]
cost = 0

else
cost = 1
endif
d[i][j]

=


min(d[i

-

1][j] + 1, d[i][j - 1] + 1),
d[i - 1][j 1] + cost)
endfor
endfor
return d[n][m]
end

-

Tính tỉ lệ và hiển thị kết quả giống nhau của hai
văn bản:
begin
accept d[n][m]
if S1 > S2
length = n
else
length = m


15
tile

=

d[n][m]/length)*100

display tile
end

(1




16

CHƯƠNG 3. THỰC NGHIỆM
Chương này trình bày kết quả nghiên cứu các nội
dung sau: lựa chọn công cụ phát triển, xây dựng các môđun ứng dụng như: chuyển đổi dữ liệu từ word, pdf sang
dạng text, so sánh mức độ giống nhau của văn bản. Tiến
hành chạy thử nghiệm chương trình và đánh giá kết quả
thử nghiệm.
3.1. Lựa chọn công cụ phát triển
3.1.1. Ngôn ngữ lập trình
3.1.2. Môi trường phát triển tích hợp Microsoft Visual
Studio
3.1.2.1. Giới thiệu
3.1.2.2. Tính năng
3.2. Xậy dựng các mô-đun hệ thống
3.2.1. Mô-đun chuyển đổi từ tập tin word sang dạng
text
3.2.2. Mô-đun chuyển đổi từ tập tin pdf sang dạng text
3.2.3. Mô-đun so sánh mức độ giống nhau của hai văn
bản
3.3. Thử nghiệm
3.4. Đánh giá kết quả

-

Thử nghiệm 1: so sánh hai đoạn văn bản.


17

So sánh mức độ giống nhau giữa hai đoạn văn
bản với số lượng khoảng 1000 từ để tính tỉ lệ giống
nhau của hai đoạn văn.
So sánh mức độ giống nhau giữa hai đoạn văn
bản với số lượng khoảng 13000 từ để tính tỉ lệ
giống nhau của hai đoạn văn.
Nhận xét 1:
-

So sánh hai đoạn văn bản khoảng 1000 từ thì
thời gian xử lý chưa tới 1 giây.

-

Với hai đoạn văn bản khoảng 13.000 từ thì
thời gian xử lý hơn 30 giây.

-

Thử nghiệm 2: so sánh một đoạn văn bản với
nhiều văn bảng.
So sánh mức độ giống nhau giữa một đoạn văn
bản có số lượng khoảng 1700 từ với 22 tập tin

trong cơ sở dữ liệu để tính tỉ lệ giống nhau của hai
đoạn văn.
So sánh mức độ giống nhau giữa một đoạn văn
bản có số lượng khoảng 13.000 từ với 22 tập tin
trong cơ sở dữ liệu để tính tỉ lệ giống nhau của hai
đoạn văn.


18

Nhận xét 2: trong thử nghiệm thứ hai khi so sánh
giữa một văn bản với nhiều văn bản, ta có hai thử
nghiệm:
-

Với văn bản có khoảng 1700 từ thì thời gian
so sánh với tất cả 22 tập tin là khoảng 35
giây.

-

Với văn bản có khoảng 13000 từ thì thời
gian so sánh với tất cả 22 tập tin là khoảng
2 phút.

Nhận xét chung:
-

Hệ thống sẽ cho ra kết quả tỉ lệ giống nhau 100%
khi hai văn bản hoàn toàn giống nhau.


-

Hệ thống sẽ cho ra kết quả thấp hơn 50% khi hai
văn bản khác nhau. Ví dụ, hai văn bản có tỉ lệ
giống nhau là 28.81% thì có thể xem là hoàn toàn
khác nhau, vì thuật toán dựa trên ký tự nên sẽ
không thể đưa ra kết quả là khác nhau hoàn toàn
với tỉ lệ 0%.

-

Kết quả tỉ lệ giống nhau cũng có liên quan tới độ
dài của hai văn bản cần so sánh. Hai văn bản có độ
dài gần bằng nhau sẽ cho ra kết quả chính xác hơn
là hai văn bản có độ dài chênh lệch nhau nhiều.


19

-

Thuật toán đã được thay thế từ mảng hai chiều sang
mảng một chiều để giảm độ phức tạp của thuật toán
qua đó đã giúp cho hệ thống tính toán nhanh hơn
thuật toán gốc dùng mảng hai chiều.


20


KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Trong quá trình nghiên cứu, tôi đã tiếp thu được
nhiều kiến thức về các phương pháp đánh giá mức độ
giống nhau của hai văn bản, các thuật toán so sánh dựa
trên ký tự, ngôn ngữ lập trình C#, phát triển ứng dụng
trên môi trường tích hợp Microsoft Visual Studio.
Luận văn đã xây dựng được công cụ so sánh mức
độ giống nhau của hai văn bản sử dụng thuật toán
Levenshtein Distance. Công cụ cho phép so sánh mức độ
giống nhau của hai đoạn văn, đoạn văn với văn bản, văn
bản với văn bản, so sánh giữa một văn bản với nhiều văn
bản. Ngoài ra, công cụ cũng cho phép chuyển đổi các tập
tin ở dạng word, pdf sang dạng text để so sánh. Công cụ
được thử nghiệm trên các văn bản là các tài liệu tham
khảo, các bài báo, báo cáo,…
Tuy đã có nhiều cố gắng nhưng luận văn vẫn còn
một số hạn chế như: thuật toán cài đặt khi so sánh các
văn bản có dung lượng lớn sẽ xảy ra tình trạng tràn bộ
nhớ, tốc độ xử lý sẽ chậm đáng kể so với các văn bản có
dung lượng nhỏ. Giai đoạn chuyển đổi các tập tin word,
pdf ban đầu sang dạng text vẫn chưa loại bỏ được các ký
tự dư thừa hiệu quả.



×