Luận văn thạc sĩ: So sánh độ giống nhau của văn bản bằng khoảng cách Levenshtein

Luận văn thạc sĩ trình bày phương pháp dùng khoảng cách Levenshtein để so sánh văn bản, đo lường độ giống nhau và xây dựng công cụ thực tế.

Trường đại học

Đại học Đà Nẵng

Chuyên ngành

Khoa học máy tính

Người đăng

Ẩn danh

Thể loại

Luận văn thạc sĩ

2017

74
1
0

Phí lưu trữ

30 Point

Tóm tắt

I. Khám phá cách so sánh văn bản bằng khoảng cách Levenshtein

Trong bối cảnh bùng nổ thông tin kỹ thuật số, việc đo lường mức độ giống nhau của văn bản đóng vai trò then chốt trong nhiều lĩnh vực công nghệ. Các ứng dụng từ tìm kiếm thông tin, phân nhóm tài liệu, đến phát hiện đạo văn đều dựa trên khả năng xác định sự tương đồng giữa các chuỗi ký tự. Luận văn "Ứng dụng khoảng cách Levenshtein để so sánh mức độ giống nhau của hai văn bản" của tác giả Trần Ngọc Chiến đã đi sâu nghiên cứu vấn đề này. Có ba phương pháp chính để đánh giá độ tương tự văn bản: dựa trên chuỗi ký tự (String-Based), dựa trên từ vựng (Corpus-Based), và dựa trên ngữ nghĩa (Knowledge-Based). Luận văn tập trung vào phương pháp dựa trên chuỗi, cụ thể là thuật toán Levenshtein. Đây là một kỹ thuật mạnh mẽ để đo lường sự khác biệt chuỗi bằng cách tính toán số lượng thao tác tối thiểu cần thiết để biến đổi một chuỗi thành chuỗi khác. Các thao tác này bao gồm chèn, xóa, và thay thế ký tự. Khoảng cách này, còn được gọi là khoảng cách chỉnh sửa (edit distance), cung cấp một thước đo định lượng về sự khác biệt. Giá trị khoảng cách càng nhỏ, hai văn bản càng giống nhau. Phương pháp này đặc biệt hữu ích khi xử lý các vấn đề so khớp chuỗi mờ (fuzzy string matching), nơi các chuỗi không hoàn toàn giống hệt nhau nhưng có sự tương đồng cao, chẳng hạn như trong việc kiểm tra lỗi chính tả hoặc tìm kiếm tên người có thể bị gõ sai.

1.1. Tổng quan về các phương pháp đo độ tương tự văn bản

Việc đánh giá độ tương tự văn bản là một phần quan trọng của xử lý ngôn ngữ tự nhiên (NLP). Theo nghiên cứu của Trần Ngọc Chiến, các phương pháp được phân loại thành ba nhóm chính. Nhóm đầu tiên là Đánh giá dựa trên chuỗi (String-based), tập trung vào cấu trúc ký tự và thuật ngữ, bao gồm các thuật toán như Levenshtein, Jaro-Winkler, và Cosine Similarity. Nhóm thứ hai, Đánh giá dựa trên từ vựng (Corpus-based), sử dụng thông tin từ các tập dữ liệu lớn (corpora) để xác định sự tương đồng ngữ nghĩa, với các kỹ thuật như Latent Semantic Analysis (LSA). Nhóm cuối cùng, Đánh giá dựa trên ngữ nghĩa (Knowledge-based), khai thác các mạng ngữ nghĩa như WordNet để đo lường mối quan hệ ý nghĩa giữa các từ. Mỗi phương pháp có ưu và nhược điểm riêng, phù hợp với các bài toán khác nhau. Luận văn này tập trung vào phương pháp dựa trên chuỗi vì tính đơn giản và hiệu quả trong việc so khớp cấp độ ký tự.

1.2. Định nghĩa Khoảng cách Levenshtein Edit Distance là gì

Khoảng cách Levenshtein, hay khoảng cách chỉnh sửa (edit distance), được đặt theo tên nhà khoa học Vladimir Levenshtein. Nó định nghĩa khoảng cách giữa hai chuỗi là số lượng thao tác chỉnh sửa đơn ký tự tối thiểu để thay đổi chuỗi này thành chuỗi kia. Ba phép toán chèn, xóa, thay thế được coi là các thao tác cơ bản. Ví dụ, khoảng cách giữa "test" và "tent" là 1 vì chỉ cần một phép thay thế ('s' thành 'n'). Khoảng cách này là một số nguyên không âm. Nếu khoảng cách bằng 0, hai chuỗi hoàn toàn giống nhau. Ngược lại, giá trị khoảng cách càng lớn, mức độ khác biệt giữa hai chuỗi càng cao. Đây là một khái niệm nền tảng trong lĩnh vực string matching và được ứng dụng rộng rãi trong nhiều bài toán thực tế.

