Tải bản đầy đủ (.docx) (98 trang)

ĐỒ ÁN CÔNG NGHỆ PHẦN MỀM : Đề tài Ứng dụng gợi ý địa điểm du lịch ở đà nẵng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (5.46 MB, 98 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG
KHOA 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


ĐỒ ÁN CN CÔNG NGHỆ PHẦN MỀM

GVHD: Thầy Nguyễn Văn Hiệu

Ý KIẾN ĐÁNH GIÁ CỦA GIẢNG VIÊN
……………………………………………………………………………
……………………………………………………………………………


……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………

2


ĐỒ ÁN CN CÔNG NGHỆ PHẦN MỀM

GVHD: Thầy Nguyễn Văn Hiệu


…………………………………………………………………………

LỜI NÓI ĐẦU
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".
Đặc biệt chúng em xin gửi lời cảm ơn chân thành nhất tới thầy giáo Nguyễn
Văn Hiệu đã quan tâm giúp đỡ, hướng dẫn chúng em hoàn thành tốt đồ án này
trong thời gian qua.
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

3


ĐỒ ÁN CN CÔNG NGHỆ PHẦN MỀM

GVHD: Thầy Nguyễn Văn Hiệu

Mụ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


ĐỒ ÁN CN CÔNG NGHỆ PHẦN MỀM

GVHD: Thầy Nguyễn Văn Hiệu

4.1.3. Tương tác với địa điểm du lịch...........................................................................52
4.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


5


ĐỒ ÁN CN CÔNG NGHỆ PHẦN MỀM

GVHD: Thầy Nguyễn Văn Hiệu

DANH 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

6


ĐỒ ÁN CN CÔNG NGHỆ PHẦN MỀM

GVHD: Thầy Nguyễn Văn Hiệu

DANH 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

7


ĐỒ ÁN CN CÔNG NGHỆ PHẦN MỀM

GVHD: Thầy Nguyễn Văn Hiệu

1. 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ịch mạnh mẽ. Trong những năm gần đây, nhiều địa điểm nổi tiếng của Đà
Nẵng được nhiề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 trong tươ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,
hay nhữ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 đất nướ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
trong việc gợi ý địa điểm cho người dùng. Vì thế, đã có rất nhiều du khách đã

bỏ lỡ rất nhiề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ời nhấ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ý do trê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ừng ngườ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ện lợ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 tin nhiề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ừng người.
1.2. Mục tiêu đề tài
 Tìm hiểu về quy trình phát triển một sản phẩm phần mềm
 Tìm hiểu về hệ thống gợi ý
 Ứng dụng hệ thống gợi ý xây dựng ý tưởng, vận dụng thực tế và phát triển sản
phẩm phần mềm
1.3. Đối tượng nghiên cứu
 Hệ thống du lịch thành phố Đà Nẵng
 Các đối tượng tham gia
- Khách du lịch

8


ĐỒ ÁN CN CÔNG NGHỆ PHẦN MỀM

GVHD: Thầy Nguyễn Văn Hiệu


- Các công ty du lịch
- Lữ hành
2. 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 Google
mua 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ễn
thông và thiết bị cầm tay như:
Texas Instruments, Broadcom Corporation, Google, HTC, Intel, LG, Marvell
Technology Group, Motorola, Nvidia, Qualcomm, Samsung Electronics, Sprint
Nextel, 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 T- 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 đó, Google lại tiếp
tục công bố sự ra mắt phiên bản Android SDK release Candidate 1.0. Trong tháng 10
năm 2008, Google được cấp giấy phép mã nguồn mở cho Android Platform.
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ác
thà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 cho
9



ĐỒ ÁN CN CÔNG NGHỆ PHẦN MỀM

GVHD: Thầy Nguyễn Văn Hiệu

cá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ện
ngườ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à
Android Dev Phone 1 có thể chạy được các ứng dụng Android mà không bị ràng
buộ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à cho
phé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ảng
cù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ều
hành này. Ở cả hai phiên bản 1.0 và 1.1 Android chưa hỗ trợ soft-keyboard mà đòi
hỏ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ách
phá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ẳng
hạ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.

10


ĐỒ ÁN CN CÔNG NGHỆ PHẦN MỀM

GVHD: Thầy Nguyễn Văn Hiệu


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 được
tá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.
M – 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 Presenter
thô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 trung
gian 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ới
nhau). 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ìm kiế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ản phẩ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ống
thô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ần
thiế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 ra

quyế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ủa
mì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ến
nào nên đọc…

11


ĐỒ ÁN CN CÔNG NGHỆ PHẦN MỀM

