1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu phương pháp so sánh xâu xấp xỉ và ứng dụng

61 455 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 61
Dung lượng 1,4 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đồng thời, điều kiện tìm kiếm có thể được làm "xấp xỉ" theo nghĩa văn bản kết quả có thể không cần chứa q không cần có một xâu con của văn bản trùng một cách hoàn toàn chính xác với q m

Trang 1

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

ĐẠI HỌC THÁI NGUYÊN

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

Nguyễn Thanh Hùng

NGHIÊN CỨU PHƯƠNG PHÁP

SO SÁNH XÂU XẤP XỈ VÀ ỨNG DỤNG

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Thái Nguyên - Năm 2015

Trang 2

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

LỜI CAM ĐOAN

Tôi xin cam đoan số liệu và kết quả nghiên cứu trong luận văn này là trung thực và chƣa đƣợc sử dụng để bảo vệ học hàm, học vị nào

Tôi xin cam đoan: Mọi sự giúp đỡ cho việc thực hiện luận văn này đã đƣợc cám ơn, các thông tin trích dẫn trong luận văn này đều đã đƣợc chỉ rõ nguồn gốc

Thái Nguyên, ngày 18 tháng 8 năm 2015

TÁC GIẢ LUẬN VĂN

Nguyễn Thanh Hùng

Trang 3

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

LỜI CẢM ƠN

Trong thời gian nghiên cứu và thực hiện luận văn này, em đã may mắn được các thầy cô chỉ bảo, dìu dắt và được gia đình, bạn bè quan tâm, động viên Em xin bày tỏ lời cảm ơn sâu sắc nhất tới tất cả các tập thể, cá nhân đã tạo điều kiện giúp

đỡ em trong suốt quá trình thực hiện nghiên cứu luận văn này

Trước hết em xin trân trọng cảm ơn Ban giám hiệu trường Đại học Công nghệ thông tin và truyền thông, Phòng Đào tạo và Khoa Sau đại học của nhà trường cùng các thầy cô giáo, những người đã trang bị kiến thức cho em trong suốt quá trình học tập

Với lòng biết ơn chân thành và sâu sắc nhất, em xin trân trọng cảm ơn thầy giáo – PGS.TS Nguyễn Trí Thành, giảng viên khoa Công nghệ thông tin – Trường Đại học Công nghệ - Đại học Quốc gia Hà Nội; người thầy đã trực tiếp chỉ bảo, hướng dẫn khoa học và giúp đỡ em trong suốt quá trình nghiên cứu, hoàn thành luận văn này

Xin chân thành cảm ơn tất cả các bạn bè, đồng nghiệp đã động viên, giúp đỡ nhiệt tình và đóng góp nhiều ý kiến quý báu để em hoàn thành luận văn này

Do thời gian nghiên cứu có hạn, luận văn của em chắc hẳn không thể tránh khỏi những sơ suất, thiếu sót, em rất mong nhận được sự đóng góp của các thầy cô giáo cùng toàn thể bạn đọc

Xin trân trọng cảm ơn!

Thái Nguyên, ngày 18 tháng 8 năm 2015

TÁC GIẢ LUẬN VĂN

Nguyễn Thanh Hùng

Trang 4

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

MỤC LỤC

MỞ ĐẦU 1

CHƯƠNG 1: GIỚI THIỆU CHUNG VỀ XẤP XỈ 4

1.1 Khái niệm xấp xỉ 4

1.1.1 Đối sánh chuỗi 4

1.1.2 Đối sánh chính xác 5

1.2.3 Đối sánh chuỗi xấp xỉ 6

1.2 Nội dung và ý nghĩa ứng dụng 10

1.2.1 Nội dung 10

1.2.2 Ý nghĩa ứng dụng 12

1.3 Kết luận chương 12

CHƯƠNG 2: TÌM HIỂU MỘT SỐ THUẬT TOÁN 14

2.1 Thuật toán của Galil-Park 14

2.2 Thuật toán của Ukkonen-Wood và một số cải tiến 18

2.3 Thuật toán của Boyer-Moore 21

2.4 Thuật toán đối sánh xâu vòng tròn gần đúng 29

2.5 Kết luận chương 36

CHƯƠNG 3: THỰC NGHIỆM VÀ ỨNG DỤNG 38

3.1 Chương trình ứng dụng asmf-master 38

3.1.1 Giới thiệu chung 38

3.1.2 Các hàm asmf-master 39

3.1.3 Thiết lập môi trường cài đặt và chạy ứng dụng 40

3.1.4 Thực nghiệm với chương trình asmf-master 41

3.2 Thực nghiệm, ứng dụng trong bài toán sửa lỗi chính tả 43

3.2.1 Giới thiệu về ứng dụng sửa lỗi chính tả 43

3.2.2 Thực nghiệm ứng dụng 46

3.3 Thực nghiệm, ứng dụng trong bài toán gợi ý truy vấn từ điển 47

3.3.1 Giới thiệu về ứng dụng gợi ý truy vấn từ điển 47

3.3.2 Thực nghiệm ứng dụng 48

3.4 Nhận xét 51

3.5 Kết luận chương 52

KẾT LUẬN 54

TÀI LIỆU THAM KHẢO 55

Trang 5

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

DANH MỤC HÌNH VẼ

Hình 1.1: Cây hậu tố cho S= "xabxac" 10

Hình 1.2: Hoạt động cơ bản của thuật toán Boyer-Moore 11

Hình 2.1: cây hậu tố cho S= "xabxac" 18

Hình 2.2: Cây hậu tố cho chuỗi "xabxac$" 18

Hình 2.3: Cây bao hàm cho chuỗi "xabxa$" 19

Hình 2.4: Cây bao chùm cho chuỗi axabxb 20

Hình 2.5 : Cây biểu diễn hậu tố cho chuỗi 21

Hình 3.1: Giao diện ứng dụng sửa lỗi chính tả 45

Hình 3.2: Sửa từ cho từ sai 46

Hình 3.3: Thực nghiệm với từ khóa 46

Hình 3.4: Thực nghiệm với từ "Cổng" 47

Hình 3.5: Thực nghiệm với từ "Tỏa"……… 47

Hình 3.6: Hệ thống gợi ý từ điển ……… 47

Hình 3.7: Thực nghiệm hệ thống gợi ý với từ khóa "Gợi" 49

Hình 3.8: Thực nghiệm với từ khóa "Tổng" 50

Hình 3.9: thực nghiệm với từ khóa "Trường" 50

Hình 3.10: Thực nghiệm với từ khóa "Việt" 51

Trang 6

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

MỞ ĐẦU

1 Lý do chọn đề tài