II. Thách thức trong việc phát hiện đạo văn so khớp chuỗi mờ

Sự phát triển của Internet đã tạo ra một kho kiến thức khổng lồ, nhưng cũng kéo theo thách thức lớn về tính nguyên gốc của tài liệu. Việc sao chép, chỉnh sửa nội dung trở nên dễ dàng, dẫn đến vấn nạn đạo văn trong học thuật và nghiên cứu. Do đó, nhu cầu xây dựng các công cụ phát hiện đạo văn hiệu quả ngày càng trở nên cấp thiết. Các hệ thống này cần khả năng so sánh một văn bản với một kho dữ liệu lớn để tìm ra các đoạn trùng lặp. Tuy nhiên, việc sao chép thường không nguyên bản mà có sự thay đổi nhỏ về từ ngữ, cấu trúc câu. Đây là lúc bài toán so khớp chuỗi mờ (fuzzy string matching) phát huy tác dụng. Thay vì tìm kiếm sự trùng khớp chính xác, các thuật toán cần nhận diện được các đoạn văn bản tương tự nhau về mặt nội dung mặc dù có sự khác biệt về ký tự. Thuật toán Levenshtein là một giải pháp hiệu quả cho thách thức này. Nó không yêu cầu các chuỗi phải giống hệt nhau mà đo lường mức độ "gần giống" dựa trên khoảng cách chỉnh sửa. Điều này cho phép phát hiện các trường hợp sao chép có chỉnh sửa, một kỹ thuật tinh vi để qua mặt các công cụ kiểm tra đơn giản. Hơn nữa, các vấn đề như lỗi chính tả, biến thể từ ngữ, hay lỗi nhập liệu cũng là những thách thức trong xử lý ngôn ngữ tự nhiên (NLP) mà các phương pháp so khớp mờ có thể giải quyết.

2.1. Vấn nạn sao chép nội dung trong kỷ nguyên kỹ thuật số

Luận văn của Trần Ngọc Chiến đã chỉ ra rằng, "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ư... phát hiện sao chép luận văn, bài báo". Trong môi trường học thuật và sáng tạo, việc đảm bảo tính nguyên gốc là tối quan trọng. Các công cụ kiểm tra đạo văn truyền thống dựa trên so khớp chính xác có thể dễ dàng bị đánh lừa bởi những thay đổi nhỏ như thay từ đồng nghĩa, đảo trật tự câu, hoặc sửa lỗi chính tả. Vấn nạn này đòi hỏi một phương pháp tiếp cận linh hoạt hơn, có khả năng nhận diện sự tương đồng về bản chất thay vì chỉ dựa trên bề mặt ký tự. Các thuật toán đo lường sự khác biệt chuỗi như Levenshtein cung cấp một nền tảng vững chắc để xây dựng các hệ thống phát hiện sao chép tinh vi hơn.

2.2. Khó khăn của việc so khớp chuỗi không chính xác fuzzy

So khớp chuỗi không chính xác, hay fuzzy string matching, đối mặt với nhiều khó khăn. Thách thức chính là làm thế nào để định lượng sự tương đồng một cách hợp lý. Hai chuỗi có thể khác nhau về ký tự nhưng lại rất gần gũi về ngữ nghĩa. Ví dụ, "Levenshtein algorithm" và "Levenshtein algoritm" chỉ khác nhau một ký tự do lỗi chính tả. Một hệ thống so khớp tốt cần nhận ra chúng gần như là một. Các thuật toán như thuật toán Levenshtein hay thuật toán Jaro-Winkler được thiết kế để giải quyết vấn đề này. Chúng cung cấp một điểm số hoặc khoảng cách để đo lường mức độ tương tự, cho phép các ứng dụng đặt ra một ngưỡng chấp nhận sự khác biệt. Việc lựa chọn thuật toán và ngưỡng phù hợp là yếu tố quyết định hiệu quả của hệ thống, đặc biệt trong các ứng dụng đòi hỏi độ chính xác cao như cơ sở dữ liệu di truyền học hoặc kiểm tra lỗi chính tả.