GVHD: Thầy Nguyễn Văn Hiệu

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ựa
trê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 (Machine
Learning), đư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úp
tối ưu hóa doanh thu qua up-sale, cross-sale. Cải thiện trải nghiệm người dùng, tăng
hiệ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ách
hàng thật.
2.2.2. Lịch sử phát triển
Nghiên cứu các hệ gợi ý liên quan tới các kỹ thuật và các công cụ hệ thống
phân lớp thông tin. Tuy nhiên các hệ gợi ý được nghiên cứu độc lập từ những năm
1990. Những năm gần đây sự quan tâm về các hệ gợi ý đã gia tăng nhanh chóng,
được thể hiện:
• Các hệ gợi ý đóng vai trò quan trọng trong các website đã được đánh giá
cao như: amazon.com, youtube.com, yahoo . . . Hơn nữa nhiều công ty đa phương
tiện hiện nay đang phát triển và triển khai các hệ gợi ý như một phần dịch vụ mà học
cung cấp tới khách hàng của họ. Ví dụ Netflix, dịch vụ cho thuê phim trực tuyến, họ
đưa ra giải thưởng 1 triệu dollar cho nhóm đầu tiên cải thiện đáng kể hiệu năng hệ
gợi ý của họ (cải thiện 10% hiệu năng).
• Đã 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 quan