Kiểu dữ liệu văn bản (Text) là dạng trình bày thông tin gần gũi nhất với con người, vì vậy, đây cũng là dạng trình bày thông tin số rất phổ biến Chính vì lẽ đó, bài toán tìm kiếm văn bản (text searching) là một trong những bài toán quan trọng nhất trong hoạt động tìm kiếm thông tin của con người Trong thời đại ngày nay, văn bản số hóa đang tăng trưởng "bùng nổ" trong các cơ sở dữ liệu trên Internet, dung lượng tăng gấp đôi sau mỗi chu kỳ 18 tháng Trong bối cảnh đó, vấn đề tìm kiếm văn bản một cách tự động đã rất quan trọng thì lại ngày càng quan trọng hơn

Dạng phổ biến nhất của bài toán tìm kiếm văn bản là: Cho trước nguồn tìm

kiếm là một tập D các văn bản (hoặc là cơ sở dữ liệu văn bản, hoặc là tập các văn bản trên Internet) Cho một câu hỏi dạng văn bản q (thường là một từ, một xâu văn bản ngắn), hãy tìm tất cả các văn bản thuộc D mà có chứa q Trong nhiều trường hợp (chẳng hạn, tìm kiếm thông qua máy tìm kiếm) thì q còn được gọi là "truy vấn"

và bài toán còn có tên gọi là "tìm kiếm theo truy vấn" Để tìm được các văn bản có

chứa văn bản truy vấn q, hệ thống tìm kiếm cần phải kiểm tra văn bản truy vấn q có

là một xâu con của các văn bản thuộc tập D hay không (sánh mẫu) và đưa ra các

văn đáp đáp ứng Trong nhiều trường hợp, bài toán còn đòi hỏi tìm tất cả các vị trí

của các xâu con trong văn bản trùng với q Đồng thời, điều kiện tìm kiếm có thể được làm "xấp xỉ" theo nghĩa văn bản kết quả có thể không cần chứa q (không cần

có một xâu con của văn bản trùng một cách hoàn toàn chính xác với q) mà chỉ cần

"liên quan" tới q (có xâu con trong văn bản "xấp xỉ" q) Có thể thấy, các máy tìm

kiếm sử dụng cả cơ chế tìm kiếm xấp xỉ khi mà văn bản kết quả tìm kiếm không chứa hoàn toàn chính xác văn bản truy vấn [1]

Thời gian gần đây, bài toán sánh mẫu càng trở nên quan trọng và được quan tâm nhiều do sự tăng trưởng nhanh chóng của các hệ thống tìm kiếm thông tin và các hệ thống sinh- tin học Một lý do nữa, con người ngày nay không chỉ đối mặt

Trang 7

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

với một lượng thông tin khổng lồ mà còn đòi hỏi những yêu cầu tìm kiếm ngày càng phức tạp Các mẫu đưa vào không chỉ đơn thuần là một xâu ký tự mà còn có thể chứa các ký tự thay thế, các khoảng trống và các biểu thức chính quy Sự “tìm thấy” không đơn giản là xuất hiện chính xác mẫu trong văn bản mà còn cho phép

“một xấp xỉ” giữa mẫu và xuất hiện của nó trong văn bản Từ đó, bên cạnh vấn đề

kinh điển là “tìm kiếm chính xác”, nảy sinh một hướng nghiên cứu là "sánh mẫu

xấp xỉ / tìm kiếm xấp xỉ” (approximate matching / approximate searching) [2]

So sánh thực nghiệm của thời gian chạy của thuật toán xấp xỉ chuỗi kết hợp

cho k vấn đề khác nhau được trình bày Với một chuỗi mô hình, một chuỗi văn bản,

và một số nguyên k, nhiệm vụ là để tìm tất cả các lần xuất hiện gần đúng của mô hình trong văn bản với ít nhất k khác biệt (chèn thêm, xóa, thay đổi) Xem xét bảy

thuật toán dựa trên phương pháp tiếp cận khác nhau bao gồm lập trình năng động, Boyer-Moore chuỗi kết hợp, hậu tố bị tự động, và sự phân bố của các nhân vật Nó chỉ ra rằng không ai trong số các thuật toán là tốt nhất cho tất cả các giá trị của các thông số vấn đề, và sự khác biệt tốc độ giữa các phương pháp có thể là đáng kể

Xuất phát từ những yêu cầu và lý do trên, em lựa chọn đề tài luận văn là:

"Nghiên cứu phương pháp so sánh xâu xấp xỉ và ứng dụng"

Luận văn này định hướng nghiên cứu một số thuật toán so sánh mẫu xâu xấp

xỉ, tập trung vào một số thuật toán của Galil Park, Ukkonen Wood Boyer-Moore, thuật toán xâu vòng tròn gần đúng với độ phức tạp là hàm tuyến tính và tiến hành thực nghiệm ứng dụng

2 Mục tiêu nghiên cứu

- Nghiên cứu để hiểu các khái niệm và đặc trưng liên quan tới bài toán so sánh xâu xấp xỉ

- Nghiên cứu các lớp thuật toán so sánh xâu xấp xỉ

- Khảo sát, phân tích một số thuật toán và các bước tiến hóa và hiệu suất (nghiên cứu khả năng về ý tưởng cải tiến thuật toán)

Trang 8

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

- Khảo sát chương trình ứng dụng asmf-master để có thể khai thác vào trường hợp của luận văn

- Cài đặt thử nghiệm tìm vị trí các câu hỏi trong nội dung, kết quả trả về của một máy tìm kiếm

3 Đối tượng và phạm vi nghiên cứu

Nghiên cứu một số thuật toán so sánh xâu xấp xỉ miền dữ liệu văn bản Tiếp

đó, luận văn thi hành một số thuật toán trong họ thuật toán nói trên, cài đặt thử nghiệm tìm kiếm

4 Ý nghĩa thực tiễn của luận văn

Nghiên cứu thuật toán so sánh xâu xấp xỉ và ứng dụng của chúng vào hệ thống tìm kiếm văn bản Vì vậy, nó có ý nghĩa rất lớn trong lý thuyết và thực tiễn

5 Phương pháp nghiên cứu

- Phương pháp nghiên cứu tài liệu, phân tích, tổng hợp

- Phương pháp thực nghiệm và đối chứng qua chương trình thử nghiệm

Trang 9

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

CHƯƠNG 1: GIỚI THIỆU CHUNG VỀ XẤP XỈ

Trong chương này sẽ trình bày về một số số khái niệm xấp xỉ, khái quát về một số thuật toán đối sánh mẫu xấp xỉ, các giải pháp thực hiện cho áp dụng ứng dụng cho thuật toán đối sánh chuỗi xấp xỉ mà tác giả đã nghiên cứu trong thời gian vừa qua