III. Phương pháp tính khoảng cách Levenshtein bằng quy hoạch động

Cơ sở của thuật toán Levenshtein nằm ở việc áp dụng một kỹ thuật tối ưu hóa mạnh mẽ là thuật toán quy hoạch động (dynamic programming). Thay vì giải quyết bài toán một cách trực tiếp, quy hoạch động chia nhỏ bài toán lớn thành các bài toán con đơn giản hơn, sau đó lưu trữ kết quả của các bài toán con này để tránh tính toán lại. Để tính khoảng cách chỉnh sửa giữa hai chuỗi, một ma trận hai chiều, gọi là ma trận Levenshtein, sẽ được xây dựng. Kích thước của ma trận này là (n+1) x (m+1), trong đó n và m là độ dài của hai chuỗi cần so sánh. Mỗi ô trong ma trận, d(i, j), biểu diễn khoảng cách Levenshtein giữa i ký tự đầu tiên của chuỗi thứ nhất và j ký tự đầu tiên của chuỗi thứ hai. Giá trị của mỗi ô được tính dựa trên giá trị của ba ô lân cận: ô bên trái, ô phía trên, và ô chéo trên bên trái. Công thức tính toán dựa trên ba phép toán chèn, xóa, thay thế. Cụ thể, d(i, j) là giá trị nhỏ nhất của: giá trị ô trên cộng 1 (tương ứng phép xóa), giá trị ô trái cộng 1 (tương ứng phép chèn), và giá trị ô chéo cộng với chi phí thay thế (0 nếu ký tự giống nhau, 1 nếu khác nhau). Bằng cách điền vào ma trận từ góc trên bên trái đến góc dưới bên phải, giá trị ở ô cuối cùng chính là khoảng cách Levenshtein tổng thể giữa hai chuỗi.

3.1. Nguyên lý thuật toán quy hoạch động dynamic programming

Thuật toán quy hoạch động là một phương pháp giải quyết các bài toán tối ưu bằng cách phân rã chúng thành các bài toán con gối nhau. Ý tưởng cốt lõi là giải mỗi bài toán con chỉ một lần và lưu kết quả vào một bảng để sử dụng lại. Trong thuật toán Levenshtein, bài toán con là tính khoảng cách giữa các tiền tố của hai chuỗi. Kết quả của việc tính khoảng cách giữa chuỗi str1[1..i]str2[1..j] được sử dụng để tính khoảng cách cho các chuỗi dài hơn. Cách tiếp cận này đảm bảo rằng mỗi phép so sánh chỉ được thực hiện một lần, giúp tối ưu hóa hiệu suất tính toán. Độ phức tạp thời gian của thuật toán là O(n*m), phù hợp cho các chuỗi có độ dài trung bình.

3.2. Ba phép toán cốt lõi chèn insertion xóa deletion thay thế

Nền tảng của khoảng cách Levenshtein là ba phép toán chỉnh sửa cơ bản. Phép chèn (insertion) là thêm một ký tự vào một chuỗi. Phép xóa (deletion) là loại bỏ một ký tự khỏi một chuỗi. Phép thay thế (substitution) là đổi một ký tự trong chuỗi này thành một ký tự khác trong chuỗi kia. Mỗi phép toán này được gán một "chi phí" là 1. Thuật toán Levenshtein tìm ra chuỗi các phép toán có tổng chi phí thấp nhất để biến đổi chuỗi nguồn thành chuỗi đích. Số lượng phép toán tối thiểu này chính là khoảng cách chỉnh sửa. Ví dụ, để biến "DRIVE" thành "DRAW", cần xóa 'I' và 'V', sau đó chèn 'A' và 'W', nhưng một cách tối ưu hơn là thay thế 'I' bằng 'A', 'V' bằng 'W' và xóa 'E', tổng cộng 3 thao tác.

3.3. Hướng dẫn xây dựng ma trận Levenshtein từng bước

