Thuật toán pagerank cơ sở toán học của công cụ tìm kiếm google Thuật toán pagerank cơ sở toán học của công cụ tìm kiếm google Thuật toán pagerank cơ sở toán học của công cụ tìm kiếm google Thuật toán pagerank cơ sở toán học của công cụ tìm kiếm google Thuật toán pagerank cơ sở toán học của công cụ tìm kiếm google Thuật toán pagerank cơ sở toán học của công cụ tìm kiếm google Thuật toán pagerank cơ sở toán học của công cụ tìm kiếm google Thuật toán pagerank cơ sở toán học của công cụ tìm kiếm google
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI ĐỖ CHÍ CƯỜNG ĐỖ CHÍ CƯỜNG TỐN ỨNG DỤNG THUẬT TỐN PAGERANK CƠ SỞ TỐN HỌC CỦA CƠNG CỤ TÌM KIẾM GOOGLE LUẬN VĂN THẠC SĨ KHOA HỌC TOÁN ỨNG DỤNG KHOÁ 2016B Hà Nội – Năm 2019 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI ĐỖ CHÍ CƯỜNG THUẬT TỐN PAGERANK CƠ SỞ TỐN HỌC CỦA CƠNG CỤ TÌM KIẾM GOOGLE Chun ngành: Tốn ứng dụng LUẬN VĂN THẠC SĨ KHOA HỌC TỐN ỨNG DỤNG NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS TSKH NGUYỄN THIỆU HUY Hà Nội – Năm 2019 LỜI CAM ĐOAN Tơi, Đỗ Chí Cường, cam đoan luận văn thạc sĩ với tiêu đề “thuật toán pagerank – sở tốn học cơng cụ tìm kiếm google” cơng trình nghiên cứu khoa học riêng tơi Tơi xin xác nhận rằng: • Luận văn thực chủ yếu chương trình Thạc sĩ Khoa học Toán ứng dụng Viện Toán ứng dụng Tin học, Đại học Bách Khoa Hà Nội • Bất kỳ nội dung luận văn sử dụng tài liệu khác nêu rõ ràng • Tất tài liệu sử dụng để tham khảo trích dẫn đầy đủ • Mọi giúp đỡ trình thực luận văn ghi nhận cảm ơn -Chữ ký: -Ngày: LỜI CẢM ƠN Lời đầu tiên, tác giả xin bày tỏ lòng biết ơn chân thành sâu sắc tới PGS TSKH Nguyễn Thiệu Huy, người tận tình hướng dẫn, giúp đỡ động viên tác giả suốt trình thực luận văn Tác giả xin trân trọng cảm ơn Viện Toán ứng dụng Tin học, Viện Đào tạo Sau đại học, Đại học Bách Khoa Hà Nội tạo điều kiện thuận lợi cho tác giả trình học tập nghiên cứu Xin cảm ơn thầy cô, bạn sinh viên, học viên cao học Viện Toán ứng dụng Tin học giúp đỡ, trao đổi tác giả kiến thức kinh nghiệm quý báu để giúp cho luận văn hoàn thiện Cuối cùng, tác giả xin kính tặng người thân u niềm hạnh phúc vinh dự to lớn này! Mục lục Lời cam đoan Danh sách hình vẽ Mở đầu 1 Tổng quan khai phá liệu sở toán học thuật toán Pagerank 1.1 Khai phá liệu 1.2 Tổng quan thuật toán PageRank 1.3 Các khái niệm đại số tuyến tính 1.4 Lý thuyết đồ thị 12 1.4.1 Định nghĩa đồ thị 12 1.4.2 Các phương pháp biểu diễn đồ thị máy tính 13 Thuật toán PageRank 16 2.1 Thuật toán PageRank 16 2.1.1 Cơng thức tốn học thuật tốn PageRank 17 Người di chuyển ngẫu nhiên 19 2.2.1 Vấn đề mắc kẹt trang 19 2.2.2 Vấn đề mắc kẹt đồ thị 20 2.2.3 Lựa chọn α 21 2.3 Tính tốn giá trị PageRank 22 2.4 Sử dụng phương pháp lũy thừa để tính PageRank 22 2.2 Thuật toán TextRank 24 3.1 Tư tưởng thuật toán 24 3.2 Biểu diễn tập văn đồ thị 25 3.3 Mơ hình TextRank 26 3.3.1 Mơ hình với đồ thị vô hướng 27 3.3.2 Mơ hình với đồ thị có trọng số 28 3.4 Trích rút từ khóa TextRank 29 3.5 Tóm tắt văn TextRank 32 Thuật toán Hit-Hub 4.1 Ý tưởng 35 35 4.2 Nội dung thuật toán 37 Kết luận chung 41 Tài liệu tham khảo 43 Phụ lục 43 Danh sách hình vẽ 1.1 Mơ hình liên kết thuật tốn PageRank [6] 1.2 Đơn đồ thị vô hướng [11] 12 1.3 Đơn đồ thị có hướng [11] 13 1.4 Đồ thị vô hướng [9] 14 1.5 Đồ thị có hướng [9] 14 1.6 Đồ thị vô hướng [10] 15 2.1 Đồ thị web mô tượng mắc kẹt [8] 20 3.1 Đường cong hội tụ cho: đồ thị có hướng/vơ hướng, có trọng số/không trọng số, 250 đỉnh, 250 cạnh [2] 3.2 Xây dựng đồ thị mẫu để trích xuất cụm từ khóa từ tóm tắt [2] 3.3 3.4 27 31 Xây dựng đồ thị mẫu để trích xuất câu từ báo Tóm tắt thủ cơng tóm tắt sau sử dụng TextRank [2] 33 Đồ thị trọng số liên kết từ 34 4.1 Trang hubs authorities [4] 37 4.2 ap tổng hi với i nút trỏ tới p [4] 38 4.3 hp tổng với i nut p trỏ đến [4] 39 4.4 Đồ thị web đơn giản với trang web [4] 40 Mở đầu Khai phá liệu nói chung khai phá liệu Web nói riêng lĩnh vực quan trọng có nhiều ứng dụng thực tiễn Thuật toán PageRank sử dụng tảng nhiều cỗ máy tìm kiếm hoạt động mạnh mẽ nay, gọi bước đột phá cho công nghệ thông tin khai phá liệu Luận văn trình bày thuật toán PageRank cải tiếng thuật toán PageRank ứng dụng đời sống thực tế Nội dung trình bày luận văn gồm chương: • Chương 1: Giới thiệu kiến thức tổng quan khai phá liệu thuật toán PageRank, chủ yếu giới thiệu vai trò, lịch sử, tinh thần thuật toán số kiến thức đồ thị, tảng thuật tốn • Chương 2: Trình bày chi tiết thuật tốn PageRank, mơ hình người di chuyển ngẫu nhiên, trường hợp xảy mơ hình phương pháp xử lý tương ứng Chương trình bày cách tính trị riêng, vector riêng phương pháp lặp để tính tốn giá trị PageRank • Chương 3: Trình bày thuật tốn TextRank, ứng dụng mạnh mẽ tư tưởng thuật toán PageRank xử lý ngôn ngữ tự nhiên, giúp giải nhiều tốn quan trọng • Chương 4: Khái quát thuật toán Hit-Hub ứng dụng Chương Thuật toán Hit-Hub 4.1 Ý tưởng Trong thời gian PageRank phát triển, Jon Kleinberg, giáo sư Khoa Khoa học Máy tính Cornell đưa giải pháp riêng cho vấn đề Tìm kiếm Web Ơng phát triển thuật tốn sử dụng cấu trúc liên kết web để khám phá xếp hạng trang có liên quan đến chủ đề cụ thể Một điểm thú vị mà ơng nêu cách tìm kiếm người phức tạp việc so sánh danh sách từ truy vấn với danh sách tài liệu trả tài liệu chưa nhiều từ khóa Giả sử muốn mua ô tô gõ cụm từ truy vấn chung "những nhà sản xuất ô tô tốt năm qua", với ý định tìm kiếm danh sách thương hiệu xe hàng đầu trang web họ Khi đặt câu hỏi ta mong đợi công cụ tìm kiếm hiểu tơ nghĩa tơ, xe cộ tơ khái niệm chung bao gồm xe tải, xe tải loại xe khác Nhưng thực tế ta đặt câu hỏi cho máy tính chạy thuật tốn xếp hạng, tìm kiếm dựa văn bản, thứ khác Máy tính đếm tất lần xuất từ cho tập hợp 35 tài liệu định Danh sách trang web hàng đầu nhận khác với ta mong đợi Một vấn đề hầu hết trang web thức khơng đủ nội dung để mơ tả Trang web họ khơng chứa từ khóa mà người dùng tìm kiếm Các cơng ty hàng đầu Honda, Toyota, chí khơng sử dụng thuật ngữ "nhà sản xuất ô tô" trang web họ Thay vào đó, họ sử dụng cụm từ "nhà sản xuất xe hơi" mô tả sản phẩm doanh nghiệp họ Trong trường hợp làm gì? Ta xây dựng từ điển từ đồng nghĩa để máy tính hiểu từ giống Điều cải thiện chất lượng tìm kiếm, nhiên ta cần hệ thống xếp hạng dựa văn cho trang web Trang i kết truy vấn "nhà sản xuất tơ" chứa thông tin giá trị chủ đề Các trang web thức nhà sản xuất tô, chẳng hạn www.bmw.com, HyundaiUSA.com, www.mercedes-benz.com kết phù hợp cho tìm kiếm Các trang web thương mại bán xe liên quan chủ đề Đây trang web thực liên quan đến truy vấn cho, thứ mà người dùng mong đợi từ công cụ tìm kiếm, ta gọi authority page Tuy nhiên, có loại trang web thứ hai liên quan đến trình tìm kiếm authority page trang web trỏ đến authority page Vai trò họ đề xuất, đưa trang web mà người dùng mong muốn gọi hub page Chúng chứa liên kết hữu ích trang web cần tìm Nói cách khác, hub page cho cơng cụ tìm kiếm tìm trang web phù hợp Trong thực tế, mua xe ta có xu tìm mua từ đại lý định bạn giới thiệu Tương tự, authority page trường hợp đại lý xe hơi, hub page bạn bạn Ta tin tưởng bạn bè mình, nên ta tin tưởng bạn bè giới thiệu Đối với trang web, hub page trang web chứa thứ hạng ô tô, diễn đàn thảo luận xe mà họ mua, v.v 36 Hình 4.1: Trang hubs authorities [4] 4.2 Nội dung thuật toán Thuật toán Jon Kleinberg gọi HITS [4] xác định giá trị gồm authority hub cho chủ đề cách gán với trang web giá trị authority hub Các giá trị xác định phương pháp đệ quy Giá trị authority trang web cao xảy trang trỏ đến trang web có giá trị hub cao Giá trị hub trang web cao trang web trỏ đến nhiều trang web có giá trị authority cao Để có tập hợp trang web tốt với hub authority cho truy vấn Q , thu thập 200 trang web mạng có chứa cụm từ tìm nhiều Như trình bày trên, trang web khơng có liên quan nhiều đến từ khóa, bắt đầu tìm kiếm từ trang web Kleinberg gọi tập hợp trang web tập trang gốc (RQ ) Về tập hợp chứa vài trang (nếu có) liên kết với Vì vậy, đồ thị web xác định trang web gần không liên thông thực thi kỹ thuật 37 Page Rank tập RQ Các giá trị authority cho truy vấn Q có khả khơng nằm tập trang gốc RQ mà liên kết trang tập RQ Vì vậy, từ tập trang gốc RQ ta mở rộng đồ thị RQ cách thêm vào tất cạnh trỏ trỏ đến trang web tập trang gốc RQ Ta kí hiệu đồ thị mở rộng SQ gọi tập trang web ứng viên truy vấn tìm kiếm Lưu ý từ SQ ta xây dựng đồ thị web nhỏ (nó chắn nhỏ nhiều so với tồn đồ thị web) Nó có khả chứa nhiều trang có authority tốt cho truy vấn Q Câu hỏi lại làm để xác định giá trị authority cho trang web? Từ đây, ta mơ hình hóa tốn ngơn ngữ toán học Chúng ta gán với trang web i giá trị gồm authority kí hiệu , hub kí hiệu hi Chúng ta xem xét trang có trọng số hi lớn Với trọng số {ai } {hi } tất nút đồ thị SQ , ta thực cập nhật trọng số sau: Hình 4.2: ap tổng hi với i nút trỏ tới p [4] 38 Hình 4.3: hp tổng với i nut p trỏ đến [4] Một trang web có giá trị hub cao làm tăng giá trị authority trang mà trỏ đến Một trang có authority cao làm tăng giá trị hub trang trỏ đến Ý tưởng thuât toán áp dụng hai phương pháp cập nhật giá trị hub authority toàn trang web cân (hội tụ) Gọi A ma trận kề đồ thị SQ biểu thị kí hiệu v vector chứa giá trị authority trang web u vectơ chứa giá trị hub trang web, đó: a1 h1 a2 h2 v= u = an hn Khi ta có cơng thức cập nhật vector v u sau: v =t ·u u = ·v 1 t Giả sử ban đầu u0 = v0 = A · u0 sau k bước lặp ta có 39 vk = At · A · vk−1 uk = A · At · uk−1 Thuật toán Hit-hub Input: Ma trận kề đồ thị web SQ Output: Giá trị hub authority trang web Bước Khởi tạo u = [11 1]t Bước Tính v = At · u Bước Tính u = A · v, v = At · u Bước Thực lặp lại Bước giá trị u, v không thay đổi Bước Trả vector u, v giá trị hub, authority trang web Ví dụ: Giả sử ta có đồ thị web hình vẽ: Hình 4.4: Đồ thị web đơn giản với trang web [4] 0 0 t , A = 0 0 Khởi tạo u = [1, 1, 1]t Ta có ma trận kề A = 0 0 1 40 Ta tính v = At · u = [0, 0, 2]t Thuật tốn HITS có tư tưởng với PageRank Cả thuật toán sử dụng đồ thị liên kết trang web để xác định mức độ liên quan trang web với Sự khác biệt so với PageRank HITS hoạt động đồ thị trang web, đồ thị phụ thuộc vào truy vấn tìm kiếm Với truy vấn khác đồ thị thay đổi Thuật toán HITS xếp hạng trang web đồ thị trả trang web có thứ hạng cao cho người dùng 41 Kết luận chung Luận văn trình bày thuật toán PageRank tổng quát ứng dụng cải tiến thuật toán PageRank Thuật toán PageRank thuật tốn vơ quan trọng khai phá liệu web, xây dựng cách mơ hình hóa mạng lưới liên kết trang web thành đồ thị có hướng, từ đưa nguyên tắc đánh giá độ quan trọng trang web dựa lý thuyết đồ thị đại số ma trận Thuật tốn PageRank thơng thường giải phương pháp lũy thừa, tùy vào giá trị yếu tố damping mà phương pháp lũy thừa hội tụ nhanh hay chậm, phản ánh mơ hình liên kết trang web không Luận văn đưa ứng dụng thuật toán PageRank thuật toán TextRank TextRank thuật toán phát triển theo tư tưởng PageRank, sử dụng đồ thị để đánh giá xếp hạng Một điểm quan trọng thuật toán đánh giá độ quan trọng đỉnh thông qua tồn thơng tin đồ thị nên cho kết xác cao Hai ứng dụng TextRank trình bày luận văn trích xuất từ khóa văn tóm tắt văn Hit-Hub thuật toán xây dựng dựa theo cách mà tìm kiếm thơng tin Hit-hub nhấn mạnh tăng cường lẫn thông qua trang authority hub So với thuật tốn PageRank Hit-hub xây dựng đồ thị web thực với truy vấn cụ thể, thuật toán thực phần đồ thị nên có tốc độ nhanh 42 Tài liệu tham khảo [1] Leon Lee (2010), "PageRank Algorithm and Development", 2010 [2] Rada Mihalcea and Paul Tarau (2004), "TextRank: Bringing Order into Texts" [3] Longzhuang Li, Yi Shang, Wei Zhang (2002), "Improvement of HITSbased Algorithms on Web Documents" [4] Raluca Tanase, Remus Radu (2009), "The Mathematics of Web Search" http://pi.math.cornell.edu/~mec/Winter2009/RalucaRemus [5] Phạm Kì Anh (1996), Giáo trình giải tích số, Nhà xuất đại học quốc gia Hà Nội [6] https://vi.wikipedia.org/wiki/PageRank [7] https://en.wikipedia.org/wiki/Graph_(discrete_mathematics) [8] https://www.inf.unibz.it/~mkacimi/lecture17.pdf [9] https://www.codediesel.com/algorithms/ building-a-graph-data-structure-in-php/ [10] https://kienthuc24h.com/danh-sach-canh-c-ly-thuyet-do-thi/ [11] Nguyễn Đức Nghĩa, Nguyễn Tơ Thành (2009), Giáo trình tốn rời rạc, Nhà xuất đại học quốc gia Hà Nội 43 PHỤ LỤC Thuật toán PageRank Thuật toán PageRank import numpy as np from scipy.sparse import csc_matrix def pageRank(G,rsp=0.1, maxerr = 001): """ Tinh gia tri pagerank cho trang web Args -G: Ma tran ke cua o thi web Kwargs -maxerr: Sai so giua hai lan cap nhat pagerank """ n = G.shape[0] M = csc_matrix(G,dtype=np.float) rsums = np.array(M.sum(1))[:,0] ri, ci = M.nonzero() M.data /= rsums[ri] alpha = rsp/n M = M.todense() M = M*(1-rsp) + alpha ro, r = np.zeros(n), np.ones(n) 44 while np.sum(np.abs(r-ro)) > maxerr: ro = r.copy() r = ro.dot(M) r = r.tolist()[0] return r/np.sum(r) Thuật toán PageRank cải tiến # Thuat toan PageRank cai tien import numpy as np from scipy.sparse import csc_matrix def pageRank_cai_tien(G, s = 85, maxerr = 001): """ Tinh gia tri pagerank cho trang web Args -G: Ma tran ke cua thi web Kwargs -s: He so alpha Mac dinh e 0.85 maxerr: Sai so giua hai lan cap nhat pagerank """ n = G.shape[0] M = csc_matrix(G,dtype=np.float) rsums = np.array(M.sum(1))[:,0] ri, ci = M.nonzero() M.data /= rsums[ri] sink = rsums==0 ro, r = np.zeros(n), np.ones(n) while np.sum(np.abs(r-ro)) > maxerr: ro = r.copy() for i in range(0,n): Ii = np.array(M[:,i].todense())[:,0] Si = sink / float(n) Ti = np.ones(n) / float(n) r[i] = ro.dot( Ii*s + Si*s + Ti*(1-s) ) 45 return r/sum(r) Thuật tốn TextRank Trích rút từ khóa thuật tốn TextRank # Trich rut tu khoa def keywords(text, ratio=0.2, words=None, language="english", split=False, scores=False, deaccent=False, additional_stopwords=None): if not isinstance(text, str): raise ValueError("Text parameter must be a Unicode object (str)!") # Gets a dict of word -> lemma tokens = _clean_text_by_word(text, language, deacc=deaccent, additional_stopwords=additional_stopwords) split_text = list(_tokenize_by_word(text)) # Creates the graph and adds the edges graph = _build_graph(_get_words_for_graph(tokens)) _set_graph_edges(graph, tokens, split_text) del split_text # It’s no longer used _remove_unreachable_nodes(graph) # PageRank cannot be run in an empty graph if len(graph.nodes()) == 0: return [] if split else "" # Ranks the tokens using the PageRank algorithm Returns dict of lemma -> score pagerank_scores = _pagerank(graph) extracted_lemmas = _extract_tokens(graph.nodes(), pagerank_scores, ratio, words) 46 lemmas_to_word = _lemmas_to_words(tokens) keywords = _get_keywords_with_score(extracted_lemmas, lemmas_to_word) # text.split() to keep numbers and punctuation marks, so separeted concepts are not combined combined_keywords = _get_combined_keywords(keywords, text.split()) return _format_results(keywords, combined_keywords, split, scores) Tóm tắt văn thuật toán TextRank # Tom tat van ban def summarize(text, ratio=0.2, words=None, language="english", split=False, scores=False, additional_stopwords=None): if not isinstance(text, str): raise ValueError("Text parameter must be a Unicode object (str)!") # Gets a list of processed sentences sentences = _clean_text_by_sentences(text, language, additional_stopwords) # Creates the graph and calculates the similarity coefficient for every pair of nodes graph = _build_graph([sentence.token for sentence in sentences]) _set_graph_edge_weights(graph) # Remove all nodes with all edges weights equal to zero _remove_unreachable_nodes(graph) # PageRank cannot be run in an empty graph if len(graph.nodes()) == 0: return [] if split else "" # Ranks the tokens using the PageRank algorithm Returns dict of sentence -> score pagerank_scores = _pagerank(graph) # Adds the summa scores to the sentence objects 47 _add_scores_to_sentences(sentences, pagerank_scores) # Extracts the most important sentences with the selected criterion extracted_sentences = _extract_most_important_sentences(sentences, ratio, words) # Sorts the extracted sentences by apparition order in the original text extracted_sentences.sort(key=lambda s: s.index) return _format_results(extracted_sentences, split, scores) Thuật toán HitHub Thuật toán HitHub import numpy as np from scipy.sparse import csc_matrix def hit_hub(link_matrix,epsilon=1e-4): # Thuat toan Hit Hub link_matrix = link_matrix link_matrix_tr = link_matrix.transpose() n = link_matrix.shape[0] hubs = np.ones( n) auths = np.ones( n) epsilon_matrix = epsilon * np.ones( n) while True: hubs_old = hubs auths_old = auths auths = np.dot( link_matrix_tr, hubs_old) max_score = auths.max(axis=0) if max_score != 0: auths = auths / max_score 48 hubs = np.dot( link_matrix, auths) max_score = hubs.max(axis=0) if max_score != 0: hubs = hubs / max_score if (((abs( hubs - hubs_old)) < epsilon_matrix).all()) and ( ((abs( auths - auths_old)) < epsilon_matrix).all()): break return hubs, auths 49 ... TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI ĐỖ CHÍ CƯỜNG THUẬT TỐN PAGERANK CƠ SỞ TỐN HỌC CỦA CƠNG CỤ TÌM KIẾM GOOGLE Chun ngành: Tốn ứng dụng LUẬN VĂN THẠC SĨ KHOA HỌC TỐN ỨNG DỤNG... DẪN KHOA HỌC: PGS TSKH NGUYỄN THIỆU HUY Hà Nội – Năm 2019 LỜI CAM ĐOAN Tơi, Đỗ Chí Cường, cam đoan luận văn thạc sĩ với tiêu đề ? ?thuật toán pagerank – sở tốn học cơng cụ tìm kiếm google? ?? cơng trình... Brin, báo dự án này, giới thiệu RageRank nguyên mẫu cơng cụ tìm kiếm Google, khởi đầu cho phát triển cơng cụ tìm kiếm thịnh hành giới Thuật toán PageRank đưa phân phối xác suất sử dụng để biểu diễn