Hiện nay, công nghệ thông tin phát triển từng ngày. Việc vận dụng công nghệ thông tin để xây dựng cuộc sống hiện đại hơn là việc cấp thiết trong xã hôi. Đà Nẵng là thành phố phát triển mạnh mẽ về du lịch. Cần có một ứng dụng hổ trợ khách du lịch trong quản thời gian đi du lịch và cũng như tạo sự thoải mái cho du khách trong việc tìm kiếm địa điểm du lịch. Vì những lý do trên, chúng em quyết đinh chọn đề tài: “Xây dựng hệ thống ứng dụng gợi ý địa điểm du lịch.
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO ĐỒ ÁN CHUYÊN NGÀNH CÔNG NGHỆ PHẦN MỀM
ỨNG DỤNG GỢI Ý ĐỊA ĐIỂM
DU LỊCH Ở ĐÀ NẴNG
Giảng Viên Hướng Dẫn: TS Nguyễn Văn Hiệu
SINH VIÊN THỰC HIỆN:
Cao Thị Anh Đào - 14T2
Nguyễn Văn Hoàng - 14T2
Nguyễn Ngọc Nam – 14T2
Phạm Thế Phúc – 14T2
Đà Nẵng, 12/2018
Trang 2Ý KIẾN ĐÁNH GIÁ CỦA GIẢNG VIÊN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
LỜI NÓI ĐẦU
Trang 3Hiện nay, công nghệ thông tin phát triển từng ngày Việc vận dụng công nghệ thông tin để xây dựng cuộc sống hiện đại hơn là việc cấp thiết trong xã hôi
Với điều kiện thời gian cũng như kinh nghiệm còn hạn chế của một sinh viên,
đồ án này không thể tránh được những thiếu sót Chúng em rất mong nhận được sự chỉ bảo, đóng góp ý kiến của các thầy cô để chúng em có điều kiện bổ sung, nâng cao kiến thức của mình.
Nhóm sinh viên thực hiện
Trang 4Mục lục
DANH SÁCH HÌNH ẢNH 6
DANH SÁCH BẢNG 7
1 TỔNG QUAN ĐỀ TÀI 8
1.1 Bối cảnh hiện tại 8
1.2 Mục tiêu đề tài 8
1.3 Đối tượng nghiên cứu 8
2 CƠ SỞ LÝ THUYẾT 9
2.1 Nền tảng Android 9
2.1.1 Lịch sử phát triển 9
2.1.2 Mô hình lập trình MVP trong Android 10
2.2 Hệ thống gợi ý 11
2.2.1 Tổng quan 11
2.2.2 Lịch sử phát triển 12
2.2.3 Chức năng của các hệ thống gợi ý 12
2.2.5 Các bước tiến hành 17
2.3 Framework Spring 21
2.3.1 Ngôn ngữ lập trình Java 21
2.3.2 Framework Spring 22
2.3.3 Restful API với Spring boot 22
2.4 Framwork Veu js 22
3 PHÂN TÍCH THIẾT KỀ 23
3.2 Phân tích và thiết kế hệ thống 24
3.2.2 Sơ đồ ca sử dụng và đặc tả 26
3.2.2.1 Quản lý User của hệ thống 26
3.3 Cơ sở dữ liệu 30
3.3.1 Mô hình thiết kế cơ sở dữ liệu 30
3.3.2 Mô tả cơ sở dữ liệu 31
4 MÔ TẢ CHỨC NĂNG HỆ THỐNG 36
4.1 Khách du lịch 36
4.1.1 Quản lý tài khoản cá nhân 36
4.1.2 Xem thông tin du lịch 44
4.1.3 Tương tác với địa điểm du lịch 52
Trang 54.2 Người quản trị 56
4.2.2 Quản lý người dùng hệ thống 57
4.2.3 Quản lý địa điểm du lịch 62
4.2.4 Quản lý ảnh địa điểm du lịch: 68
4.2.5 Quản lý các loại địa điểm 70
4.2.6 Quản lý chủ đề du lịch 74
5 KẾT QUẢ ĐẠT ĐƯỢC 77
5.1 Mobile 77
5.1.1 Tài khoản: 77
5.1.2 Chức năng chính – Gợi ý địa điểm du lịch cho người dùng 79
5.1.3 Chức năng tương tác với ứng dụng 80
5.1.4 Chức năng xem địa điểm theo nhóm 83
5.2 Web 84
5.2.1 Login 84
5.2.3 Quản lý địa điểm 85
5.2.4 Quản lý user của hệ thống 87
6 KẾT LUẬN 92
6.1 Kết quả đạt được 92
6.1.1 Về mặt kiến thức: 92
6.1.2 Về sản phẩm: 92
6.2 Hướng phát triển 92
TÀI LIỆU THAM KHẢO 93
Trang 6DANH SÁCH HÌNH ẢNH
Hình 1: Android Timeline 9
Hình 2: Cấu trúc mô hình MVP tổng quát 10
Hình 3:Minh họa lọc cộng tác 16
Hình 4:Lọc dựa trên User 16
Hình 5: Lọc dựa trên Item 17
Hình 6: Ma trân user-item ban đầu 18
Hình 7:Ma trận user-item sau khi điền các giá trị trung bình 19
Hình 8: Use case quản lý User 26
Hình 9: Use case quản lý địa điểm 27
Hình 10: Use case quản lý thể loại địa điểm 27
Hình 11: Use case quản lý loại địa điểm 28
Hình 12: Biểu đồ hoạt động xem địa điểm du lịch của User 28
Hình 13: Biểu đồ hoạt động quản lý địa điểm du lịch của Admin và Mod 29
Hình 14: Diagram cơ sở dữ liệu 31
Hình 15: Màn hình đăng ký và đăng nhập của user 77
Hình 16: Màn hình thông tin cá nhân của user 78
Hình 17: Màn hình trang chủ của ứng dụng 79
Hình 18: Thông tin chi tiết của một địa điểm 80
Hình 19: Yêu thích một địa điểm 81
Hình 20: Đánh giá một địa điểm 82
Hình 21 :Ghi chú thông tin cho một địa điểm 82
Hình 22: Danh sách địa điểm theo thể loại 83
Hình 23: Xem danh sách các địa điểm nổi bật 83
Hình 24: Trang login 84
Hình 25: Trang quản lý loại địa điểm 84
Hình 26: Quản lý loại địa điểm 85
Hình 27: Xem danh sách các địa điểm trong hệ thống 85
Hình 28: Thêm mới một địa điểm vào hệ thống 86
Hình 29: Trang quản lý user của hệ thống 87
Hình 30: Thêm mới Mod cho hệ thống Web 87
Trang 7DANH SÁCH BẢNG
Bảng 1: Phân chia công việc 23
Bảng 2: Cấu trúc bảng Người dùng 31
Bảng 3: Cấu trúc bảng thông tin người dùng 31
Bảng 4: Cấu trúc bảng loại địa điểm 31
Bảng 5: Cấu trúc bảng thể loại địa điểm 31
Bảng 6: Cấu trúc bảng địa điểm 32
Bảng 7: Cấu trúc bảng địa chỉ 32
Bảng 8: Cấu trúc bảng trạng thái hoạt động 32
Bảng 9: Cấu trúc bảng Liên Lạc 33
Bảng 10: Cấu trúc bảng thời lượng 33
Bảng 11: Cấu trúc bảng Nội dung 33
Bảng 12: Cấu trúc bảng hình ảnh 33
Bảng 13: Cấu trúc bảng Ghi Chú 34
Bảng 14: Cấu trúc bảng Đánh Giá 34
Bảng 15: Cấu trúc bảng Bình luận 34
Bảng 16: Cấu trúc bảng Yêu Thích 34
Bảng 17: Cấu trúc bảng phân quyền 35
Bảng 18: Cấu trúc bảng các quyền 35
Bảng 19: Cấu trúc bảng phân quyền của tài nguyên 35
Trang 81 TỔNG QUAN ĐỀ TÀI
1.1 Bối cảnh hiện tại
Hiện nay, như các bạn biết, Đà Nẵng là một thành phố phát triển về du lịchmạnh mẽ Trong những năm gần đây, nhiều địa điểm nổi tiếng của Đà Nẵng đượcnhiều người trong và ngoài nước biết đến và được quảng bá mạnh mẽ Đà Nẵng cũng
đã đề ra mục tiêu trọng tâm kinh tế của thành phố là phát triển du lịch Do vậy trongtương lai, ở đây sẽ hình thành thêm nhiều địa điểm mới Như vậy, chúng ta sẽ có một
số lượng khủng lồ các địa điểm du lịch
Khách du lịch đến với Đà Nẵng không những là những người lân cận, haynhững người trong nước, mà còn rất đông khách du lịch từ khắp mọi nơi trên đấtnước Điểm chung của họ khi đến với Đà Nẵng là có thể có trải nghiệm thú vị ở đây.Đặc biệt là phù hợp với họ, đúng tính cách, sở thích du lịch của họ
Hiện nay, do chưa có một ứng dụng hay website nào hổ trợ mọi người trongviệc gợi ý địa điểm cho người dùng Vì thế, đã có rất nhiều du khách đã bỏ lỡ rấtnhiều địa điểm phù hợp với họ hoặc tốn nhiều thời gian để tìm kiếm Điều tuyệt vờinhất khi đi du lịch là có một chuyến đi ấn tượng và thoải mái Nhưng vì những lý dotrên, khách du lịch rất mong có một ứng dụng nào có thể giúp họ giải quyết vấn đề đó
Nhìn từ vấn đề cấp thiết của Đà Nẵng, chúng em nhận thấy, cần xây dựng mộtứng dụng có thể giúp được khách du lịch có những gợi ý chính xác phù hợp với từngngười, từng lứa tuổi, từng tính cách, góp phần giúp chuyến du lịch của họ thêm tiệnlợi và ý nghĩa
Sự phát triển nhanh chóng của công nghệ thông tin và internet, ngày càng cónhiều thông tin được tạo ra và được tái sử dụng trên internet Từ đó, lượng thông tinnhiều nên đã gây ra tình trạng quá tải thông tin Tuy nhiên, sự quan tâm của mỗi ngườiđến nguồn thông tin đó là hoàn toàn khác nhau Các hệ thống gợi ý đã giải quyết vấn
đề quá tải bằng cách lọc những thông tin cần thiết, phù hợp với nhu cầu của từngngười
Trang 92 CƠ SỞ LÝ THUYẾT
2.1 Nền tảng Android
2.1.1 Lịch sử phát triển
Ban đầu, Android là hệ điều hành cho các thiết bị cầm tay dựa trên lõi Linux
do công ty Android Inc (California, Mỹ) thiết kế Công ty này sau đó được Googlemua lại vào năm 2005 và bắt đầu xây dựng Android Platform Các thành viên chủchốt ở Android Inc gồm có: Andy Rubin, Rich Miner, Nick Sears, and Chris White
Hình 1: Android Timeline
Và sau tiếp, vào cuối năm 2007, thuộc về Liên minh Thiết bị Cầm tay MãNguồn mở (Open Handset Alliance) gồm các thành viên nổi bật trong ngành viễnthông và thiết bị cầm tay như:
Texas Instruments, Broadcom Corporation, Google, HTC, Intel, LG, MarvellTechnology Group, Motorola, Nvidia, Qualcomm, Samsung Electronics, SprintNextel, T-Mobile, ARM Holdings, Atheros Communications, Asustek Computer Inc,Garmin Ltd, Softbank, Sony Ericsson, Toshiba Corp, and Vodafone Group,…
Phiên bản SDK lần đầu tiên phát hành vào tháng 11 năm 2007, hãng Mobile cũng công bố chiếc điện thoại Android đầu tiên đó là chiếc T-Mobile G1,chiếc smartphone đầu tiên dựa trên nền tảng Android Một vài ngày sau đó, Googlelại tiếp tục công bố sự ra mắt phiên bản Android SDK release Candidate 1.0 Trongtháng 10 năm 2008, Google được cấp giấy phép mã nguồn mở cho Android Platform
T-Khi Android được phát hành thì một trong số các mục tiêu trong kiến trúc của
nó là cho phép các ứng dụng có thể tương tác được với nhau và có thể sử dụng lại cácthành phần từ những ứng dụng khác Việc tái sử dụng không chỉ được áp dụng chocác dịch vụ mà nó còn được áp dụng cho cả các thành phần dữ liệu và giao diệnngười dùng
Vào cuối năm 2008, Google cho phát hành một thiết bị cầm tay được gọi là
Trang 10Android Dev Phone 1 có thể chạy được các ứng dụng Android mà không bị ràngbuộc vào các nhà cung cấp mạng điện thoại di động Mục tiêu của thiết bị này là chophép các nhà phát triển thực hiện các cuộc thí nghiệm trên một thiết bị thực có thểchạy hệ điều hành Android mà không phải ký một bản hợp đồng nào Vào khoảngcùng thời gian đó thì Google cũng cho phát hành một phiên vản vá lỗi 1.1 của hệ điềuhành này Ở cả hai phiên bản 1.0 và 1.1 Android chưa hỗ trợ soft-keyboard mà đòihỏi các thiết bị phải sử dụng bàn phím vật lý Android cố định vấn đề này bằng cáchphát hành SDK 1.5 vào tháng Tư năm 2009, cùng với một số tính năng khác Chẳnghạn như nâng cao khả năng ghi âm truyền thông, vật dụng, và các live folder
2.1.2 Mô hình lập trình MVP trong Android
Hình 2: Cấu trúc mô hình MVP tổng quát
MVP là một mô hình kiến trúc hướng giao diện người dùng, được thiết kế để tạo thuận lợi cho việc kiểm thử đơn vị (unit testing) và tăng tính tách biệt giữa tầng dữliệu và tầng hiển thị dữ liệu trong mô hình MVC
Mô hình MVP cho phép tách tầng trình diễn (Presenter) ra khỏi tầng dữ liệu(Model), vì vậy tương tác với giao diện được tách biệt với cách chúng ta biểu diễn nótrên màn hình (View), hay nói cách khác, tất cả logic khi người dùng tương tác đượctách ra và đưa vào tầng trình diễn Thiết kế lý tưởng nhất là với cùng một logicđược áp dụng cho nhiều View khác nhau và hoán đổi được cho nhau
Trang 11M – Model: lớp xử lí dữ liệu Lớp này sẽ chịu trách nhiệm lấy dữ liệu từdatabase hoặc network một cách bất đồng bộ Sau đó sẽ trả về dữ liệu cho Presenterthông qua các hàm callback.
V- View: lớp xử lí view Lớp này chịu trách nhiệm tìm view (bind view), đưa
dữ liệu vào view, animation, kiểm soát các input event của user và gửi cho present các event
P – Presenter: lớp này sẽ là lớp xử lí các bussiness logic Đây là sẽ lớp trunggian có thể giao tiếp được với hai lớp M & V (chú ý M – V ko giao tiếp trực tiếp vớinhau) Khi lớp View nhận một input event sẽ gửi sự kiện xuống lớp P, lớp P lấy sẽliệu từ lớp Model và gửi lại cho lớp V và hướng dẫn lớp V cách hiển thị
2.2 Hệ thống gợi ý
2.2.1 Tổng quan
Với sự phát triển của Internet và thương mại điện tử hiện nay, lượng thông tin
có sẵn là vô cùng lớn, điều đó gây khó khăn và rất tốn thời gian để người dùng tìmkiếm thông tin và lựa chọn sản phẩm Yêu cầu cần có phương pháp thu thập thông tin
và đưa ra lời khuyên để hỗ trợ người dùng trong vấn đề tìm kiếm và lựa chọn sảnphẩm họ quan tâm Hệ thống gợi ý là một giải pháp được đưa ra cho vấn đề này
Hệ thống gợi ý (Recommender Systems) là một thành phần trong hệ thốngthông tin Mục đích của nó là hỗ trợ người dùng tìm kiếm được đúng thông tin cầnthiết, dự đoán sở thích hay xếp hạng mà người dùng có thể dành cho một mục thông tin(item) nào đó mà họ chưa xem xét tới trong quá khứ
Hệ thống gợi ý là hệ thống bao gồm các kỹ thuật và công cụ phần mềm nhằmđưa ra những gợi ý cho người sử dụng, đáp ứng nhu cầu của họ về một sản phẩm, dịch
vụ nào đó trên Internet Những gợi ý được cung cấp nhằm hỗ trợ người sử dụng đưa raquyết định lựa chọn những sản phẩm, dịch vụ phù hợp với nhu cầu và thị hiếu củamình, chẳng hạn như: mua sản phẩm nào, nghe thể loại nhạc gì hay tin tức trực tuyếnnào nên đọc…
Nội dung liên quan nói trên chính là các gợi ý, là kết quả được tính toán dựatrên việc thu thập dữ liệu về người dùng như khi mua hàng, khi đưa ra các đánh giá cánhân Việc thực hiện tính toán được xây dựng trên các thuật toán Học máy (MachineLearning), đưa ra các dự đoán tốt nhất về sản phẩm mà người dùng có thể thích, giúptối ưu hóa doanh thu qua up-sale, cross-sale Cải thiện trải nghiệm người dùng, tănghiệu năng hoạt động bằng tự động hóa, biến khách hàng tiềm năng trở thành kháchhàng thật
Trang 12• Đã có các cuộc hội thảo, hội nghị dành riêng cho các cống hiến liên quantới lĩnh vực này Tiêu biểu là ACM Recommender Systems, được thành lập năm
2007 và hiện nay tổ chức các sự kiện hằng năm về các nghiên cứu và ứng dụng côngnghệ gợi ý Ngoài ra, có phiên họp dành riêng cho các lĩnh vực cụ thể như:ACMSIGIR, SIGMOD
• Tại các tổ chức giáo dục trên khắp thế giới, các khoa đại học và sau đại họchiện nay đã có môn rành riêng cho nghiên cứu về hệ gợi ý, các bài hướng dẫn, sách,báo về các hệ gợi ý đã được phát hành rộng rãi
• Có nhiều tạp chí của các trường đại học phát hành về các nghiên cứu và sựphát triển trong lĩnh vự gợi ý Trong số này, các tạp chí dành riêng cho vấn đề hệ gợiý: AI Communication (2008), IEEE Intelligent Systems (2007), International Journal
of Electronic Commerce (2006), International Journal of Computer Science andApplications (2006), ACM Transactions on Computer-Human Interaction (2005), vàACM Transactions of Information Systems (2004)
2.2.3 Chức năng của các hệ thống gợi ý
Phần này sẽ trình bày về chức năng của các hệ gợi ý Trước tiên, ta cần phânbiệt rõ vai trò của các hệ gợi ý đối với nhà cung cấp dịch vụ (hệ gợi ý đại diện cho nhàcung cấp dịch vụ) và đối với người sử dụng hệ gợi ý Ví dụ như: một hệ gợi ý du lịchthường được đưa ra bởi bên môi giới du lịch hoặc nhà tổ chức quản lý điểm du lịchnhằm mục đích tăng doanh thu, cho thuê được nhiều phòng nghỉ hơn, tăng số lượng dukhách tới điểm du lịch đó Trong khi động cơ chính của người sử dụng hệ gợi ý này là
để tìm các điểm du lịch, khách sạn phù hợp và các sự kiện hấp dẫn khi đến điểm dulịch
Trang 13Đối với nhà cung cấp
Trên thực tế, có nhiều lý do để nhà cung cấp dịch vụ muốn khai tháccông nghệ này FrancescoRicci và cộng sự đã đưa ra một số lí do như sau:
• Tăng số lượng sản phẩm bán được: đây có lẽ là chức năng quan trọng nhất
đối với các hệ gợi ý thương mại điện tử, mục đích này đạt được do các sản phẩm đượcgợi ý phù hợp với các sản phẩm mà người dùng cần và người dùng mong muốn, cóthể người dùng sẽ chấp nhận mua sau khi xem gợi ý từ hệ thống Nói chung, ta có thểnói nhìn từ quan điểm của các nhà cung cấp dịch vụ, mục đích chính của việc đưa ramột hệ gợi ý là làm tăng tỷ lệ giữa lượng khách hàng mua sản phẩm và lượng kháchhàng truy cập chỉ để duyệt tìm thông tin
• Bán được các sản phẩm đa dạng hơn: chức năng này của hệ gợi ý cho phép
người dùng lựa chọn các lựa chọn các sản phẩm mà có thể rất khó để tìm thấy nếu nhưkhông có gợi ý chính xác Ví dụ, trong hệ gợi ý phim của Netflix, nhà cung cấp quantâm tới cho thuê tất cả DVD của họ, chứ không chỉ những DVD nổi tiếng, điều này cóthể rất khó nếu như không có hệ gợi ý, họ có thể gặp rủi ro trong việc quảng cáo các
bộ phim không phù hợp với thị hiếu của người dùng Như vậy, một hệ gợi ý đề xuấthoặc quảng cáo được những DVD không nổi tiếng nhưng phù hợp với người dùng
• Nâng cao sự hài lòng của người dùng: Một hệ thống gợi ý được thiết kế tốt
có thể hoàn thiện kinh nghiệm sử dụng web hoặc ứng dụng của người dùng Vớitương tác người máy hợp lý, người dùng có thể thấy được các gợi ý một cách dễ ràng,phù hợp với thị hiếu của họ Như vậy họ sẽ thích sử dụng hệ thống Sự kết hợp hiệuquả giữa các gợi ý và giao diện sử dụng sẽ làng tăng lượng đánh giá chủ quan củangười dùng về hệ thống Điều này làm tăng số lượt sử dụng hệ thống và tăng khả năngcác gợi ý được chấp nhận
• Nâng cao sự trung thành của người dùng: Một người sẽ trung thành với một
website khi mà họ truy cập, hệ thống nhận thức được đây là khách hàng cũ và đối đãivới họ như một người truy cập quan trọng Đây là một tính năng thông thường củamột hệ gợi ý Hệ gợi ý sử dụng các thông tin có được từ người dùng trong các lượttương tác trước của họ với hệ thống ví dụ như các đánh giá về các sản phẩm, hành viduyệt web Do vậy, người dùng càng tương tác nhiều với hệ thống, mô hình ngườidùng của họ sẽ càng hoàn thiện hơn, như vậy hệ thống sẽ đưa ra được các gợi ý hợp
lý, hiệu quả hơn với sở thích của người người dùng đó
• Hiểu biết tốt hơn về những mong muốn của người dùng: tính năng này của
hệ thống có thể được sử dụng lại cho nhiều ứng dụng khác, đó là mô tả về sở thích củangười dùng Có thể được thu thập một cách tường minh (đánh giá của người dùng vềsản phầm …) hoặc không tường minh được suy luận ra từ các hành vi tương tác với hệthống của người dùng, nhà cung cấp dịch vụ có thể dựa vào đó để quyết định có sử
Trang 14dụng lại tri thức này cho một mục đích khác hay không ví dụ như cải thiện quản lý sảnxuất và lưu trữ sản phẩm cần đối việc sản xuất sản phẩm theo thị hiếu người dùng
Đối với người sử dụng
Lý do để người sử dụng cần đến một hệ gợi ý:
• Tìm ra một số sản phẩm tốt nhất: hệ thống gợi ý tới người dùng một số sản
phẩm được xếp hạng và dự đoán số người dùng khác thích chúng Đây là chức năng
chính mà nhiều hệ thống thương mại điện tử sử dụng.Tìm ra tất cả sản phẩm tốt: gợi ý
tất cả sản phẩm mà có thể làm hài lòng nhu cầu của khách hàng Trong nhiều trườnghợp không đủ cơ sở để đưa ra các sản phẩm tốt nhất Điều này chỉ đúng khi số lượngsản phẩm liên quan tương đối nhỏ hoặc khi hệ gợi ý là chức năng quan trọng trongứng dụng tài chính và y tế
• Gợi ý liên tục: thay vì tập trung vào tạo gợi ý đơn, các hệ thống gợi ý tạo các
gợi ý liên tục tới người dùng cho tới khi họ tìm được sản phẩm mong muốn
• Gợi ý một nhóm sản phẩm: đề xuất một nhóm các sản phẩm mà tương
đương nhau Ví dụ như kế hoạch du lịch có thể là gồm nhiều điểm đến, các dịch vụnơi ở, các sự kiện hấp dẫn Từ quan điểm của người dùng những lựa chọn khác nhau
có thể được xem xét và được lựa chọn một điểm đến du lịch hợp lý
• Chỉ duyệt tìm: trong tác vụ này, người dùng duyệt các danh mục mà không
có ý định mua sản phẩm nào, tác vụ này đưa ra gợi ý giúp người dùng duyệt tìm cácsản phẩm có nhiều khả năng thuộc vào phạm vi sở thích của người dùng với phiêmtruy cập xác định Đây là tác vụ được hỗ trợ bởi các kỹ thuật đa phương tiện
• Tìm kiếm các gợi ý tin tưởng: một số người dùng không tin tưởng vào các hệ
thống gợi ý, họ tham gia vào hệ thống để thấy được các hệ thống này đưa ra gợi ý tốttới mức nào Do đó, một số hệ thống có thể đưa ra các chức năng chính xác để chophép họ thử nghiệm hành vi của họ, ngoài các yêu cầu gợi ý
• Cải thiện hồ sơ cá nhân người dùng: người dùng có khả năng cung cấp
thông tin, những gì họ thích, không thích với hệ thống gợi ý Điều này là hết sức cầnthiết để đưa ra các gợi ý mang tính chất cá nhân hóa Nếu như hệ thống không xácđịnh tri thức về người dùng đang hoạt động thì nó chỉ có thể đưa ra các gợi ý giốngnhau
• Bày tỏ ý kiến của mình: một số người dùng có thể không quan tâm tới các
gợi ý, đúng hơn, những gì quan trọng với họ là được góp ý kiến, đánh giá về sảnphẩm, giúp ích người khác khi lựa chọn sản phẩm này
Tác động tới những người dùng khác: trong hệ gợi ý trên web, có nhiều người
tham gia với mục tiêu của họ là tác động tới hệ gợi ý, dẫn tới ảnh hưởng tới người
Trang 15dùng khác khi mua một sản phẩm cụ thể (thông qua đánh giá sản phẩm…) Tác độngcủa họ có thể thúc đẩy hoặc gây bất lợi cho sản phẩm
Vai trò của một hệ gợi ý trong hệ thống thông tin có thể rất đa dạng, điều nàyphụ thuộc vào các kỹ thuật và nguồn tri thức được sử dụng
2.2.4 Các phương pháp
Các hệ thống gợi ý thường sử dụng nhiều thuật toán khác nhau, về cơ bản,chúng ta có thể chia làm 2 nhóm lớn
Collaborative filtering (Lọc cộng tác)
Content-based filtering (Lọc dựa vào nội dung)
Trong phạm vi của đề tài chúng em xin được trình bày về cách tiếp cận màchúng em đã chọn (Collaborative filtering) Có thể hiểu đơn giản lọc cộng tác như sau
Lọc cộng tác hoạt động dựa trên mô hình là những hành vi của người dùng
trước đó như: lịch sử giao dịch, để tìm các quy luật tương tác giữa người dùng (user)
và các thông tin (item) Do đó những hệ thống gợi ý dựa trên cách tiếp cận này đềukhông quan tâm đến các thuộc tính của item Nó có khả năng khai thác thông tin ngoàiphạm vi của các thuộc tính thông tin Mô hình huấn luyện có thể xây dựng dựa trênhành vi của một người dùng, hoặc hiệu quả hơn, nó có thể từ nhiều người dùng khác có
cùng đặc điểm Khi làm việc với hành vi của người dùng khác Lọc cộng tác sử dụng
kiến thức nhóm để tạo ra đề xuất dựa trên những người dùng tương tự Về bản chất, Nólọc trên những người có cùng sở thích, hay những người có cùng những hành vi tương
tự, cùng bấm like, cho điểm đối với cùng một item
Ví dụ cụ thể cho hệ thống chúng em đang xây dựng, bằng cách sử dụng thôngtin của người dùng đăng ký và đánh giá các địa điểm, hệ thống có thể nhóm nhữngngười dùng này dựa trên sở thích của họ Ví dụ Đa số những người dùng có đánh giácao về "Cầu Rồng" và "Cầu Sông Hàn" họ đều có đánh giá cao về "Cầu Tình Yêu" Từnhững thông tin này, hệ thống có thể nhóm họ thành nhóm những người có cùng sởthích Sau đó, khi có một người dùng khác, họ cũng có đánh giá cao về "Cầu Rồng" và
"Cầu Sông Hàn" nhưng chưa được tiếp cận với “Cầu Tình Yêu” hệ thống sẽ gợi ý cho
họ địa điểm này có thể là địa điểm mà họ quan tâm
Trang 16Hình 3:Minh họa lọc cộng tác Đối với phương pháp “Lọc cộng tác” này lại có thể chia ra thành hai cách tiếp cận nhỏ hơn đó là : User-base filtering (lọc dựa trên người dùng) và Item-base filtering (lọc dựa trên sản phẩm).
User-base filtering là cách tiếp cận dựa tìm ra người hoặc nhóm người có đặc
điểm giống với user được gợi ý nhất dựa trên lịch sử tương tác, rồi từ người hay nhómngười đã tìm được đưa ra các sản phẩm được người hoặc nhóm người này đánh giácao nhưng chưa được user kia tiếp cận
Trang 17Hình 4:Lọc dựa trên User
Item-base filtering là cách tiếp cận dựa trên lịch sử tương tác của user để tìm ranhóm các item tương tự nhau Từ việc nhóm các item như vậy hệ thống sẽ trả về gợi ýcho những item cùng nhóm với item mà user đã tương tác nhưng chưa được user tiếpcận
Hình 5: Lọc dựa trên Item
Trong hệ thống mà chúng em phát triển Chúng em quyết định chọn lọc dựatrên user để áp dụng cho hệ thống của mình
2.2.5 Các bước tiến hành
Thu thập dữ liệu
Chúng em xây dựng một ứng dụng vừa đồng thời có thể thêm mới dữ liệu vềcác địa điểm du lịch của Đà Nẵng vừa có thể đem đến những gợi ý mang tính kháchquan nhất nên chúng em quyết định chọn dữ liệu cần thu thập và là input của hệ thống
là rating của người dùng lên chính địa điểm bằng app đã xây dựng
allUser = getListData("select id from users");
allItem = getListData("select id from location");
Trang 18data_from_database.loc[i[0],i[1]] = i[2];
Biểu diển và xử lý số liệu
Sau khi thu thập được dữ liệu rating của người dùng từ hệ thống, chúng ta cầnthực hiện việc tiếp theo là biểu diễn dữ liệu và chuẩn hóa dữ liệu Để dễ dàng nhậnbiết và tính toán chúng ta cần xây dựng một ma trận mà có chỉ mục chính là các địnhdanh user và item Điều này giúp chúng em nghĩ ngay đến cấu trúc dữ liệu DataFramecủa ngôn ngữ lập trình Python Mỗi một hàng sẽ là vector tương tác của người dùngđối với item
Hình 6: Ma trân user-item ban đầu
Trang 19Tuy nhiên vẫn còn nhiều cặp giá trị đánh giá user-item còn thiếu nên việcchúng ta cần làm tiếp theo là điền vào những ô còn thiếu các giá trị sao cho phù hợp.Một cách tiếp cận khách quan chính là điền vô những ô còn trống giá trị rating trungbình của item đó
dictAverageScore[i] = numpy.sum(listData) / len(listData);
Hình 7:Ma trận user-item sau khi điền các giá trị trung bình
Trang 20Như vậy là chúng ta đã có tập dữ liệu ban đầu biểu diễn tương tác của user vàitem Việc cần làm tiếp theo là tính toán độ tương tự giữa các user để tìm ra nhóm user
có tính tương đông cao nhất
Để tìm ra độ tương tự của cặp user-user ta cần xây dựng ma trận khoảng cáchgiữa user và user
data_item_base_frame = pd.DataFrame(index=data_from_database.index,columns=data_from_database.index)
Tiếp theo ta cần tính toán khoảng cách của hai user với nhau để điền vào matrận user-user này Ở đây chúng em quyết định chọn khoảng cách Euclidear để biểudiễn khoảng cách giữa hai user với tham số truyền vào là 2 vector tương tác của userđối với các item
Rồi từ chính K user tương đồng này ta đi xây dựng ma trận khoảng cách đánhgiá giữa các user tương đồng và user được gợi ý trên từng Item Việc làm này giúpcho chúng ta đánh giá được những Item đã được user tiếp cận và đâu là các Item tiềmnăng để gợi ý cho user
Trang 21data_sims = pd.DataFrame(index=data_neighbors.index,columns=range(1 11)) for i in range(0, len(data_item_base_frame.index)):
Nhận phản hồi và thay đổi gợi ý
Ta đã có được các gợi ý ban đầu khi khởi tạo hệ thống Tuy nhiên một việc rấtquan trọng là của một hệ thống gợi ý này là khả năng nhận phản hồi từ user để thayđổi các gợi ý
Các tương tác của người dùng và các chức năng của hệ thống có thể ảnh hưởngđến chức năng gợi ý bao gồm:
Xóa một địa điểm ra khỏi hệ thống
Thêm một địa điểm vào hệ thống
Thêm một user vào hệ thống
Xóa user ra khỏi hệ thống
Thêm hoặc thay đổi một đánh giá
Đối với các tác vụ xử lý cần thời gian xử lý thì chúng em quyết định dùngThread để chạy tác vụ này để cập nhật dữ liệu và trả về các dữ liệu tạm thời
2.3 Framework Spring
2.3.1 Ngôn ngữ lập trình Java
Java là một ngôn ngữ lập trình hướng đối tượng(OOP)
Java hỗ trợ tối đa cho hệ điều hành android Vì vậy có thể phát triển ứng dụngtrên nền tảng sử dụng ngôn ngữ Java
Phù hợp với các ứng dụng có tính bảo mật, tính ứng dụng cao
Trang 22Ưu điểm của ngôn ngữ Java:
+ Là ngôn ngữ hướng đối tượng
2.3.3 Restful API với Spring boot
RESTFul API là một tiêu chuẩn dùng trong việc thiết kế các thiết kế API chocác ứng dụng để quản lý các tài nguyên, là một trong những kiểu thiết kế API được sửdụng phổ biến nhất ngày nay
Trọng tâm của REST quy định cách sử dụng các HTTP method (như GET,POST, PUT, DELETE ) và cách định dạng các URL cho ứng dụng web để quản cácresource Ví dụ:
URL tạo địa điểm : http://travelingdanang.com/location Tương ứng với HTTPmethod là POST
URL đọc thông tin chi tiếc với ID là 123:
http:// travelingdanang.com /locations/123 Tương ứng với HTTP method làGET
URL cập nhật thông tin địa điểm với ID là 123:
http:// travelingdanang.com /locations/123 Tương ứng với HTTP method làPUT
URL xoá địa điểm với ID là 123:
http:// travelingdanang.com /locations/123 Tương ứng với HTTP method làDELETE
2.4 Framwork Vue js
Là một framework linh Gọi tắt là Vue (phát âm là /vjuː/), giống như view trongtiếng Anh), Vue.js là một framework linh động (nguyên bản tiếng Anh: progressive –tiệm tiến) dùng để xây dựng giao diện người dùng (user interfaces) Khác với cácframework nguyên khối (monolithic), Vue được thiết kế từ đầu theo hướng cho phép
và khuyến khích việc phát triển ứng dụng theo từng bước Khi phát triển lớp giao diện(view layer), người dùng chỉ cần dùng thư viện lõi (core library) của Vue, vốn rất dễhọc và tích hợp với các thư viện hoặc dự án có sẵn Cùng lúc đó, nếu kết hợp với
Trang 23những kĩ thuật hiện đại như SFC (single file components) và các thư viện hỗ trợ, Vuecũng đáp ứng được dễ dàng nhu cầu xây dựng những ứng dụng một trang (SPA )
3 PHÂN TÍCH THIẾT KỀ
3.1 Phân chia công việc
Bảng 1: Phân chia công việc
1 Phạm Thế Phúc - Viết API cho mobile:
+ Danh sách địa điểm gợi ý cho người dùng+ Danh sách địa điểm theo loại kèm với thểloại địa điểm
+ Thông tin chi tiếc của một địa điểm+ Danh sách top 10 địa điểm nổi bật nhất+ Danh sách top 10 địa điểm mới nhất+ Danh sách địa điểm theo thể loại+Lấy thông tin đánh giá của user về một địađiểm
+ Đánh giá địa điểm du lịch
- Tìm hiểu về thuật toán gợi ý bằng phươngpháp K láng giềng gần nhất
- Xây dựng trang chi tiếc địa điểm
Trang 24- Tạo form đánh giá địa điểm
- Xử lý yêu thích địa điểm
3 Nguyễn Văn Hoàng - Xây dựng giao diện website
- Thiết kế và xử lý dữ liệu phía front-endViết front-end các chức năng:
+ Quản lý loại/thể loại địa điểm+ Quản lý địa điểm
+ Quản lý hình ảnh+ Quản lý User
4 Cao Thị Anh Đào Viết API cho phần web:
- Quản lý loại/thể loại địa điểm:
- Quản lý địa điểm
Quản lý loại địa điểm:
+ Xem các loại địa điểm
+ Thêm loại địa điểm
+ Sửa loại địa điểm
+ Xóa loại địa điểm
Quản lý thể loại địa điểm:
+ Xem các loại địa điểm
Trang 25+ Thêm thể loại địa điểm.
+ Sửa thể loại địa điểm
+ Xóa thể loại địa điểm
Quản lý địa điểm cụ thể:
+ Xem danh sách các địa điểm hiện có
+ Sửa thông tin của địa điểm đó
+Thay đổi trạng thái(active/unactive) của thể loại địa điểm đó
Quản lý hình ảnh của địa điểm:
+ Xem danh sách các hình ảnh của địa điểm
+ Xóa hình ảnh
+ Thêm hình ảnh
Quản lý user của hệ thống
+ Xem danh sách user của hệ thống
+ Thêm Mod cho hệ thống
+Thay đổi trạng thái hoạt động của user
Quản lý hoạt động của user (phân quyền user trong database)
+ Xem danh sách các table mà user có thể tác động
+ Xem các action( ví dụ : View, Add, Edit, Delete) của từng table đó mà user cóthể tác động
+Thêm action cho user
+Xóa action của user
3.2.1.2 Mod
- Quản lý các địa điểm của cá nhân
+ Xem danh sách các địa điểm hiện có
+ Chỉnh sửa thông tin của địa điểm đó
Trang 263.2.1.3 Khách du lich
+ Xem các địa điểm gợi ý từ ứng dụng phù hợp từng khách du lịch
+ Xem các địa điêm nổi bật ở Đà Nẵng
+ Xem các địa điểm cập nhập mới ở Đà Nẵng
+ Xem thông tin các loại địa điểm
+ Xem thông tin các thể loại địa điểm
+ Xem thông tin các địa điểm của từng loại địa điểm
+ Xem thông tin chi tiếc của địa điểm củ thể
+ Đánh dấu yêu thích địa điểm
+ Đánh giá địa điểm
+ Ghi chú thông tin cá nhân tại mỗi địa điểm và có thể xem lại sau
Trang 27Hình 8: Use case quản lý User
3.2.2.2 Quản lý địa điểm
Hình 9: Use case quản lý địa điểm
Trang 283.2.2.3 Quản lý thể loại địa điểm
Hình 10: Use case quản lý thể loại địa điểm
3.2.2.4 Quản lý loại địa điểm
Hình 11: Use case quản lý loại địa điểm
Trang 293.2.3 Biểu đồ hoạt động
3.2.3.1 Biểu đồ hoạt động xem địa điểm du lịch của User
Hình 12: Biểu đồ hoạt động xem địa điểm du lịch của User
3.2.3.2 Biểu đồ quản lý địa điểm du lịch của Admin và Mod
Hình 13: Biểu đồ hoạt động quản lý địa điểm du lịch của Admin và Mod
Trang 303.3 Cơ sở dữ liệu
3.3.1 Mô hình thiết kế cơ sở dữ liệu
Dựa vào phân tích thiết kế hệ thống và những kiến thưc được học trong môn Cơ sở dữ liệu
Trang 31Hình 14: Diagram cơ sở dữ liệu
3.3.2 Mô tả cơ sở dữ liệu
Bảng 2: Cấu trúc bảng Người dùng
Bảng “ USERS ”
Tên đăng nhập Tên đăng nhập của user Varchar 255
Bảng 3: Cấu trúc bảng thông tin người dùng
Bảng “ USER_INFO ”
Fullname Tên đầy đủ của user Varchar 255
Giới tính Giới tính của user Integer 255
Bảng 4: Cấu trúc bảng loại địa điểm
Bảng “ PLACE_TYPE ”
Bảng 5: Cấu trúc bảng thể loại địa điểm
Bảng “ PLACE_CATEGORIES ”
PlaceTypeId Id của kiểu địa điểm Integer 255
Trang 32Bảng 6: Cấu trúc bảng địa điểm
Bảng “ LOCATION ”
Introduction Giới thiệu về địa
điểm
CreateDate Ngày tạo địa điểm Timestamp
PlaceCategoryId ID của thể loại Integer 255
StatusId ID trạng thái của địa
ContactId ID thông tin liên lạc Integer 255
DurationId ID thời lượng của địa
điểm
Bảng 7: Cấu trúc bảng địa chỉ
Bảng “ ADDRESS ”
id ID địa chỉ của địa
điểm
điểm
Bảng 8: Cấu trúc bảng trạng thái hoạt động
Bảng “ STATUS ”
Trang 33Bảng 9: Cấu trúc bảng Liên Lạc
Bảng “ CONTACT ”
id ID liên lạc của địa
điểm
Phone Số điện thoại liên lạc Varchar 255
Bảng 10: Cấu trúc bảng thời lượng
Bảng “ DURATION ”
id ID thời lượng của
Detail Nội dung của địa
Trang 34Bảng 13: Cấu trúc bảng Ghi Chú
Bảng “ NOTE ”
id ID ghi chú của địa
điểm
Bảng 14: Cấu trúc bảng Đánh Giá
Bảng “ EVALUTION ”
điểm
Bảng 15: Cấu trúc bảng Bình luận
Bảng “ COMMENT ”
điểm
CommentDate Ngày viết bình luận Timestamp
Bảng 16: Cấu trúc bảng Yêu Thích
Bảng “ FAVOURITE ”
Trang 35Bảng 17: Cấu trúc bảng phân quyền
Bảng “USER_ROLES”
Bảng 18: Cấu trúc bảng các quyền
Bảng “ ROLES ”
Bảng 19: Cấu trúc bảng phân quyền của tài nguyên
Bảng “ RESOURCE_ROLE ”
CanEdit User có quyền chỉnh
CanDelete User có quyền xóa Integer 11
Trang 364 MÔ TẢ CHỨC NĂNG HỆ THỐNG
4.1 Khách du lịch
4.1.1 Quản lý tài khoản cá nhân
Use Case Name Quản lý tài khoản
Use Case ID ID01
Trang 37Screen Đăng ký tài khoản người
Description Cho phép người dùng đăng ký tài khoản và sử dùng tài khoản,mật khẩu đã đăng ký để đăng nhập sử dụng appScreen Access User chọn Đăng ký ở màn hình Đăng Nhập
Screen Content
Họ tên Text field –String (255) Ô nhập họ tên
Tên đăng nhập Text field –String (255) Ô nhập tên đăng nhập
Mật khẩu Password –String(255) Ô nhập mật khẩu
Địa chỉ Text field –String (255) Ô nhập vào địa chỉ
Số điện thoại Text field –String (11) Ô nhập vào số điện thoại
Đăng ký Button Người dùng kích vàoĐăng ký khi muốn Đăng
ký tài khoản
Screen Actions
Đăng ký Khi người dùng kích
vào Đăng ký hệ
thống kiếm tra tínhhợp lệ của dữ liệu
nếu dữ liệu hợp lệ thìlưu dữ liệu nhập vào
Chuyển đếnmàn hình đăngnhập và hiển thị
“Đăng ký thànhcông”
Khi để trống ô Họtên
->Hệ thống sẽ thôngbáo “Họ tên khôngđược trống”
Khi để trống ô Tài
Trang 38database, ngược lạihiện thông báo lỗi.
khoản- >Hệ thống sẽthông báo “Tài khoảnkhông thể trống”Khi để trống ô Mậtkhẩu->Hệ thống sẽthông báo “Mật khẩukhông thể trống”Khi có lỗi kết nối cơ
sở dữ liệu -> Hiển thịthông báo “Lỗi kếtnối cơ sở dữ liệu”
Đăng nhập
Screen Đăng nhập vào hệ thống
Description Cho phép User đã có tài khoản có thể đăng nhập vào hệ thốngScreen Access Màn hình trang đầu tiên sau khi khởi động ứng dụng
Trang 39Mật khẩu
cho Usernhập mậtkhẩu
dữ liệu không hợp lệ sẽhiển thị thông báo “Tênđăng nhập hoặc mật khẩusai”, nếu dữ liệu hợp lệ thìtiếp tục kiểm tra Tài khoảnvới mật khẩu tương ứng cótồn tại trong hệ thống haykhông, nếu có thì cho Userđăng nhập vào hệ thống,nếu không thì hiển thịthông báo “Tài khoản hoặcmật khẩu sai”
chuyển đếntrang chủ củaứng dụng
Hiện thông báo :
“Dữ liệu khônghợp lệ”
Hiện thông báo:
“Tài khoản hoặcmật khẩu sai”
Trang 40Xem thông tin chi tiếc cá nhân
Screen Xem chi tiết thông tin cá nhân
Description Cho phép User xem tất cả các thông tin của mình như: Họ tên,
avatar, địa chỉ, số điện thoại, giới tính
Screen Access User sau khi đăng nhập chọn Cá nhân -> Thông Tin Tài
Hiển thị Họ tên đầy đủcủa User