Để tính khoảng cách giữa chuỗi U="DRIVE" và V="DRAW", một ma trận Levenshtein kích thước 6x5 được tạo ra. Hàng đầu tiên được khởi tạo với các giá trị từ 0 đến 5, và cột đầu tiên từ 0 đến 4. Ô d(i,j) được tính bằng cách lấy giá trị nhỏ nhất của d(i-1,j)+1 (xóa), d(i,j-1)+1 (chèn), và d(i-1,j-1) + cost (thay thế, cost=0 nếu ký tự trùng, 1 nếu khác). Ví dụ, để tính ô d(1,1) (so sánh 'D' và 'D'), vì ký tự giống nhau, giá trị sẽ là min(d(0,1)+1, d(1,0)+1, d(0,0)+0) = min(2,2,0) = 0. Quá trình này được lặp lại cho đến khi toàn bộ ma trận được điền đầy. Giá trị ở góc dưới cùng bên phải của ma trận, d(5,4), sẽ là kết quả cuối cùng, chính là khoảng cách Levenshtein cần tìm. Trong ví dụ này, giá trị đó là 3.

IV. So sánh thuật toán Levenshtein với Jaro Winkler và khác

Mặc dù thuật toán Levenshtein rất phổ biến, nó không phải là giải pháp duy nhất cho bài toán string matching. Luận văn của Trần Ngọc Chiến cũng đã xem xét và so sánh các thuật toán dựa trên ký tự khác, mỗi loại có điểm mạnh riêng. Thuật toán Jaro-Winkler là một đối thủ cạnh tranh đáng chú ý, đặc biệt hiệu quả khi so sánh các chuỗi ngắn như tên riêng hoặc địa chỉ. Jaro-Winkler không chỉ đếm số ký tự trùng khớp mà còn xem xét đến thứ tự của chúng và ưu tiên các ký tự trùng khớp ở phần đầu chuỗi. Điều này làm cho nó rất phù hợp với các tác vụ yêu cầu nhận diện sự tương đồng dù có lỗi đánh máy nhỏ. Một thuật toán khác là khoảng cách Hamming, rất đơn giản và nhanh chóng nhưng có một hạn chế lớn: nó chỉ hoạt động trên các chuỗi có cùng độ dài và chỉ đếm số vị trí có ký tự khác nhau. Thuật toán Smith-Waterman, giống Levenshtein, cũng sử dụng thuật toán quy hoạch động, nhưng nó được thiết kế để tìm kiếm sự tương đồng cục bộ (local alignment) thay vì toàn cục (global alignment). Điều này có nghĩa là Smith-Waterman xuất sắc trong việc tìm ra các đoạn con giống nhau nhất giữa hai chuỗi dài, một ứng dụng phổ biến trong tin sinh học. Việc lựa chọn thuật toán nào phụ thuộc vào đặc điểm của dữ liệu và mục tiêu cụ thể của bài toán, từ phát hiện đạo văn đến so khớp cơ sở dữ liệu.

4.1. Phân tích thuật toán Jaro Winkler cho các chuỗi ngắn

Thuật toán Jaro-Winkler được phát triển để đánh giá mức độ giống nhau của các chuỗi dữ liệu ngắn. Nó tính toán một điểm số tương đồng trong khoảng từ 0 đến 1. Điểm số bằng 1 có nghĩa là hai chuỗi hoàn toàn giống nhau. Thuật toán này dựa trên số ký tự chung và số lần hoán vị (transpositions) cần thiết. Ưu điểm chính của Jaro-Winkler là nó có xu hướng cho điểm cao hơn đối với các chuỗi có chung một tiền tố, điều này rất hữu ích khi so khớp họ tên, vì lỗi thường xảy ra ở cuối tên. So với khoảng cách Levenshtein, Jaro-Winkler thường cho kết quả trực quan hơn đối với các trường hợp lỗi đánh máy nhỏ trong chuỗi ngắn.

4.2. Giới hạn của khoảng cách Hamming và thuật toán Smith Waterman

Khoảng cách Hamming là một phương pháp đo lường sự khác biệt chuỗi rất cơ bản. Hạn chế lớn nhất của nó là yêu cầu hai chuỗi phải có độ dài bằng nhau, làm cho nó không thể áp dụng trong hầu hết các bài toán so sánh văn bản thực tế, nơi độ dài văn bản hiếm khi giống nhau. Trong khi đó, thuật toán Smith-Waterman rất mạnh mẽ trong việc tìm kiếm sự tương đồng cục bộ. Nó sẽ tìm ra cặp chuỗi con (substring) tương đồng nhất, ngay cả khi hai chuỗi tổng thể rất khác nhau. Tuy nhiên, nếu mục tiêu là đánh giá sự giống nhau của toàn bộ văn bản (global similarity), như trong phát hiện đạo văn, thì thuật toán Levenshtein hoặc các biến thể của nó sẽ phù hợp hơn vì chúng xem xét toàn bộ chuỗi từ đầu đến cuối.