1.1 Khái niệm xấp xỉ

Khái niệm xấp xỉ trong luận văn này, được sử dụng đồng nghĩa với khái niệm đối sánh chuỗi xấp xỉ Luận văn này sẽ trình bày một số giải thuật về đối sánh chuỗi xấp xỉ mà tác giả đã nghiên cứu và tìm hiểu được các ứng dụng thực tế như tìm và sửa từ lỗi, gợi ý tìm kiếm trong hệ thống tìm kiếm từ điển Đối sánh

thể hiện việc so sánh chuỗi T và chuỗi P Các kỹ thuật đối sánh được ứng dụng

nhiều trong các lĩnh vực khác nhau của tin học Trong luận văn này, các kỹ thuật được sử dụng để phát hiện từ sai chính tả và sử lại các từ sai

1.1.1 Đối sánh chuỗi

Đối sánh thể hiện việc so sánh chuỗi T và chuỗi P Các ký tự của T được so sánh với các ký tự của P Với phương pháp so sánh khác nhau sẽ trả lời các yếu tố

tương quan của T và P theo góc độ của thuật toán cụ thể Ví như đối sánh theo các

thao tác chuyển ký tự của T để T chuyển thành P và ngược lại, phương pháp này thể

hiện độ đo khoảng các đối sánh Ngoài ra còn nhiều phương pháp đối sánh khác

nhau cho phép đối sánh T và P theo n_gram, đối sánh mẫu theo tiền tố, hậu tố …

Bài toán đối sánh chuỗi là kỹ thuật thực hiện tìm kiếm sự xuất hiện của chuỗi

T trong chuỗi P Cho chuỗi T và chuỗi P, sử dụng giải thuật F tìm kiếm và trả về kết quả R là các vị trí của chuỗi T xuất hiện trong chuỗi P

R = F(T,P)

Như vậy có thể thấy kết quả trả về của giải thuật F phụ thuộc vào:

Trang 10

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

- Cung cấp dữ liệu đầu vào T: Nếu cung cấp dữ liệu T không tốt sẽ cho kết

quả không như mong đợi, thậm trí không có kết quả

- Cung cấp dữ liệu xử lý P: Chuỗi cần xử lý để đưa ra kết quả xem có sự xuất hiện của T trong P hay không Phụ thuộc vào nguồn cung cấp P Nếu nguồn cung cấp P không chứa chuỗi T thì việc đối sánh trả về kết quả là không tìm thấy kết quả

mà nguồn T cung cấp

- Bản thân giải thuật F: Giải thuật sẽ thực hiện phương pháp đối sánh T với

P và trả về kết quả theo yêu cầu Giải thuật ảnh hưởng trực tiếp đến kết quả Tùy

thuộc vào cách tiếp cận mà có kết quả khác nhau Nếu giải thuật tiếp cận theo

hướng đối sánh chính xác cần phải thực hiện sánh đúng chuỗi T chuỗi P để trả lời câu hỏi P có trùng T hay không

Các kỹ thuật đối sánh có thể phân thành hai loại đó là kỹ thuật so sánh đối sánh chính xác, kỹ thuật còn lại là so sánh đối sánh không chính xác (xấp xỉ) Trong luận văn này chỉ đề cập tới các thuật toán xấp xỉ

1.1.2 Đối sánh chính xác

Tìm chính xác là phương pháp trả lời câu hỏi chuỗi T có chính xác tồn tại trong chuỗi P hay không? Nếu có hãy chỉ ra vị trí xuất hiện của T có trong P [3] Khái niệm trùng được chỉ ra ở đây có thể hiểu theo ý nghĩa là T được sánh đúng với chuỗi con của P theo từng thứ tự ký tự, độ dài của T và chuỗi con phải bằng nhau

Ví dụ : Cho chuỗi T="Các"

và chuỗi P ="Chào các bạn Chúc các bạn ngày mới tốt lành"

Như vậy kết quả của đối sánh trả về thứ tự 1 và 4 là vị trí xuất hiện của T trong P

Đối sánh chính xác đưa ra một số ý nghĩa của nó thực hiện trong các hệ

thống tìm kiếm cần trả về kết quả chính xác Hệ thống sẽ trả lời câu hỏi T có thật sự tồn tại trong P hay không? Với các phương pháp của tìm kiếm chính xác đủ mạnh

để có một hiệu quả tìm kiếm tốt

Trang 11

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Ứng dụng của tìm kiếm chính xác:

- Trong máy tìm kiếm: Trả lời chính xác được câu hỏi từ khóa k được cung

cấp Máy tìm kiếm thực hiện tìm kiếm trong hệ thống dữ liệu và trả ra các tài liệu có

chứa từ khóa k đã cung cấp Nếu không có sẽ chỉ ra không có kết quả

- Trong xử lý văn bản: Trả lời câu hỏi từ khóa k có tổn tại trong văn bản hay

không?

- Các phần mềm diệt virus: Có thể chứng minh sự tồn tại của đoạn mã code độc trong file cần quét Chương trình thực hiện tìm kiếm Virus và thực hiện loại bỏ virus nếu phát hiện có trong file được nghi là bị nhiễm

- Trong hệ thống tìm kiếm theo từ điển: Xây dựng được hệ thống tra cứu từ điển Người dùng cung cấp từ và hệ thống thực hiện tìm kiếm từ mà người dùng đã cung cấp để đưa ra định nghĩa và mô tả cho từ khóa

Ví dụ: Cho chuỗi T="cac" và chuỗi P = "Chào các bạn Chúc các bạn một ngày mới tốt lành"

Với các hệ thống tìm kiếm phát triển mạnh mẽ hiện nay, nhất là các máy truy tìm thông tin ngày càng được cải tiến hiệu quả, và các hệ thống có sử dụng các phương pháp đối sánh chuỗi Việc tìm ra cách thức tìm kiếm chính xác tỏ ra kém hiệu quả hơn trong một số trường hợp cụ thể như: Hệ thống tìm kiếm mong muốn trả về nhiều giá trị hơn và bỏ qua điều kiện chính xác hoàn toàn mà tập chung vào các yếu tố liên quan tới, gần đúng, xấp xỉ … Để giải quyết được yêu cầu này tác giả giới thiệu một số giải thuật hỗ trợ tìm kiếm xấp xỉ

1.2.3 Đối sánh chuỗi xấp xỉ

Như đã nói ở mục trước, việc hệ thống tìm kiếm có thể trả về nhiều kết quả hơn Với các kết quá có phần yếu tố tương tự liên quan Ngày nay việc cung cấp các phương pháp đối sánh mẫu xấp xỉ ngày càng được quan tâm và đã mang về các kết quả tốt hơn cho người sử dụng hệ thống

