1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Các thuật toán đối sánh mẫu và ứng dụng tìm kiếm trên website

78 637 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 78
Dung lượng 0,95 MB

Nội dung

BỘ GIÁO DỤC ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI PHẠM CÔNG HỒNG CÁC THUẬT TOÁN ĐỐI SÁNH MẪU ỨNG DỤNG TÌM KIẾM TRÊN WEBSITE LUẬN VĂN THẠC SĨ KỸ THUẬT TOÁN TIN Hà Nội – Năm 2014 BỘ GIÁO DỤC ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI PHẠM CÔNG HỒNG CÁC THUẬT TOÁN ĐỐI SÁNH MẪU ỨNG DỤNG TÌM KIẾM TRÊN WEBSITE Chuyên ngành: TOÁN TIN Mã đề tài: TOAN-VINH06 LUẬN VĂN THẠC SĨ KỸ THUẬT TOÁN TIN NGƯỜI HƯỚNG DẪN KHOA HỌC TIẾN SĨ: NGUYỄN THỊ THANH HUYỀN Hà Nội – Năm 2014 LỜI CẢM ƠN Trước hết em xin gửi lời cảm ơn chân thành đến toàn thể thầy cô giáo Viện Toán ứng dụng Tin học tận tình dạy dỗ chúng em suốt trình học tập Viện Đặc biệt em xin bày tỏ lòng biết ơn sâu sắc tới cô giáo Tiến sĩ Nguyễn Thị Thanh Huyền, Viện Toán ứng dụng Tin học, trường Đại học Bách Khoa Hà Nội quan tâm hướng dẫn đưa gợi ý, góp ý, chỉnh sửa vô quý báu cho em trình làm luận văn tốt nghiệp Cuối xin chân thành cảm ơn gia đình, người bạn giúp đỡ, chia sẻ với em suốt trình học tập làm luận văn LỜI CAM ĐOAN Tôi xin cam đoan kết đạt luận văn sản phẩm cá nhân thực nghiêm túc hướng dẫn Tiến sĩ Nguyễn Thị Thanh Huyền Trong toàn nội dung luận văn, điều trình bày cá nhân tổng hợp từ nhiều nguồn tài liệu Tất tài liệu tham khảo có xuất xứ rõ ràng trích dẫn hợp pháp Tôi xin hoàn toàn chịu trách nhiệm chịu hình thức kỷ luật theo qui định cho lời cam đoan Hà Nội, ngày 12 tháng 03 năm 2014 Phạm Công Hồng DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT Các ký hiệu ε Xâu rỗng wi Kí tự thứ i xâu w Pi Kí tự thứ i xâu P Sj Kí tự thứ j xâu S Ci,j Là độ dài dãy lớn hai dãy P1 i S1 j Các chữ viết tắt CSDL Cơ sở liệu DFA Otomat đơn định hữu hạn NFA Otomat đa định hữu hạn KMP Knuth–Morris–Pratt BM Boyer–Moore DANH MỤC CÁC HÌNH VẼ Hình 2.1 Ý nghĩa mảng Next………………………… ………….… 15 Hình 2.2 Ý nghĩa mảng next vị trí m + 1…………………… … 16 Hình 3.1 Sự thay đổi trạng thái mờ gặp kí tự b 34 Hình 4.1 Mô hình lập trình ứng dụng 57 MỤC LỤC MỞ ĐẦU 1 Lý chọn đề tài Mục tiêu nội dung Phạm vi nghiên cứu Chương 1: TỔNG QUAN VỀ VẤN ĐỀ ĐỐI SÁNH MẪU 1.1 Đối sánh mẫu 1.2 Bài toán đối sánh mẫu tình hình nghiên cứu 1.3 Các dạng toán đối sánh mẫu 1.3.1 So đơn mẫu 1.3.2 So đa mẫu 1.3.3 Đối sánh mẫu mở rộng 1.4 Đối sánh mẫu xấp xỉ 11 1.4.1 Phát biểu toán 11 1.4.2 Độ tương tự hai xâu 12 1.4.3 Các tiếp cận giải toán đối sánh mẫu xấp xỉ 13 Chương CÁC THUẬT TOÁN ĐỐI SÁNH MẪU CHÍNH XÁC 15 2.1 Thuật toán KMP ( Knuth- Morris- Pratt) 15 2.2 Thuật toán BM ( Boyer- Moore) 19 2.3 Thuật toán KMP mờ 23 2.3.1 Khái niệm Độ mờ 23 2.3.2 Otomat mờ so mẫu 24 2.3.3 Thuật toán 25 2.4 Kết luận chương 28 Chương ĐỐI SÁNH MẪU XẤP XỈ 29 3.1 Vấn đề đối sánh mẫu xấp xỉ 29 3.2 Độ tương tự dựa độ dài khúc chung hai xâu 30 3.2.1 Phát biểu toán 30 3.2.2 Otomat đối sánh mẫu: mô hình sở toán học 31 3.2.3 Thuật toán 35 3.2.4 Một phương pháp tính hàm chuyển trạng thái TFuzz 36 3.3.5 Đánh giá thuật toán 39 3.3 Độ tương tự dựa dãy chung dài 40 3.3.1 Bài toán tìm dãy chung dài 40 3.3.2 Thuật toán quy hoạch động 40 3.3.3 Thuật toán quy hoạch động tìm dãy chung dài 40 3.4 Kết luận chương 44 Chương SỬ DỤNG THUẬT TOÁN ĐỐI SÁNH MẪU TRONG TÌM KIẾM TRÊN WEBSITE 45 4.1 Đặt vấn đề 45 4.2 Cài đặt chương trình 46 4.2.1 Thiết kế DataBase 46 4.2.2 Nền tảng ứng dụng 55 4.3 Cấu trúc hệ thống 56 4.3.1 Lớp Domain 56 4.3.2 Lớp Framework 57 4.3.3 Lớp Website 57 4.3.4 Mô tả cách thực cài đặt kịch chương trình: 58 4.3.5 Kịch tìm kiếm: 63 4.3.6 Kết tìm kiếm website 64 4.4 Kết luật chương 68 KẾT LUẬN 69 TÀI LIỆU THAM KHẢO 70 MỞ ĐẦU Lý chọn đề tài Máy tính ngày sử dụng hầu hết lĩnh vực góp phần quan trọng vào việc thúc đẩy phát triển kinh tế, xã hội, khoa học kỹ thuật, Máy tính đời nhằm phục vụ cho mục đích định người Với tất xử lý máy tính để lấy thông tin hữu ích trình xử lí vấn đề đặc biệt quan trọng tìm kiếm thông tin với khối lượng lớn, độ xác cao, thời gian nhanh Ngày số lượng thông tin kích thước hệ thống tin ngày lớn, nhu cầu tìm kiếm người dùng đòi hỏi ngày cao phức tạp Người dùng luôn mong muốn có kết với thời gian nhanh nhất, đáp ứng linh hoạt, đa dạng yêu cầu tìm kiếm, xác mà cho ta kết gần đúng, phù hợp với từ khóa đưa vào Để nâng cao tốc độ tìm kiếm đáp ứng yêu cầu người dùng Vậy việc nghiên cứu tìm hiểu thuật toán đối sánh mẫu để ứng dụng công việc cần thiết Để tìm kiếm thông tin cần phải xem thông tin lưu trữ dạng liệu nào? Dữ liệu lưu trữ nhiều dạng, song phổ biến dạng text nên chọn đề tài cụ thể Các thuật toán đối sánh mẫu ứng dụng tìm kiếm website Mục tiêu nội dung Luận văn tập trung nghiên cứu thuật toán đối sánh mẫu ứng dụng tìm kiếm website - Tìm hiểu vấn đề tìm kiếm thông tin đối sánh mẫu - Nghiên cứu số thuật toán đối sánh mẫu xác xấp xỉ - Cài đặt số thuật toán đối sánh mẫu ứng dụng xây dựng tính tìm kiếm website Phạm vi nghiên cứu Luận văn tập trung nghiên cứu kiến thức có liên quan, sở lý thuyết: Tổng quan vấn đề tìm kiếm, thuật toán tìm kiếm mẫu theo cách tiếp cận quy hoạch động otomat mờ; sử dụng ngôn ngữ cài đặt thuật toán ứng dụng tìm kiếm website http://truongthcsdaiminh.edu.vn/ Nội dung luận văn gồm chương, phần kết luận, tài liệu tham khảo phụ lục: Chương 1: Tổng quan vấn đề đối sánh mẫu Giới thiệu chung toán đối sánh mẫu (hay đối sánh mẫu), tập trung vào trường hợp mẫu xâu nhắc lại số khái niệm sở có liên quan đến luận văn Chương 2: Các thuật toán đối sánh mẫu xác Chương trình bày nội dung số thuật toán kinh điển đối sánh mẫu xác hai thuật KMP BM Chương Thuật toán đối sánh mẫu xấp xỉ Chương trình bày kết luận văn đối sánh mẫu xấp xỉ ứng dụng thuật toán kinh điển thuật toán quy hoạch động để tìm dãy chung lớn hai xâu Chương 4: Ứng dụng thuật toán đối sánh mẫu để tìm kiếm website - Controllers: Controller thành phần dùng để quản lý tương tác người dùng, làm việc với model chọn view để hiển thị giao diện người dùng Trong ứng dụng MVC, view dùng để hiển thị thông tin, controller chịu trách nhiệm quản lý đáp trả nội dung người dùng nhập tương tác với người dùng Ví dụ, controller quản lý liệu người dùng gởi lên (query-string values) gởi giá trị đến model, model lấy liệu từ CSDL nhờ vào giá trị 4.3 Cấu trúc hệ thống 4.3.1 Lớp Domain Lớp định nghĩa Class information entiy entity framwork đối tượng sử dụng thao tác với tầng csdl, phương thức thao tác Interface đối tượng thực thao tác với CSDL thuộc vào namespace CIK.News.Entities NewsAgg: - Entity: Category định nghĩa trường csdl bao gồm thuộc tính navigation danh sách đối tượng Item tin Nó thể quan hệ mô hình CSDL - CategoryFactory: Định nghĩa thao tác tạo entity Category phục vụ cho việc thực thi hành động website thành phần - IcategoryRepository: định nghĩa interface phương thức thực đối tượng Category - Item: entity thông tin tin tin phân thành category chi tiết tin tức đối tượng ItemContent - ItemFactory: Định nghĩa thao tác tạo entity Item phục vụ cho việc thực thi hành động website thành phần AdvertisementAgg: cấu trúc tương tự News - DocumentAgg: cấu trúc tương tự News 56 - DownloadAgg: cấu trúc tương tự News - SupportAgg: cấu trúc tương tự News - UserAgg: cấu trúc tương tự News Lớp CIK.News.Mapping thực việc mapping entity thuộc lớp CIK.News.Entities vào CSDL để thực thao tác với CSDL 4.3.2 Lớp Framework Gồm project thực xây dựng lớp thư viện phục vụ cho việc thao tác với CSDL tầng liệu Là lớp thư viện xây dựng cho thực hiên tính entity framwork 4.3.3 Lớp Website CIK.News.Web.Infras: - ActionResults: xây dựng đối tượng trả cho phương thức thực website phục vụ cho tầng control nhằm điều hướng website Trong thư mục xây dưng thành phần phần Admin phần Client bên bao gồm đầy đủ phương thức cho thành phần gồm view, thêm, sửa, xóa đối tượng - MediaItem: thư viện thực thi ghi đối tượng media vào đường dẫn xách định Nó phục vụ cho việc cập nhật hình ảnh cho tin, tài liệu cho phần download văn - Profiles: tạo mapping tới phương thức Edit đối tượng Thực nhấn thành phần edit lên thông tin lưu CSDL lấy lên xử lý Với bảng tạo class - Repository: thành phần xử lý logic mà định nghĩa tầng domain interface Nó thực thi xử lý liệu đưa vào view cập nhật vào CSDL Đây gọi phần tầng Model Nó bao gồm việc cài đặt thuật toán tối ưu vào để đưa liệu mong muốn nội dung đề tài đặt 57 cài đặt tìm kiếm xấp xỉ phương pháp quy hoạch động Chúng ta mô tả rõ phần - ViewModels: Thực phương thức tầng view bao gồm phần admin phần client 4.3.4 Mô tả cách thực cài đặt kịch chương trình: Thuật toán qui hoạch động cài đặt class Until sau: - Hàm lấy max số phục vụ cho hàm tìm kiếm: FullSearch private static int MaxAB(int a, int b) { if (a > b) return a; else return b; } - Hàm cài đặt tìm kiếm bao gồm cài đặt tạo ma trận thực việc truy vết để tìm kết xấp xỉ: public static string FullSearch(string X,string Y) { string teamp = ""; int m = X.Length + 1; int n = Y.Length + 1; int[,] L = new int[n, m]; char[] Z = new char[n]; for (int i = 0; i < n; i++) { L[i, 0] = 0; } for (int j = 0; j < m; j++) { L[0, j] = 0; 58 } for (int i = 1; i < n; i++) { for (int j = 1; j < m; j++) { if (Y[i - 1] == X[j - 1]) { L[i, j] = L[i - 1, j - 1] + 1; } else { L[i, j] = MaxAB(L[i - 1, j], L[i, j - 1]); } } } //Truy vet(Trace) int t = 0; int ii = n; int jj = m; ii ; jj ; while (ii > && jj > 0) { if (Y[ii - 1] == X[jj - 1]) { Z[t] = Y[ii - 1]; t++; 59 ii ; jj ; } else { if (L[ii - 1, jj] > L[ii, jj - 1]) { ii ; } else jj ; } } while (t > 0) { t; teamp = teamp + Z[t]; } return teamp; } Qui trình trình tìm kiếm: public IEnumerable FullSeachByTitle(string titleSearchText, int index, int numOfpage, out int numOfRecords) { var itemsearch = this.GetItems(); numOfRecords = itemsearch.Count(); if (!string.IsNullOrWhiteSpace(titleSearchText)) { 60 int maxList = 0; Dictionary IdList = new Dictionary(); List ListItem = new List(); foreach (Item newItem in itemsearch) { string maxau = Until.FullSearch(titleSearchText.ToLower(), newItem.ItemContent.Title.ToLower()); if (maxList < maxau.Length) { maxList = maxau.Length; } Item temp = new Item(); temp.ItemContentId = newItem.ItemContentId; temp.ModifiedDate = newItem.ModifiedDate; temp.Id = newItem.Id; temp.CreatedDate = newItem.CreatedDate; temp.CreatedBy = newItem.CreatedBy; temp.Category = newItem.Category; temp.ItemContent = new ItemContent(); temp.ItemContent.Id = newItem.ItemContent.Id; //Xac dinh vi tri de replate string replaceString = newItem.ItemContent.Title.ToLower(); int position = replaceString.IndexOf(maxau); if (position >= && maxau.Length>0 && !string.IsNullOrEmpty(maxau)) { string getString = newItem.ItemContent.Title.Substring(position, maxau.Length); 61 temp.ItemContent.Title = newItem.ItemContent.Title.Replace(getString, "" + getString + ""); temp.ItemContent.SortDescription = newItem.ItemContent.SortDescription; // ListItem.Add(temp); IdList.Add(temp.ItemContentId, maxau.Length); } } List ListItemSeach = new List(); while (IdList != null && IdList.Count>0) { int maxa = 0; foreach (var keyitem in IdList) { if(maxa < keyitem.Value) { maxa = keyitem.Value; }; } if (maxa > 0) { var maxItem = IdList.FirstOrDefault(x => x.Value == maxa); ListItemSeach.Add(ListItem.FirstOrDefault(x => x.ItemContentId == maxItem.Key)); } IdList.Remove(IdList.FirstOrDefault(x => x.Value == maxa).Key); } 62 itemsearch = ListItemSeach; } return itemsearch.Skip((index - 1) * numOfpage).Take(numOfpage); } Mô tả phương thức: Lấy tất Item new đếm số lượng Item Nếu tiêu đề truyền vào khác null thực thi: - Tạo danh sách kết - Duyệt tất Item lấy tìm kiếm phương thức tạo lớp thư viện sau: string maxau =Until.FullSearch(titleSearchText.ToLower(), newItem.ItemContent.Title.ToLower()); - Xác định vị trí thay để format lại tiêu đề vừa tìm thấy sau: xác định vị trí mẫu xâu vị trí Nếu vị trí lớn độ dài xâu tìm kiếm bước b thay dòng font để format lại tiêu đề để người dùng nhìn thấy từ xấp xỉ tìm kiếm lệnh sau phương thức trên: newItem.ItemContent.Title.Replace(getString, "" + getString + ""); thêm Item vào danh sách tìm kiếm - Duyệt lại danh sách để trả giá trị cho view 4.3.5 Kịch tìm kiếm Tại HomeController có controler sau để thực điều hướng với phương thức Search lúc SearchViewModelActionResult thực thi việc xử lý triệu gọi thông qua ExecuteResult SearchViewModelActionResult để trả view class lại gọi tới phương BindingDataForSearchLeftColumnViewModel thức SearchViewModelActionResult class phương thức biding gọi tới lớp cài đặt phương thức tìm kiếm nội dung để trả kết cho người dùng 63 4.3.6 Kết tìm kiếm website a Tìm kiếm xác sử dụng thuật toán KMP - Trong trình biên tập nội dung website dành quản trị website thể cài đặt chương trình thuật toán KMP (mục 2.1) vào phần quản trị để tìm kiếm danh mục thông tin xác giúp người quản trị tìm kiếm nội dung biên tập cách nhanh chóng sau Chương trình cài đặt: namespace CIK.News.Web.Infras { public static class Until { #region seach function private static int[] preKMP(string[] p) { int m = p.Length; int[] MP_map = new int[m + 1]; MP_map[0] = -1; int i = 0; int j = MP_map[i]; while (i < m) { while (j >= && (p[i] != p[j])) j = MP_map[j]; j++; i++; MP_map[i] = j; } return MP_map; } private static int[] KMP(string[] p) 64 { int m = p.Length; int[] aKMP = new int[m + 1]; int[] MP_map = preKMP(p); aKMP[0] = -1; aKMP[m] = aKMP[m]; for (int i = 1; i < m; i++) { int j = aKMP[i]; if (p[i] != p[j]) aKMP[i] = j; else aKMP[i] = aKMP[j]; } return aKMP; } public static bool Knuth_Morris_Pratt(string[] s, string[] p) { bool status = false; int[] map = KMP(p); int n = s.Length; int m = p.Length; int i = 0; for (int j = 0; j < n; j++) { while ((i >= 0) && (p[i] != s[j])) i = map[i]; i++; if (i == m) { status = true; break; } 65 } return status; } #endregion Ví dụ 4.1 kết tìm xác 66 b Tìm kiếm xấp xỉ sử dụng thuật toán tìm dãy chung dài theo phương pháp quy hoạch động Ví dụ 4.2 Kết tìm kiếm website ví dụ tìm “kkhuyên” cho kết Ví dụ 4.3 Khi sử dụng tìm kiếm với từ “trường th” 67 Ví dụ 4.4 Khi sử dụng tìm kiếm với từ “muốnn học” 4.4 Kết luật chương Chương kết cài đặt thành công hai thuật toán quy hoạch động trình bày chương thuật toán KMP trình bày chương Chương trình cài đặt viết ngôn ngữ lập trình C# tảng Net Framework Microsoft sử dụng SQL Server 2005 để lưu trữ sở liệu Chương trình thực việc tìm kiếm thông tin website theo hướng xác, xấp xỉ 68 KẾT LUẬN Các kết đạt luận văn: Trình bày tổng quan so sánh mẫu, dạng tìm kiếm mẫu Trình bày thuật toán đối sánh mẫu xác KMP Boyer – Moore Trên sở mã nguồn mở, ngôn ngữ lập trình C# công nghệ ASP.NET xây cài đặt thuật toán KMP tìm kiếm xác phần quản trị thuật toán quy hoạch động để tìm dãy chung dài ứng dụng tìm kiếm xấp xỉ thông tin website http://truongthcsdaiminh.edu.vn/ Hướng nghiên cứu tiếp theo: - Tìm hiểu thuật toán tối ưu - Cài đặt chương trình tìm kiếm để ứng dụng chương trình tìm kiếm thông tin website Do thời gian khả có hạn, luận văn thiếu sót nhiều, em mong nhận góp ý, dẫn thêm thầy cô, bạn bè để em xây dựng ứng dụng hoàn thiện Một lần em xin chân thành cảm ơn cô giáo Tiến sĩ Nguyễn Thị Thanh Huyền, thầy cô Viện tạo điều kiện thuận lợi để em hoàn thành luận văn 69 TÀI LIỆU THAM KHẢO [1] Nguyễn Thị Thanh Huyền, Luận án tiến sĩ, Viện Toán ứng dụng Tin học, trường Đại học Bách khoa Hà Nội, 2007 [2] Hồ Thuần, Hồ Cẩm Hà, Trần Thiên Thanh, Cấu trúc liệu, Phân tích thuật toán phát triển phần mềm, NXBGD, 2008 [3] Christian Charras, Thierry Lecroq (2000), Handbook of Exact String matching Algorithms [4] Gonzalo Navarro, A guided tour to approximate string matching, 70 ... Các thuật toán đối sánh mẫu ứng dụng tìm kiếm website Mục tiêu nội dung Luận văn tập trung nghiên cứu thuật toán đối sánh mẫu ứng dụng tìm kiếm website - Tìm hiểu vấn đề tìm kiếm thông tin đối sánh. .. chọn sử dụng thuật toán off–line Tìm kiếm mục thực dựa tìm kiếm on–line 1.3 Các dạng toán đối sánh mẫu Dựa đặc tính mẫu, toán đối sánh mẫu phân loại sau: so đơn mẫu, so đa mẫu, đối sánh mẫu mở... hoạch động để tìm dãy chung lớn hai xâu Chương 4: Ứng dụng thuật toán đối sánh mẫu để tìm kiếm website Chương 1: TỔNG QUAN VỀ VẤN ĐỀ ĐỐI SÁNH MẪU 1.1 Đối sánh mẫu Đối sánh mẫu, hay so mẫu (pattern

Ngày đăng: 15/07/2017, 23:15

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w