V. Bí quyết xây dựng công cụ so sánh văn bản từ luận văn

Dựa trên cơ sở lý thuyết vững chắc, luận văn của Trần Ngọc Chiến đã đề xuất một mô hình và giải pháp cụ thể để xây dựng công cụ so sánh văn bản. Quá trình này không chỉ đơn thuần là cài đặt thuật toán Levenshtein mà bao gồm cả các bước tiền xử lý dữ liệu quan trọng. Bước đầu tiên và thiết yếu là chuyển đổi dữ liệu đầu vào, thường ở các định dạng phổ biến như Word (.docx) hoặc PDF, sang dạng văn bản thuần túy (plain text). Đây là một công đoạn quan trọng trong xử lý ngôn ngữ tự nhiên (NLP) vì thuật toán chỉ có thể hoạt động trên chuỗi ký tự thô. Luận văn mô tả chi tiết các lưu đồ giải thuật để trích xuất văn bản từ các định dạng này, đồng thời loại bỏ các khoảng trắng thừa hoặc ký tự không cần thiết có thể ảnh hưởng đến độ chính xác của phép so sánh. Sau khi đã có hai chuỗi văn bản thuần túy, mô-đun so sánh sẽ được kích hoạt. Tại đây, thuật toán quy hoạch động được áp dụng để xây dựng ma trận Levenshtein và tính toán khoảng cách chỉnh sửa. Kết quả cuối cùng không chỉ là giá trị khoảng cách mà còn được chuyển đổi thành một tỷ lệ phần trăm tương đồng để người dùng dễ dàng diễn giải. Công thức tính tỷ lệ thường là (1 - (khoảng cách / độ dài chuỗi dài hơn)) * 100. Việc xây dựng một công cụ hoàn chỉnh đòi hỏi sự kết hợp giữa lý thuyết thuật toán và kỹ thuật xử lý dữ liệu thực tế.

5.1. Mô hình tiền xử lý dữ liệu Word PDF sang Text

Để thuật toán Levenshtein hoạt động, dữ liệu đầu vào phải ở dạng text. Luận văn đề xuất một mô-đun tiền xử lý có khả năng đọc các tệp Word (.docx) và PDF. Đối với tệp Word, giải pháp là giải nén tệp .docx (vốn là một tệp zip) và trích xuất nội dung từ tệp document.xml bên trong. Đối với tệp PDF, cần sử dụng các thư viện chuyên dụng để đọc và trích xuất văn bản từ từng trang. Sau khi trích xuất, một bước làm sạch dữ liệu là cần thiết, bao gồm việc loại bỏ các khoảng trắng, các dòng trống và các ký tự điều khiển không mong muốn. Giai đoạn này đảm bảo rằng dữ liệu đưa vào so sánh là sạch sẽ và nhất quán, từ đó tăng độ chính xác của kết quả đo lường sự khác biệt chuỗi.

5.2. Ứng dụng Levenshtein để tính toán tỷ lệ tương đồng văn bản

Sau bước tiền xử lý, hai chuỗi văn bản s1s2 được đưa vào hàm tính khoảng cách Levenshtein. Hàm này trả về một số nguyên d, đại diện cho tổng số phép toán chèn, xóa, thay thế tối thiểu. Tuy nhiên, con số này khó diễn giải nếu không đặt trong tương quan với độ dài của văn bản. Do đó, luận văn đề xuất chuyển đổi giá trị này thành một tỷ lệ phần trăm. Tỷ lệ tương đồng được tính bằng cách lấy 1 trừ đi tỷ số giữa khoảng cách Levenshtein và độ dài của chuỗi dài hơn trong hai chuỗi, sau đó nhân với 100. Ví dụ, nếu khoảng cách là 10 và chuỗi dài nhất có 100 ký tự, tỷ lệ tương đồng sẽ là (1 - 10/100) * 100 = 90%. Kết quả này trực quan và dễ hiểu hơn cho người dùng cuối khi đánh giá độ tương tự văn bản.

VI. Kết luận Tương lai của thuật toán Levenshtein trong NLP