Trang 12

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

- Hệ thống tìm kiếm mong muốn cung cấp các kết quả nhiều hơn chon người

sử dụng càng tốt Người sử dụng mong muốn có nhiều kết quả hơn (liên đới) Với kết quả này làm cho người dùng có thể ít hiểu biết (ít thông tin) về vấn đề cần tìm kiếm cũng sẽ được hài lòng

- Nhận dạng mẫu: Hệ thống đối sánh không những là văn bản mà có thể ứng dụng trong tìm kiếm các chuỗi nhị phân Mở ra được dựa trên mẫu (ảnh/ audio) có thể tìm kiếm các file ảnh/audio tương tự Áp dụng trong lĩnh vực quân sự (nhận dạng khuôn mặt)

- Hệ thống sửa lỗi cho từ và gợi ý các từ cần sửa Giúp các phần mềm soạn thảo trở nên thông minh hơn và hữu ích hơn khi hỗ trợ người soạn thảo có văn bản được tin cậy hơn khi giúp họ sửa từ và gợi ý từ cần sửa

"Bài toán đối sánh xấp xỉ" [4], [7] là kỹ thuật tìm kiếm sự xuất hiện của các

chuỗi T’ gần giống (xấp xỉ) T nằm trong chuỗi P Có thể phát biểu theo cách khác:

kỹ thuật tìm kiếm chuỗi T trong chuỗi P, kết quả tìm kiếm trả về các chuỗi T’ gần đúng (xấp xỉ) T

Ví dụ: Cho chuỗi T="cac" và chuỗi P ="Chào các bạn Chúc các bạn ngày mới

tốt lành!" Ở đây có thể tìm thấy từ T’="các" là gần đúng T theo ý nghĩa nào đó

Vấn đề đặt ra ở đây là làm thế nào để biết được T và T’ là xấp xỉ nhau mà không phải T’’ nào khác Để thực hiện điều này có một cách tiếp cận đó là quy

chung về một con số định lượng cho tất cả các chuỗi Công việc còn lại là phương

pháp xác định con số này Việc tìm kiếm ra các các T’ có ý nghĩa rất qua trọng

trong các ứng dụng sử dụng phương pháp xấp xỉ Chính vì việc có thể chỉ ra được

các T’ càng gần T thể hiện độ hữu dụng của bài toán Nếu không thể tìm ra hoặc là

thuật toán kém hiệu quả về tìm kiếm kết quả sẽ làm cho ứng dụng giảm độ tin cậy

và không thực hiện được đúng mục tiêu được đề ra

Một cách tổng quát để thực hiện đưa ra các T’ xấp xỉ T chúng ta có một cách khá đơn giản là tìm ra các thao tác chuyển T’ thành T Gọi D là tổng các thao tác để thực hiện chuyển T’ thành T một cách chính xác

Trang 13

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

- Nếu D = 0; cho thấy T và T’ trùng nhau

Ví dụ: T ="Các" và T’ ="Các"

- Nếu D > 0: Cho thấy phải mất ít nhất một thao tác để chuyển T thành T’ và

ngƣợc lại

Ví dụ: Cho T = "Thiên" và T’ = "hiên" D > 0 cần thao tác thêm ký tự "T" vào

T’ để T’="Thiên" hoặc bỏ ký tự "T" trong T để T= "hiên"

Nhận xét: nếu D càng nhỏ thì T và T’ càng gần nhau Hay nói một cách khác Nếu D = 0 thì T và T’ trùng nhau Nếu D > 0 thì độ gần nhau (xấp xỉ) càng nhỏ khi

D càng nhỏ, D càng lớn thì độ xấp xỉ càng lớn

Đối sánh chuỗi xấp xỉ đƣợc thực hiện dựa trên các thao tác chủ yếu sau đây:

- Xóa ký tự: Thao tác đƣợc thực hiện khi chuyển chuỗi T thành chuỗi T’ mà

độ dài của T lớn hơn độ dài của T’ thì cần thực hiện xóa bớt các ký tự

Ví dụ: Cho chuỗi T="Thiên thanh" và T’="Thiên" Cần phải bỏ các ký tự

"thanh" trong T

- Chèn thêm ký tự: Thao tác đƣợc thực hiện khi chuyển chuỗi T thành chuỗi

T’ mà độ dài của T nhỏ hơn độ dài của T’ thì cần thực hiện thêm các ký tự

Ví dụ cho chuỗi T="hiên" muốn chuyển thành T’="Thiên", cần phải chèn thêm ký tự "T" vào đầu của T khi đó T="Thiên" và trùng với T’

- Thay thế ký tự: Thao tác đƣợc thực hiện khi chuyển chuỗi T thành chuỗi T’

mà độ dài là nhƣ nhau nhƣng tại các vị trí cùng thứ tự các ký tự của T’ khác với T

Ví dụ: Cho T="Hiên" và T’="Hiển", nhƣ vậy cần thay ký tự "ê" trong T thành

ký tự "ể" trong T’ Có đƣợc T="Hiển"

- Hoán đổi ký tự: Đƣợc thực hiện khi T và T’ có vị trí T[i] = T’[j] và T[j] =

T’[i] Cần phải thực hiện hoán đổi T[i] cho T[j] Nhƣ thế thì T mới chuyển thành T’

Trang 14

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Trong các thao tác trên, với ba thao tác thêm, xóa, thay thế ký tự là các thao tác hay được sử dụng nhiều hơn cả Thao tác hoán đổi sẽ ít sử dụng hơn và chỉ có một số thuật toán áp dụng thao tác này

Một chú ý đáng thú vị ở đây là khoảng cách xấp xỉ này chỉ ra được tổng số

các thao tác cần phải được thực hiện để chuỗi T chuyển thành chuỗi T’, không chỉ

rõ từng thao tác phải thực hiện

Hầu hết các thuật toán về sánh chuỗi xấp xỉ sử dụng cách tiếp cập này để thực hiện đưa ra giá trị xấp xỉ [5] Các thuật toán có thể kể đến sau đây là:

- Levenshtein Distance: Thực hiện đối sánh chuỗi xấp xỉ theo các thao tác (chèn, xóa, thay thế) Với các chuỗi có độ dài không nhất thiết phải bằng nhau Đây

là một thuật toán khá dễ dàng cài đặt và cho ra số bước chuyển ngắn nhất

- Hamming Distanse: Thực hiện đối sánh chuỗi với một thao tác là thay thế với độ dài chuỗi đối sánh phải bằng nhau

- Episode Distanse: Thực hiện trên ý tưởng với một thao tác là thêm một ký

tự vào T để chuyển T thành P

- Longest Common Subsequence distance: Dựa trên ý tưởng tìm kiếm chuỗi

