ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN BÁO CÁO ĐỒ ÁN 1 Đề tài Xây dựng ứng dụng gợi ý địa điểm homestay Giáo viên hướng dẫn Trần Thị Thanh Trúc Lớp SE121 M21 PMCL Si.
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Đinh Huỳnh Thái Bình – 19521264
Thành phố Hồ Chí Minh, 5/2022
Trang 2ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Đinh Huỳnh Thái Bình – 19521264
Thành phố Hồ Chí Minh, 5/2022
Trang 3DANH SÁCH THUẬT NGỮ VIẾT TẮT
1 API Viết tắt của Application Programming Interface - Giao diện lập
trình ứng dụng
2 BTS Viết tắt của Base Transceiver Station -Trạm thu phát sóng di động
3 GPS Viết tắt của Global Positioning System - Hệ thống định vị toàn
Trang 4LỜI CẢM ƠN
Sau quá trình học tập và rèn luyện tại khoa Công nghệ phần mềm trường Đại học Công Nghệ Thông Tin – ĐHQG TP.HCM chúng em đã được trang bị các kiến thức cơ bản, các
kỹ năng thực tế để có thể lần đầu thực hiện Đồ án 1 của mình
Để hoàn thành Đồ án này, chúng em xin gửi lời cảm ơn chân thành đến:
Ban Giám hiệu trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM vì đã tạo điều kiện về cơ sở vật chất với hệ thống thư viện hiện đại, đa dạng các loại sách, tài liệu thuận lợi cho việc tìm kiếm, nghiên cứu thông tin
Chúng em xin gửi lời cảm ơn chân thành đến thầy Nguyễn Thị Thanh Trúc đã tận tình giúp đỡ, định hướng cách tư duy và cách làm việc khoa học Đó là những góp ý hết sức quý báu không chỉ trong quá trình thực hiện luận văn này mà còn là hành trang tiếp bước cho chúng em trong quá trình học tập và lập nghiệp sau này
Và cuối cùng, chúng em xin gửi lời cảm ơn đến gia đình, tất cả thầy cô trong khoa, bạn bè, tập thể lớp KTPM2019 là những người luôn sẵn sàng sẻ chia và giúp đỡ trong học tập và cuộc sống Mong rằng, chúng ta sẽ mãi mãi gắn bó với nhau
Trong quá trình làm Đồ án này chúng em không tránh khỏi được những sai sót, chúng
em kính mong nhận được sự chỉ dẫn và góp ý của quý thầy cô để hoàn thiện và phát triển
đồ án hơn trong môn học Đồ án 2 cũng như trong Khóa luận tốt nghiệp trong tương lai Chúng em xin chân thành cảm ơn Xin chúc những điều tốt đẹp nhất sẽ luôn đồng hành cùng mọi người
Thành phố Hồ Chí Minh, … tháng … năm 2022
Sinh Viên
Đinh Huỳnh Thái Bình
Vũ Đặng Khương Duy
Trang 5Mục lục
Chương 1 GIỚI THIỆU ĐỀ TÀI 8
1.1 Giới thiệu chung 8
1.2 Đối tượng nghiên cứu 9
1.3 Phạm vi đề tài 9
1.3.1 Phạm vi chức năng: 10
1.4 Hướng tiếp cận 10
1.4.1 Khảo sát ứng dụng liên quan 10
1.4.2 Khảo sát người dùng 11
Chương 2 CƠ SỞ LÝ THUYẾT VÀ CÔNG NGHỆ 14
2.1 Lựa chọn màu sắc 14
2.2 Cơ sở lí thuyết 21
2.2.1 Kmean Clustering algorithms 22
2.3 Cơ sở công nghệ 26
2.3.1 Reactjs 26
2.3.2 Github 27
2.3.3 Javascript 28
2.4 TypeScript 29
2.5 Nestjs 30
2.6 Tailwind CSS 30
Chương 3 PHÂN TÍCH HỆ THỐNG 32
3.1 Luồng xử lí chung 32
3.2 Phân thích kiến trúc hệ thống: 32
Trang 63.3 Phân tích yêu cầu hệ thống: 33
3.3.1 Yêu cầu chức năng: 33
3.3.2 Yêu cầu phi chức năng: 34
Chương 4 THIẾT KẾ HỆ THỐNG 35
4.1 Thiết kế sơ đồ Use Case Diagram 35
4.1.1 Sơ dồ Use Case 35
4.1.2 Danh sách Actor 35
4.1.3 Danh sách các Use Case 35
4.1.4 Đặc tả Use Case 36
4.2 Thiết kế sơ đồ Database Diagram 40
4.2.1 Sơ đồ tổng quát 40
4.3 Thiết kế sơ đồ Sequence Diagram 41
4.3.1 Tìm kiếm địa điểm 41
4.3.2 Xem các địa điểm trên bản đồ 42
4.3.3 Tìm đường đi giữa các địa điểm 43
4.3.4 Xem thông tin chi tiết của homestay 44
4.4 Thiết kế sơ đồ Activity Diagram 45
4.5 Thiết kê giao diện người dùng 46
4.5.1 Giao diện trang chủ 46
4.5.2 Giao diện danh sách homestay 50
4.5.3 Giao diện chi tiết homestay 53
4.5.4 Giao diện hiển thị bản đồ 54
Chương 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 55
Trang 75.1 Kết quả đạt được 55
5.1.1 Lý thuyết 55
5.1.2 Công nghệ 55
5.1.3 Ứng dụng 55
5.2 Hạn chế 56
5.3 Hướng phát triển 56
Trang 8Chương 1 GIỚI THIỆU ĐỀ TÀI 1.1 Giới thiệu chung
Việt Nam đất nước được thiên nhiên ban tặng nhiều danh lam thắng cảnh đẹp Đó những điểm đến du lịch hấp dẫn đối với khách trong nước và đặc biệt là khách du lịch là người nước ngoài Năm 2018, Việt Nam đón 15,5 triệu lượt khách quốc tế, phục vụ 80 triệu lượt khách nội địa, tổng thu từ khách du lịch ước đạt 637.000 tỷ đồng Đóng góp trực tiếp của ngành Du lịch ước đạt 8,39% GDP của cả nước Du lịch góp phần quan trọng đối với sự phát triển của các ngành, lĩnh vực liên quan khác, góp phần nâng cao vị thế của đất nước Nhưng do đại dịch Covid-19 đã tác động tiêu cực đến mọi lĩnh vực của nền kinh tế, trong đó có ngành du lịch của Việt Nam, lượng khách du lịch quốc tế cũng như du lịch trong nước sụt giảm nghiêm trọng so với trước khi dịch bệnh xuất hiện Khách quốc tế đến nước ta trong tháng 5/2021 ước tính đạt 13,4 nghìn lượt người, giảm 30,8% so với tháng trước và giảm 40,6% so với cùng kỳ năm trước Tính chung 5 tháng đầu năm 2021, khách quốc tế đến nước ta ước tính đạt 81 nghìn lượt người, giảm 97,8% so với cùng kỳ năm trước, trong đó khách đến bằng đường hàng không đạt 50,5 nghìn lượt người, giảm 98,3%; bằng đường bộ đạt 30,3 nghìn lượt người, giảm 94,5%; bằng đường biển đạt 193 lượt người, giảm 99,9%
Thời điểm sau đại dịch, Chính phủ đã ban hành các Nghị quyết và tổ chức các chương trình về phát động du lịch nhằm mục địch kích cầu, phục hồi, vực dậy ngành di lịch trong nước
Nhằm góp một phần sức lực trong quá trình hồi phục nên du lịch của nước nhà Nhóm chúng em đã quyết định xây Hệ thống chia sẻ Homestay để giúp người dùng có thể tra cứu thông tin những địa điểm và tìm đường đi phù hợp cũng như dự đoán được chi phí Cùng với đó, người dùng có thể đặt những câu hỏi về điểm đến, khách sạn, nhà hàng, thời tiết hay bất cứ câu hỏi gì khác, hệ thống sẽ cung cấp cho bạn đầy đủ thông tin hoặc có rất nhiều người từ có kinh nghiệm hoặc hiểu biết sẽ trả lời cho bạn Những chuyến đi và kinh nghiệm thực tế được người dùng chia sẻ cho những người khác, từ đó có thể dễ dàng thiết kế lịch trình cho chuyến đi của mình
Trang 91.2 Đối tượng nghiên cứu
Đối tượng nghiên cứu trong đề tài này bao gồm cả 2 phía người dùng và nhà cung cấp thông tin về Homestay
Khi đã truy vào hệ thống, người dùng có thể truy cập hệ thống để xem thông tin về địa điểm, các bình luận và hình ảnh của người dùng trong hệ thống đăng tải về địa điểm nhằm giới thiệu kinh nghiệm du lịch của họ cho những người khác, được tìm kiếm địa điểm homestay có sẵn trong hệ thống Đồng thời người dùng cũng được phép bình luận và đăng tải hình ảnh trải nghiệm về các địa điểm, lưu lại địa điểm du lịch và các đơn vị cung cấp dịch vụ để xem sau, chia sẻ địa điểm lên các trang mạng xã hội; thêm địa điểm du lịch mới được phát hiện và khai phá nhanh chóng bằng cách đăng tải hình ảnh địa điểm, vị trí địa điểm này có thể được định vị tự động hoặc do người dùng viết
Nhóm chủ Homestay cung cấp các dịch vụ du lịch được phép truy cập hệ thống như một khách du lịch, đồng thời nhóm người này có thể thêm thông tin như giá tiền, các dịch
vụ homestay mà mình cung cấp cho khách du lịch biết đến
Nhóm quản trị sẽ quản trị các tài khoản người dùng (cấp quyền, sửa, vô hiệu tài khoản), thông tin địa điểm du lịch, dữ liệu Tỉnh thành, quản lý các bài viết của nhóm người
dùng còn lại, quản lý tin tức du lịch, quản lý loại hình dịch vụ
1.3 Phạm vi đề tài
Ứng dụng gợi ý vị trí homestay có 3 phần chính, phần ứng dụng giúp người dùng tìm kiếm địa điểm và thao tác với hệ thống được chạy trên nền tảng web, được xây dựng bằng thư viện lập trình ReactJs và ngôn ngữ Javascript Phần tiền xử lí dữ liệu và chuẩn hoá sẽ nằm ở backend của ứng dụng chạy trên môi trường NodeJs sử dụng framework NestJs và ngôn ngữ lập trình Typescript – được xây dựng trên nền Javascript Module cuối cùng là module gợi ý, được xây dựng trên nền ngôn ngữ lập trình Python, đây là module chính, là đầu não của hệ thống
Hệ thống tập trung vào việc đưa ra những gợi ý về các địa điểm nhà trọ, khách sạn, homestay trong phạm vi thành phố Đà Lạt, tỉnh Lâm Đồng, Việt Nam Tổng cộng có 356
Trang 10địa điểm nằm rải rác toàn thành phố Sau đó, người dùng có thể sử dụng những gợi ý được
hệ thống đưa ra nhằm đưa ra lịch trình tốt nhất cho chuyến đi
Hệ thống không chịu trách nhiệm thanh toán cho người dùng mà chuyển người dùng đến một trang web thứ 3 (Booking.com – đây là một trang web lớn, có uy tín trong lĩnh vực đặt phòng khách sạn) tại đây người dùng có thể thực hiện đặt phòng, thanh toán theo những gợi ý mà hệ thống đưa ra
1.3.1 Phạm vi chức năng:
Như đã đề cập ở phạm vi đề tài, hệ thống không tích hợp chức năng thanh toán Người dùng có nhu cầu thanh toán có thể sử dụng trang web thứ 3 do hệ thống đưa ra để thanh toán và thực hiện đặt phòng
Cung cấp khả năng tìm kiếm homestay, khách sạn, nhà nghỉ với hơn 300 địa điểm
được chọn lựa
Trực quan hoá gợi ý cho người dùng bằng cách sử dụng bản đồ được cung cấp
bởi google map Ngoài ra hệ thống còn gợi ý tuyến đường di chuyển ngắn nhất cho người dùng
Trực quan hoá thông tin: Để giúp người dùng đưa ra lựa chọn tốt hơn, hệ thống thu
nhập các đánh giá, hình ảnh, bình luận của các người dùng có thực khác từ một nguồn đáng tin cậy Các thông tin được đưa ra gồm: Hình ảnh địa điểm, chi tiết từng phòng; các dịch
vụ được cung cấp miễn phí/tính phí tại khách sạn, homestay, nhà nghỉ do chủ quản cung cấp; thời gian đặt phòng, số lượng người trong phòng, mức giá,
1.4 Hướng tiếp cận
1.4.1 Khảo sát ứng dụng liên quan
điểm và route Địa điểm lớn, không có homestay nhỏ
Trang 11Agoda Thông tin chi tiết Chưa có recommend địa
điểm và route Địa điểm lớn, không có homestay nhỏ
1.4.2 Khảo sát người dùng
Độ tuổi của người dùng được khảo sát được nhắm đến nằm trong khoảng lớn hơn 18 tuổi, đây cũng là độ tuổi có nhu cầu du lịch lớn, vì thế độ tuổi có thể xem như một tiêu chí đánh giá độ chính xác của khảo sát
Về số lần du lịch trong một năm, hơn 40% số người được hỏi cho biết họ đi du lịch hơn 2 lần trong một năm, còn lại là 1 đến 2 lần trong 1 năm, chỉ có một số ít người được
Trang 12hỏi không đi du lịch, chỉ khoảng 10%, đây là dấu hiệu cho thấy người trẻ hiện nay ưa thích
đi du lịch và có nhiều kinh nghiệm trong việc trải nghiệm du lịch
Câu hỏi tiếp theo về kế hoạch thực hiện chuyến đi, tại đây dữ liệu khảo sát có sự phân hoá mạnh, với hơn 2/3 số người được hỏi có lập kế hoạch di chuyển trước mỗi chuyến đi, cho thấy nhu cầu lập bản đồ di chuyển, lịch trình cao => cần tối ưu tuyến đường di chuyển
Sau khi lập dược kế hoạch di chuyển trong ngày, người ta thường hướng đến việc tìm kiếm nơi ở, cách được lựa chọn nhiều hơn là tìm kiếm nơi ở trên mạng
Trang 13Để củng cố cho chủ đề nghiên cứu, nhóm khảo sát đặt ra câu hỏi về nhu cầu của người dùng, liệu người dùng có cần một nơi lưu trú gần địa điểm du lịch, câu trả lời khá bất ngờ với hơn 71% người được hỏi có nhu cầu chọn điểm du lịch gần nơi lưu trú
Để tìm được nơi ở ưng ý, gần 80% người hỏi lựa chọn nơi ở dựa theo số review, số sao được bình chọn bởi những người khác đã trực tiếp trải nghiệm dịch vụ, đây cũng là công thức mà nhóm chọn để thực hiện gợi ý địa điểm cho người dùng
=> Thông qua khảo sát trên, nhóm nhận thấy nhu cầu tìm kiếm địa điểm và gợi ý, cùng với lên lịch trình di chuyển sao cho tối ưu là cần thiết, vì thế đề tài Xây dựng ứng dụng gợi
ý địa điểm homestay ra đời
Trang 14Chương 2 CƠ SỞ LÝ THUYẾT VÀ CÔNG NGHỆ 2.1 Lựa chọn màu sắc
Màu sắc là một phần thiết yếu của sự tương tác giữa con người và máy tính, và tương
tự như các yếu tố khác như kiểu chữ, các nhà thiết kế nên lựa chọn màu sắc một cách cẩn thận Phối màu là một thuật ngữ mà các nhà thiết kế sử dụng để mô tả sự kết hợp màu sắc
mà họ sử dụng trong thiết kế GUI Vì có vô số sự kết hợp màu sắc ngoài kia, nên thật khó
để quyết định cách phối màu nào phù hợp nhất cho sản phẩm của bạn May mắn thay, chúng ta có lý thuyết về màu sắc, một môn học giúp chúng ta lựa chọn các kết hợp màu cân bằng và hiệu quả
Giới hạn tổng số màu: Để đạt được sự hài hòa trong kết hợp màu sắc là một trong
những nguyên tắc chính của lý thuyết màu sắc Khi tạo một lược đồ mới, chúng ta có thể muốn thêm hàng tá màu vào đó Nhưng tốt hơn hết là nên tránh sự cám dỗ đó vì thực sự khó đạt được sự cân bằng về thị giác khi sử dụng quá nhiều màu sắc
Vì vậy, giữ cho bảng màu đơn giản, với tối đa hai hoặc ba màu Như vậy, có thể tạo
ra các kết hợp hình ảnh thú vị bằng cách chơi với các sắc thái của những màu đó
Trang 15Sử dụng bánh xe màu để chọn màu: Bước tiếp theo là hiểu cách chọn màu sắc thực
tế Các nhà thiết kế thường dựa vào bánh xe màu để giải quyết vấn đề này Bánh xe màu bao gồm các màu cơ bản (đỏ, vàng, xanh lam), các màu thứ cấp (hỗn hợp các màu cơ bản; cam, xanh lục và tím) và các màu cấp ba (các màu được tạo ra bằng cách trộn các phần bằng nhau của một màu chính và một màu phụ; citron, russet, buff)
Có ba kiểu phối màu phổ biến có thể tạo bằng bánh xe màu:
Trang 16Đơn sắc: Các lược đồ đơn sắc sử dụng một màu duy nhất, nhưng với các biến thể của
sắc thái, sắc thái và tông màu của màu Đề án này rất dễ nhìn; vì các màu sắc kết hợp với nhau một cách tự nhiên, chúng tạo ra hiệu ứng nhẹ nhàng
Tương tự: Các cách phối màu tương tự sử dụng một số màu có liên quan — một màu
là màu chủ đạo, trong khi các màu khác hỗ trợ nó Màu sắc hỗ trợ làm phong phú thêm sơ
đồ và làm cho nó hấp dẫn hơn về mặt thị giác
Trang 17Bổ túc: Ở dạng cơ bản nhất, các sơ đồ bổ sung chỉ bao gồm hai màu tương phản (ví
dụ: màu xanh lá cây chủ đạo và màu đỏ nhấn) Đề án này hoạt động tốt nếu bạn muốn thu hút sự chú ý
Hiểu tâm lý của màu sắc: Tập trung vào các khía cạnh tâm lý của màu sắc là một phần
thiết yếu của việc hiểu lý thuyết màu sắc Khi chọn bảng màu UX cho sản phẩm , chúng ta thường sẽ nghĩ về cách mọi thứ sẽ trông như thế nào, nhưng điều quan trọng không kém là nghĩ về cảm giác của chúng Màu sắc có ảnh hưởng tâm lý mạnh mẽ đến não bộ con người, với mỗi màu sắc đại diện cho những ý nghĩa và cảm xúc khác nhau cho người dùng của
bạn
Mặc dù không có ý nghĩa nào được chấp nhận rộng rãi, nhưng đây là một số cảm giác chung mà màu sắc gợi lên cho hầu hết mọi người:
• Màu đỏ: nguy hiểm, quan trọng, tình yêu Màu đỏ được gọi là màu của năng lượng
— chỉ cần nhìn vào nó có thể làm tăng mạch, nhịp tim và sự trao đổi chất của một
Trang 18người Đây là một màu sắc tuyệt vời để thu hút sự chú ý của khách truy cập; hãy thử sử dụng nó để làm nổi bật các yếu tố quan trọng nhất trên trang của bạn
• Màu cam: năng lượng, lạc quan, vui vẻ Màu cam có một sự rung cảm tích cực về năng lượng Nó cũng liên kết với các sản phẩm rẻ tiền, làm cho nó trở thành một màu sắc phù hợp cho các cửa hàng thương mại điện tử nếu bạn muốn làm nổi bật mức giá tốt nhất
• Màu vàng: hạnh phúc, sự quan tâm, ấm áp Màu vàng biểu thị tính cách nhiều nắng; khi kết hợp với màu đen, nó sẽ nhanh chóng chỉ huy sự chú ý (Hãy nghĩ về những chiếc taxi màu vàng ở NYC chẳng hạn.)
• Màu xanh lá cây: tăng trưởng, thành công, thiên nhiên Màu xanh lá cây là điều tuyệt vời cho những sản phẩm gần gũi với thiên nhiên Nó cũng là một màu phổ biến để sử dụng trí thông minh giao diện người dùng, cho người dùng tín hiệu rằng một thao tác đã hoàn tất thành công
• Màu xanh lam: sự tin tưởng, thoải mái, bình tĩnh Màu xanh dương tượng trưng cho sự thư thái và thoải mái Các thương hiệu yêu thích màu sắc này vì nó tạo cho khách hàng ấn tượng về sự an toàn bên trong
• Màu tím: Tím đậm cho ta cảm giác tinh tế, bí ẩn, mạnh mẽ Màu thích hợp để chọn làm thương hiệu cho những sản phẩm thuộc loại mang tính sáng tạo Màu tím thường được liên kết với hoàng gia cũng như các sản phẩm xa xỉ
• Màu đen: quyền lực, tinh tế, bí ẩn Hầu hết các thương hiệu giới hạn màu đen cho văn bản và điểm nhấn Là màu chính, màu đen có thể nổi bật trên các trang web thời trang để truyền tải cảm giác sang trọng
• Màu trắng: sạch sẽ, khỏe mạnh, ngây thơ Màu trắng thường khiến liên tưởng đến sức khỏe và sự sạch sẽ Các nhà thiết kế thường chọn màu này để gợi ý về độ an toàn của sản phẩm, đặc biệt là đối với thiết bị y tế và các sản phẩm công nghệ cao
Tuổi và màu sắc: Tuổi tác cũng đóng một vai trò trong sở thích về màu sắc Faber
Birren, tác giả của Tâm lý học Màu sắc và Liệu pháp Màu sắc, phát hiện ra rằng những người trẻ tuổi có xu hướng thích những màu có bước sóng dài hơn (chẳng hạn như đỏ và
Trang 19cam), trong khi những người lớn tuổi thích những màu có bước sóng ngắn hơn (chẳng hạn như xanh lam) Nghiên cứu tương tự của Joe Hallock về giới tính và sở thích màu sắc đã xác nhận những phát hiện của Birren, nhưng cũng cho thấy rằng nhiều nhóm tuổi thích
màu tím hơn
Biểu đồ các màu yêu thích theo nhóm tuổi; các nghiên cứu phát hiện ra rằng những người trẻ tuổi có xu hướng thích những màu có bước sóng dài hơn (chẳng hạn như đỏ và cam), trong khi những người lớn tuổi thích những màu có bước sóng ngắn hơn (chẳng hạn như xanh lam)
Trang 20Giới tính và màu sắc:
Dưới đây là tóm tắt nhanh về nghiên cứu:
• Màu xanh là màu phổ biến nhất cho cả nam và nữ
• Mặc dù được nhiều người tin tưởng, màu hồng không phải là màu yêu thích của phụ nữ
• Màu cam, nâu và vàng là những màu không được ưa chuộng nhất đối với cả nam
Trang 21Trong một hệ thống gợi ý thường có nhiều bước, nhưng chúng có thể được đánh giá
và chia làm 3 nhóm chính, để giữ nguyên tính đúng đắn, bài viết sẽ giữ nguyên các thuật ngữ vì tính chuyên môn của nó:
Candidate generations: Áp dụng chiến thuật “Chia để trị” Trong bước này, hệ thống
chủ yếu chia nhỏ dữ liệu thành từng “cụm khác nhau” nhằm tăng tính cụ thể cho đối tượng được gợi ý
Scoring system: Chấm điểm dữ liệu - trong bước số 2 để đưa ra kết quả gợi ý, hệ
thống cần chuẩn hoá dữ liệu được đưa vào từ bước thứ nhất về một dạng có thể phân tích được Sau đó thực hiện “chấm điểm” dữ liệu đầu vào dựa trên những tiêu chí được định sẵn, sau đó chuyển đến bước thứ 3 – bước cuối cùng
Re-ranking system: Phân chia thứ hạng dữ liệu – sau bước chấm điểm, ta đã có tiêu
chí để đánh giá xem dữ liệu nào tốt hơn, dữ liệu nào nên được sử dụng Dựa vào đó, hệ thống cần áp dụng thêm các ràng buộc để tạo ra thứ hạng của dữ liệu từ tốt nhất đến kém nhất Đây cũng chính là đầu ra của một hệ thống gợi ý cơ bản
Với mỗi loại dữ liệu và yêu cầu khác nhau, các thuật toán gợi ý cũng phải thay đổi cho phù hợp, dựa vào độ giống nhau, người ta chia các hệ thống, thuật toán gợi ý làm 2 loại:
Content based recommend system: Hệ thống gợi ý dựa trên nội dung Sử dụng bộ
dữ liệu có sẵn, các hệ thống dạng này phân tích và hiểu các thuộc tính của sản phẩm Sau
đó đưa ra những gợi ý tương tự với những gợi ý giống những gợi ý trước đó
Ví dụ: Khi sử dụng Youtube, bạn hay nghe bài Bình yên những phút giây của Sơn Tùng MTP, hệ thống biết được bài hát đó giống với bài Chiếc khăn gió ấm, hệ thống sẽ
Trang 22đưa ra gợi ý Chiếc khăn gió ấm cho bài tiếp theo Ứng dụng đang nghiên cứu thuộc về dạng này
Collaborative Filtering recommend system: Hệ thống gợi ý dựa trên người dùng –
sự tương thích Thông qua một chu trình xử lí, hệ thống có thể đánh giá bạn “giống” những người nào, và từ đó tìm kiếm và đưa ra những “sản phẩm” mà người dùng kia thích
Ví dụ: khi sử dụng một số trang web thương mại điện tử như Shopee, khi sử dụng trang web, nếu hệ thống biết được bạn và người dùng khác cùng thích một món đồ nào đó,
nó có thể gợi ý cho bạn những món đồ mà người kia đã thích
Trong quá trình hệ thống hoạt động, độ tương tự của dữ liệu (similar metric) được
tính toán từ các vector dữ liệu Về cơ bản, cả 2 loại hệ thống gợi ý đều dựa vào độ tương
tự của dữ liệu đầu vào, có rất nhiều thuật toán nhằm tính toán độ giống nhau của dữ liệu, sau khi nghiên cứu, nhóm đã chọn được thuật toán phù hợp để giải bài toán được đặt ra: Gợi ý địa điểm
2.2.1 Kmean Clustering algorithms
Clustering hay còn gọi là phân cụm: là kĩ thuật phân tích dữ liệu phổ biến nhất, nó
được sử dụng để tạo ra sự hiểu biết (intuition) về cấu trúc của dữ liệu được sử dụng Ngoài
ra, ta còn có hiểu nó có nhiệm vụ phân cụm dữ liệu, sao cho dữ liệu được xác định là trong cùng một cụm (cluster) là giống nhau, trong khi dữ liệu nằm trong cụm khác nhau là khác nhau Tóm lại, clustering là quá trình tìm ra và chia nhóm những dữ liệu giống nhau trong một nhóm dữ liệu lớn, sao cho dữ liệu nằm ở nhóm khác nhau là khác nhau hoàn toàn bằng cách sử dụng giá trị vector được tính từ công thức khoảng cách Euclidean hoặc khoảng
cách dựa trên sự tương quan (correlation-based distance) Một ví dụ trực quan cho quá
trình phân cụm (clustering) là phân nhóm khách hàng dựa trên số lượng tiền sử dụng
Trang 23Thuật toán K-mean là thuật toán phân cụm được sử dụng phổ biến Thuật toán này
nhận dữ liệu chuyển hoá nó thành các vector trong không gian và coi nó là các điểm, tính toán và tìm ra nhóm mà điểm này thuộc về
Chi tiết thuật toán có thể tìm thấy ở mục Reference, ta sẽ không quá đi sâu vào nguyên
lí của thuật toán mà chỉ cho biết cách thuật toán hoạt động
Đầu vào: Thuật toán K-mean nhận vào tập dữ liệu X và số lượng cụm cần tìm, kí hiệu
là K
Đầu ra: Trung tâm của cụm(cluster) M và nhãn cho từng điểm dữ liệu Y
Cách hoạt động:
1 Chọn K điểm bất kì làm trung tâm ban đầu
2 Tính khoảng cách giữa các điểm đến K tâm
3 Nhóm các điểm vào cụm gần nhất
4 Kiểm tra sự thay đổi các thành viên trong cụm nếu việc phân chia các điểm ở bước 3 không khác với lần trước đó thì ta đã tìm được đúng cụm mà dữ liệu thuộc về nên dừng thuật toán
Hình 1 Phân cụm dữ liệu
Trang 245 Cập nhật tâm cho từng cụm bằng cách lấy trung bình cộng khoảng cách của các điểm dữ liệu dược gán vào cluster đó sau bước 3
6 Quay lại bước 3
Minh hoạ:
Trước khi áp dụng thuật toán K-mean, ta cần xác định được số lượng cụm tối ưu của tập
dữ liệu, nếu số cụm nhiều quá sẽ gây phân mảnh dữ liệu, nếu ít quá thì recommendation sẽ kém hiệu quả, vì thế, để tìm ra số lượng cụm cần thiết, ta sử dụng kèm phương pháp Ebow
Phương pháp Ebow là phương pháp để xác định sự thay đổi của hàm biến dạng – độ biến
dạng của dữ liệu được phân cụm khi tăng hoặc giảm số cụm Tại điểm có hàm biến dạng
suy giảm bắt đầu suy giảm một cách tuyến tính, đó là số lượng cụm ta cần tìm Tức là từ sau điểm đó, sự thay đổi của thuật toán K-mean là không đáng kể
Trang 25Ví dụ: Hình dưới áp dụng phương pháp Ebow để tìm ra số cụm cho bài toán nào đó Với
trục tung là giá trị của hàm suy giảm, trục hoành là giá trị của số cụm ứng với mỗi giá trị
của hàm suy giảm:
Tại vị trí K=4, sự biến thiên của thuật toán K-mean không đáng kể (bắt đầu giảm tuyến tính), ta thấy K=4 là số cụm tối ưu, 4 là số cụm ta chọn cho mô hình K-mean
Trên đây là cơ sơ lí thuyết để giải bài toán “Gợi ý homestay”, chi tiết sẽ được mô tả phía dưới
Trang 262.3 Cơ sở công nghệ
2.3.1 Reactjs
ReactJS là một thư viện JavaScript mã nguồn mở được thiết kế bởi Facebook để tạo
ra những ứng dụng web hấp dẫn, nhanh và hiệu quả với mã hóa tối thiểu Mục đích cốt lõi của ReactJS không chỉ khiến cho trang web phải thật mượt mà còn phải nhanh, khả năng
mở rộng cao và đơn giản
Sức mạnh của nó xuất phát từ việc tập trung vào các thành phần riêng lẻ Chính vì vậy, thay vì làm việc trên toàn bộ ứng dụng web, ReactJS cho phép một developer có thể phá vỡ giao diện người dùng phức tạp thành các thành phần đơn giản hơn
Trang 272.3.2 Github
GitHub là một hệ thống quản lý dự án và phiên bản code, hoạt động giống như một mạng xã hội cho lập trình viên Các lập trình viên có thể clone lại mã nguồn từ một repository và Github chính là một dịch vụ máy chủ repository công cộng, mỗi người có thể tạo tài khoản trên đó để tạo ra các kho chứa của riêng mình để có thể làm việc Github có đầy đủ những tính năng của Git, ngoài ra nó còn bổ sung những tính năng về social để các developer tương tác với nhau
Github cung cấp các tính năng social networking như feeds, followers, và network graph để các developer học hỏi kinh nghiệm của nhau thông qua lịch sử commit
Trang 282.3.3 Javascript
JavaScript là ngôn ngữ lập trình website phổ biến hiện nay, nó được tích hợp và nhúng vào HTML giúp website trở nên sống động hơn JavaScript đóng vai trò như là một phần của trang web, thực thi cho phép Client-side script từ phía người dùng cũng như phía máy chủ (Nodejs) tạo ra các trang web động
JavaScript là một ngôn ngữ lập trình thông dịch với khả năng hướng đến đối tượng
Là một trong 3 ngôn ngữ chính trong lập trình web và có mối liên hệ lẫn nhau để xây dựng một website sống động, chuyên nghiệp:
HTML: Hỗ trợ trong việc xây dựng layout, thêm nội dung dễ dàng trên website CSS: Hỗ trợ việc định dạng thiết kế, bố cục, style, màu sắc,…
JavaScript: Tạo nên những nội dung “động” trên website Cùng tìm hiểu rõ hơn ở phần dưới đây