Thuật toán Levenshtein đã chứng tỏ là một công cụ nền tảng và cực kỳ hữu ích trong lĩnh vực so sánh văn bảnxử lý ngôn ngữ tự nhiên (NLP). Như được phân tích trong luận văn của Trần Ngọc Chiến, ưu điểm lớn nhất của nó là sự đơn giản trong khái niệm và khả năng cung cấp một thước đo định lượng rõ ràng về sự khác biệt giữa hai chuỗi. Nó không yêu cầu các mô hình ngôn ngữ phức tạp hay dữ liệu huấn luyện, làm cho nó trở nên linh hoạt và dễ triển khai cho nhiều ứng dụng khác nhau, từ kiểm tra lỗi chính tả, phát hiện đạo văn, đến so khớp dữ liệu trong cơ sở dữ liệu. Tuy nhiên, thuật toán này cũng có những hạn chế. Độ phức tạp tính toán O(n*m) có thể trở thành rào cản khi so sánh các văn bản rất dài. Quan trọng hơn, Levenshtein chỉ hoạt động ở cấp độ ký tự, nó hoàn toàn bỏ qua ngữ nghĩa của từ. Hai câu có thể có khoảng cách chỉnh sửa lớn nhưng lại mang ý nghĩa tương đồng. Hướng phát triển trong tương lai là kết hợp sức mạnh của các thuật toán đo lường sự khác biệt chuỗi như Levenshtein với các phương pháp dựa trên ngữ nghĩa. Các mô hình nhúng từ (word embeddings) hay các mô hình ngôn ngữ lớn (LLMs) có thể nắm bắt được ý nghĩa sâu xa của văn bản, trong khi Levenshtein vẫn hữu ích để xử lý các biến thể bề mặt. Sự kết hợp này hứa hẹn tạo ra các hệ thống so sánh văn bản toàn diện và chính xác hơn.

6.1. Đánh giá ưu điểm và nhược điểm của thuật toán Levenshtein

Ưu điểm chính của thuật toán Levenshtein bao gồm tính trực quan, dễ hiểu và dễ cài đặt. Nó không phụ thuộc vào ngôn ngữ cụ thể nào và hoạt động tốt trong các tác vụ fuzzy string matching. Tuy nhiên, nhược điểm của nó cũng rất rõ ràng. Thứ nhất, độ phức tạp tính toán O(n*m) làm cho nó không hiệu quả với các văn bản có độ dài hàng triệu ký tự. Thứ hai, nó không xem xét đến ngữ nghĩa; ví dụ, "chó" và "mèo" có khoảng cách Levenshtein lớn nhưng về mặt ngữ nghĩa lại gần nhau (đều là vật nuôi). Thứ ba, nó coi chi phí của mọi phép toán (chèn, xóa, thay thế) là như nhau, điều này không phải lúc nào cũng đúng trong thực tế (ví dụ, lỗi gần phím trên bàn phím nên có chi phí thấp hơn).

6.2. Hướng phát triển trong lĩnh vực xử lý ngôn ngữ tự nhiên

Tương lai của việc so sánh văn bản trong NLP nằm ở việc tích hợp nhiều lớp phân tích. Các thuật toán dựa trên ký tự như Levenshtein sẽ tiếp tục đóng vai trò quan trọng ở lớp xử lý bề mặt, đặc biệt trong việc chuẩn hóa dữ liệu và kiểm tra lỗi chính tả. Tuy nhiên, để đạt được sự hiểu biết sâu sắc, chúng cần được kết hợp với các kỹ thuật tiên tiến hơn. Các phương pháp như khoảng cách Damerau–Levenshtein (cho phép hoán vị) có thể cải thiện độ chính xác trong một số trường hợp. Xa hơn nữa, việc sử dụng các vector từ (word vectors) để biểu diễn văn bản trong không gian ngữ nghĩa và tính toán độ tương tự cosine sẽ nắm bắt được các mối quan hệ về ý nghĩa. Sự kết hợp giữa phân tích cú pháp, phân tích ký tự và phân tích ngữ nghĩa sẽ là chìa khóa để xây dựng các hệ thống phát hiện đạo văn và tìm kiếm thông tin thông minh thế hệ tiếp theo.

04/10/2025
Luận văn thạc sĩ ứng dụng khoảng cách levenstein để so sánh mức độ giống nhau của hai văn bản

Trích đoạn nội dung tài liệu

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. 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. 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. 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. 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 [5],… Để đá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 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 [5].

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 (Knowledge-Based Similarity Measures) [5]. 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.