con dài nhất của T xuất hiện trong P

Ngoài ra các thuật toán đối sánh chuỗi xấp xỉ còn được phân chia thành hai

kỹ thuật khác nhau [4]: Online – search và Offline – search

- Online – search: Thực hiện tiền xử lý chuỗi T (mẫu đối sánh) để đối sánh

mà không xử lý chuỗi P (văn bản đối sánh) Các thuật toán được trình bày trong

luận văn này được phân loại vào nhóm on-line Các thuật toán được trình bày trong

luận văn đều tiến hành xử lý chuỗi T trước khi tiến hành thực hiện đối sánh Trong thuật toán của Galil-park thực hiện đưa các chuỗi tiền tố của T Trong thuật toán của Ukkonen- Wood thực hiện tiến hành chuyển T thành cây hậu tố sau đó thực hiện tìm kiếm Trong thuật toán của Boyer-Moore thực hiện xử lý T bằng cách tìm ra Bad-

Character và Good- Suffix

Trang 15

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

- Offline – search: Nhóm các giải thuật này sẽ không thực hiện tiền xử lý

chuỗi T hoặc chuỗi P trước khi thực hiện đối sánh chuỗi

1.2 Nội dung và ý nghĩa ứng dụng

1.2.1 Nội dung

Trong luận văn này sẽ thực hiện nhiệm vụ nghiên cứu một số thuật toán về đối sánh chuỗi xấp xỉ áp dụng cho bài toán sửa lỗi chính tả trong văn bản bằng cách

sử dụng chương trình ứng dụng asmf-master có sẵn

Luận văn chủ yếu đi sâu vào các thuật toán về đối sánh chuỗi xấp xỉ sau:

- Thuật toán của Galil Park: Được tác giả công bố năm 1989 với ý nghĩa

chính xây dựng các tiền tố cho T để tìm kiếm trong chuỗi văn bản Kỹ thuật này cho

phép cung phương pháp tìm kiếm chủ đạo cho đối sánh với k ký tự khác biệt (thể hiện tương tự) [4], [7], [9]

- Thuật toán của Ukkonen Wood: Thuật toán được Ukkonen Wood công bố

năm 1995 Thuật toán dựa trên việc xây dựng tree suffix (các ký tự cây hậu tố) cho

phép chứa các ký tự đầu tiên trong chuỗi dưới cấu trúc tree Việc xây dựng cây bằng

cách đưa các ký tự cuối cùng của chuỗi P vào trong cây, xây dựng kết thúc khi không còn ký tự Việc tìm kiếm là chỉ ra các chuỗi hậu tố của T từ ngắn nhất đến

dài nhất có trong cây Kỹ thuật xây dựng cây hậu tố sẽ được trình bày chi tiết ở chương 2 của luận văn này Thuật toán đối sánh thực hiện việc đối sánh chính xác

hậu tố của T với để đưa ra kết luận [8], [10]

Hình 1.1: Cây hậu tố cho S= "xabxac"

Trang 16

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

- Thuật toán của Boyer-Moore: Được Robert S Boyer và J Strother Moore

công bố năm 1977 Thuật toán cho phép tìm chuỗi T trong chuỗi P với khoảng cách

xấp xỉ k Thuật toán cho phép so sánh theo khoảng từng chuỗi Khi tính toán đến khoảng cách xấp xỉ k+1, thuật toán sẽ tìm kiếm tới kết quả tiếp theo [1], [11], [13]

T P

(k+1)-suffix

k-prefix Hình 1.2: Hoạt động cơ bản của thuật toán Boyer-Moore

Thuật toán thực hiện dựa trên cửa sổ trượt theo Bad-Character và suffix Mỗi khi gặp một trong 2 trường hợp trên thì thuật toán thực hiện ghi nhận và dịch chuyển theo cửa sổ (hình 1.2) Mô tả cách hoạt động cơ bản của thuật toán

Good Thuật toán đối sánh mã vòng với độ phức tạp là hàm tuyến tính: Do Carl

Barton, Costas S Iliopoulos và Solon P Pissis công bố năm 2014 trên tạp chí AMB (Algorithms for Molecular Biology – Thuật toán sinh học phân tử) Tác giả đã trình

bày hai thuật toán đối sánh xâu vòng tròn gần đúng với k không đối xứng qua bộ lọc

(thuật toán ACSMF và thuật toán ACSMF-Đơn giản) trong trường hợp nhanh trung

bình với k khác biệt (không đối sánh), theo mẫu khoảng cách Hamming, cần thời gian O(n) cho các giá trị trung bình của k, đó là k = O(m/log m) [12]

Các thuật toán này được trình bày cụ thể và chi tiết trong chương 2 của luận văn này

Chương trình ứng dụng asmf-master: Cho phép áp dụng phương pháp đối sánh chuỗi xấp xỉ Tác giả sử dụng công cụ này nhằm thực hiện và thực nghiệm về thuật toán đối sánh xấp xỉ áp dụng cho bài toán kiểm tra và sửa lỗi chính tả

Đây là chương trình được cài đặt rất nhiều thuật toán về đối sánh chuỗi xấp

xỉ, cụ thể được thể hiện bằng thuật toán đối sánh chuỗi xấp xỉ theo mã vòng với

k-mismatch, trong đó có thể kể tới các thuật toán mà tác giả đang nghiên cứu và áp

Trang 17

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

dụng Chương trình này có thể chạy trên các môi trường Ubuntu, linux, Windows Công cụ sẽ được giới thiệu chi tiết ở chương 3 trong luận văn này

- Trong hệ thống máy tìm kiếm của các website tìm kiếm: Hệ thống hỗ trợ người nhập dữ liệu cần tìm (chuỗi từ khóa) Hệ thống dựa trên chuỗi từ khóa này phát hiện các từ sai, hoặc các từ tương tự để gợi ý người dùng lựa chọn các từ Người dùng nhập dữ liệu chưa biết chính xác các từ cần tìm hoặc gõ sai từ Như vậy đây là một ý tưởng rất tốt cho hệ thống máy tìm kiếm

- Trong các phần mềm diệt virus: Hệ thống có thể dựa trên mẫu virus có sẵn

và tiến hành tìm kiếm các mẫu virus tương tự với nó Nhờ vào đó có thể phát hiện

ra một file có bị nhiễn virus hay không

- Trong y học: Có thể tìm ra các GEN gây bệnh dựa trên mẫu GEN bệnh phẩm đã có sẵn Dựa trên ý tưởng tìm ra cấc GEN tương tự GEN mẫu (cho là GEN gây bệnh), hệ thống tìm kiếm phát hiện ra các GEN tương tự có nguy cơ gây bệnh đối với con người

