Tính thực tiễn của đề tài Như đã trình bày ở trên, có rất nhiều tình huống xảy ra khi chúng ta tiến hành tìm kiếm thông tin dưới dạng chuỗi, như: gõ sai kí tự, gõ thừa kí tự,… Để khắc p
Trang 1TÓM TẮT LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
NGƯỜI HƯỚNG DẪN KHOA HỌC
TS Phan Xuân Hiếu
Thái Nguyên - 2015
Trang 3LỜI CAM ĐOAN Tên em là Trần Thúy Nhung, học viên lớp Cao học K12E, chuyên
ngành Khoa học máy tính, khóa học 2013 – 2015 Em xin cam đoan luận văn:
“TỰ ĐỘNG SỬA ĐỔI VÀ GỢI Ý TRUY VẤN TÌM KIẾM DỰA TRÊN
CÁC PHƯƠNG PHÁP ĐỐI SÁNH CHUỖI XẤP XỈ”
Dưới sự hướng dẫn của TS Phan Xuân Hiếu - Trường Đại học Công nghệ
- Đại học Quốc gia Hà Nội, với các nội dung trình bày được trích dẫn đầy đủ
từ các nguồn tài liệu tham khảo chính thống (báo khoa học, các sách có bản quyền), các nội dung trình bày trong luận văn hoàn toàn trung thực Và đây là
công trình nghiên cứu của bản thân kết hợp với sự hướng dẫn của TS Phan Xuân Hiếu tạo lập ra
Nếu có nội dung nào sao chụp lại hoặc không phải do chính bản thân tạo ra, em xin hoàn toàn chịu tránh nhiệm và chịu các hình thức kỷ luật
Phú Thọ, ngày tháng 9 năm 2015
Trần Thúy Nhung
Trang 4LỜI CẢM ƠN
Điều đầu tiên em xin gửi lời cảm ơn tới các Thầy, Cô Trường Đại học Công nghệ thông tin và Truyền thông Thái Nguyên trong thời gian vừa qua đã cung cấp và truyền đạt chương trình học với các môn học có nội dung bổ ích Thông qua chương trình học, em được lĩnh hội nhiều về kiến thức chuyên môn, các phương pháp tiếp cận bài toán trong tin học
Em xin gửi lời cảm ơn sâu sắc tới TS Phan Xuân Hiếu, người Thầy
đã hướng dẫn, chỉ bảo, giám sát, theo dõi, cung cấp phương pháp, nguồn dữ liệu tiếp cận bài toán để em có thể hoàn thành được luận văn của mình
Em xin cảm ơn Ban Giám hiệu trường Cao đẳng Kinh tế - Kỹ thuật Phú Thọ cùng các đồng nghiệp trong Trường, xin cảm ơ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 đã tạo mọi điều kiện giúp đỡ để em hoàn thành chương trình học tập và luận văn tốt nghiệp
Điều cuối cùng em xin cảm ơn gia đình, bạn bè luôn nhiệt tình ủng
hộ, động viên, giúp đỡ cả về vật chất lẫn tinh thần trong thời gian học tập
và nghiên cứu
Trong quá trình thực hiện luận văn, mặc dù đã có rất nhiều cố gắng nhưng cũng không tránh khỏi những thiếu sót Kính mong nhận được sự cảm thông và tận tình chỉ bảo của các Thầy, Cô và các bạn
Em xin trân trọng cảm ơn!
Phú Thọ, ngày …… tháng 9 năm 2015
HỌC VIÊN Trần Thúy Nhung
Trang 5MỤC LỤC
LỜI CAM ĐOAN i
LỜI CẢM ƠN ii
DANH MỤC CÁC BẢNG v
DANH MỤC CÁC HÌNH v
MỞ ĐẦU 1
CHƯƠNG 1: GIỚI THIỆU BÀI TOÁN 4
1.1 Giới thiệu bài toán Tự động sửa đổi và gợi ý truy vấn tìm kiếm 4
1.1.2 Hỗ trợ truy vấn tìm kiếm bằng sửa đổi và gợi ý 7
1.1.3 Hỗ trợ truy vấn tìm kiếm xấp xỉ bằng Tiếng Việt 10
1.2 Các cách tiếp cận giải quyết bài toán 11
1.2.1 Cách tiếp cận thông thường 11
1.2.2 Cách tiếp cận theo thuật toán chuỗi con chung có độ dài lớn nhất 13 1.2.3 Cách cách tiếp cận theo các thuật toán Similar Text 14
1.3 Cách tiếp cận đối sánh chuỗi xấp xỉ 14
1.3.1 Bài toán đối sánh chuỗi xấp xỉ 14
1.3.2 Ứng dụng của đối sánh chuỗi xấp xỉ 16
CHƯƠNG 2: ĐỐI SÁNH CHUỖI XẤP XỈ CHO VẤN ĐỀ TỰ ĐỘNG SỬA ĐỔI VÀ GỢI Ý TRUY VẤN 19
2.1 Các phương pháp đối sánh chuỗi xấp xỉ 19
2.1.1 Khoảng các Hamming 19
2.1.2 Khoảng cách Episode 21
2.1.3 Khoảng cách Longest Common Sequence (LSC) 21
2.2 Phương pháp đối sánh theo độ đo Levenshtein (string edit distance) 23
2.2.1 Độ đo Levenshtein 23
Trang 62.2.2 Giải thuật tính độ đo Levenshtein 24
2.2.3 Mô tả giải thuật 26
2.2.4 Trình tự các bước thông qua ví dụ cụ thể 27
2.3 Tự động sửa đổi và gợi ý truy vấn dựa trên độ đo Levenshtein 31
2.3.1 Đánh chỉ mục các truy vấn tìm kiếm đã có (lịch sử) 31
2.3.2 Thu gọn không gian đối sánh 36
2.3.3 Đối sánh chuỗi với độ đo Levenshtein 39
2.3.4 Đối sánh với độ đo Cosine 40
2.3.5 Đối sánh với độ đo KL 41
2.3.6 Áp dụng độ đo Levenshtine vào thực tiễn luận văn 41
CHƯƠNG 3: THỰC NGHIỆM, ĐÁNH GIÁ VÀ ỨNG DỤNG 45
3.1 Thực nghiệm và đánh giá đối sánh từng cặp chuỗi đơn lẻ 47
3.2 Thực nghiệm và đánh giá đối sánh đa chuỗi 50
3.3 Thực nghiệm và đánh giá thu gọn không gian đối sánh 51
3.3.1 Một số điểm tương đồng giữa ký tự Tiếng Việt và ký tự La Tinh 52 3.3.2 Thực nghiệm và đánh giá 54
3.4 Thực nghiệm và đánh giá tự động sửa đổi và gợi ý truy vấn 62
3.5 Ứng dụng sửa đổi và gợi ý truy vấn tự động 65
KẾT LUẬN VÀ KIẾN NGHỊ 69
TÀI LIỆU THAM KHẢO 71
Trang 7DANH MỤC CÁC BẢNG
Bảng 2.1: Bảng mô tả khoảng cách Hamming giữa hai chuỗi có độ dài nhƣ nhau 19
Bảng 2.2: Độ đo Levenshtein giữa hai chuỗi S và T 24
Bảng 2.3: Kỹ thuật đánh chỉ mục xuôi 32
Bảng 2.4: Đánh chỉ số ngƣợc 34
Bảng 3.1: Các từ/chuỗi đƣợc xây dựng làm thực nghiệm thu gọn không gian đối sánh 54
DANH MỤC CÁC HÌNH Hình 1.1 Mô hình truy vấn tìm kiếm 5
Hình 2.1: Thuật toán Hamming 21
Hinh 2.2: Độ lệch pha Cosine của vector A và vector B 41
Hình 3.1: Hệ thống thực nghiệm trên thuật toán Levenshtein 46
Hình 3.2 Đối sánh chuỗi đơn lẻ 48
Hình 3.3: Đối sánh với cặp chuỗi ―Công nghệ‖ và ―Công nghệ‖ 49
Hình 3.4: Đối sánh đa chuỗi 51
Hình 3.5: Thu gọn không gian với từ khóa ―Hệ thống‖ D=15 và K=15 56
Hình 3.6: Thu gọn không gian với từ khóa ―Hệ thống‖ D=10 và K=15 57
Hình 3.7: Thu gọn không gian với chuỗi ―Hệ thống‖có D = 5, K = 5 58
Hình 3.8: Thu hẹp không gian với chuỗi ―Hệ thống thông tin‖ với D=30;K=20 59
Hình 3.9: Thu gọn không gian với chuỗi ―hệ thống thông tin‖ với D=10; K=15 60
Hình 3.10: Thu gọn không gian với ―chuỗi hệ thống thông tin‖ D=5 và K=5 61
Hình 3.11: Hệ thống sửa từ cho từ ―Cổng‖ 63
Hình 3.12: Hệ thống sửa đổi từ cho từ khóa ―Tộngn‖ 64
Hình 3.13: Hệ thống sửa đổi với từ khóa ―Gợi‖ 64
Hình 3.14: Gợi ý chuỗi ―Gựi ý truy vấn‖ 66
Hình 3.15: Kết quả của các chuỗi gợi ý ―Hệ thống thông tin‖ 67
Hình 3.16: Kết quả của các chuỗi gợi ý ―Phần mểmm‖ 67
Hình 3.17: Kết quả của các chuỗi gợi ý ―Phần mểm‖ 68
Trang 8và gợi ý truy vấn tìm kiếm Đối với những hệ thống tìm kiếm lớn như Google, Bing, … việc gợi ý các truy vấn đúng, chính xác sẽ giúp người dùng thao tác rất nhanh và tìm được những kết quả theo ý muốn thậm chí chỉ với một truy vấn gần đúng
Luận văn này hướng đến khảo sát, nghiên cứu, và xây dựng thử nghiệm mô đun tự động sửa đổi và gợi ý truy vấn tiếng Việt dựa vào các phương pháp và thuật toán đối sánh mẫu xấp xỉ Việc đối sánh để tìm ra được truy vấn đúng để gợi ý cần phải thực hiện rất nhanh và đây là một khía cạnh nữa mà đề tài cần tập trung nghiên cứu
Bài toán sánh mẫu không chỉ có trong miền dữ liệu văn bản mà còn có trong các miền dữ liệu đa phương tiện khác (ảnh, video, âm thanh, …) Trên thực tế có rất nhiều ứng dụng sánh mẫu như: cơ chế sánh mẫu của hệ điều
hành (chẳng hạn, lệnh grep, fgrep trong hệ điều hành UNIX), cơ chế kiểm
tra một file nhiễm virus (sánh mẫu – xâu đặc tả virus - với nội dung file), máy tìm kiếm (search engine) trên Internet, xác định mẫu gene bệnh xuất hiện trong đoạn gene của người
Trong thời đại tốc độ lượng thông tin tăng gấp đôi sau chu kỳ 18 tháng,
dù cho tốc độ và khả năng lưu trữ của máy tính tăng nhanh thì vấn đề nghiên cứu, phát triển nâng cao hiệu quả của các thuật toán sánh mẫu luôn là chủ đề nghiên cứu thời sự
Trong các thuật toán của bộ môn khoa học máy tính, khái niệm Khoảng cách Levenshtein thể hiện khoảng cách khác biệt giữa 2 chuỗi
Trang 9kí tự Khoảng cách Levenshtein giữa chuỗi T và chuỗi P là số bước ít nhất biến chuỗi S thành chuỗi T thông qua 3 phép biến đổi là:
- Xoá 1 kí tự
- Thêm 1 kí tự
- Thay kí tự này bằng kí tự khác
Khoảng cách này được đặt theo tên Vladimir Levenshtein, người đã đề
ra khái niệm này vào năm 1965 Nó được sử dụng trong việc tính toán sự giống và khác nhau giữa 2 chuỗi, như chương trình kiểm tra lỗi chính tả của winword spellchecker Ví dụ: Khoảng cách Levenshtein giữa 2 chuỗi
"kitten" và "sitting" là 3, vì phải dùng ít nhất 3 lần biến đổi
1 kitten -> sitten (thay "k" bằng "s")
2 sitten -> sittin (thay "e" bằng "i")
3 sittin -> sitting (thêm kí tự "g")
Tìm hiểu, nghiên cứu bài toán tự động sửa đổi và gợi ý truy vấn tìm kiếm; đồng thời nghiên cứu các phương pháp đối sánh chuỗi xấp xỉ và đặt trọng tâm vào phương pháp đối sánh theo độ đo Levenshtein; ứng dụng vào sửa đổi và gợi ý truy vấn tự động Là những gì mà luận văn này mong muốn đạt được
2 Tính thực tiễn của đề tài
Như đã trình bày ở trên, có rất nhiều tình huống xảy ra khi chúng ta tiến hành tìm kiếm thông tin dưới dạng chuỗi, như: gõ sai kí tự, gõ thừa kí tự,…
Để khắc phục những hạn chế trên và mang lại kết quả chính xác cho người sử dụng nên em đã chọn đề tài ―Tự động sửa đổi và gợi ý truy vấn tìm kiếm dựa trên các phương pháp đối sánh chuỗi xấp xỉ.‖ Đặc biệt, đề tài này sẽ hướng đến khảo sát, nghiên cứu, và thử nghiệm với dữ liệu truy vấn tiếng Việt Việc xây dựng được một mô đun tự động sửa đổi và gợi ý truy vấn với chất lượng cao (chính xác, độ phủ cao, tốc độ nhanh, …), sẽ bổ sung một tính năng tốt cho khâu tìm kiếm trên các site thương mại điện tử, du lịch, y học, …
Trang 103 Nội dung nghiên cứu
Mục tiêu nghiên cứu của đề tài là tìm hiểu, nghiên cứu bài toán tự động sửa đổi và gợi ý truy vấn tìm kiếm; đồng thời nghiên cứu các phương pháp đối sánh chuỗi xấp xỉ và đặt trọng tâm vào phương pháp đối sánh theo độ đo Levenshtein Và ứng dụng vào sửa đổi và gợi ý truy vấn tự động
4 Phạm vi nghiên cứu
- Tìm hiểu các khái niệm liên quan đến bài toán tự động sửa đổi và gợi
ý truy vấn tìm kiếm
- Tìm hiểu một số phương pháp đối sánh chuỗi xấp xỉ
- Đi sâu tìm hiểu và nghiên cứu về phương pháp đối sánh theo độ đo Levenshtein
- Thực nghiệm, đánh giá và ứng dụng tự động sửa đổi và gợi ý truy vấn
5 Phương pháp nghiên cứu
- Tìm hiểu các tài liệu về các vấn đề liên quan
- Tham gia thảo luận và trình bày xemina
- Thực nghiệm, đánh giá và ứng dụng
6 Bố cục luận văn
Luận văn bao gồm: mục lục, phần mở đầu
- Chương 1: Giới thiệu bài toán
- Chương 2: Đối sánh chuỗi xấp xỉ cho vấn đề Tự động sửa đổi và gợi ý truy vấn
- Chương 3: Thực nghiệm, đánh giá, và ứng dụng
Kết luận và kiến nghị
Trang 11CHƯƠNG 1: GIỚI THIỆU BÀI TOÁN
Trong chương này sẽ giới thiệu một số nội dung liên quan đến các phương pháp đối sánh chuỗi xấp xỉ Với mục tiêu cung cấp các thông tin và các giải thuật đối sánh chuỗi xấp xỉ được áp dụng trong luận văn này Với các nội dung chính được đề cập tới bao gồm: Giới thiệu chung về máy tìm kiếm với mô hình đơn giản và trình tự các bước cơ bản cần phải có để thực hiện tìm kiếm Giới thiệu về phương pháp đối sánh mẫu, đối sánh chính xác so với đối sánh xấp xỉ[1]; tập trung giới thiệu các cách tiếp cận đối sánh xấp xỉ với giải thuật đối sánh xấp xỉ dựa trên độ đo khoảng cách xấp xỉ của Levenshtein.[1][2][3]
1.1 Giới thiệu bài toán Tự động sửa đổi và gợi ý truy vấn tìm kiếm
1.1.1 Mô hình truy vấn tìm kiếm
Với sự phát triển của khoa học về công nghệ thông tin, sự bùng nổ cả
về số lượng, chất lượng của dữ liệu và ứng dụng Để có thể sử dụng một cách hiệu quả hơn nữa các hệ thống thông tin hiện đại với độ phức tạp và độ lớn của dữ liệu, đáp ứng nhanh chính xác, kịp thời, đã dẫn tới sự ra đời của các máy tìm kiếm thông tin (chú trọng tới các máy tìm kiếm dựa trên văn bản) Việc truy lùng thông tin luôn cần có thao tác so sánh (đối sánh) Dựa trên việc đối sánh này chúng ta mới có thể truy xuất được thông tin Một hệ thống truy tìm thông tin như vậy được gọi chung là máy tìm kiếm thông tin Máy này thực hiện tập các thao tác xử lý với thông tin, sao cho cung cấp một chuỗi truy vấn (một tập chuỗi) thực hiện truy tìm theo chuỗi truy vấn, tiến hành tìm kiếm trong hệ thống dữ liệu (được thu thập, tổ chức, tiền xử lý, lưu trữ ) theo một
số phương pháp để đưa trả về dữ liệu đáp ứng truy vấn
Máy tìm kiếm (Search Engine)[9], thực hiện các thao tác tìm kiếm dữ
liệu trong hệ thống khi có yêu cầu bởi một dữ liệu đầu vào là các từ khóa Mô
Trang 12hình tìm kiếm (hình 1.1) biểu diễn mô hình chung cho các máy thực hiện chức năng tìm kiếm dữ liệu Thực hiện thông qua ba bước chính:
- B1: Nguồn cung cấp dữ liệu đầu vào Input bởi câu truy vấn Query
text viết tắt q
- B2: Hệ thống tìm kiếm Search Engine thực hiện tìm kiếm dựa trên q
theo một phương thức f tới cơ sở dữ liệu (CSDL) D
- B3: Hệ thống trả kết quả dữ liệu R (Result)
Theo cách thức trên thì có thể biểu diễn mô hình dạng tổng quát:
R = f(q)D (1) Với kết quả R phải phụ thuộc vào các yếu tố sau đây:
- Nguồn dữ liệu D: Được tổ chức cụ thể cho máy tìm kiếm xử lý sao cho hiệu quả Với mỗi máy tìm kiếm khác nhau sẽ có cách tổ chức khác nhau Nhưng dữ liệu sẽ có dung lượng rất lớn
- Thuật toán tìm kiếm f: Thực hiện phương pháp tìm kiếm cụ thể được cài đặt, tìm kiếm trên miền dữ liệu D Hàm sẽ trả về kết quả có dữ liệu tìm thấy hoặc không có dữ liệu với câu truy vấn q cung cấp không phù hợp với dữ liệu hiện có
- Câu truy vấn q: Chuỗi hoặc từ cung cấp làm điều kiện để hàm thực hiện tìm kiếm
Hình 1.1 Mô hình truy vấn tìm kiếm
Trong khuôn khổ luận văn này, nội dung chủ yếu đề cập tới cách thức cung cấp hỗ trợ để trước khi thực hiện bước 1, cung cấp câu truy vấn q sao cho có kết quả được cải thiện hơn trước Câu truy vấn q được nhắc tới trong luận văn này thể hiện kiểu dữ liệu dạng văn bản (Text)
Trang 13Với câu truy vấn q được cung cấp cho hệ thống, khi thực thi dữ liệu phụ thuộc vào câu truy vấn này
- Nếu câu truy vấn q được đưa vào có nội dung chính xác (có trong CSDL) thì hệ thống có thể trả về kết quả mong muốn Các kết quả là một dữ liệu thể hiện văn bản hoặc dạng khác Các kết quả này đều thể hiện có liên quan (toàn bộ hoặc bộ phận) với câu truy vấn Nếu là toàn bộ thì chúng ta có truy vấn chính xác (trùng khớp) ngược lại có thể gọi là truy vấn bộ phận hoặc xấp xỉ Như vậy xấp xỉ có thể trả ra nhiều kết quả hơn truy vấn chính xác Mỗi loại đều có ý nghĩa thực tiễn cao
- Nếu câu truy vấn không chính xác thì hệ thống không thể trả về kết quả hoặc kết quả không thể như mong đợi
Như vậy chất lượng câu truy vấn q phụ thuộc vào nguồn cung cấp câu truy vấn Nguồn cung cấp có thể là người dùng (người sử dụng hệ thống tìm kiếm để truy lùng thông tin) hoặc hệ thống khác muốn sử dụng hệ thống tìm kiếm thông tin Nội dung q có hai vấn đề: đó là các văn bản được xây dựng có thể bị sai chính
tả và vấn đề còn lại không biết chính xác nội dung truy vấn để thu được kết quả mong đợi
Luận văn này sử dụng kỹ thuật hỗ trợ trong bước 1 trước khi diễn ra bước 2 nhằm tự động sửa và gợi ý truy vấn tìm kiếm:
- Kỹ thuật tự động sửa đổi từ trong q: Với trường hợp thệ thống cung cấp văn bản vẫn còn lỗi chính tả, các từ trong chuỗi truy vấn không có trong
từ điển hoặc bị sai Với trường hợp này cần phải sửa lại sao cho đúng rồi mới tiến hành tìm kiếm Với những người dùng ban đầu hoặc khả năng về ngôn ngữ bị giới hạn thì việc tìm kiếm xảy ra sai sót sẽ nhiều hơn nhóm người còn lại
- Kỹ thuật gợi ý truy vấn tìm kiếm: Đối với trường hợp q đưa vào hệ thống
sẽ cung cấp thêm các kết quả q‘ sát với q để có các kết quả sát hơn so với mong
Trang 14đợi Hệ thống cung cấp q sẽ tiến hành lựa chọn q‘ phù hợp nhất để tiến hành tìm kiếm
Các kỹ thuật được trình bày cụ thể ở phần 1.1.2
1.1.2 Hỗ trợ truy vấn tìm kiếm bằng sửa đổi và gợi ý
1.1.2.1 Tự động sửa đổi truy vấn
Với câu truy vấn q cung cấp tới máy tìm kiếm thì các dữ liệu văn bản gồm các từ, về mặt ngữ pháp có thể xảy ra trường hợp các từ cung cấp sai chính tả (từ sai) trong câu truy vấn Hệ thống sẽ thực hiện nhiệm vụ sửa lại các từ bị sai này để có một câu truy vấn với các từ sai thành các từ đúng, bằng cách áp dụng thuật toán của Levenshtien
Giải thuật sửa đổi truy vấn:
B1: Tách q thành mảng các từ Words
B2: Foreach ( w trong Words)
If (w từ sai) { thay w bởi w‘ đúng } End for each
B3: Gộp Words thành q‘;
B4: Return q‘;
End Function
Trang 15Với ý tưởng phát hiện các từ sai, hệ thống cần phải thực hiện bước quan trọng đầu tiên đó chính là tổ hợp các từ vào tập từ điển Các từ này phải được lựa chọn sàng lọc sao cho dữ liệu từ điển không được lặp lại (các từ phải
là khác nhau) Các từ phải có trong từ điển Tiếng Việt, các từ phải phản ánh được dữ liệu trung thực[4][6]
Ý tưởng giải pháp sửa đổi các từ được trình bày ở thuật toán trên được thực hiện như sau:
- Bước 1: Từ chuỗi truy vấn được nguồn cung cấp đưa vào hệ thống thực
hiện tìm kiếm Tại bước này hệ thống thực hiện tách chuỗi thành các từ riêng lẻ
- Bước 2: Từ các từ ở trong bước thứ nhất sẽ được thực hiện đối sánh
xấp xỉ với từ điển dữ liệu của hệ thống Nhằm các mục đích:
+ Xác định được từ đúng hoặc sai dựa trên đối sánh xấp xỉ
+ Nếu từ là đúng: Hệ thống tìm từ trùng khớp với từ được cung cấp từ câu truy vấn Hệ thống sẽ không thay thế từ này nữa
+ Nếu từ là sai: Hệ thống đối sánh xấp xỉ chỉ ra khoảng cách d (Levenshtein) Nếu d0, hệ thống sẽ thực hiện việc cung cấp từ sát nhất để tiến hành sửa đổi từ sao cho đúng nhất Để thực hiện việc này, em đã xây dựng chức năng sửa từ sai và thực hiện tìm ra từ gần nhất của từ sai theo thuật toán xấp xỉ và thuật toán Similar Text Với các từ (các từ này đã được rút gọn không gian đối sánh thực hiện) có độ dài nhỏ nhất trong các từ của hệ thống
và từ này thỏa mãn yêu cầu là độ tương đồng (similar) nhất với từ sai này thể hiện trong thuật toán Similar Text
+ Thực hiện lặp lại cho các từ tiếp theo trong các từ của chuỗi truy vấn Qua các bước trên việc xử lý các từ trong chuỗi truy vấn được thực hiện Kết quả của chức năng này được thực nghiệm trong chương 3
1.1.2.2 Tự động gợi ý truy vấn tìm kiếm
Trong kỹ thuật này, sẽ xây dựng giải thuật gợi ý một số truy vấn q‘ dựa trên truy vấn đầu vào q Với q giải thuật sẽ đưa ra một số câu truy vấn q‘ gần
Trang 16với q nhất dựa trên phương pháp sánh chuỗi xấp xỉ áp dụng thuật toán độ đo Levenshtein Bằng cách đối sánh q với các q‘ có trong cơ sở dữ liệu để đưa ra các q‘ có độ đo Levenshtein không vượt quá độ đo cho trước d Việc cài đặt
hệ thống được thực nghiệm cụ thể trong chương 3 của luận văn này
Mục đích của kỹ thuật gợi ý tìm kiếm và việc dựa trên câu truy vấn thì
hệ thống sẽ đưa ra các chuỗi truy vấn có nội dung xấp xỉ (tương đồng) với truy vấn gốc Thực hiện được điều này sẽ cung cấp cho người dùng một trải nghiệm khá tốt, việc cung cấp này còn giúp người dùng định hình được các chuỗi truy vấn về sau, hỗ trợ người dùng ở nhiều mức độ và hiểu biết khác nhau [4] Nhằm mục đích lâu dài đó là hiểu được tính cách người dùng sử dụng hệ thống tìm kiềm, đáp ứng dữ liệu của người dùng một cách hữu dụng
và bổ ích Hệ thống sẽ biết chính xác dữ liệu người dùng muốn cung cấp là gì
Kỹ thuật này được thực hiện như sau:
- Tổ hợp các chuỗi truy vấn tương tự nhau
- Cung cấp các chuỗi truy vấn tương tự với chuỗi truy vấn mà người dùng cung cấp
Trong kỹ thuật gợi ý truy vấn, em sẽ sử dụng thuật toán đối sánh xấp xỉ dựa trên giải thuật của Levenshtein [8] Trình tự được thực hiện theo các bước sau:
Bước 1: Nhận dữ liệu là chuỗi truy vấn từ phía người dùng cung cấp Bước 2: Lựa chọn các chuỗi thích hợp tham gia đối sánh Trong bước
này thực hiện việc lựa chọn các chuỗi tham gia đối sánh thích hợp nhằm giảm không gian đối sánh, cụ thể được trình bày trong phần thu hẹp không gian đối sánh Các chuỗi phải có một số điều kiện sau đây để có thể được lựa chọn (dĩ nhiên không hề lựa chọn hết các chuỗi):
- Phù hợp về độ dài: Các chuỗi được lựa chọn có độ dài phải tương đương với độ dài chuỗi truy vấn Ở đây do hệ thống sẽ cung cấp Trong phần này, sẽ thực nghiệm với khoảng cách chênh lệch của chuỗi trong hệ thống dữ
Trang 17liệu để so sánh với chuỗi truy vấn với hằng số k Để loại bỏ các chuỗi quá ngắn và quá dài với chuỗi truy vấn Ví dụ nếu chuỗi gõ vào là ―Máy tìm kiếm‖ như vậy hệ thống sẽ chỉ lấy ra các chuỗi có độ dài như các chuỗi ―máy tìm‖ hoặc ―máy tìm kiếm xấp xỉ‖ để làm các ứng viên tham gia đối sánh Hệ thống sẽ không đưa ra các chuỗi dạng ―máy‖, ―máy tìm kiếm theo độ đo xấp xỉ‖[15] Vì lý do nó quá ngắn và quá dài dẫn tới thuật toán độ xấp xỉ trả ra là sẽ lớn hơn
- Phù hợp về nội dung: Các chuỗi được tổ hợp đối sánh nhằm khống chế trước về khoảng cách đối sánh Một phần nội dung của chuỗi làm ứng viên tham gia đối sánh phải có một phần nội dung của chuỗi truy vấn Ví dụ nếu với chuỗi truy vấn ―Tìm kiếm xấp xỉ‖ thì một phần của chuỗi ứng viên nên chứa ít nhất là các từ ―Tìm‖, ―kiếm‖, ―xấp‖, ―xỉ‖, dĩ nhiên chứa càng nhiều phần thì càng tốt
- Phù hợp về khoảng cách xấp xỉ: Các chuỗi được tham gia đối sánh có khoảng cách xấp xỉ phù hợp thể hiện ở chỗ: để một chuỗi là ứng cử viên thì khoảng cách độ đo xấp xỉ càng nhỏ thì độ ứng viên càng cao, phải tính tới trường hợp độ xấp xỉ là 0 (đối sánh trùng khớp) Vậy hệ thống thực hiện khống chế độ đo xấp xỉ sao cho phù hợp Nếu độ đo quá dài hoặc quá ngắn sẽ ảnh hường trực tiếp tới kết quả của hệ thống cần gợi ý
- Phù hợp về tiền tố: Các chuỗi được lấy nếu có tiền tố (chuỗi con trước), được làm ứng cử viên cho các trường hợp nếu các chuỗi đã thỏa mãn tiêu trí nhưng cần phải lựa chọn thêm các chuỗi ứng viên để có các chuỗi thật sự phù hợp Chuỗi nào có độ dài chuỗi con trùng với chuỗi truy vấn nhiều nhất thì được chọn
Bước 3: Cung cấp một vài chuỗi tương đồng nhất
Sau khi thực hiện được các bước, lấy về các chuỗi phù hợp gợi ý, hệ thống tiến hành xử lý các chuỗi và lấy ra một số chuỗi phù hợp nhất Hệ thống có thể cài đặt tùy chọn cung cấp số chuỗi gợi ý cụ thể
1.1.3 Hỗ trợ truy vấn tìm kiếm xấp xỉ bằng Tiếng Việt
Trang 18Hiện nay có nhiều máy tìm kiếm được xây dựng đã hỗ trợ ngôn ngữ tìm kiếm bằng Tiếng Việt như Google, Yahoo, Bing Tại Việt Nam, vài năm trở lại đây, một trang web dạng máy tìm kiếm cũng được xây dựng và hỗ trợ Tiếng Việt Nhưng hầu hết chưa có công cụ xử lý các câu truy vấn trước khi cung cấp cho máy tìm kiếm, làm ảnh hưởng tới các kết quả trả về của bộ máy tìm kiếm Việc cung cấp một giải pháp nhằm nâng cao hiệu quả tìm kiếm, bằng cách xây dựng kỹ thuật xử lý các câu truy vấn tìm kiếm, dựa trên phương pháp xấp xỉ được lựa chọn trong luận văn này làm tiền đề cho việc xây dựng ứng dụng cho người Việt sau này
Với đặc thù của ngôn ngữ Tiếng Việt, chính vì vậy luận văn không đi sâu vào đặc tả ngôn ngữ Tiếng Việt, mà chỉ nêu ra một số đặc điểm khác biệt
để thấy rằng các công cụ tìm kiếm xử lý tốt trên tiếng Latin (Anh, Pháp, Đức ), nhưng chưa chắc đã xử lý tốt Tiếng Việt Tiếng Việt với sự phức tạp vốn
có của nó, và có một số đặc điểm riêng như sau:
- Kí tự chữ cái trong bảng kí tự Việt: Người Việt sử dụng bộ chữ cái và chữ
số, kí tự có dấu Như vậy đây là một điểm khác biệt cho xử lý chữ viết, văn bản
- Từ thể hiện sự ghép của các kí tự chữ cái và kí tự có dấu và mũ dẫn tới độ phức tạp lại được thay đổi và có độ phức tạp khó Ngoài ra, còn có các quy định về văn phạm các từ đi với nhau, các vần đi với nhau, từ láy và các sắc thái riêng,
- Câu được thành lập theo ý nghĩa và các luật Các câu cũng có sự biến chuyển theo văn cảnh và ý nghĩa cụ thể
Với các đặc điểm trên, nếu các máy tìm kiếm không có công cụ hỗ trợ với đặc điểm này thì việc hỗ trợ tìm kiếm theo ngôn ngữ Tiếng Việt chắc chắn
sẽ đưa ra kết quả không hoàn toàn như mong muốn
1.2 Các cách tiếp cận giải quyết bài toán
1.2.1 Cách tiếp cận thông thường
Trang 19Với bài toán ―tự động sửa đổi và gợi ý truy vấn tìm kiếm‖, được thực hiện với thuật toán đối sánh xấp xỉ dựa trên thuật toán của Levenshtein với một số công việc chính cần phải thực hiện
1.2.1.1 Thu thập các từ và các chuỗi, tổ chức trong hệ thống
Trong quá trình làm luận văn em đã tiến hành thu thập và xây dựng ngân hàng các từ để tiến hành giai đọan thử nghiệm cho chức năng tìm từ và sửa
đổi từ sai
Tiến hành thu thập và tạo dựng thư viện các câu, nhằm mục đích thực nghiệm bài toán gợi ý truy vấn cho chuỗi truy vấn Hệ thống sẽ tiến hành đối sánh để tìm ra các chuỗi đối sánh sao cho phù hợp đối với chuỗi cung cấp
1.2.1.2 Thực hiện cài đặt thuật toán
Các từ và chuỗi được cung cấp, hệ thống sẽ tiến hành đối sánh với thư viện các từ và các câu dựa trên thuật toán đối sánh xấp xỉ với độ đo Levenshtein
Khi thực hiện thuật toán, hệ thống lần lượt đối sánh các từ, các chuỗi với câu truy vấn được cung cấp từ giao diện Hệ thống sẽ chỉ ra được khoảng cách giữa chuỗi truy vấn và dữ liệu hệ thống Với độ đo xấp xỉ thu được, hệ thống sẽ tiến hành xử lý và lấy ra các chuỗi có độ đo nhỏ nhất làm các kết quả cho việc gợi ý Hệ thống lấy ra một kết quả với độ đo nhỏ nhất làm kết quả cho việc sửa đổi từ
1.2.1.3 Tổ chức thực nghiệm bài toán
Qua quá trình thực nghiệm sẽ có nhận xét thêm về độ đo Độ đo chỉ ra số bước ngắn nhất để chuyển từ chuỗi T sang chuỗi P Với vấn đề bài toán nếu độ
đo là 0 thì hai chuỗi trùng nhau Điều này dẫn đến kết quả tốt cho bài toán sửa đổi từ và xác minh từ có phải sửa đổi hay không (từ cần phải sửa là độ đo khác
0, một từ làm từ điển để đối sánh) Thêm vào đó nếu khoảng cách khác không, như vậy sẽ có nhiều kết quả có cùng độ đo, số lượng kết quả phụ thuộc vào các
dữ liệu thu thập được Việc lựa chọn là khó khăn khi có các kết quả tương tự
Trang 20nhau cùng độ đo, trong khi đó hệ thống chỉ cần một vài chuỗi gợi ý tốt Với việc lựa chọn một từ để sửa đổi thì việc lấy ra từ nào đó càng khó khăn hơn Như vậy, cách tiếp cận này chưa thỏa đáng và cần phải tiến hành các cách tiếp cận khác nhau
1.2.2 Cách tiếp cận theo thuật toán chuỗi con chung có độ dài lớn nhất
Dựa trên các thuật toán về chuỗi con chung, để tiến hành xem xét yếu tố với các chuỗi nào có bắt đầu từ chuỗi con chung dài nhất được tìm thấy trong hệ
thống, sẽ được thêm vào làm ứng viên cho việc sửa đổi hoặc gợi ý
Chuỗi con chung lớn nhất là chuỗi mà nó xuất hiện nhiều nhất có thể trong hai chuỗi T và P [2] Dẫn tới một số nhận xét sau đây:
- Nếu chuỗi con chung S trùng với chuỗi T và chuỗi P, chứng tỏ T và P là trùng nhau
- Nếu chuỗi con chung S không trùng với T và P, thì S có độ dài nhỏ hơn T và độ dài đương nhiên nhỏ hơn P Vị trí của S có thể nằm ở đầu, nằm ở giữa hoặc ở cuối, tùy thuộc vào giá trị của P và T Như vậy trong trường hợp này cũng dẫn ra trường hợp tương đương ở trên
Kết quả nếu cho T là chuỗi truy vấn và tìm trong hệ thống các từ và các chuỗi, với T có thể lựa chọn ra được nhiều chuỗi P tương ứng và làm ứng viên sáng giá Như vậy, việc lựa chọn lúc này sẽ khó khăn, vì chưa có thêm thông tin đánh giá các chuỗi này để đưa vào lựa chọn các chuỗi phù hợp cho chức năng gợi ý, đặc biệt là cho chức năng sửa đổi Đương nhiên với trường hợp tốt nhất là mỗi T chỉ chọn được một P khác nhau phù hợp thì kết quả sẽ chính xác hơn rất nhiều
Trong nội dung luận văn, sẽ cung cấp thêm hướng tiếp cận đó là các chuỗi văn bản có tính chất tương tự nhau (giống nhau được lượng hóa)
Trang 211.2.3 Cách cách tiếp cận theo các thuật toán Similar Text
Các thuật toán cung cấp cho thao tác tính toán độ tương đồng chuỗi T
và chuỗi P Thuật toán chỉ ra được hai chuỗi bất kỳ có độ tương đồng k (là một số dương), k có giá trị nằm trong đoạn [1 100], k thể hiện số phần trăm tương đồng Nếu k càng tăng thì chuỗi T và chuỗi P được cho là càng tương đồng Nếu k = 100 thì T và P là trùng khớp nhau Nếu k = 0 thì hai chuỗi T và
P không tương đồng Hệ thống có thể dựa vào thuật toán này để đưa ra đánh giá cho các chuỗi trong dữ liệu, để lựa chọn chuỗi ứng viên cho các chức năng sửa đổi và gợi ý truy vấn phục vụ bài toán [16] Tuy nhiên, hệ thống sẽ gặp phải một vài vấn đề với cách tiếp cận này Thư viện các chuỗi xây dựng được cần phải có sự sàng lọc kỹ Các chuỗi tham gia đối sánh phải được chọn lọc không thể lựa chọn toàn bộ các chuỗi tham gia Nếu việc chọn toàn bộ dữ liệu tham gia sẽ dẫn tới việc tìm kiếm trên không gian lớn, và hiệu quả tìm kiếm trên hệ thống sẽ giảm Kế đến là việc phải chỉ ra chuỗi cho việc gợi ý cũng là vấn đề cần tính tới Việc chỉ ra một chuỗi để sửa đổi lại gặp khó khăn khi cần phải quyết định giữa hai chuỗi có độ tương đồng là như nhau Trong một số trường hợp không nhất thiết độ tương đồng cao đã đưa ra được kết quả chính xác Vì vậy, luận văn này chủ động nghiên cứu phương pháp đối sánh chuỗi xấp xỉ làm trung tâm, và kết hợp với các thuật toán thu gọn không gian với phương pháp chỉ ra văn bản tương đồng để có sự lựa chọn tốt nhất cho các chức năng mà hệ thống cần phải đáp ứng
1.3 Cách tiếp cận đối sánh chuỗi xấp xỉ
1.3.1 Bài toán đối sánh chuỗi xấp xỉ
Đối sánh (so sánh) chuỗi được chia thành hai loại hình đối sánh khác nhau đó là đối sánh chính xác và đối sánh xấp xỉ Các giải thuật về đối sánh chính xác thực hiện nhiệm vụ tìm kiếm chính xác của từ khóa k trong văn bản
T và trả về vị trí của k trong T Trong khuôn khổ luận văn này, em đề cập tới
Trang 22phương pháp đối sánh xấp xỉ sử dụng thuật toán của Levenshtein Khái niệm xấp xỉ được thể hiện gần đúng, gần chính xác [4]
Bài toán đối sánh chuỗi xấp xỉ có nhiều cách phát biểu Sau đây là một cách phát biểu: Tìm sự xuất hiện chuỗi T hoặc chuỗi T‘ là chuỗi con của T, xuất hiện trong chuỗi P, sao cho khoảng cách (sự sai khác) của T‘ và T là nhỏ nhất Chuỗi T được coi là xấp xỉ với T‘, thể hiện T‘ gần đúng với T và chỉ sai khác một số kí tự Ví dụ: Cho chuỗi T =‖xap xi‖ với các chuỗi T‘ xấp xỉ bao gồm {―ap xi‖,‖Xap x‖, ―xbp xi‖, ‗dap xi‘, } [1]
Khoảng cách nhỏ nhất giữa T‘ và T là số thao tác nhỏ nhất để chuyển chuỗi T‘ thành chuỗi T Có nhiều thuật toán xác định khoảng cách của T và T‘ Trong luận văn này, em giới thiệu một số giải thuật xác định khoảng cách như Hamming, Levenshtein Episde, Longest Command Sequense
Nhìn chung các giải thuật đều dựa trên việc xác định khoảng cách giữa T và T‘ Để chuyển T‘ thành T thì cần phải thực hiện các thao tác
cơ bản sau đây:
- Thao tác chèn thêm kí tự: ―Xap x‖ thành ―Xap xi‖ cần thêm kí tự ‗i‘
- Thao tác xóa kí tự: ―Xap xii‖ chuyển thành ―Xap xi‖ cần xóa kí tự ‗i‘
- Thao tác thay thế kí tự: Ví dụ ―Xbp xi‖ thành ―Xap xi‖ cần phải thay thế ‗b‘ thành ‗a‘
- Thao tác hoán chuyển kí tự: Ví dụ ―iap xx‖ thành ―xap xi‖ cần phải đổi ‗i‘ cho ‗x‘ (kí tự x cuối)
Khoảng cách d của T và T‘ thể hiện số bước chuyển nhỏ nhất để T‘ thành T, d là tổng số bước chuyển (Chèn, Xóa, Thay thế, hoán đổi [3]
Nếu cho chuỗi T và T‘ thì hoàn toàn có thể tính được khoảng cách d của hai chuỗi Ví dụ nếu cho T = ―Chao cac ban‖ và T‘ = ―Chao can bai‖ có d(T, T‘) = 2; như vậy độ xấp xỉ của T và T‘ lúc này là 2 Trong trường hợp khác T = ―Chao cac ban‖ và T‘ = ―Chao cac bai‖ lúc này d(T, T‘) = 1 Có thể
Trang 23nói độ xấp xỉ trong trường hợp thứ hai nhỏ hơn trường hợp thứ nhất Độ xấp
xỉ d càng nhỏ thì T‘ gần T hơn
Trong phương pháp đối sánh chuỗi xấp xỉ, các thuật toán được phân về hai loại theo trình tự xử lý chuỗi dữ liệu T Nhóm thuật toán On-line và nhóm thuật toán Off-line [2]:
- Nhóm các thuật toán On-line: Nhóm này thực hiện tiền xử lý chuỗi T trước sau đó mới sử dụng thuật toán đối sánh xấp xỉ Việc tiền xử lý dữ liệu đầu vào làm cho hiệu quả của thuật toán đối sánh trở nên hiệu quả rất nhiều Hầu hết thuật toán sẽ xây dựng lại chuỗi T thành các chuỗi dạng tiền tố hoặc hậu tố, dựa vào cấu trúc cây hậu tố, đánh giá các hậu tố tốt (phù hợp nhất) Dựa vào việc đưa
ra các hậu tố tốt của T làm cho việc xử lý tìm kiếm sẽ hiệu quả hơn, giải thuật tìm kiếm sẽ đơn giản hơn, làm đẩy nhanh tốc độ tìm kiếm Các giải thuật đưa ra hậu tố phần nào quyết định tới chất lượng và hiệu quả của giải thuật tìm kiếm Các giải thuật ở trong nhóm này có thể kể đến Boyer-More[15], Ukkonen- Wood [15]
- Nhóm các thuật toán Off-line: Nhóm này khác biệt hoàn toàn với nhóm On-line Các thuật toán sẽ được thực hiện giải thuật đối sánh xấp xỉ mà không xử lý chuỗi dữ liệu T
1.3.2 Ứng dụng của đối sánh chuỗi xấp xỉ
Sánh chuỗi xấp xỉ được ứng dụng trong nhiều bài toán khoa học cũng như thực tế Trong khoa học, bài toán xấp xỉ có thể tìm kiếm ra các chuỗi tương tự chuỗi mẫu T trong văn bản P [5]
- Ứng dụng cụ thể như: Có thể tìm ra các virus trong file được cho là có virus dựa trên mẫu virus cụ thể đưa vào
- Ứng dụng trong Y học: Tìm kiếm các đoạn ADN trong chuỗi Protein Cho phép tìm ra các GEN gây bệnh hoặc GEN cho là tốt cho giới Y học
Trang 24- Ứng dụng trong tìm kiếm văn bản: Tìm ra các văn bản có xuất hiện các văn bản tương tự văn bản cho trong máy tìm kiếm
- Ứng dụng trong kiểm tra chính tả và sửa lỗi chính tả trong văn bản
- Ứng dụng trong nhận dạng mẫu trong dữ liệu dạng đa phương tiện như Music, Picture, Videos
Trong thực tiễn, các máy tìm kiếm trên nền Internet dựa vào các dữ liệu đầu vào để tìm kiếm các dữ liệu có trong hệ thống Việc cung cấp dữ liệu đầu vào cho hệ thống tìm kiếm phụ thuộc vào trình độ của người cung cấp Nếu
dữ liệu được cung cấp hỗ trợ tốt cho máy tìm kiếm và dữ liệu trả về đúng với mong đợi của người dùng thì việc tìm kiếm là thành công Có rất nhiều trường hợp người cung cấp chỉ đưa ra được chuỗi tìm kiếm gần sát với yêu cầu thật sự, và không thể cung cấp chính xác thông tin tìm kiếm làm cho công việc tìm kiếm sẽ khó cung cấp dữ liệu theo mong muốn của người dùng Nội dung của luận văn với mong muốn xây dựng giải pháp hỗ trợ tốt hơn cho người dùng khi cung cấp thông tin tìm kiếm Bằng một số kỹ thuật hỗ trợ người dùng, sửa các từ sai trong chuỗi tìm kiếm, gợi ý các chuỗi tìm kiếm gần sát với chuỗi tìm kiếm của người dùng, để người dùng có thể lựa chọn các chuỗi tìm kiếm với mong muốn của mình
- Về kết quả ứng dụng thực tế: Dựa trên các vấn đề lý thuyết, em xây dựng được hai ứng dụng (hệ thống sửa lỗi chính tả, hệ thống gợi ý truy vấn tìm kiếm) áp dụng thuật toán đối sánh chuỗi xấp xỉ Hệ thống này, em đã trực
Trang 25tiếp xây dựng và tiến hành trải nghiệm thực tế với ngôn ngữ Tiếng Việt Dựa trên từ điển Tiếng Việt cho phép sửa từ nếu từ nào đó gõ sai Dựa trên tập các câu hệ thống thu thập được, cho phép gợi ý dựa vào các câu trong hệ thống Các câu được lựa chọn để gợi ý là các câu có độ xấp xỉ với câu được cung cấp bởi giao diện người dùng
Trang 26CHƯƠNG 2: ĐỐI SÁNH CHUỖI XẤP XỈ CHO VẤN ĐỀ TỰ ĐỘNG
SỬA ĐỔI VÀ GỢI Ý TRUY VẤN 2.1 Các phương pháp đối sánh chuỗi xấp xỉ
Trong chương này sẽ giới thiệu về một số phương pháp liên quan đến đối sánh chuỗi xấp xỉ dựa trên độ đo sai khác về các kí tự Các phương pháp đều sử dụng một trong các kỹ thuật xử lý khi gặp trường hợp kí tự đối sánh không trùng nhau Phương pháp Hamminng sử dụng cho hai chuỗi có độ dài phải bằng nhau và chỉ dùng thao tác thay thế (replace) Theo phương pháp Episode Distance chỉ sử dụng một thao tác duy nhất đó là chèn thêm kí tự để chuyển chuỗi T thành chuỗi P Phương pháp theo Longest Common Sequence chỉ ra chuỗi con dài nhất có thể của chuỗi T nằm trong chuỗi P
2.1.1 Khoảng các Hamming
Khoảng cách Hamming được tính theo phương pháp đối sánh hai chuỗi
T và T‘ với độ dài bằng nhau và trả về số kí tự sai khác giữa hai chuỗi Với kỹ thuật sánh chuỗi theo thứ tự từng kí tự để chỉ ra sự khác biệt Thuật toán chỉ
áp dụng một thao tác duy nhất là thay thế (replace) kí tự này bằng kí tự khác
Trang 27* Thuật toán Hamming
Hình 2.1: Thuật toán Hamming
Giải thuật thực hiện so sánh kí tự vị trí i của chuỗi T là ch1 = T[i] và kí
tự ch2 ở vị trí i của chuỗi T‘ là ch2=T‘[i] Sau đó kiểm tra nếu ch1 khác với ch2 thì khoảng cách d được tăng lên 1 Thực hiện từ kí tự đầu đến kí tự cuối thu được d cuối cùng là giá trị của khoảng cách Hamming Thuật toán có độ phức tạp tính toán về thời gian là T(n);
Ứng dụng trong mạng máy tính, thuật toán Hamming được sử dụng trong kiểm tra lỗi và phát hiện lỗi trên đường truyền chuỗi Bit Ngoài ra, còn
cho phép ứng dụng trong bảo mật thông tin, nguyên lý mã hóa, nguyên lý
thông tin (Information Theory)
i<Len
T[i] !=T‘[i]
D=D+1 i=i+1
Xuất D
Trang 28Thuật toán được thực hiện theo trình tự các bước như sau: Thực hiện duyệt từ phần tử của chuỗi T và từng phần tử của chuỗi P Mỗi bước duyệt thực hiện đối sánh phần tử T[i] so với phần tử (kí tự) P[i], do T và P có độ dài bằng nhau
Nếu T[i] != P[i] thì khoảng cách Hamming sẽ tăng lên một đơn vị Ngược lại khoảng cách sẽ được giữ nguyên cho bước trước đó, với khởi đầu
độ đo là 0 Thực hiện lặp lại cho các kí tự còn lại Việc thực hiện dừng và trả
về kết quả sau khi thực hiện đối sánh với kí tự cuối cùng Nếu khoảng cách bằng 0 thì hai chuỗi này là trùng nhau, nếu khoảng cách có giá trị bằng độ dài của chuỗi đối sánh thì có thể thấy hai chuỗi là khác nhau
2.1.2 Khoảng cách Episode
Giải thuật thực hiện một thao tác duy nhất thêm kí tự để thực hiện đối sánh Giải thuật sẽ thêm 1 kí tự vào trong P để đối sánh với T Như vậy Distance(P,T) = 1 Với giải thuật này chỉ thực hiện khi chuỗi T được thêm một kí tự vào chuỗi của mình để chuyển T thành P Độ dài của hai chuỗi chỉ khác nhau một kí tự [3]
2.1.3 Khoảng cách Longest Common Sequence (LSC)
Thực hiện tìm kiếm chuỗi con lớn nhất của P nằm trong T Với giải thuật thực hiện đúng 1 thao tác là thay thế hoặc thêm mới kí tự [7]
Trang 29* Thuật toán LSC
function LCSubstr(T[1 m], P[1 n]) // Khởi tạo
L := array(1 m, 1 n)
z := 0; ret := {}
for i := 1 m for j := 1 n Begin
if T[i] == P[j]
if( i == 1 or j == 1) L[i,j] := 1 else L[i,j] := L[i-1,j-1] + 1
if L[i,j] > z
z := L[i,j] ret := {T[i-z+1 i]}
else
if L[i,j] == z ret = ret{s[i-z+1 i]
else L[i,j] := 0 End
return ret
Thuật toán thực hiện với mảng hai chiều L[n,m], n là độ dài của P và m
là độ dài của T Khởi động thuật toán được gán với các dữ liệu mặc định
- Mảng L chứa các chỉ số cần thu thập của T và P Chỉ ra các vị trí có kí
tự sao cho độ dài của chuỗi con chung là lớn nhất
- Z là số được chỉ ra thể hiện kích thước của chuỗi con được tăng lên khi tìm bổ sung được một kí tự
Trang 30- Ret: thể hiện chuỗi con chung lớn nhất được trả về trong quá trình thực hiện thuật toán
Thuật toán thực hiện lặp qua n*m bước, n và m lần lượt thể hiện độ dài của chuỗi T và chuỗi P Tại mỗi bước lặp sẽ xét các trường hợp cụ thể:
- Nếu T[i]= P[j]: thực hiện cập nhật L[i,j]= L[i-1, j-1] + 1; với trường hợp đầu j=1 hoặc i=1 sẽ khởi gán L[i,j] = 1
- Nếu L[i,j]>z thực hiện cập nhật lại Z = L[i,j] và cập nhật ret := z+1 i]}
{T[i Nếu L[I,j]=z thực hiện: tổng hợp ret = ret{T[i{T[i z+1 i]
2.2 Phương pháp đối sánh theo độ đo Levenshtein (string edit distance)
2.2.1 Độ đo Levenshtein
Độ đo Levenshtein (Levenshtein Distance): số thao tác nhỏ nhất để chuyển chuỗi T thành chuỗi P Các thao tác trong độ đo bao gồm thêm kí tự (insert), xóa kí tự (delete), thay thế kí tự (replace) Độ đo Levenshtein là một cách tiếp cận đơn giản nhất để đưa ra được các thao tác chuyển chuỗi T thành chuỗi P [8]
- Thao tác insert: được thực hiện khi T và P có độ dài khác nhau và kí
tự được thêm vào để đảm bảo T chuyển thành P
Ví dụ: T= ―hung‖ chuyển thành P= ―chung‖ Cần phải thêm kí tự ‗c‘ vào vị trí đầu của T
- Thao tác xóa: được thực hiện khi T và P có độ dài khác nhau
Ví dụ: Chuyển T = ―hóa‖ thành P=―ha‖ thực hiện xóa kí tự ‗ó‘ ở T
- Thao tác thay thế (replace): được thực hiện chuyển kí tự vị trí i trong
T là T[i] thành kí tự ở vị trí i trong P là P[i]
Ví dụ: Chuyển T=‖Huyền‖ thành P= ―Huyến‘ Cần phải thay thế kí tự
trong T là ‗ề‘ thành kí tự ‗ế‘ trong P
Trang 31Độ đo Levenshtein cho biết tổng số các thao tác thực hiện để chuyển chuỗi T thành chuỗi P Trong một số trường hợp được áp dụng cả ba thao tác hoặc áp dụng một hoặc hai thao tác đơn lẻ
Bảng 2.2: Độ đo Levenshtein giữa hai chuỗi T và P
TT Chuỗi T Chuỗi P Levenshtein Distanse
2.2.2 Giải thuật tính độ đo Levenshtein
Giải thuật được Levenshtein đưa ra năm 1965 Cho phép đưa ra các bước nhỏ nhất để chuyển chuỗi T thành chuỗi P [3]
* Nguyên lý giải thuật:
Giải thuật sẽ thực hiện so sánh hai chuỗi dựa trên một ma trận khoảng cách hai chiều giữa các kí tự trong chuỗi T và chuỗi P Giải thuật sẽ trả về số thao tác (loại bỏ, thêm mới, thay thế) các kí tự để chuyển T thành P Số thao tác để chuyển T thành P gọi là độ đo Lenvenshtein
* Giải thuật độ đo Lenvenshtein:
Trang 32Input:
- String T ;// Chuỗi nguồn
- String P; // Chuỗi đích Output:
Lenveshtein_Distance Function Lenveshtein_Distance{
int LevenshteinDistance(char T[1 n], char P[1 m]) // d là bảng với n+1 hàng và m+1 cột
declare int D[0 n, 0 m]
for i from 0 to n D[i, 0]:= i;
for j from 0 to m D[0, j]:= j ; for i from 1 to n
for j from 1 to m {
if T[i] = P[j] then D[i,j] = D[i,j-1];
Else{
Del = D[i-1, j] + 1; // trường hợp xoá Insert = D[i, j-1] + 1; // trường hợp thêm Replace = D[i-1, j-1] +1; // trường hợp thay thế
D[i, j] = min (Del, Insert, Replace);
Trang 33Giải thuật được thực hiện bằng cách đối sánh từng kí tự của T[i] trong chuỗi T so sánh với kí tự P[j] trong chuỗi P Mỗi khi thấy sự khác biệt T[i]!= P[j] sẽ lấy nhỏ nhất giữa các phần tử D[i-1, j-1], D[i-1,j], D[i,j-1] rồi cộng thêm 1 Xuyên suốt giải thuật dựa trên ma trận khoảng cách hai chiều D[n,m]
Mỗi một thao tác được thực hiện đều có tác động của một phần tử trong mảng Giải thuật thực hiện phần tử thứ D[i,j] tức là so sánh phần tử thứ T[i] với kí tự thứ P[j] cần phải sử dụng các phần tử trước đó D[i-1, j-1], D[i-1,j], D[i,j-1] là độ dài khoảng cách được tính toán từ trước đó [6]
2.2.3 Mô tả giải thuật
Giải thuật được thực hiện trên các thao tác chính: thêm kí tự (insert), xóa kí tự (delete), thay thế (replace).Với thuật toán Levenshtein được thực hiện gặp phải các trường hợp về xử lý độ dài khi muốn chuyển T thành P
- Trường hợp 1: T có độ dài lớn hơn độ dài của P Với trường hợp này cần phải thực hiện xóa bớt một số kí tự của T sau đó thực hiện chuyển T thành P
- Trường hợp 2: T có độ dài nhỏ hơn độ dài của P Với trường hợp này cần phải thực hiện thêm một số kí tự cho T để có độ dài T bằng P Sau đó thực hiện chuyển T thành P
- Trường hợp 3: T có độ dài bằng độ dài của P Để thực hiện thao tác chuyển T thành P cần phải thực hiện thao tác thay thế các kí tự khác nhau giữa T và P
* Thao tác chính:
- Thao tác xóa (delete): được thực hiện khi các kí tự của T nhiều hơn kí
tự của P Khi đó T cần phải xóa đi số kí tự cần thiết để T thành P
Ví dụ: Với chuỗi ―Huyen‖ muốn chuyển thành ―Huy‖ Phải thực hiện thao tác xóa bỏ hai kí tự cuối ‗e‘ và ‗n‘ để ―Huyen‖ thành ―Huy‖
Trang 34- Thao tác chèn (insert): Thao tác chèn được thực hiện khi số kí tự của
T là nhỏ hơn số kí tự của P Khi đó cần phải chèn thêm các kí tự phù hợp để T
chuyền thành P
Ví dụ: Với chuỗi ―ant‖ chuyển thành chuỗi ―aunt‖ Ta sẽ thấy được cần phải thêm kí tự ‗u‘ vào vị trí 2 của chuỗi ―ant‖ để chuyển thành ―aunt‖
- Thao tác thay thế (replace): Thao tác này được thực hiện khi vị trí của
kí tự thứ i trong T khác với kí tự thứ i trong P Lúc này thực hiện thay thế kí
tự i trong P cho ký tứ i trong T
Ví dụ: Với chuỗi ―Khanh‖ chuyển thành chuỗi ―Tranh‖ Cần phải thực hiện thao tác thay thế hai kí tự đầu ‗K‘ và ‗h‘ bằng kí tự ‗T‘ và ‗r‘ để chuyển
―Khanh‖ thành ―Tranh‖
2.2.4 Trình tự các bước thông qua ví dụ cụ thể
Ví dụ: để chuyển chuỗi T = "Thuyên" thành chuỗi P = "Thiên";
Khởi tạo dữ liệu: m = Lenght (P)= 5; n=Lenght(T) = 6;
ma trận D[6,5] = [0];// mọi phần tử được khởi tạo bằng 0;
Thuật toán sẽ thực hiện lặp với độ phức tạp O(n*m), i lặp hàng cho i=1 n; và j lặp cho cột j=1 m
Bước 1: Khởi tạo giá trị bảng ma trận khoảng cách
Thiết lập các giá trị thứ tự cho hàng và cột
- Thiết lập giá trị đầu D[0,0]=0;
- Hàng 1: D[0,j]= j; với j=1 5
- Cột 1: D[i,0] = i; vớ i=1 6;
Trang 35Bước 2: Tiến hành sánh khớp với j=1 và lặp cho các i= 1 6
- Với i=1 và j=1 có T[1]=P[1]= T; như vậy: D[i,j]=D[i-1,j-1]= D[0,0] = 0;
- Với i=1 và j= 2; có T[i]=T[2] =h và P[j] = P[1] = T khi đó T[i] != P[j]
Nên:
Del = D[i-1,j]+1=D[0,2]+1=2+1=3;
Insert = D[i,j-1]+1= D[1,1]+1=0+1=1;
Replace = D[i-1,j-1]+1=D[1,0]+1=0+1=1 D[i,j] = D[2,1] = min(D[1,0],D[1,1],D[2,0]) = min( 3,1,1)=1;
Trang 36Bước 3: Tiến hành sánh khớp với i=2 và lặp cho các j= 1 5
Trang 37Bước 5: Tiến hành sánh khớp với i= 4 và lặp cho các j= 1 5
Trang 38Bước 7: Tiến hành sánh khớp với i=6 và lặp cho các j= 1 5
Sau khi thực hiện các bước thuật toán sẽ nhận giá trị là giá trị của phần
tử mảng có vị trí cuối cùng với kết quả D[6,5] = 2 Giá trị này chính là khoảng các Levenshtein
2.3 Tự động sửa đổi và gợi ý truy vấn dựa trên độ đo Levenshtein
Trang 39Văn bản được đánh chỉ mục: Các văn bản có trong hệ thống được đánh chỉ mục sao cho nâng cao chất lượng truy vấn Nhiều kỹ thuật đánh chỉ mục khác nhau phục vụ cho bài toán truy vấn tìm kiếm khác nhau Nhìn chung, văn bản được đánh chỉ mục được thực hiện theo cách đưa ra bảng mô tả các
từ khóa có trong văn bản Thay vì việc tìm kiếm trên nội dung của văn bản ta tiến hành tìm kiếm trên chỉ mục Như vậy việc phải duyệt qua nội dung văn bản sẽ được giảm bớt dẫn đến giảm chi phí tìm kiếm Với các từ khóa mới thì
hệ thống thực hiện tìm kiếm và đánh chỉ mục cho từ khóa mới, lần kế tiếp các văn bản sẽ được tìm kiếm bằng cách tìm kiếm trên chỉ mục Nhưng với dữ liệu khởi tạo đầu tiên thì việc đánh chỉ mục mới cũng tốn chi phí Trong luận văn này không đi sâu vào các kỹ thuật đánh chỉ mục, mà chỉ cung cấp một số
kỹ thuật đánh chỉ mục trong truy vấn tìm kiếm (tìm kiếm văn bản)
2.3.1.1 Kỹ thuật đánh chỉ mục xuôi
Kỹ thuật sử dụng các từ được thống kê trên một bảng chỉ mục Cột đầu tiên thể hiện các từ cần đánh chỉ mục, cột tiếp theo thể hiện tài liệu mà từ đó xuất hiện Phương pháp này thể hiện rất hiệu quả với máy tìm kiếm Cho phép tìm kiếm dựa trên từ khóa và đưa ra được các văn bản có nội dung tìm kiếm là các từ khóa Chỉ cần đối sánh các từ hoặc chuỗi chỉ mục mà không cần phải tìm kiếm trên toàn bộ văn bản nữa Việc đánh chỉ mục đã thay thế thao tác tìm kiếm việc tìm kiếm lúc này là tìm kiếm trên chỉ mục [10][11]
Bảng 2.3: Kỹ thuật đánh chỉ mục xuôi
Đánh chỉ số xuôi
Thuyền D1, D3, D4, D5, D7 Biển D2, D3, D4