Các phương pháp đánh giá mức độ giống nhau của hai văn bản 1. Đánh giá dựa trên chuỗi (String-based Similarity Measures) Đánh giá dựa trên chuỗi được thực hiện bằng cách so sánh trình tự của các chuỗi dữ liệu. Phương pháp đánh giá dựa trên chuỗi chia ra làm hai cách: đánh giá dựa trên ký tự (Character-Based Similarity Measures) và đánh giá dựa trên thuật ngữ (Term-Based Similarity Measures) [5][9]. Các thuật toán đánh giá dựa trên ký tự bao gồm: - 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.

- N-gram: là một chuỗi con gồm n thành phần (có thể là ký tự, từ,…) từ một chuỗi văn bản cho trước. Thuật toán N-gram sẽ so sánh các N-grams (chuỗi con) trong hai chuỗi cần so sánh. Khoảng cách giữa hai chuỗi được tính bằng cách chia số chuỗi con giống nhau với số chuỗi con ban đầu. - Levenshtein: 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ự.

- Jaro–Winkler: đượ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 [10]. - Needleman–Wunsch: là thuật toán quy hoạch động, thuật toán thực hiện tìm kiếm toàn cục để tìm ra các cặp trình tự giống nhau trên hai chuỗi dữ liệu. Nó thích hợp áp dụng với hai chuỗi dữ liệu có độ dài tương đương nhau.

- Longest Common Substring (LCS): thuật toán so sánh sự giống nhau của hai chuỗi dựa trên chiều dài liên tục của các ký tự giống nhau của cả hai chuỗi [5][9]. Các thuật toán đánh giá dựa trên thuật ngữ bao gồm: - Block Distance: cũng được gọi là Manhattan distance, city block distance. Khoảng cách Block Distance giữa hai chuỗi dữ liệu càng lớn thì mức độ giống nhau càng ít. 6 - Cosine similarity: là cách đo lường mức độ giống nhau của hai vector bằng cách tính góc Cosine giữa hai vector.

- Dice’s coefficient: được tính gấp hai lần số lượng thuật ngữ giống nhau của hai chuỗi chia cho tổng số thuật ngữ của hai chuỗi (2*(X∩Y)/(X+Y)). - Euclidean distance: còn được gọi là L2 distance là căn bậc hai của tổng bình phương giữa các thành phần tương ứng của hai vector.1) - Jaccard similarity: được tính như số thuật ngữ giống nhau chia cho số thuật ngữ khác nhau của hai chuỗi. - Matching Coefficient: là cách tiếp cận dựa trên vector bằng cách đếm số thuật ngữ giống nhau của hai vector. - Overlap coefficient: tương tự như Dice’s coefficient, nhưng nó sẽ xem hai chuỗi là hoàn toàn giống nhau nếu một chuỗi con của chuỗi này là phần tử của chuỗi kia [5][9].

Smith-Waterman N-gram Levenshtein Jaro–Winkler Character - Based Needleman–Wunsch LCS String - Based Block Distance Cosine similarity Dice’s coefficient Term - Based Euclidean distance Overlap coefficient Matching Coefficient Jaccard similarity Hình 1. Các phương pháp đánh giá mức độ giống nhau dựa trên chuỗi 7 1. Đánh giá dựa trên từ vựng (Corpus-Based Similarity Measures) Đánh giá dựa trên từ vựng được thực hiện bằng cách xác định sự tương đồng về mặt ngữ nghĩa của từ ngữ dựa trên thông tin từ một tập từ vựng (tập dữ liệu – large corpora). Tập từ vựng là một tập hợp các dữ liệu văn bản hoặc tiếng nói được sử dụng trong nghiên cứu ngôn ngữ [5][9].

Các kỹ thuật đánh giá dựa trên từ vựng gồm [5][9]: - Hyperspace Analogue to Language (HAL): tạo ra một không gian ngữ nghĩa từ các từ. Một ma trận từ (word by word) được xây dựng với mỗi phần tử ma trận là sự liên kết giữa các từ. Người sử dụng thuật toán sau đó có tùy chọn để loại bỏ các cột entropy thấp từ ma trận. Các giá trị ma trận được tích lũy bằng cách xác định trọng số tỷ lệ nghịch với khoảng cách của từ trọng tâm.

Các từ gần từ trọng tâm thì nó sẽ phản ánh gần hơn ngữ nghĩa của từ trọng tâm và cũng có trọng số cao hơn. HAL cũng ghi nhận thông tin thứ tự của từ xuất hiện gần trước hay sau từ trọng tâm. - Latent Semantic Analysis (LSA): là kỹ thuật phổ biến nhất để đánh giá sự tương đồng về mặt ngữ nghĩa. LSA giả định rằng những từ gần nghĩa sẽ xuất hiện trong các mảng văn bản tương đồng.