Trang 18

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Trong một số trường hợp chúng ta cần phải tiếp cận vấn đề theo cách thức xấp xỉ

- Chúng ta chấp nhận các kết quả xấp xỉ để có thể cung cấp thêm nhiều hơn các kết quả liên đới mà ở đó không quan trọng yếu tố chính xác Nếu chúng ta cung

cấp dữ liệu T và được trả lời bởi các T’ không giống hoàn toàn T và kết quả này vẫn

có thể chấp nhận được Chúng ta không biết đích xác T mà chỉ cung cấp các T’ gần đúng T sử dụng T’ thay T và được kết quả mong đợi như cung cấp T

- Chương trình ứng dụng asmf-master được sử dụng cho phép đối sánh chuỗi bằng phương pháp xấp xỉ Đây là một công cụ rất hiệu quả và được cài đặt nhiều thuật toán về đối sánh chuỗi

Phương pháp đối sánh chuỗi xấp xỉ được ứng dụng trong nhiều bài toán cụ thể như: Kiểm tra lỗi chính tả trong văn bản, máy tìm kiếm, trình diệt virus, trong y học

Tiếp theo trong chương 2 tác giả đi sâu vào tìm hiểu các thuật toán về đối sánh chuỗi xấp xỉ Tác giả trọng tâm vào thuật toán đối sánh chuỗi vòng với k-mismath, đây là thuật toán với độ phức tạp trung bình là hàm tuyến tính

Trang 19

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

CHƯƠNG 2: TÌM HIỂU MỘT SỐ THUẬT TOÁN

Như đã trình bày ở chương trước, các thuật toán sánh xấp xỉ thực hiện tìm

kiếm các chuỗi P gần giống với chuỗi P’ nằm trong văn bản T Việc thực hiện tìm kiếm nhằm mục đích trả về kết quả vị trí của P’ nằm trong T Ngày nay có nhiều

thuật toán đối sánh xấp xỉ được thiết kế nhằm tăng tính hiệu quả và giảm thời gian được áp dụng một cách đáng kể Trong chương này tác giả thực hiện giới thiệu và nghiên cứu một số thuật toán cơ bản phục vụ cho luận văn Các thuật toán được trình bày cụ thể như Galil Park, thuật toán Ukkonen Wood, thuật toán Boyer-Moore Thuật toán mới được công bố gần đây nhất là thuật toán đối sánh mã vòng với độ phức tạp là hàm tuyến tính

2.1 Thuật toán của Galil Park

Galil và Park [5], [7] đưa ra giải thuật thực hiện tìm toàn bộ xuất hiện của

mẫu P trong chuỗi T, dựa trên ma trận D Ma trận D được khởi tạo với kích thước

D[m,n], n là chiều dài của T và m là chiều dài của P Các giá trị được xét theo hình

