Từ viết tắt Từ đầy đủ Giải thíchCF Collaborative Filtering Một phương pháp gợi ý sản phẩm UM Utility matrix Ma trận biểu diễn mức độ quan tâm rating của user với mỗiitem CSDL Cơ sở dữ li
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
LÊ NGỌC CHÂU
KHÓA LUẬN TỐT NGHIỆP
XÂY DỰNG HỆ THỐNG THƯƠNG MẠI ĐIỆN TỬ
HỖ TRỢ KINH DOANH MẶT HÀNG NỘI THẤT NHÀ
Ở KẾT HỢP TƯ VẤN BÁN HÀNG BẰNG CHATBOT
Building an ecommerce system to support purchasing and selling
furniture combined with sales consulting by chatbot
KỸ SƯ NGÀNH CÔNG NGHỆ PHẦN MỀM
Trang 2TP HỒ CHÍ MINH, 2021ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
LÊ NGỌC CHÂU - 16520109
KHÓA LUẬN TỐT NGHIỆP
XÂY DỰNG HỆ THỐNG THƯƠNG MẠI ĐIỆN TỬ
HỖ TRỢ KINH DOANH MẶT HÀNG NỘI THẤT NHÀ
Ở KẾT HỢP TƯ VẤN BÁN HÀNG BẰNG CHATBOT
Building an ecommerce system to support purchasing and selling
furniture combined with sales consulting by chatbot
KỸ SƯ NGÀNH CÔNG NGHỆ PHẦN MỀM
GIẢNG VIÊN HƯỚNG DẪN
TS NGUYỄN HÀ GIANG ThS NGUYỄN THỊ THANH TRÚC
Trang 3TP HỒ CHÍ MINH, 2021THÔNG TIN HỘI ĐỒNG CHẤM KHÓA LUẬN TỐT NGHIỆP
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số ……… ngày
……… của Hiệu trưởng Trường Đại học Công nghệ Thông tin
Chúng em xin chân thành cảm ơn quý thầy cô của trường Đại học Công nghệ Thông tin nóichung, quý thầy cô của khoa Công nghệ Phần mềm nói riêng, và đặc biệt đến cô Nguyễn HàGiang, cô Nguyễn Thị Thanh Trúc đã tận tình hướng dẫn và đóng góp ý kiến để chúng em có
thể hoàn thành khóa luận này một cách tốt nhất
Bên cạnh đó, nhóm xin gửi lời cảm ơn đến các bạn cùng lớp đã có những lời góp ý,động viên để nhóm có thêm động lực thực hiện khóa luận trong khoảng thời gian khó khănnày
Trong suốt quá trình chúng em tìm hiểu và thực hiện khóa luận, do thời gian và khảnăng có giới hạn nên chúng em vẫn còn nhiều thiếu sót Do đó, nhóm chúng em rất mongnhận được sự thông cảm và những ý kiến đóng góp chân thành từ quý thầy cô và các bạn.Một lần nữa, nhóm chúng em xin chân thành cảm ơn mọi người
Thành phố Hồ Chí Minh, 25 tháng 06 năm 2021
Sinh viên
LÊ NGỌC CHÂUMỤC LỤC
Trang 4TÓM TẮT KHÓALUẬN 1 Chương1: GIỚI THIỆU CHUNG 2
1.1 Lý do chọn đềtài 2 1.2 Tính năng mới/ khác biệt về chức năng của đề tài so với một số website thương mại điện tử hiện
Kháiniệm 6
2.1.2 Lý do lựachọn 7 2.2 Tổngquan về Express Framework 8
2.2.1 Giới thiệu ExpressJSFramework 8 2.2.2 Lý do lựachọn 8 2.3 Tổngquan về EJS template 9
2.3.1 Giớithiệu 9
Trang 52.3.2 Lý do lựachọn 10 2.4 Cơ sở
dữ liệu PostgreSQL 10
2.4.1 Giớithiệu 10
2.4.2 Lý do lựachọn 11 2.5
ChatbotDialogflow 11
2.5.1 Tìm hiểuchatbot 11 2.5.2.Giới thiệu Chatbot Dialogflow 14
2.5.3 Lý do lựachọn 16 2.5.4 Ápdụng vào đề tài 16 2.6.Thuận toán khuyến nghị Neighborhood - Based Collaborative Filtering 17 2.6.1.Giới thiệu – Lý do lựa chọn 17
2.6.2 Một số địnhnghĩa 19 2.6.3 Tiếnhành thực hiện 22 2.6.4
Áp dụng vào đề tài 25
Chương 3: XÂY DỰNG HỆTHỐNG 27 3.1 Xây dựng kiếntrúc hệ thống 27 3.1.1 Xácđịnh yêu cầu hệ thống 27 3.1.2.Phân tích yêu cầu hệ thống 28
3.2 Phân tích thiết kế hệ
Trang 6thống 32 3.2.1 Sơ đồ Usecase 32 3.2.2 Sơ
đồ lớp 663.2.2.2 Phân tích và thiết kế cơ sở dữ liệu
68 3.3 Thiết kế giaodiện 96 3.3.1.Giao diện dành cho khách hàng 96
3.3.2 Giao diện dành cho ngườibán 105 3.2.2.2 Giao diện dành cho
admin 111
Chương 4: KẾT LUẬN, HƯỚNG PHÁTTRIỂN 116 4.1 Kết quả đạtđược 116 4.2
Nhượcđiểm 117
4.3 Hướng pháttriển 117 TÀI
LIỆU THAMKHẢO 118
DANH MỤC HÌNH VẼ
Hình 2-1: Các điểm mạnh của Nodejs
Hình 2-2: Cơ chế Non I/O Blocking
Hình 2-3: Tổng quan mô hình hoạt động của ExpressJS
Hình 2-4: Các tính năng của ExpressJS
Hình 2-5: EJS template
Hình 2-6: Hệ quản trị cơ sở dữ liệu PostgreSQL
Trang 7Hình 2-7: Cách hoạt động của chatbot
Hình 2-8: Một số nền tảng, framework chatbot
Hình 2-9: Lợi ích của chatbot
Hình 2-10: Sơ đồ của một Dialog Flow hoàn chỉnh
Hình 2-11: Ví dụ về Agent trong Dialogflow
Hình 2-12: Mô tả cuộc trò chuyện giữa người và máy Hình 2-13:
Chatbot phản hồi câu hỏi của khách hàng Hình 2-14: Ví dụ về
Neighborhood-based Collaborative Filtering Hình 2-15: Ma trận
tương tác Người dùng – Sản phẩm Hình 2-16: Công thức tính độ
tương đồng giữa 2 vector Hình 2-17: Công thức dự đoán rating của
user U cho item I Hình 2-18: Công thức tính RMSE
Hình 2-19: Utility Matrix Y
Hình 2-20: Lọc cộng tác dựa theo sản phẩm
Hình 2-21: Ma trận chuẩn hóa (iiCF)
Hình 2-22: Ma trận tương đồng giữa các items
Hình 2-23: Ma trận normalized ratings matrix đầy đủ (iiCF)
Hình 2-24: Gợi ý sản phẩm bằng Item –item Collaborative Filtering trên website Hình 3-1: Use case tổng quát của Admin
Hình 3-2: Use case tổng quát của nhà bán
Hình 3-3: Use case tổng quát của khách hàng
Hình 3-4: Use case khách hàng đăng ký tài khoản
Hình 3-5: Use case người bán đăng ký tài khoản bán hàng
Hình 3-6: Use case đăng nhập
Hình 3-7: Use case quản lý danh mục sản phẩm
Hình 3-8: Use case quản lý sản phẩm của Admin
Hình 3-9: Use case quản lý đơn hàng của Admin
Trang 8Hình 3-10: Use case quản lý khách hàng
Hình 3-11: Use case quản ký nhà bán
Hình 3-12: Use case thống kê doanh thu
Hình 3-13: Use case quản lý sản phẩn của Người bán
Hình 3-14: Use case quản lý khuyến mãi
Hình 3-15: Use case quản lý đơn hàng của Người bán
Hình 3-16: Use case quản lý thông tin Người bán
Hình 3-17: Use case quản lý ví tiền
Hình 3-18: Use case tìm kiếm sản phẩm
Hình 3-19: Use case xem thông tin sản phẩm
Hình 3-20: Use case xem sản phẩm của shop
Hình 3-21: Use case đặt và mua hàng
Hình 3-22: Use case quản lý giỏ hàng
Hình 3-23: Use case theo dõi đơn hàng
Hình 3-24: Use case chỉnh sửa thông tin cá nhân (Khách hàng) Hình 3-25: Use case quản lý sổ địa chỉ (Khách hàng) Hình 3-26: Use case đánh giá sản phẩm
Hình 3-27: Sơ đồ lớp tổng quát
Hình 3-28: Sơ đồ tuần tự khách hàng đăng ký tài khoản
Hình 3-29: Sơ đồ tuần tự đăng nhập
Hình 3-30: Sơ đồ tuần tự thêm sản phẩm (Người bán)
Hình 3-31: Sơ đồ tuần tự cập nhật sản phẩm
Hình 3-32: Sơ đồ tuần tự cập nhật trạng thái đơn hàng
Hình 33: Sơ đồ tuần tự thêm khuyến mãi mới Hình
3-34: Sơ đồ tuần tự xóa khuyến mãi
Hình 3-35: Sơ đồ tuần tự báo vi phạm sản phẩm
Trang 9Hình 3-36: Sơ đồ tuần tự duyệt sản phẩm
Hình 3-37: Sơ đồ tuần tự hủy đơn hàng (Admin) Hình 3-38: Sơ
đồ tuần tự thêm sản phẩm vào giỏ hàng Hình 3-39: Sơ đồ tuần tự cập nhật số lượng sản phẩm trong giỏ Hình 3-40: Sơ đồ tuần tự xóa sản phẩm khỏi giỏ hàng Hình 3-41: Sơ đồ tuần tự đặt và muahàng
Hình 3-42: Sơ đồ tuần tự hủy đơn vừa mua (Khách hàng)
Hình 3-43: Giao diện trang chủ
Hình 3-44: Giao diện đăng nhập (khách hàng)
Hình 3-45: Giao diện đăng ký
Hình 3-46: Giao diện thông tin cá nhân
Hình 3-47: Giao diện đổi mật khẩu
Hình 3-48: Giao diện sổ địa chỉ
Hình 3-49: Giao diện chi tiết sản phẩm
Hình 3-50: Giao diện giỏ hàng
Hình 3-51: Giao diện thanh toán
Hình 3-52: Giao diện tất cả đơn hàng
Hình 3-53: Giao diện đơn hàng chờ nhà bán giao hàng
Hình 3-54: Giao diện đơn hàng đã giao thành công Hình
3-55: Giao diện đơn hàng đã hủy
Hình 3-56: Giao diện cập nhật sản phẩm
Hình 3-57: Giao diện cập nhật biến thể
Hình 58: Giao diện trạng thái sản phẩm Hình
3-59: Giao diện danh sách khuyến mãi Hình 3-60:
Giao diện thêm mới khuyến mãi Hình 3-61: Giao
diện xem trạng thái các đơn hàng Hình 3-62: Giao
diện chi tiết đơn hàng
Trang 10Hình 3-63: Giao diện chờ xác nhận chuẩn bị hàng
Hình 64: Giao diện thống kê doanh thu Hình
3-65: Giao diện quản lý ví tiền
Hình 3-66: Giao diện địa chỉ giao hàng
Hình 67: Giao diện thêm mới danh mục Hình
3-68: Giao diện hiện thị tất cả danh mục Hình 3-69:
Giao diện xem tất cả sản phẩm Hình 3-70: Giao
diện báo cáo sản phẩm vi phạm
Hình 3-71: Giao diện xem tất cả đơn hàng
Hình 3-72: Giao diện xác nhận đơn hàng
Hình 3-73: Giao diện quản lý khách hàng
Hình 3-74: Giao diện quản lý nhà bán
DANH MỤC BẢNG
Bảng 1-1: Bảng so sánh sự khác biệt giữa Furnoture Shop và các website khác Bảng 2-1: Ví dụ về chuẩn hóa ma trận uuCF
Bảng 3-1: Đặc tả Use case đăng ký tài khoản (Khách hàng) Bảng 3-2:
Đặc tả Use case đăng ký tài khoản bán hàng (Người bán) Bảng 3-3:
Đặc tả Use case đăng nhập
Bảng 3-4: Đặc tả Use case quản lý danh mục
Bảng 3-5: Đặc tả Use case quản lý sản phẩm (Admin)
Bảng 3-6: Đặc tả Use case quản lý đơn hàng (Admin)
Bảng 3-7: Đặc tả Use case quản lý khách hàng (Admin)
Bảng 3-8: Đặc tả Use case quản lý nhà bán (Admin)
Bảng 3-9: Đặc tả Use case thống kê doanh thu
Bảng 3-10: Đặc tả Use case quản lý sản phẩm (Người bán)
Bảng 3-11: Đặc tả Use case quản lý khuyến mãi
Trang 11Bảng 3-12: Đặc tả Use case quản lý đơn hàng (Người bán)
Bảng 3-13: Đặc tả Use case quản lý thông tin Người bán
Bảng 3-14: Đặc tả Use case quản lý ví tiền
Bảng 3-15: Đặc tả Use case tìm kiếm sản phẩm
Bảng 3-16: Đặc tả Use case xem thông tin sản phẩm
Bảng 3-17: Đặc tả Use case xem ản phẩm của shop
Bảng 3-18: Đặc tả Use case đặt và mua hàng
Bảng 3-19: Đặc tả Use case quản lý giỏ hàng
Bảng 3-20: Đặc tả Use case theo dõi đơn hàng
Bảng 3-21: Đặc tả Use case chỉnh sửa thông tin cá nhân (Khách hàng) Bảng 3-22: Đặc tả Use case quản lý sổ địa chỉ
Bảng 3-23: Đặc tả Use case đánh giá sản phẩm
Trang 12Từ viết tắt Từ đầy đủ Giải thích
CF Collaborative Filtering Một phương pháp gợi ý sản
phẩm
UM Utility matrix Ma trận biểu diễn mức độ quan
tâm (rating) của user với mỗiitem
CSDL Cơ sở dữ liệu Cơ sở dữ liệu cho websiteuuCF User – user Collaborative
Filtering
Phương pháp lọc cộng tác dựa trên người dùng
iiCF Item –item Collaborative
Filtering
Phương pháp lọc cộng tác dựa trên sản phẩm
Trang 13TÓM TẮT KHÓA LUẬN
Khóa luận với đề tài “Xây dựng hệ thống thương mại điện tử hỗ trợ kinh doanh mặt hàng nộithất nhà ở kết hợp tư vấn bán hàng bằng chatbot” giúp cho người tiêu dùng có thể mua các sản phẩm về nội thất nhà ở một cách thuận tiện và nhanh chống, đồng thời cũng đảm bảo về
sự tin cậy, toàn và uy tính
Hệ thống giúp cho các xưởng gỗ, người kinh doanh nội thất có một kênh bán hàng tiện dụng,
hỗ trợ từ khâu nhập sản phẩm, đưa sản phẩm lên hệ thống, giao hàng cho người mua, thống
kê doanh thu bán hàng chi tiết, rõ ràng và minh bạch kết hợp với giao diện thân thiện, giúpngười dùng dễ sử dụng mà không cần quá nhiều tài nguyên và nhân lực để quản lý
Về nghiệp vụ, hệ thống đã xây dựng đầy đủ mô hình quản lý cho người quản trị website, người bán hàng và mua hàng với người tiêu dùng
Trong khóa luận này, nhóm đã sử dụng và kết hợp các công nghệ mới để xây dựng ứng dụng website mang lại lợi ích, hiệu quả tốt nhất như NodeJs, ExpressJs
Khóa luận được trình bày gồm 4 chương:
Chương 1: Giới thiệu về đề tài, đưa ra các điểm nổi bật so với các ứng dụng trước Tiếp đến
là đề xuất các giải pháp để giải quyết các vấn đề đã đặt ra Ngoài ra, chương 1 cũng đề cậpđến đối tượng nghiên cứu, phạm vi đề tài, phương pháp nghiên cứu
Chương 2: Trình bày các kiến thức nền tảng, các công nghệ và thuật toán gợi ý sản phẩm
được sử dụng để xây dựng website bán hàng, chatbot để tư vấn bán hàng
Chương 3: Trình bày chi tiết quy trình xây dựng hệ thống, từ xác định và phân tích yêu cầu
bài toán cho đến xây dựng CSDL, cuối cùng là xây dựng giao diện cho website
Chương 4: Kết luận, rút ra được các ưu nhược điểm của ứng dụng và hướng phát triển trong
tương lai
1
Chương 1: GIỚI THIỆU CHUNG
1.1 Lý do chọn đề tài
Trang 14Ngày nay, công nghệ thông tin ngày một phát triển, kéo theo đó là sự bùng nổ của các thiết
bị điện tử, đặc biệt là điện thoại thông minh và máy tính Cùng với đó là mạng lưới rộng lớncủa Internet đã dẫn đến sự phát triển mạnh mẽ của các ngành dịch vụ thương mại điện tử Đối với người tiêu dùng, thương mại điện tử giúp người mua chỉ ngồi tại nhà mà vẫn có thểlựa chọn hàng hóa, dịch vụ trên các thị trường ở mọi nơi trên thế giới bằng một vài động táckích chuột Nhờ vậy mà gần như ở bất kì nơi nào trên thế giới, thậm chí ở một nước nghèonhất, một vùng xa xôi hẻo lánh trên địa cầu, cũng có thể dễ dàng tiếp cận với các thị trườngrộng lớn thông qua mạng Internet
Hiện nay, với sự bùng phát nguy hiểm của đại dịch COVID-19 trên toàn cầu, trong đó cóViệt Nam, nó đã thay đổi thói quen của hầu hết mọi người trong việc đi mua sắm, giải trí.Trong lúc tình hình dịch bệnh căng thẳng như thế này, Thương mại điện tử được coi là mộttrong những động lực phát triển chủ yếu của nền kinh tế và dần trở thành xu hướng tất yếu Trên cơ sở các kiến thức được học trong nhà trường và quá trình tìm hiểu các trang webthương mại điện tử trong thực tế, nhóm chúng em đã quyết định chọn đề tài “Xây dựng hệthống thương mại điện tử hỗ trợ kinh doanh mặt hàng nội thất nhà ở kết hợp tư vấn bán hàngbằng chatbot”
Phục vụ tốt hơn nhu cầu của khách hàng và quản lý cửa hàng trong hoạt động kinh doanh
2
1.2 Tính năng mới/ khác biệt về chức năng của đề tài so với một số website thương mại điện tử hiện nay
Website Tính năng
Furniture Shop Website thương
mại điện tử khác
Trang 15Thanh toán online Thanh toán bằng tài khoản
ngân hàng ngay tại shop,xuất thông báo thành công/
thất bại ngay tức thì, thuậntiện trong quá trình muahàng
Phải thao tác chuyển khoản đồng thời chờ admin xác nhận thanh toán khiến mất thời gian, dễ nhầm lần
Địa chỉ nhận hàng Địa chỉ chọn từ hệ thống,
đảm bảo thông tin chínhxác, thuận tiện
Nhập bằng tay khiếncho địa chỉ dễ bị sai,không xác định đượcnơi giao hàng
Giỏ hàng Sản phẩm trong giỏ hàng
được chọn sẽ tiến hànhthanh toán, còn các sảnphẩm bỏ chọn sẽ lưu lạitrong giỏ hàng cho việcmua sau
Sản phẩm trong giỏ hàng chỉ có thể mua tất
cả hoặc xóa bớt Điều này làm hạn chế sự thoải mái cho khách hàng
Admin xác nhận giao
hàng
Sau khi nhà bán giao hàngcho shipper, hàng đến taykhách hàng, admin xácnhận đơn hàng thành công,tiền sẽ chuyển vào ví củanhà bán
Nhà bán nhận tiền vàxác nhận đơn hàng Đốivới trường hợp thanhtoán online, nhà bánnhận tiền trước và xácnhận đơn hàng sau.Điều này gây bất tiệncho các
3
trường hợp thất lạc hànghóa, khó giải quyết
Bảng 1-1: Bảng so sánh sự khác biệt giữa Furnoture Shop và các website khác
Trang 161.3 Đối tượng nghiên cứu
- Doanh nghiệp, xưởng gỗ, xưởng làm nội thất, người bán hàng nội thất trong nước - Người tiêu dùng muốn mua sản phẩm nội thất trong nước
1.4 Phạm vi nghiên cứu
- Chức năng:
• Website thương mại điện tử Funiture Shop hướng sử dụng cho các doanhnghiệp, xưởng nội thất và người tiêu dùng trong nước trên nền tảngwebsite cho các trình duyệt chạy trên hệ điều hành Windows, Mac
• Tìm hiểu về hệ thống gợi ý sản phẩm đối với 2 phương pháp: Content basedmethod, Collaborative filtering method
• Tìm hiều chatbot Dialogflow
- Tham khảo các trang web/hệ thống hiện có
- Phân tích các yêu cầu đã thu thập được
- Thiết kế cơ bản các yêu cầu
- Nghiên cứu công nghệ để áp dụng
- Nghiên cứu tài liệu liên quan
4 5
Trang 17tạo ra các ứng dụng nhẹ và hiệu quả cao cho các ứng dụng về dữ liệu thời gian thực chạy trêncác thiết bị phân tán
Hình 2-1: Điểm mạnh của Nodejs NodeJS được phát triển bởi Ryan Dahl vào năm 2009 và có thể chạy trên nhiều hệ điều hànhkhác nhau: OS X, Microsoft Windows, Linux Phần Core bên dưới của Nodejs được viết hầuhết bằng C++ nên cho tốc độ xử lý và hiệu năng khá cao
Nodejs tạo ra được các ứng dụng có tốc độ xử lý nhanh, realtime thời gian thực
Nodejs áp dụng cho các sản phẩm có lượng truy cập lớn, cần mở rộng nhanh, cần đổi mới công nghệ, hoặc tạo ra các dự án Startup nhanh nhất có thể
6
2.1.2 Lý do lựa chọn
Các ứng dụng Nodejs được viết bằng javascript, ngôn ngữ này là một ngôn ngữ khá thôngdụng Theo tác giả của ngôn ngữ Javascript, Ryan Dahl: “Javascript có những đặc tính màlàm cho nó rất khác biệt so với các ngôn ngữ lập trình động còn lại, cụ thể là nó không cókhái niệm về đa luồng, tất cả là đơn luồng và hướng sự kiện.”
Tốc độ xử lý nhanh: Được thực thi dựa trên V8 JavaScript Engine của Google Chorme Khảnăng tự build server bằng ngôn ngữ client giúp cho việc trung chuyển dữ liệu diễn ra nhanhhơn Đồng thời giảm khả năng rủi ro bị ngắt Ngoài ra nhờ cơ chế Non I/O Blocking, tậndụng tối đa tài nguyên của server, không tạo ra độ trễ như các ngôn ngữ
server-side khác
Trang 18Hình 2-2: Cơ chế Non I/O Blocking Các ứng dụng NodeJS đáp ứng tốt thời gian thực và chạy đa nền tảng, đa thiết bị
Node.js sử dụng một mô hình luồng duy nhất với sự kiện lặp cơ chế tổ chức sự kiện giúp cácmáy chủ để đáp ứng một cách không ngăn chặn và làm cho máy chủ cao khả 19 năng mởrộng như trái ngược với các máy chủ truyền thống mà tạo đề hạn chế để xử lý yêu cầu.Node.js sử dụng một chương trình đơn luồng và các chương trình tương tự có thể
cung cấp dịch vụ cho một số lượng lớn hơn nhiều so với yêu cầu máy chủ truyền thống như Apache HTTP Server
7
Hỗ trợ rất tốt cho việc xây dựng ứng dụng thời gian thực
2.2 Tổng quan về Express Framework
2.2.1 Giới thiệu ExpressJS Framework
Expressjs là một framework được xây dựng trên nền tảng của Nodejs Nó cung cấp các tínhnăng mạnh mẽ để phát triển web hoặc mobile Expressjs hỗ trợ các method HTTP vàmidleware tạo ra API vô cùng mạnh mẽ và dễ sử dụng
Trang 19Hình 2-3: Tổng quan mô hình hoạt động của ExpressJS
Trang 20routes và các request method đến server một cách dễ dàng
Hỗ trợ REST API Và còn rất nhiều thứ mà framework này hỗ trợ
2.3 Tổng quan về EJS template
2.3.1 Giới thiệu
EJS ( Embedded JavaScript ), là một thư viện được sử dụng để phân tích các tập tin ejs, và tạo ra HTML trả về cho client (Trình duyệt) Nó là một trong những View engine phổ biến nhất cho Node.js và Expressjs
9 Hình 2-5: EJS template View engine là công cụ giúp viết code HTML một cách ngắn gọn và đơn giản hơn cáchthông thường, đồng thời nó có thể sử dụng lại Ngoài ra nó có thể đưa dữ liệu vào từ phíaserver và render ra đoạn HTML cuối cùng
2.3.2 Lý do lựa chọn
EJS cho phép ta tạo các ứng dụng nhanh chóng khi ta không cần bất cứ thứ gì quá phức tạp.Bằng cách sử dụng các thành phần và có khả năng dễ dàng chuyển các biến đến dạng xemcủa bạn , ta có thể xây dựng một số ứng dụng tuyệt vời một cách nhanh chóng
2.4 Cơ sở dữ liệu PostgreSQL
2.4.1 Giới thiệu
Trang 21Hình 2-6: Hệ quản trị cơ sở dữ liệu PostgreSQL PostgreSQL là một hệ quản trị cơ sở dữ liệu quan hệ – đối tượng, được phát triển bởi KhoaĐiện toán, Đại học California – Hoa Kỳ dựa trên Postgres bản 4.2 Chương trình này đã mởđường cho nhiều khái niệm về hệ quản trị dữ liệu thương mại sau này
Ban đầu, hệ quản trị được thiết kế để chạy trên các nền tảng tương tự như Unix Sau này,PostgreSQL được điều chỉnh trở nên linh động và chạy trên nhiều nền tảng khác nhau nhưWindows, Mac OS X, Solaris với nhiều tính năng và đặc điểm nổi bật PostgreSQL là mãnguồn mở miễn phí, được xây dựng theo chuẩn SQL-99 Người dùng có thể tự do
10
sử dụng, chỉnh sửa và phân bổ PostgreSQL theo nhiều hình thức khác nhau So với nhiều hệquản trị cơ sở dữ liệu khác, PostgreSQL không quá yêu cầu về công tác bảo trì bởi tính ổnđịnh cao, có thể phát triển nhiều ứng dụng khác nhau với chi phí tương đối thấp
2.4.2 Lý do lựa chọn
PostgreSQL không chỉ là cơ sở dữ liệu quan hệ, nó là quan hệ hướng đối tượng Điều nàycung cấp cho nó một vài lợi thế so với các cơ sở dữ liệu SQL mã nguồn mở khác nhưMySQL, MariaDB và Firebird
Mảng nhiều chiều: Bởi vì PostgreSQL là một cơ sở dữ liệu quan hệ hướng đối tượng, mảng
các giá trị có thể lưu trữ hầu hết các kiểu dữ liệu có sẵn
Dữ liệu hình học: Dữ liệu hình học nhanh chóng trở thành một yêu cầu cốt lõi cho nhiều
ứng dụng PostgreSQL từ lâu đã hỗ trợ một loạt kiểu dữ liệu hình học như points, lines,circles, và polygons
Hỗ trợ JSON: Hỗ trợ JSON của PostgreSQL cho phép bạn ít sơ đồ (schema-less) trong một
cơ sở dữ liệu SQL Điều này có thể hữu ích khi cấu trúc dữ liệu yêu cầu phải có sự linh hoạt
Trang 22bởi vì nó vẫn thay đổi trong phát triển hoặc khi nó không biết các trường dữ liệu mà đối tượng dữ liệu sẽ chứa
Chức năng bảo mật: Bảo mật, xác thực (SCRAM-SHA-256, SSPI, LDAP, GSSAPI,
Certificate và các hình thức khác), hệ thống kiểm soát truy cập mạnh mẽ, bảo mật cấp độ cột – hàng
Toàn vẹn dữ liệu: Ràng buộc loại từ, Primary Keys, Foreign Keys, UNIQUE, NOT NULL,
Khóa khuyến nghị/ Advisory Locks, Khóa hàm số/ Explicit Locks,…
2.5 Chatbot Dialogflow
2.5.1 Tìm hiểu chatbot
2.5.1.1 Khái niệm chatbot
11 Định nghĩa một cách đơn giản nhất, chatbot là một chương trình máy tính tương tác vớingười dùng bằng ngôn ngữ tự nhiên dưới một giao diện đơn giản, âm thanh hoặc dưới dạngtin nhắn
Hình 2-7: Cách hoạt động của chatbot Chatbot phục vụ trong rất nhiều lĩnh vực:
Trang 232.5.1.2 Lý do sử dụng chatbot
12
Trang 24Hình 2-8: Một số nền tảng, framework chatbot Nhờ được trang bị trí thông minh nhân tạo (AI) và phần mềm xử lý ngôn ngữ tự nhiên (NLP), Chatbot đã phát triển đáng kể trong thời gian gần đây Hiện nay, chatbot là những công cụ cực kỳ hữu dụng và quan trọng giúp chúng ta có thể tự động hóa một số quy trình trong kinh doanh và đi kèm với vô vàn lợi ích như:
- Tăng tương tác với khách hàng
- Cá nhân hóa trải nghiệm khách hàng
- Thu thập và phân tích dữ liệu
- Cung cấp phản hồi ngay lập tức
- Tiết kiệm thời gian
13
- Tiết kiệm chi phí quảng cáo
- Giảm chi phí hoạt động của doanh nghiệp
Hình 2-9: Lợi ích của chatbot
2.5.2 Giới thiệu Chatbot Dialogflow
Hình 2-10: Sơ đồ của một Dialog Flow hoàn chỉnh
Trang 25Api.ai là một startup về natural language conversations, đã được Google mua lại và đổi tên thành DialogFlow
Dialogflow giúp các lập trình viên dễ dàng hơn khi lập trình các sản phẩm có giao tiếp giữangười dùng với sản phẩm thông qua các đoạn hội thoại bằng văn bản (text) hoặc giọng nói(voice)
14 Dialogflow sử dụng trí tuệ nhân tạo (AI) giúp phân tích ngôn ngữ tự nhiên để hiểu được những gì người dùng đưa vào
Các khái niệm cơ bản trong DialogFlow
- INTENT: là đại diện cho một ánh xạ giữa những gì người dùng đưa vào, và hành động sẽ được thực hiện bởi phần mềm
+ Ví dụ: 2 câu hỏi với bot dự báo thời tiết:
▪ Hôm nay ở Hồ Chí Minh nắng to không?
▪ Hà Nội 2 tuần tới có mưa không?
+ Với cả hai câu hỏi này, người dùng đều đang mong muốn Chatbot trả lờithông tin dự báo về thời tiết Như vậy, khi lập trình Chatbot, chỉ cần 1 hành động cho
cả hai câu hỏi, hay cần tạo một INTENT cho chúng
+ Nói một cách khác, một INTENT là một tập những gì người dùng nói mà chúng có cùng một ý nghĩa
- ENTINY: được sử dụng để trích xuất các giá trị của tham số từ ngôn ngữ tự nhiên Chúng giúp xác định các từ khóa cụ thể quan trọng để hướng đến mục đích cụ thể cho câu trả lời
+ Ví dụ: Từ 2 câu hỏi với bot dự báo thời tiết ở trên, ta thấy “Hôm nay”, “2 tuần tới” sẽ có một entity tương ứng là Thời gian Hồ Chí Minh, Hà Nội, sẽ là entity Vị trí
- AGENT: dùng để đại diện cho một mô-đun (module) NLU (Natural Language Understanding – Phân tích để hiểu ngôn ngữ tự nhiên)
Trang 26Hình 2-11: Ví dụ về Agent trong Dialogflow
15 + AGENT giúp phân tích những những gì người dùng đưa vào (text hoặc voice) để chuyển thành những dữ liệu mà có thể xử lý được bằng lập trình +
Sử dụng một AGENT để quản lý các đoạn hội thoại thông qua INTENTS, ENTITIES
Hình 2-12: Mô tả cuộc trò chuyện giữa người và máy
2.5.3 Lý do lựa chọn
Dialogflow hiện có sẵn các kịch bản và Dialogflow cũng được lập trình khá tốt với lượng dữliệu lớn Ngoài ra Dialogflow còn cho phép tích hợp Chatbot với Messanger hay Skype haySlack một cách rất đơn giản
Dialogflow bao gồm khả năng học máy để cải thiện hơn nữa việc phát hiện các ý định từ những phát biểu của người dùng
2.5.4 Áp dụng vào đề tài
Sử dụng bot Dialogflow được nhóm cài đặt, training kết nối với Facebook Messenger sau đótích hợp vào website Người dùng giao tiếp với bot thông qua Facebook Messenger theo 2hình thức chưa đăng nhập messenger hoặc đã đăng nhập, nội dung cuộc trò chuyện được lưulại ở Facebook Messenger nếu người dùng đã đăng nhập Facebook Messenger
Chatbot xuất hiện tại tất cả các màn hình của người dùng
Trang 2716
Hình 2-13: Chatbot phản hồi câu hỏi của khách hàng
2.6 Thuận toán khuyến nghị Neighborhood - Based Collaborative Filtering
2.6.1 Giới thiệu – Lý do lựa chọn
Neighborhood-based Collaborative Filtering (NBCF) là phương pháp gợi ý sản phẩm (items)dựa trên mức độ quan tâm của một (khách hàng) user tới một item dựa trên các users khácgần giống với user này Việc gần giống nhau giữa các users có thể được xác định thông quamức độ quan tâm của các users này tới các items khác mà hệ thống đã biết
17
Ví dụ hình 2-16, Nam, Hương đều thích ăn dưa hấu, dâu tây.Mặt khác, Nam cũng thích ăn cam, vậy nhiều khả năng Hương cũng thích ăn cam
Trang 28Hình 2-14: Ví dụ về Neighborhood-based Collaborative Filtering Hai câu hỏi quan trọng nhất trong một hệ thống Neighborhood-based Collaborative Filtering là:
• Làm thế nào để xác định được sự giống nhau giữa hai users?
• Khi đã xác định được các users gần giống nhau, làm thế nào dự đoán được mức độ quan tâm của một user lên một item?
Phương pháp này được chia thành 2 hướng, đó là :
• User-User Collaborative Filtering (uuCF)
• Item-Item Collaborative Filtering (iiCF)
Trong đề tài khóa luận này, nhóm chọn phương pháp Item-Item Collaborative Filtering (iiCF) để nghiên cứu và áp dụng vào hệ thống
18
2.6.2 Một số định nghĩa
2.6.2.1 Utility Matrix (Ma trận tương tác)
Ma trận tương tác Người dùng – Sản phẩm (Utility Matrix/User – Item matrix) là một cơ sở
dữ liệu mô tả sở thích của mỗi User với từng Item trong hệ thống Về mặt hình thức, cơ sở
dữ liệu này có thể biểu diễn dưới dạng ma trận trong đó mỗi hàng tương ứng với một User,mỗi cột tương ứng với một Item, giá trị tại mỗi ô của ma trận chính là giá trị
Trang 29rating của User cho Item đó
Hình 2-15: Ma trận tương tác Người dùng – Sản phẩm
2.6.2.2 Cosine similarity ( Độ tương quan của các vector)
Sau khi biểu diễn các rating thành utility matrix, mỗi cột (user) là một vector với độ dài là sốlượng các item mà user đó đã rating Để tính độ tương đồng giữa các vector ta sẽ dùng hàmCosine similarity
Áp dụng công thức:
Hình 2-16: Công thức tính độ tương đồng giữa 2 vector (Với Ai, Bi là thành phần của vector A, B tương ứng.)
19 Cos góc alpha được gọi là cosine similarity, đó chính là độ tương đồng của vector A và B Giá trị của cosine luôn nằm trong đoạn [-1, 1] Vậy ta rút ra được
- Nếu giá trị cosine bằng 1, nghĩa là góc hợp bởi vector A và vector B là 0 độ Tức haivector trùng nhau => đối tượng A, B giống nhau
- Ngược lại, giá trị cosine càng tiến dần về -1 thì A, B là khác nhau
2.6.2.3 Chuẩn hóa ma trận Utility Matrix
Để tính độ tương đồng giữa hai user, ta cần xây dựng vector cho mỗi user rồi áp dụng hàm cosine similarity giữa hai vectors đó
Các vectors này được xây dựng trực tiếp dựa trên Utility matrix Tuy nhiên, khó khăn là các
Trang 30cột, hàng của ma trận Utility matrix thường có rất nhiều ô không có giá trị (mising ratings) vìmỗi user thường chỉ rated một số lượng rất nhỏ các items Vì vậy, ta sẽ thêm giá trị vào các ô này sao cho không làm ảnh hưởng nhiều tới sự giống nhau giữa hai vector
Ta sẽ chuẩn hóa dữ liệu cho ma trận Utility matrix bằng cách trừ đi ở mỗi cột (là các ratingcủa cùng 1 user) trung bình giá trị rating của cột Việc này là để loại bỏ sự khác biệt về mức
độ rating của các user
U0 U1 U2 U0 U1 U2I0 5 ? ? I0 1.67 0 0I1 4 2 4 ➔ I1 0.67 -0.5 0.67I2 ? 3 4 I2 0 0.5 0.67I3 1 ? 2 I3 -2.33 0 -1.33
3.33 2.5 3.33
20 Bảng 2-1: Ví dụ về chuẩn hóa ma trận uuCF
Ví dụ: Có một số user khó tính có thể cho điểm cao nhất là 3 nhưng user dễ tính thì điểmthấp nhất là 3 Khi đó nếu nhận định user khó tính không thích item (nếu ta coi 3 là điểmthấp) hoặc user dễ tính yêu thích item (nếu ta coi 3 là điểm cao) là không chuẩn xác Chuẩnhóa giá trị rating nhằm mục đích đưa trung bình rating của các user sau khi chuẩn hóa về 0.Gía trị rating dương thể hiện user ưa thích item và trái lại âm sẽ là không thích, bằng 0 làtrung lập
2.6.2.4 Công thức tính normalized rating
Sau khi có được ma trận tương đồng giữa các users, ta sẽ dự đoán rating của một user cho một item bằng cách xác định trên ma trận hệ số tương quan một tập N(u, k|i) gồm k users có giá trị tương đồng lớn nhất đối với user u mà đã rated item i Giá trị dự đoán rating của user u
sẽ được tính bằng tổng có trọng số của các rating trong tập k users tương đồng nêu trên theo công thức:
Trang 31Hình 2-17: Công thức dự đoán noralized rating của user U cho item I
2.6.2.5 Root Mean Squared Error (RMSE)
Sai số bình phương trung bình theo căn bậc hai (Root Mean Square Error – RMSE) được định nghĩa là căn bậc hai của trung bình bình phương sai số giữa giá trị xếp hạng thực tế và giá trị xếp hạng dự đoán:
Hình 2-18: Công thức tính RMSE
21 Trong đó:
- Dtest: tập kiểm tra
- rui: dự đoán của người dùng u trên item i trên tập kiểm tra
- r̂ui: dự đoán của người dùng u trên item i theo thuật toán gợi ý
2.6.3 Tiến hành thực hiện
2.6.3.1 Bài toán đặt ra
Xét ví dụ Utility matrix Y trong Hình 2-19
Trang 32Hình 2-19: Utility Matrix Y Giả sử có các user (khách hàng) từ u0 đến u6 và các item (sản phẩm) từ i0 đến i4, mỗi giá trịtrong ô vuông là mức độ rating (đánh giá) của user cho item tương ứng Bài toán đặt ra là:tính giá trị dự đoán rating cho các dấu “?”
2.6.3.2 Hướng tiếp cận
22
Trang 33Hình 2-20: Lọc cộng tác dựa theo sản phẩm Hướng tiếp cận:
- Biểu diễn mỗi item bằng một vector thuộc tính Từ đó, tính toán độ tương đồng giữacác item
- Để dự đoán rating của user U với một item I, ta sẽ lấy ra k items đã từng được Urating và có độ tương đồng với item I là cao nhất Sau đó, dựa vào những ratingcủa user U đó với k item I để tính toán ra kết quả
- Lấy những items có dự đoán rating cao nhất gợi ý cho U
2.6.3.3 Thực hiện các bước
2.6.3.3.1 Tính độ tương đồng giữa các user
Chuẩn hóa ma trận Utility Matrix
Áp dụng cách tính chuẩn hóa ma trận Utility Matrix, thay vì tính trung bình cộng ratings củacác users, ta sẽ tính trung bình cộng ratings của các items, ta có bảng chuẩn hóa như sau:
23
Trang 34Hình 2-21: Ma trận chuẩn hóa (iiCF)
Với độ tương đồng lần lượt với i2 là: 0.49, 0, -0.55, -0.88
Chọn k = 2, vậy 2 giá trị lớn nhất là 0.49, 0 tương ứng với các items i0, i1 có normalized rating với U0 lần lượt: 2.4, 2
24
Áp dụng công thức tính normalized rating, ta có:
Ŷi2,u0 = 0.49 ∗ 2.4 +0∗2
Trang 35|0.49|+ |0|≈ 2.4
Áp dụng cho các giá trị còn thiếu trong ma trận Utility matrix Y, ta được:
Hình 2-23: Ma trận normalized ratings matrix đầy đủ (iiCF) Sau khi lập được ma trận normalized ratings matrix đầy đủ, ta có thể quy đổi các giá trị ratings đã chuẩn hoá về thang 5 có thể được thực hiện bằng cách cộng các cột của ma trận trận Y với giá trị rating trung bình của mỗi user như đã tính ở bước chuẩn hóa ma trận
Từ ma trận normalized ratings matrix đầy đủ, ta sẽ gợi ý cho các user tương ứng với các item
có normalized ratings lớn hơn 0 – tương ứng với việc user này có nhiều khả năng thích hơn
2.6.4 Áp dụng vào đề tài
Khi người dùng đăng nhập vào website, hệ thống sẽ kiểm tra xem người dùng đó đã rating cho sản phẩm nào chưa
Trang 36- Thường hợp 1: Đây là người dùng mới hoặc người dùng ít tương tác
+ Với trường hợp này, hệ thống sẽ khuyến nghị sản phẩm bán chạy nhất theo từng danh mục, sản phẩm mới,…
25
- Thường hợp 2: Người dùng đã ít nhất 1 lần rating, tương tác với sản phẩm + Với
trường hợp này, ngoài các khuyến nghị của trường hợp 1, người dùng sẽ được
hệ thống khuyến nghị cá nhân hóa bằng phương pháp Item – item
Collaborative Filtering dựa trên các sản phẩm mà người này đã rating ở mục
“Gợi ý hôm nay”
Hình 2-24: Gợi ý sản phẩm bằng Item –item Collaborative Filtering trên website
Trang 37+ Xem thông tin sản phẩm
+ Xem các sản phẩm của shop
+ Đặt hàng và mua hàng
+ Quản lý giỏ hàng
+ Theo dõi đơn hàng
+ Chỉnh sửa thông tin cá nhân
+ Thống kê doanh thu
+ Quản lý thông tin nhà bán
27 + Quản lý wallet (ví tiền)