Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 78 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
78
Dung lượng
2,17 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC QUY NHƠN LÊ QUYỀN SỬ DỤNG CƠ SỞ DỮ LIỆU ĐỒ THỊ TRONG HỆ GỢI Ý Chuyên ngành: Khoa Học Máy Tính Mã số: 48 01 01 Ngƣời hƣớng dẫn: TS TRẦN THIÊN THÀNH LỜI CAM ĐOAN Tôi xin cam đoan kết đƣợc trình bày luận văn riêng tôi, không chép từ cơng trình khác Nếu có điều khơng trung thực, tơi xin chịu hồn tồn trách nhiệm HỌC VIÊN LÊ QUYỀN LỜI CẢM ƠN Lời đầu tiên, cho phép gửi lời cảm ơn đến TS TRẦN THIÊN THÀNH, người thầy quan tâm giúp đỡ, hướng dẫn, bảo tận tình giúp tơi hồn thành luận văn Tôi xin chân thành cảm ơn Quý Thầy Cô Khoa Công nghệ thông tin trường Đại Học Quy Nhơn kiến thức mà quý Thầy Cơ truyền đạt cho tơi suốt q trình học tập trường Xin chân thành cảm ơn anh chị em lớp cao học Khoa học máy tính khố 2019 – 2021 (K22) bạn đồng nghiệp ln bên cạnh, động viên, khuyến khích tơi suốt thời gian học tập thực đề tài Cuối cùng, tơi xin gửi đến gia đình, từ hỗ trợ động viên từ phía gia đình mà tơi n tâm học tập tốt hồn thành luận văn Xin chân thành cảm ơn! NGƢỜI THỰC HIỆN LÊ QUYỀN MỤC LỤC LỜI CAM ĐOAN LỜI CẢM ƠN DANH MỤC CÁC THUẬT NGỮ, TỪ VIẾT TẮT DANH MỤC CÁC BẢNG DANH MỤC CÁC HÌNH VẼ MỞ ĐẦU 1 Lý chọn đề tài Mục đ ch nhiệm vụ nghi n cứu Đối tƣợng phạm vi nghiên cứu Phƣơng pháp nghiên cứu Nội dung nghiên cứu CHƢƠNG I TỔNG QUAN 1.1 Cơ sở liệu đồ thị 1.1.1 Khái niệm đồ thị 1.1.2 Cơ sở liệu đồ thị (Graph Database) 1.1.3 Một số ứng dụng sở liệu đồ thị 18 1.2 Cơ sở liệu đồ thị Neo4j 20 1.2.1 Giới thiệu chung 20 1.2.2 Mơ hình liệu 21 1.2.3 Ngôn ngữ truy vấn Cypher 23 1.2.4 Python với Neo4j Desktop 28 1.2.5 Chỉ mục (Indexing) 29 1.3 Tổng quan hệ thống gợi ý 33 1.3.1 Giới thiệu chung 33 1.3.2 Ứng dụng hệ thống gợi ý 36 1.3.3 Bài toán gợi ý 37 1.4 Một số phƣơng pháp gợi ý 38 1.4.1 Phƣơng pháp Gợi ý dựa Nội dung (Content-based) 39 1.4.2 Collaborative filtering - CF (lọc cộng tác) 39 1.4.3 Hybrid approach (các phƣơng pháp lai) 46 1.5 Tiểu kết chƣơng 47 CHƢƠNG XÂY DỰNG HỆ GỢI Ý SỬ DỤNG NEO4J 48 2.1 Xây dựng sở liệu 48 2.1.1 Tổ chức liệu Neo4j cho hệ gợi ý đơn giản 48 2.1.2 Nạp liệu từ csv vào Neo4j 49 2.2 Thuật tốn tính dự đốn rating Cosin, Pearson 49 2.2.1 Thuật toán sử dụng tƣơng quan Pearson 49 2.2.2 Thuật toán sử dụng độ tƣơng tự Cosin 50 2.2.3 Thuật toán gợi ý k-sản phẩm 51 2.3 Các thuật tốn đánh giá độ xác 53 2.3.1 Đánh giá dự đoán xếp hạng sản phẩm 53 2.3.2 Đánh giá gợi ý sản phẩm 56 2.4 Tiểu kết chƣơng 59 CHƢƠNG THỰC NGHIỆM 61 3.1 Công cụ thực nghiệm 61 3.2 Thực nghiệm 63 3.3 Phân tích kết thực nghiệm 65 KẾT LUẬN 66 DANH MỤC TÀI LIỆU THAM KHẢO 68 QUYẾT ĐỊNH GIAO ĐỀ TÀI LUẬN VĂN THẠC SĨ (BẢN SAO) DANH MỤC CÁC THUẬT NGỮ, TỪ VIẾT TẮT DIỄN GIẢI KÝ HIỆU RS TIẾNG ANH Recommender System / Recommendation System TIẾNG VIỆT Hệ tƣ vấn/Hệ gợi ý CF Collaborative Filtering Lọc cộng tác CBF Content-Based Filtering Lọc theo nội dung HF Hybrid Filtering Lọc kết hợp MAE Mean Absolute Error Trung bình giá trị tuyệt đối lỗi RMSE Root Mean Square Error Trung bình lỗi lấy KNN K-Nearest Neighbor K láng giềng gần SDP Sparsity Data Problem Vấn đề liệu thƣa User-Based k- User-Based k Neareast Phƣơng pháp K láng giềng NN gần dựa vào ngƣời dùng Item-Based NN Neighbor k- Item-Based k Neareast Neighbor Phƣơng pháp K láng giềng gần dựa vào sản phẩm Chỉ ngƣời dùng hệ U Users thống để tìm kiếm lựa chọn sản phẩm Chỉ sản phẩm hệ I Items thống nhƣ: sản phẩm, phim, ảnh, nhạc, trang web, đoạn văn bản,… Chỉ mức độ đánh giá ngƣời dùng với sản phẩm Rating có nhiều dạng R Rating biểu diễn: nhị phân (thích khơng th ch), hay đánh giá theo mức độ từ 1-5 ―dấu sao‖ đại diện mức độ từ không th ch đến th ch… CSDL Database Cơ sở liệu NNLT Programming language Ngơn ngữ lập trình DANH MỤC CÁC BẢNG Bảng 1 Thời gian thực thi cho nhiều truy vấn kết hợp sử dụng công cụ sở liệu MySQL tập liệu 1.000 ngƣời dùng 12 Bảng Thời gian thực để duyệt đồ thị Neo4j tập liệu 1.000 ngƣời dùng 15 Bảng Thời gian thực thi cho nhiều truy vấn kết hợp sử dụng công cụ sở liệu MySQL tập liệu triệu ngƣời dùng 16 Bảng Thời gian thực để duyệt đồ thị Neo4j tập liệu triệu ngƣời dùng 17 Bảng Công cụ kỹ thuật để thực truy vấn Cypher 24 Bảng Minh họa đánh giá ngƣời dùng số phim xem 38 Bảng Ma trận đánh giá 40 Bảng Các liệu thực nghiệm 63 Bảng Kết thực nghiệm tốc độ xử lý 64 Bảng 3 kết thực nghiệm độ xác 65 DANH MỤC CÁC HÌNH VẼ Hình 1 Ví dụ đơn đồ thị Hình Ví dụ đa đồ thị Hình Đồ thị đƣợc gắn nhãn đại diện cho cặp đỉnh Hình Đồ thị có nhãn đại diện cho hàm Hình Đồ thị gắn nhãn tập hợp quan hệ Hình Đồ thị thuộc t nh biểu diễn thông tin thƣ mục công bố khoa học Hình Đồ thị thuộc tính (Thomas Frisendal) Hình Ngƣời dùng bạn bè họ đƣợc biểu diễn dƣới dạng cấu trúc liệu đồ thị 10 Hình Đồ thị SQL bảng biểu diễn liệu ngƣời dùng bạn bè 11 Hình 10 Duyệt liệu đồ thị mạng xã hội 14 Hình 11 Tổng quan CSDL đồ thị 29 Hình Lƣợc đồ sở liệu đồ thị cho hệ gợi ý 48 MỞ ĐẦU Lý chọn đề tài Ngày hệ gợi ý (Recommender Systems - RS) đƣợc ứng dụng rộng rãi hệ thống kinh doanh, dịch vụ đem lại lợi nhuận cao so với trƣớc ứng dụng Trong hệ gợi ý phải lƣu trữ liệu để phục vụ cho tính tốn học máy để đƣa gợi ý cho ngƣời dùng Đa số hệ thống lƣu liệu dƣới dạng bảng, dạng bán cấu trúc liệu phi cấu trúc nên việc cập nhật tính tốn lại cập nhật khó khăn Ch nh lý này, luận văn đề xuất sử dụng sở liệu đồ thị để lƣu liệu cho hệ gợi ý sở liệu đồ thị hỗ trợ tốt cho lƣu trữ thao tác với mối quan hệ, mà đặc trƣng liệu hệ gợi ý: Mối quan hệ ngƣời dùng với sản phẩm, mối quan hệ ngƣời dùng với ngƣời dùng, mối quan hệ sản phẩm với sản phẩm Mụ đ v n vụ n n u Sử dụng sở liệu đồ thị mà cụ thể Neo4J để lƣu trữ liệu hệ gợi ý xây dựng chức t nh tốn hệ gợi ý cơng cụ lập trình Neo4j Thực nghiệm chức hệ gợi ý liệu MovieLens để đƣa gợi ý phim cho ngƣời dùng dựa vào phim họ đánh giá ngƣời dùng khác đánh giá Cách tiếp cận thực nghiệm dùng phƣơng pháp lọc cộng tác dựa thuật toán láng giềng Đối tƣợng phạm vi nghiên c u - Cơ sở liệu đồ thị Neo4j - Ngôn ngữ lập trình Python - Hệ gợi ý sử dụng phƣơng pháp lọc cộng tác dựa láng giềng - Dữ liệu thực nghiệm: MovieLens (https://grouplens.org/datasets/movielens/) 55 T nh độ lệch error bậc hai trung bình tổng độ lệch bình phƣơng (cho RMSE) trung bình độ lệch (cho MAE) * Lƣu dự đoán v o Neo4j [7]: def listUM(): rec RETURN = graph.run('MATCH u.id as userid, (u:User)-[r:RATED_LATER]->(m:Movie) m.id as movieid, r.rating as rating, r.predCosin as predCosin, r.predPearson as predPearson') df = rec.to_data_frame() return df def predictData(): df = listUM() for i in range(len(df)): uid = df.iloc[i].userid mid = df.iloc[i].movieid predP = predictRatingPearson(uid, mid) predC = predictRatingCosin(uid, mid) if predP == None: predP = if predC == None: predC = graph.run('''MATCH (u:User{id:$userid})-[r:RATED_LATER]- >(m:Movie{id:$movieid}) SET r.predPearson = $predP SET r.predCosin = $predC''', userid=uid, movieid = mid, predP = predP, predC = predC) *C đặt thuật toán sử dụn độ tƣơn tự Cosin [7]: def mae_rmse(): df = listUM() s1 = s2 = for i in range(len(df)): 56 tg = abs(df.iloc[i].rating-df.iloc[i].predCosin) ttg = tg * tg s1 = s1 + tg s2 = s2 + ttg mae = s1/len(df) rmse = math.sqrt(s2/len(df)) return mae, rmse a, b = mae_rmse() print(a, b) *C đặt thuật toán sử dụn độ tƣơn quan Pearson [7]: def mae_rmse(): df = listUM() s1 = s2 = for i in range(len(df)): tg = abs(df.iloc[i].rating-df.iloc[i].predPearson) ttg = tg * tg s1 = s1 + tg s2 = s2 + ttg mae = s1/len(df) rmse = math.sqrt(s2/len(df)) return mae, rmse a, b = mae_rmse() print(a, b) 2.3.2 Đánh giá gợi ý sản phẩm [8] TP (True Positives): Những phim n ƣời dùng thích hệ thống có gợi ý FP (False Positives): Những phim n ƣời dùng khơng thích hệ thống có gợi ý 57 TN (True Negatives): Những phim n ƣời dùng khơng thích nhƣng hệ thống không đƣa gợi ý FN (False negatives): Những phim n ƣời dùng thích nhƣng hệ thống khơng đƣa gợi ý - Độ xác Precision: - Độ bao ph Recall: - Độ đo F1-Score: * Thuật tốn 2: Đán độ xác c a gợi ý sản phẩm cho n ƣời dùng [7] Input: Cơ sở liệu D bao gồm liệu huấn luyện liệu đánh giá Output: Độ lệch gợi ý Precision, Recall, F1 Action: Duyệt cặp ngƣời dùng (u) sản phẩm (i) theo quan hệ RATED_LATER (r): - Thêm thuộc tính like vào quan hệ RATED_LATER rating>=3, ngƣợc lại - Thực tính predictRating = predictRating(u, i) - Lƣu vào quan hệ RATED_LATER thuộc tính like_late = 58 predictRating> 3, ngƣợc lại Duyệt cặp ngƣời dùng (u) sản phẩm (i) theo quan hệ RATED_LATER (r): - Nếu like = like_late = TP = TP + - Nếu like = like_late = FN = FN + - Nếu like = like_late = FP = FP + - Nếu like = like_late = TN =TN + Precision = TP/(TP + FP) Recall = TP/(TP + FN) F1Score = * Precision * Recall / (Precision + Recall) return Precision, Recall, F1Score *C đặt thuật tốn tính Precision, Recall F1 Score sử dụng Pearson [7]: def precision_recall_F1(): df = listUM() TP = TN = FP = FN = for i in range(len(df)): r = df.iloc[i].rating p = df.iloc[i].predPearson if r >=3 and p >=3: TP = TP + if r >=3 and p < 3: FN = FN + if r < and p >=3: FP = FP + if r < and p < 3: TN = TN + pre = TP/(TP + FP) 59 rec = TP/(TP + FN) f1 = 2*pre*rec/(pre+rec) return pre, rec, f1 *C đặt thuật tốn tính Precision, Recall F1 Score sử dụng Cosin [7]: def precision_recall_F1(): df = listUM() TP = TN = FP = FN = for i in range(len(df)): r = df.iloc[i].rating p = df.iloc[i].predCosin if r >=3 and p >=3: TP = TP + if r >=3 and p < 3: FN = FN + if r < and p >=3: FP = FP + if r < and p < 3: TN = TN + pre = TP/(TP + FP) rec = TP/(TP + FN) f1 = 2*pre*rec/(pre+rec) return pre, rec, f1 2.4 Ti u kết ƣơn Trong chƣơng luận văn tìm hiểu cách tổ chức liệu xây dựng CSDL Neo4j, thực thuật toán hệ gợi ý dựa liệu MovieLens để đƣa gợi ý phim cho ngƣời dùng dựa vào phim họ đánh giá ngƣời dùng khác đánh giá nhƣ thuật tốn top k-sản phẩm NNLT Python, ngơn ngữ truy vấn Cypher thƣ viện py2neo Đồng thời trình bày xây dựng thuật toán đánh giá độ tin cậy dự đoán xếp hạng sản phẩm độ đo MAE RMSE, 60 đồng thời đánh giá kết gợi ý sản phẩm cho ngƣời dùng độ xác Precision, độ bao phủ Recall độ đo F1-Score [8] Trong chƣơng tiếp theo, luận văn tập trung thực nghiệm thuật toán, thu thập kết đánh giá kết thực nghiệm để nhìn nhận kết đạt đƣợc nhƣ vấn đề tồn mà đề tài đặt Đồng thời, từ kết đạt đƣợc, luận văn đƣa hƣớng phát triển, mở rộng đề tài sau 61 CHƢƠNG THỰC NGHIỆM Trong chƣơng này, luận văn tập trung trình bày kết thực nghiệm thuật toán hệ gợi ý dựa liệu MovieLens để đƣa gợi ý phim trình bày chƣơng Đánh giá so sánh kết dự đoán luận văn so với dự đoán trực tiếp, đồng thời đánh giá độ xác thuật tốn 3.1 Công cụ thực nghi m Cơ sở liệu mơ hình đồ thị: Neo4j Desktop phiên 1.4.8 Ngơn ngữ lập trình: Python phiên 3.8.8, kết hợp thƣ viện py2neo Dữ liệu: - Sử dụng liệu Movielens 100k (download tại: https://grouplens.org/datasets/movielens/100k/) Số ngƣời dùng: 943, số phim: 1.682, số lƣợt xếp hạng: 100.000 - Sử dụng liệu Movielens 1M (download tại: https://grouplens.org/datasets/movielens/1m/) Số ngƣời dùng: 6040, số phim: 3952, số lƣợt xếp hạng: 1.000.209 - Sử dụng liệu Movielens 20M (download tại: https://grouplens.org/datasets/movielens/20m/) Số ngƣời dùng: 138.493, số phim: 27.278, số lƣợt xếp hạng: 20.000.263 Máy tính: Laptop Dell 5480 Chip Intel Core i5-7440HQ CPU 2.8 GHz, RAM: 24GB, SSD: 1TB, Hệ điều hành Windows 10 Mã lệnh thực nghiệm luận văn đƣợc công bố tại: https://github.com/LQ-Computer/Recomendation-System-on-Graph-Database Trong phần này, luận văn trình bày cách nạp liệu từ file CSV 62 Neo4j cách sử dụng Ngơn ngữ lập trình Python, ngơn ngữ truy vấn Cypher thƣ viện py2neo: #Import thư viện kết nối Neo4j import csv import os from py2neo import Graph, Node graph=Graph("bolt://localhost:7687",auth=("neo4j", "123456789")) #Load file movies.csv tạo node Movie def loadMovies(): with open('data/ml-20m/movies.csv', encoding="latin-1") as csvfile: readCSV = csv.reader(csvfile, delimiter=',') for i, row in enumerate(readCSV): createMovieNodes(row) def createMovieNodes(row): movieData = parseRowMovie(row) id = movieData[0] title = movieData[1] mov = Node("Movie", id=id, title=title) graph.create(mov) def parseRowMovie(row): id = row[0] title = row[1] return (id, title) loadMovies() #Load file ratings.csv, tạo node User tạo quan hệ User - RATED - Movie def createUserNodes(row): user = Node("User", id="User " + row[0]) graph.merge(user, "User", "id") 63 def createRatingRelationship(row): ratingData = parseRowRatingRelationships(row) graph.run( 'MATCH (u:User {id: $userId}), (m:Movie {id: $movieId}) CREATE (u)-[:RATED { rating: $rating, timestamp: $timestamp }]>(m)', userId=ratingData[0], movieId=ratingData[1], rating=ratingData[2], timestamp=ratingData[3]) def parseRowRatingRelationships(row): userId = "User " + row[0] movieId = row[1] rating = float(row[2]) timestamp = row[3] return (userId, movieId, rating, timestamp) def loadRatings(): with open('data/ml-20m/ratings.csv', encoding="latin-1") csvfile: readCSV = csv.reader(csvfile, delimiter=',') for i,row in enumerate(readCSV): createUserNodes(row) createRatingRelationship(row) loadRatings() # Tạo Index cho đối tượng graph.run('CREATE INDEX ON :User(id)') graph.run('CREATE INDEX ON :Movie(id)') 3.2 Thực nghi m Bản Cá Tên li u Movielens100K Movielens1M Movielens20M ộ l u t ự n Số n ƣời dùng 943 6.040 138.493 Số phim 1.682 3.952 27.278 Số lƣợt rating 100.000 1.000.000 20.000.263 as 64 Thực nghi m 1: Đánh giá tốc độ gợi ý Mục đ ch thực nghiệm đánh giá tốc độ gợi ý phim cho ngƣời dùng cách: i) Nạp xử lý trực tiếp liệu từ file csv Python; ii) Dữ liệu lƣu sở liệu Neo4j Thao tác thực nghiệm: t nh đƣa danh sách phim cho ngƣời dùng cụ thể sử dụng độ đo Cosin Kết thực nghiệm liệu nhƣ sau: Bản Kết t ự n Bộ li u tố độ xử lý Dữ li u csv Dữ li u Neo4j Movielens100K 0.16s 0.19s Movielens1M 2.4s 1.6s Movielens20M Không xử lý đƣợc 24.23s Qua thực nghiệm cho thấy với liệu lớn việc gợi ý liệu đƣợc lƣu trữ tr n sở liệu mơ hình đồ thị hiệu thời gian Qua thấy đƣợc sử dụng mơ hình đồ thị hệ gợi ý thực tế Thực nghiệm Đánh giá độ xác gợi ý Dữ liệu đánh giá: Bộ liệu Movielens 100K đƣợc chia làm phần đánh giá huấn luyện theo tỷ lệ 20%, 80% với cách chia khác đƣợc cung cấp Movilens Group Cách đánh giá đƣợc thực theo Thuật toán Thuật toán Kết đánh giá nhƣ Bảng 3.3 65 Bản 3 ết t ự n độ n xá RMSE MAE PRECISION RECALL F1 SCORE Cosin 1.047 0.831 0.870 0.895 0.882 Pearson 0.987 0.764 0.897 0.869 0.883 3.3 Phân tích kết thực nghi m Qua việc thực nghiệm ta thấy việc sử dụng sở liệu mơ hình đồ thị để lƣu trữ tính tốn cho gợi ý có ƣu điểm: i) Tốc độ tính tốn nhanh chức lọc cộng tác dùng nhiều thao tác duyệt quan hệ; ii) Công cụ truy vấn sở liệu (cụ thể Cypher Neo4j thực nghiệm) đủ khả t nh toán cho chức hệ gợi ý sử dụng câu lệnh đơn giản 66 KẾT LUẬN Luận văn tập trung vào khai thác, sử dụng sở liệu đồ thị Neo4j để giải toán Hệ gợi ý liệu lớn đặc biệt liệu có cấu trúc dạng đồ thị * Các kết đạt đƣợc: Với đề tài: ―SỬ DỤNG CƠ SỞ DỮ LIỆU ĐỒ THỊ TRONG HỆ GỢI Ý‖ Luận văn trình bày kiến thức tổng quan CSDL đồ thị, cụ thể CSDL đồ thị Neo4j phƣơng pháp tiếp cận để xây dựng hệ thống gợi ý Hệ thống hóa sở lý thuyết hệ gợi ý phân tích, tổng hợp nghiên cứu liên quan nhằm đề quy trình, lựa chọn cơng cụ thích hợp để xây dựng hệ thống gợi ý dựa lọc cộng tác Hệ gợi ý sử dụng phƣơng pháp lọc cộng tác có ƣu điểm khơng đòi hỏi biểu diễn sản phẩm dƣới dạng đặc trƣng Lọc cộng tác cho kết xác số dạng tốn khơng u cầu nhiều đặc trƣng (nội dung) sản phẩm Tuy nhiên, lọc cộng tác gặp nhiều hạn chế cần phải tiếp tục nghiên cứu nhƣ: vấn đề ngƣời dùng mới, vấn đề sản phẩm mới, vấn đề liệu thƣa… Luận văn áp dụng thuật tốn thơng dụng hệ gợi ý phƣơng pháp lọc cộng tác vào CSDL Neo4j để thực toán gợi ý tập liệu Movielens Kết thực nghiệm cho thấy việc sử dụng CSDL Neo4j vào hệ gợi ý liệu lớn đạt đƣợc độ tin cậy cần thiết * Hƣớng phát tri n, mở rộn đề tài: Thế giới trình chuyển đổi số, với đột phá cơng nghệ số (Điện tốn đám mây, IoT, AI, Block chain, Big data, Data science ), 67 tăng trƣởng liệu nhanh thời gian ngắn, khối lƣợng liệu cực lớn đƣợc thu thập theo thời gian mà vấn đề xử lý phân tích q phức tạp với cơng cụ quản trị sở liệu thông thƣờng Trong nghiên cứu luận văn khai thác thƣ viện sở liệu đồ thị kết hợp với kỹ thuật Graph Learning để giải toán gợi ý phƣơng pháp học máy Cùng với luận văn tiếp tục phát triển kỹ thuật để tăng tốc độ xử lý kỹ thuật tính tốn song song cụm máy t nh để gợi ý với sở liệu lớn 68 DANH MỤC TÀI LIỆU THAM KHẢO [1] Renzo Angles, "The Property Graph Database Model," http://ceurws.org/, Vols Vol-2100, no May 21-25, p paper26, 2018 [2] Aleksa Vukotic, Nicki Watt, Tareq Abedrabbo and Dominic Fox, "Neo4j in Action," Manning Publications, December 2014 [3] "Neo4j Documentation," Neo4j, Inc., [Online] Available: https://neo4j.com/docs [Accessed 28 01 2021] [4] "The Neo4j Cypher Manual v4.2," [Online] Available: https://neo4j.com/docs/cypher-manual/current/ [Accessed 16 06 2021] [5] Charu C Aggarwal, "Recommender Systems," Springer, 2016 [6] Trần Thiên Thành, "Sử dụng sở liệu mơ hình đồ thị hệ gợi ý," Kỷ yếu Hội thảo CITA 2021, Trường Đại học Công nghệ thông tin truyền thông Việt – Hàn, Đà Nẵng, 2021 [8] Vũ Sơn Lâm, L Quang Hùng, Nguyễn Văn Vinh, "Đánh giá hệ gợi ý: Khảo sát thực nghiệm", Hội thảo quốc gia lần thứ XXIII: Một số vấn đề chọn lọc Công nghệ thông tin truyền thông – Quảng Ninh , 5-6/11/2020 [9] "Tutorialspoint," [Online] Available: https://www.tutorialspoint.com/neo4j/neo4j_overview.htm [Accessed 28 01 2021] [10] Noor Mohammedali, "Recommendation System Based on Graph Database Techniques," International Research Journal of Engineering and Technology, vol 06, 2019 [11] Rik Van Bruggen, "Learning Neo4j," Packt, 2014 69 [12] Mark Needham and Amy E Hodler, "Graph Algorithms: Practical Examples in Apache Spark and Neo4j," O'Reilly Media, 2020 [13] Michael D Ekstrand, John T Riedl and Joseph A Konstan, "Collaborative Filtering Recommender Systems," Foundations and Trends® in Human–Computer Interaction, vol 4, pp 81-173, 2011 [14] Greg Linden, Brent Smith and Jeremy York, "Item-to-Item Collaborative Filtering," IEEE Internet Computing, vol 7, pp 76-80, 2003 ... 1.1 Cơ sở liệu đồ thị 1.1.1 Khái niệm đồ thị 1.1.2 Cơ sở liệu đồ thị (Graph Database) 1.1.3 Một số ứng dụng sở liệu đồ thị 18 1.2 Cơ sở liệu đồ thị Neo4j... luận văn sử dụng Neo4j để thực nghiệm) vƣợt trội mối quan hệ nhiều-nhiều 13 1.1.2.3 Dữ liệu đồ thị Cơ sở liệu đồ thị Trong phần này, luận văn sử dụng sở liệu Neo4j để giới thiệu sở liệu đồ thị Neo4j... vụ n n u Sử dụng sở liệu đồ thị mà cụ thể Neo4J để lƣu trữ liệu hệ gợi ý xây dựng chức t nh toán hệ gợi ý cơng cụ lập trình Neo4j Thực nghiệm chức hệ gợi ý liệu MovieLens để đƣa gợi ý phim cho