2.1 dựa trên kỹ thuật bộ ba quy chiếu (Reference trips) để thực hiện tìm kiếm chuỗi

) 1 , 1 (|

1 ) , 1 (|

j i D

t ifp j

i D

j i D

j

i then 0 else 1

Bước đầu khởi tạo D(0,j) =0; và thực hiện tiến hành đối sánh lần lượt ký tự P[i] với ký tự T[j] và D[i,j] sẽ được định kết quả dựa trên các xác định như sau:

- Nếu P[i]=T[j] thì D[i,j] = min(D[i-1,j]+1, D[i-1,j-1], D[i,j-1]+1)

- Ngược lại P[i]!= T[j] thì D[i,j]= min(D[i-1,j], D[i-1,j-1], D[i,j-1]) +1

Trang 20

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Giải thuật dựa trên việc tính toán theo đường chéo ma trận D, và sử dụng

phương pháp đối sánh mẫu xấp xỉ Giải thuật được thể hiện theo hai kỹ thuật

"Preprocessing patten P" và kỹ thuật bộ ba tham chiếu "Reference triple" [7]

- Kỹ thuật: Tiền xử lý mẫu đối sánh P "Preprocessing P" Được xử lý theo tiền tố Preffix xử dụng bảng tam giác trên của ma trận D priffix(|i,j).1<i<j<m khi

đó priffix(|i,j) là độ dài nhất của các chuỗi tiền tố chung của p[i m] và p[j m] Thủ

for c 0 to n - m + k do

for e 0 to k do

d c - e;

col max(C(e - 1, d - 1) + 1, C(e - 1, d) + 1, C(e - 1, d + 1));

while col < n and col - d < m and y col + 1 - d = x col + 1 do

col  col + 1

end while

C(e,d)  min (col, m + d)

end for end for

- Kỹ thuật bộ ba tham chiếu Referencetrips(u,v,w) Trong đó u thể hiện vị trí bắt đầu, v thể hiện vị trí kết thúc, w thể hiện vị trí xuất hiện của chuỗi con sub=p[v-

Trang 21

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

w u-w] nằm trong T nhƣng T[v+1]!= P[v+1-w+v] Giải thuật dùng biến r th làm đối

cho các hàm U(r), V(r), W(r) Thực hiện đối sánh lại

Ví dụ: Chuỗi x="abbdadcbc" và chuỗi y="adbbc" với k=2 Với vị trái bắt đầu

c và ký hiệu * thể hiện tìm thấy nhiều bộ (Bảng bộ quy chiếu Referencetrips(u,v,w):

Giải thuật thực hiện của Galil-Park [9] đƣợc thể hiện nhƣ sau:

Algorithm Galil-park

beign

Prewfixes(P);

for i in -1 k loop

Trang 22

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

c(i,1):= - infinity; c(i,2): = -1;

Col = max ((c(e-1, b2)+1, c(e-1, b3)+1, c(e-1, B1)+1));

se= Col+1; found:= flase;

while not found loop

If within(Col +1) then F:=v(r)-col; g:=prefix(col+1–h, col+1-w(r));

if f=g then Col:= Col+f;

else Col:= Col + Min (f,g); found:= true;

c[e,b1]:= min (Col,m+h);

If(c[e,b1]= h+m and c[e-1,b2] <m+h) then Report_Match((h+m));

end if;

if v[e]>= C[e,b1] then

if e=0 then u(e):= j+1;

Else u(e)= max(u(e), v(e-1)+1); end if;

else

v(e)=c(e,b1); w(e):= h;

if e=0 then u(e):= j+1;

Else u(e):= max(se, v(e-1)+1); end if end if;

b:=b1; b1:=b3; b3:=b2; b2:=b;

end loop;

end;

Trang 23

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

2.2 Thuật toán của Ukkonen Wood và một số cải tiến

Thuật toán xây dựng cây hậu tố được Ukkonen và Wood công bố năm 1995 [5], [6], [7], [8] Thuật toán cho phép tiền xử lý chuỗi mẫu dựa trên việc chuyển mẫu

P với các hậu tố được tổ chức trong cấu trúc cây (tree), suffix tree (ST) Xây dựng

Suffix Tree (ST) T cho chuỗi S có độ dài m Nút gốc có m lá được đánh số 1 tới m Mỗi một nút trong không bao gồm gốc của T có 2 nút con Mỗi một cung của T đánh nhãn với chuỗi con không rỗng của S Không có một cung nào được gán nhãn bởi bắt

đầu cùng một ký tự Với nhánh i, xuất phát từ gốc và đến cuối nhánh được đánh nhãn

khi tổng hợp lại sẽ được một hậu tố của S, đặt chuỗi con S[i,m] bắt đầu từ vị trí i

Ví dụ: xây dựng cây hậu tố cho chuỗi S="xabxac"

Hình 2.1: cây hậu tố cho S= "xabxac"

- Tồn tại cây hậu tố S: Nếu mỗi hậu tố S j của S được sánh đúng với một tiền

tố của hậu tố S i trong S, thì đường dẫn sau đó của S j sẽ không dừng tại nút lá

Ví dụ: S = "xabxa" và có S1 = "xabxa" và S4 = "xa" như vậy để tránh trường hợp này bởi việc thêm ký tự "$" vào cuối S

Ví dụ: Cây hậu tố cho S="xabxac$"

Hình 2.2: Cây hậu tố cho chuỗi "xabxac$"

Trang 24

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

- Cây hậu tố bao hàm: Giải thuật của Ukkonen thực hiện thiết lập cây hậu tố

bao hàm Để lấy về cây hậu tố cần phải thực hiện thao tác:

+ Loại bỏ hoàn toàn các cung có nhãn $

+ Loại bỏ một số cung không đƣợc gắn nhãn

+ Loại bỏ một số nút khi nó không chứa ít nhất là 2 nút con

Cây hậu tố bao hàm cho tiền tố S[i,i] của S hoàn toàn giống cây hậu tố cho chuỗi tiền tố S[1,i]$

I i Đại diện cho cây bao hàm hậu tố cho chuỗi S[1.i]

Mỗi hậu tố trong cây có thể không kết thúc tại một nút lá

Ví dụ: Cây bao hàm ST cho chuỗi xabxa bởi cây cho chuỗi xabxa$

{xabxa$, abxa$, bxa$, xa$, a$, $}

Hình 2.3: Cây bao hàm cho chuỗi "xabxa$"

* Giải thuật của Ukkonen's:

I i is the implicit suffix tree of the string S[1, i]

Construct I 1

/* Construct I i+1 from I i */

for i = 1 to m-1 do /* phase i+1 */

for j = 1 to i+1 do /* extension j */

Trang 25

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Find the end of the path P from the root whose label is S[j, i] in I i and

extend P with S[i+1] by suffix extension rules;

Convert I m into a suffix tree S

* Các luật mở rộng: Mở rộng S[j,i] đến S[j,i+1]

- Nguyên tắc 1: S[j,i] là nút lá Thêm ký tự S(i+1) vào phần cuối của nhãn

trên cung chứa nút lá

- Nguyên tắc 2: S[j,i] không phải là nút lá, các ký tự sau đây không kèm theo

S(i+1) Tạo một cung lá mới cho S(i+1) Có thể tạo thêm một nút nằm bên trong

nếu S[j,i] là kết thúc phần giữa của một cung

- Nguyên tắc 3: S[j,i+1] đã nằm trong cây Không thực hiện cập nhật lại cây

Ví dụ: Cây bao chùm cho "axabxb" từ cây của chuỗi "axabx"

Hình 2.4: Cây bao chùm cho chuỗi axabxb

Giải thuật Ukkonen’s với độ phức tạp O(m) Giải thuật thực hiện các kỹ

thuật: Liên kết hậu tố "Suffix links", bỏ qua và đếm giả "Skip and count trick", nén nhãn và cung nén nhãn cạnh " edge label compression", một nút chai và một nút lá thì luôn là nút lá

* Tạo liên kết hậu tố Suffix Links:

Giải thuật thực hiện lựa chọn hai chuỗi a và xa Giả sử một số nút v nội bộ của cây đƣợc gắn nhãn với xa và một nút khác s(v) trong cây đƣợc dán nhãn với

Trang 26

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

một a Cung (v,s(v)) được gọi là liên kết hậu tố "suffix link", chú ý là bỏ qua nút

ifc(x) < 0 then z:=z-1; end if;

c(x):=c(x)+1;

end loop;

if size(q)=m then mark(j-m+1); DeQueue(q,x);

ifc(x) < 0 then z:=z-1; end if;

2.3 Thuật toán của Boyer-Moore

Ý tưởng chính của thuật toán: thuật toán thực hiện đối sánh theo mẫu pat để tìm sự xuất hiện trong văn bản T Mỗi lần đối sánh sẽ dịch chuyển mẫu theo chiều đối sánh trái qua phải, mẫu pat được đối sánh trong T theo chiều từ phải qua trái ký

Trang 27

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

tự đầu tiên nằm phải cùng Thuật toán được thực hiện trên ba ý tưởng chính Đối

sánh theo mẫu theo chiều từ phải qua trái: pat[m], pat[m-1] pat[2] pat[1] [2], [11],

[13]

Kỹ thuật dịch chuyển theo ký tự sai khớp "bad character shift rule": Nhiệm

vụ tránh việc so sánh lặp lại các ký tự không thành công [9] (1)

Kỹ thuật dịch chuyển theo hậu tố tốt "good suffix shift rule": Dịch chuyển các ký tự sánh đúng (suffix) lặp lại cho lần sánh tiếp theo [9] (2)

Kỹ thuật đối sánh (scan) chuỗi mẫu pat trong văn bản text: Thực hiện scan từ trái qua phải Thực hiện dịch chuyển pat lần lượt từ trái qua phải,khoảng cách thực

hiện phụ thuộc vào kỹ thuật (1) hoặc (2)

Ví dụ: Thực hiện scan các chuỗi sau:

Text = "This picture shows a nice view of the park.";

Pat = "future"

- Thực hiện tìm vị trí xuất hiện của pat trong text :

1) pat[6]=text[12]=e, 2) pat[5]= text[11]= r, 3) pat[4] = text[10]=u, 4) pat[3] = text[9]= t, 5) pat[2] = u ≠c = text[8]

* Dịch chuyển theo "bad character shift rule":

Khi gặp ký tự không sánh khớp thực hiện dịch chuyển pat sang bên phải, việc sánh khớp lại được thực hiện lại từ đầu cho vị trí mới của pat trong text Giả