tớ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ông nghệ
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ọc
hiệ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 and
Applications (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 ý

12


ĐỒ ÁN CN CÔNG NGHỆ PHẦN MỀM

GVHD: Thầy Nguyễn Văn Hiệu

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ân
biệ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ịch
thườ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ịch
nhằm mục đích tăng doanh thu, cho thuê được nhiều phòng nghỉ hơn, tăng số lượng du
khá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 du
lịch.

Đố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ác
cô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 được
gợ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 ra
mộ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ách
hà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 quan
tâ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ất
hoặ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ới
tươ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ệu
quả 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ủa
ngườ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ăng
cá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 đãi
vớ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ủa
mộ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ượt
13



ĐỒ ÁN CN CÔNG NGHỆ PHẦN MỀM

GVHD: Thầy Nguyễn Văn Hiệu

tươ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 vi
duyệ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ười
dù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ủa
ngườ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ử
dụ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ản
xuấ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ường
hợ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ượng
sả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ác
sả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êm
truy 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ốt
tớ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 để cho
phép họ thử nghiệm hành vi của họ, ngoài các yêu cầu gợi ý.

14


ĐỒ ÁN CN CÔNG NGHỆ PHẦN MỀM

GVHD: Thầy Nguyễn Văn Hiệu

• 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ần
thiế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ống
nhau.
• 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ản
phẩ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
dùng khác khi mua một sản phẩm cụ thể (thông qua đánh giá sản phẩm…). Tác động
củ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ày

phụ 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 đều
khô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ài
phạ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ên
hà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.

15


ĐỒ ÁN CN CÔNG NGHỆ PHẦN MỀM


GVHD: Thầy Nguyễn Văn Hiệu

Ví dụ cụ thể cho hệ thống chúng em đang xây dựng, bằng cách sử dụng thông
tin của người dùng đăng ký và đánh giá các địa điểm, hệ thống có thể nhóm những
ngườ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.

Hì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óm
ngườ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.

16


ĐỒ ÁN CN CÔNG NGHỆ PHẦN MỀM

GVHD: Thầy Nguyễn Văn Hiệu

Hì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 ra
nhó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ếp
cậ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ựa
trên user để áp dụng cho hệ thống của mình

17


ĐỒ ÁN CN CÔNG NGHỆ PHẦN MỀM

GVHD: Thầy Nguyễn Văn Hiệu

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ách
quan 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");
data_from_database = pd.DataFrame(index=allUser,columns=allItem)
data_from_database[:] = -5;
allRating = getListObject("select id_user, id_location, score from evaluation")
for i in allRating:
if(i[0]
in
data_from_database.index
and

i[1]
in
data_from_database.columns):
data_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ần
thự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ận
biế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 định
danh user và item. Điều này giúp chúng em nghĩ ngay đến cấu trúc dữ liệu DataFrame
củ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.

18


ĐỒ ÁN CN CÔNG NGHỆ PHẦN MỀM

GVHD: Thầy Nguyễn Văn Hiệu

Hình 6: Ma trân user-item ban đầu

Tuy nhiên vẫn còn nhiều cặp giá trị đánh giá user-item còn thiếu nên việc
chú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 trung
bình của item đó.
dictAverageScore = {};
for i in data_from_database.columns:
listData = [item for item in data_from_database.loc[:,i] if item >= 0]
if len(listData) == 0:

dictAverageScore[i] = 0;
else:

19


ĐỒ ÁN CN CÔNG NGHỆ PHẦN MỀM

GVHD: Thầy Nguyễn Văn Hiệu

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

Như 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ách
giữ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 ma
trận user-user này. Ở đây chúng em quyết định chọn khoảng cách Euclidear để biểu

20


ĐỒ ÁN CN CÔNG NGHỆ PHẦN MỀM

GVHD: Thầy Nguyễn Văn Hiệu


diễ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.
for i in data_item_base_frame.columns:
u = data_from_database.loc[i,:];
u1 = u.index.tolist();
d1 = [u[index] if u[index] > 0 else averageEvaluation[index] for index in u1];
for j in data_item_base_frame.columns:
v = data_from_database.loc[j,:];
v1 = v.index.tolist();
d2 = [v[index] if v[index] > 0 else averageEvaluation[index] for index in
v1];
data_item_base_frame.loc[i, j] = distance.euclidean(d1,d2)
Từ ma trận khoảng cách ta đã có được đối với từng user tìm ra được K user
tương đồng của User đó.
for i in range(0, len(data_item_base_frame.columns)):
data_neighbors.iloc[i,:10] = data_item_base_frame.iloc[0:,
i].sort_values(ascending=True)[1:11].index
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 đánh
giá 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úp cho
chúng ta đánh giá được những Item đã được user tiếp cận và đâu là các Item tiềm
năng để gợi ý cho user.
data_sims = pd.DataFrame(index=data_neighbors.index,columns=range(1, 11))
for i in range(0, len(data_item_base_frame.index)):
list2 = data_from_database.iloc[i,:].tolist();
data_tmp = pd.DataFrame(index=data_neighbors.iloc[i,:], columns =
data_from_database.columns)
for k in data_tmp.index:
list1 = data_from_database.loc[k,:].tolist();
data_tmp.loc[k,:] = numpy.subtract(list1,list2);


21


ĐỒ ÁN CN CÔNG NGHỆ PHẦN MỀM

GVHD: Thầy Nguyễn Văn Hiệu

data_sims.iloc[i,:] = data_tmp.max().nlargest(10).index
return data_sims
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ất
quan 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ùng
Thread để 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ụng
trê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.
Ưu điểm của ngôn ngữ Java:

+ Là ngôn ngữ hướng đối tượng
+ Có nền tảng độc lập
+ Đa luồng: khả năng một chương trình thực hiện đồng thời nhiều tác vụ trong
một
2.3.2. Framework Spring
Spring là một framework phát triển các ứng dụng Java.Nó giúp tọa các ứng
dụng có hiệu năng cao, dể kiểm thử, sử dụng lại code,….
Spring là một mã nguồn mở, được phát triển, chia sẻ và có cộng đồng người
dùng rất lớn.
22


ĐỒ ÁN CN CÔNG NGHỆ PHẦN MỀM

GVHD: Thầy Nguyễn Văn Hiệu

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 cho
cá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ác
resource. Ví dụ:
URL tạo địa điểm : Tương ứng với HTTP
method 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 trong
tiế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ác
framework 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
những kĩ thuật hiện đại như SFC (single file components) và các thư viện hỗ trợ, Vue
cũ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
STT

Họ và tên

Công việc

23


ĐỒ ÁN CN CÔNG NGHỆ PHẦN MỀM

1


Phạm Thế Phúc

GVHD: Thầy Nguyễn Văn Hiệu

- 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ương
pháp K láng giềng gần nhất
- Xử lý dữ liệu gợi ý

2

Nguyễn Ngọc Nam

-

3

Nguyễn Văn Hoàng


Xây dựng mô hình MVP cho ứng dụng
Mobile
Xây dựng front-end cho đăng ký, đăng
nhập tài khoản
Xây dựng và truyền dữ liệu trang chủ,
trang thể loại địa điểm, trang tin tức nổi
bật, trang tin mới
Xây dựng trang chi tiếc địa điểm
Tạo form đánh giá địa điểm
Xử lý yêu thích địa điểm

- Xây dựng giao diện website
- Thiết kế và xử lý dữ liệu phía front-end
Viế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

24


ĐỒ ÁN CN CÔNG NGHỆ PHẦN MỀM

4

GVHD: Thầy Nguyễn Văn Hiệu

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ý hình ảnh
Quản lý User
Xử lý lưu đánh giá, lưu thông tin yêu
thích địa điểm của User
Tìm hiểu và phân tích thiết kế phân quyền
của hệ thống

3.2. Phân tích và thiết kế hệ thống
3.2.1. Tác nhân
3.2.1.1 Quản trị viên
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
+ 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:


25


×