Một ma trận chứa tổng số các từ trên một đoạn văn (dòng đại diện cho các từ duy nhất và cột đại diện cho mỗi đoạn văn) được xây dựng từ một mảng lớn của văn bản và một kỹ thuật toán học được gọi là Singular Value Decomposition (SVD) được sử dụng để giảm số cột trong khi vẫn giữ được sự giống nhau về cấu trúc giữa các dòng. Các từ sau đó được so sánh bằng cách lấy cosin của góc giữa hai vectơ được hình thành bởi hai dòng bất kỳ. - Generalized Latent Semantic Analysis (GLSA): là một framework cho việc tính toán các vector văn bản và thuật ngữ dựa trên ngữ nghĩa. Nó là một mở rộng của LSA bằng cách tập trung vào các vector thuật ngữ (term vectors) thay vì biểu diễn hai văn bản.

GLSA đòi hỏi sự đo lường kết hợp ngữ nghĩa của các thuật ngữ và một phương pháp giảm chiều (dimensionality reduction). Các tiếp cận GLSA có thể kết hợp với bất kỳ phương pháp đo lường sự giống nhau trên không gian của thuật ngữ với bất kỳ phương pháp giảm chiều phù hợp nào. 8 - Explicit Semantic Analysis (ESA): Là một phép đo được sử dụng để tính toán mối quan hệ ngữ nghĩa giữa hai văn bản. Kỹ thuật dựa trên Wikipedia (Wikipedia-Based) biểu diễn các thuật ngữ hay văn bản như các vector đa chiều, mỗi vector biểu diễn trọng số giữa thuật ngữ và một bài viết trên Wikipedia.

Quan hệ ngữ nghĩa giữa hai thuật ngữ (hoặc văn bản) được thể hiện bằng phép đo cosine giữa các vectơ tương ứng. - The cross-language explicit semantic analysis (CL-ESA): là một dạng tổng quát đa ngôn ngữ của ESA. CL-ESA khai thác một tập các tài liệu tham khảo đa ngôn ngữ như Wikipedia để đại diện cho một tài liệu như là một vector độc lập ngôn ngữ (language-independent). Sự liên quan của hai tài liệu bằng các ngôn ngữ khác nhau được đánh giá bởi sự giống nhau cosin giữa các vector tương ứng.

- Pointwise Mutual Information - Information Retrieval (PMI-IR): là phương pháp tính toán sự giống nhau của các cặp từ. Nó sử dụng truy vấn tìm kiếm nâng cao của AltaVista hoặc cú pháp (syntax) để tính xác suất. Hai từ cùng xuất hiện gần nhau trên một trang web thì có mức điểm giống nhau cao hơn. - Second-order co-occurrence pointwise mutual information (SCO-PMI): là một phép đo mức độ giống nhau về mặt ngữ nghĩa bằng cách sử dụng thông tin chung của nhau để sắp xếp danh sách các từ quan trọng gần nhau của hai từ mục tiêu trong một tập hợp các từ.

Ưu điểm của việc sử dụng SCO-PMI là nó có thể tính toán sự giống nhau của hai từ mà không đồng thời xuất hiện thường xuyên bởi vì chúng có thể xuất hiện cùng với các từ lân cận. - Normalized Google Distance (NGD): là một phép đo mức độ giống nhau về mặt ngữ nghĩa thu được từ số lần truy cập trả về bởi công cụ tìm kiếm của Google (Google search engine) từ một tập hợp các từ khóa. Các từ khóa có nghĩa giống hoặc tương tự nhau có xu hướng gần nhau, trong khi các từ có nghĩa khác nhau có xu hướng cách xa nhau hơn. - Extracting Distributionally similar words using So-occurrences (DISCO): việc phân chia các từ giống nhau được giả định rằng các từ có nghĩa giống nhau sẽ xuất hiện trong cùng ngữ cảnh.

Một tập hợp các văn bản được phân tích để phân 9 chia các từ giống nhau. DISCO được chia ra làm hai phép đo là DISCO1 và DISCO2. DISCO1 tính toán mức độ giống nhau theo thứ tự thứ nhất giữa hai từ đầu vào dựa trên các tập hợp được sắp xếp.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