Trang 28

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

định j là vị trí của pat trong text, m là độ dài của pat Thực hiện scan pat và đối sánh với text tại vị trí ký tự thứ i của pat sẽ có pat[i] = a và text[j+i] = b Do việc thực hiện từ phải cùng qua trái nên tại vị trí i của pat sẽ có chuỗi con pat[i +1 m] =

text[j+i +1 m] Nhớ rằng đang xét ở vị trí i thì pat[i]!= text[j+i] Nếu b không

xuất hiện trong pat thì thực hiện dịch pat tại vị trí text[i+j]

Trong trường hợp ngược lại thực hiện dịch chuyển pat đến khi nào gặp b đầu tiên (đối sánh lùi các ký tự để gặp b trong pat đầu tiên) trong pat lên vị trí text[i+j]

Dịch chuyển khi xuất hiện mismacth

Có một vấn đề ở đây là từ vị trí pat[1 i] không chứa b, khi đó việc dịch

chuyển có thể bị thất bại Với trường hợp này sẽ thực hiện theo kỹ thuật xử lý với

trường hợp (1) với tên gọi "Preprocess-bad character shift rule" (xử lý trước khi

max

0 Nếu không tìm thấy b

Trong trường hợp ngược lại

Hàm R(x) được sử dụng trong tính quá trình dịch chuyển pat Với giải thuyết

là tại vị trí i có u = pat[i+1 m] = text[j+i+i j+m] và pat[i]!= text[i+j]; với text[i+j]

= b Khi đó dịch chuyển sẽ được tính theo công thức h= max{1,i-R(b)}

- Nếu bên phải cùng của pat[k] = b với 1<k < i dịch chuyển pat sao cho

pat[k] = text[i+j];

Trang 29

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Dịch chuyển theo vị trí sánh đúng

- Nếu bên phải cùng của tại k và pat [k]= b với k > i thì thực hiện dịch sang

phải 1 ký tự

Dịch chuyển với hậu tố

- Nếu b không xuất hiện trong pat[1 m-i] thực hiện dịch pat sang bên phải với độ dịch là i (sang phải i ký tự) và text[i+j+1 i+j+m]

Dịch chuyển với độ dịch i vị trí

* Dịch chuyển theo "Good character shift rule":

- Giả định chúng ta có pat[i m]=text[i+ j j+ m] = u và pat[i-1] ≠ text[i+

j-1]

Trang 30

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Dịch chuyển theo good -suffix shift

- Hậu tố tốt "good -suffix shift" được lựa chọn với sự xuất hiện chuỗi u với u

= text[i+ j j+ m] (=pat[i m]); u được nằm bên phải cùng của pat (trong trường hợp này u chưa phải là hậu tố của pat) u sẽ được phân định (preceded) bởi ký tự khác nằm trong pat[i-1] Một trường hợp không tốt đó là không cần phải trước các

Muốn thực hiện chuỗi text[7 9]= "ted" sánh với một trong các chuỗi mẫu

u="xed" nào đó với x≠l, và thực hiện dịch chuyển chuỗi u sánh khớp với text[7 9]

Trong ví dụ này sử dụng chuỗi u=pat[1 3]=" ped " để thực hiện dịch chuyển

pat[1 3] lên thẳng cột đúng với text[7 9]

- Nếu không tồn tại các chuỗi như ở trên, thao tác dịch chuyển vị trí với độ

dài nhấy của chuỗi hậu tố v của text[ i+ j j+ m] với việc đối sánh tiền tố của pat

Dịch chuyển hậu tố với i+ j j+ m

Ngày đăng: 23/12/2015, 16:18

HÌNH ẢNH LIÊN QUAN

Hình 1.1: Cây hậu tố cho S= &#34;xabxac&#34; - Nghiên cứu phương pháp so sánh xâu xấp xỉ và ứng dụng
Hình 1.1 Cây hậu tố cho S= &#34;xabxac&#34; (Trang 15)
Hình 2.3: Cây bao hàm cho chuỗi &#34;xabxa$&#34; - Nghiên cứu phương pháp so sánh xâu xấp xỉ và ứng dụng
Hình 2.3 Cây bao hàm cho chuỗi &#34;xabxa$&#34; (Trang 24)
Hình 2.4: Cây bao chùm cho chuỗi axabxb - Nghiên cứu phương pháp so sánh xâu xấp xỉ và ứng dụng
Hình 2.4 Cây bao chùm cho chuỗi axabxb (Trang 25)
Hình 3.1: Giao diện ứng dụng sửa lỗi chính tả - Nghiên cứu phương pháp so sánh xâu xấp xỉ và ứng dụng
Hình 3.1 Giao diện ứng dụng sửa lỗi chính tả (Trang 50)
Hình 3.2: Sửa từ cho từ sai - Nghiên cứu phương pháp so sánh xâu xấp xỉ và ứng dụng
Hình 3.2 Sửa từ cho từ sai (Trang 51)
Hình 3.4: Thực nghiệm với từ “Cổng” - Nghiên cứu phương pháp so sánh xâu xấp xỉ và ứng dụng
Hình 3.4 Thực nghiệm với từ “Cổng” (Trang 52)
Hình 3.5: Thực nghiệm với từ khóa “Tỏa” - Nghiên cứu phương pháp so sánh xâu xấp xỉ và ứng dụng
Hình 3.5 Thực nghiệm với từ khóa “Tỏa” (Trang 52)
Hình 3.7 Thực nghiệm hệ thống gợi ý với từ khóa “Gợi” - Nghiên cứu phương pháp so sánh xâu xấp xỉ và ứng dụng
Hình 3.7 Thực nghiệm hệ thống gợi ý với từ khóa “Gợi” (Trang 54)
Hình 3.6: Hệ thống gợi ý từ điển - Nghiên cứu phương pháp so sánh xâu xấp xỉ và ứng dụng
Hình 3.6 Hệ thống gợi ý từ điển (Trang 54)
Hình 3.9: thực nghiệm với từ khóa “Trường” - Nghiên cứu phương pháp so sánh xâu xấp xỉ và ứng dụng
Hình 3.9 thực nghiệm với từ khóa “Trường” (Trang 55)
Hình 3.8: Thực nghiệm với từ khóa “Tổng” - Nghiên cứu phương pháp so sánh xâu xấp xỉ và ứng dụng
Hình 3.8 Thực nghiệm với từ khóa “Tổng” (Trang 55)
Hình 3.10: Thực nghiệm với từ khóa &#34;Việt&#34; - Nghiên cứu phương pháp so sánh xâu xấp xỉ và ứng dụng
Hình 3.10 Thực nghiệm với từ khóa &#34;Việt&#34; (Trang 56)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w