1 TÓ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ội thấ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
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
TP HỒ CHÍ MINH, 2021
Trang 2ĐẠ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
TP HỒ CHÍ MINH, 2021
Trang 3THÔ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
1 ……… – Chủ tịch
2 ……… – Thư ký
3 ……… – Ủy viên
4 ……… – Ủy viên
Trang 4LỜI CẢM ƠN
Sau quá trình học tập và rèn luyện tại Trường Đại học Công nghệ Thông tin,
được sự tận tình giảng dạy và giúp đỡ của quý thầy cô, đặc biệt là quý thầy cô của
khoa Công nghệ Phần mềm, chúng em đã gặt hái được rất nhiều kiến thức nền tảng
bổ ích, có thể áp dụng vào luận văn cũng như áp dụng trong những chặng đường tiếp
theo sau này
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ói chung, 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ăn nà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 mong nhậ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ÂU
Trang 5MỤC LỤC
TÓM TẮT KHÓA LUẬN 1
Chương 1: 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 nay 3
1.3 Đối tượng nghiên cứu 4
1.4 Phạm vi nghiên cứu 4
1.5 Phương pháp thực hiện 4
Chương 2: KIẾN THỨC NỀN TẢNG 6
2.1 Tổng quan về Nodejs 6
2.1.1 Khái niệm 6
2.1.2 Lý do lựa chọn 7
2.2 Tổng quan về Express Framework 8
2.2.1 Giới thiệu ExpressJS Framework 8
2.2.2 Lý do lựa chọn 8
2.3 Tổng quan về EJS template 9
2.3.1 Giới thiệu 9
2.3.2 Lý do lựa chọn 10
2.4 Cơ sở dữ liệu PostgreSQL 10
2.4.1 Giới thiệu 10
Trang 62.4.2 Lý do lựa chọn 11
2.5 Chatbot Dialogflow 11
2.5.1 Tìm hiểu chatbot 11
2.5.2 Giới thiệu Chatbot Dialogflow 14
2.5.3 Lý do lựa chọn 16
2.5.4 Áp dụ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ố định nghĩa 19
2.6.3 Tiến hà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ến trú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ệ thống 32
3.2.1 Sơ đồ Use case 32
3.2.2 Sơ đồ lớp 66
3.2.2.2 Phân tích và thiết kế cơ sở dữ liệu 68
3.3 Thiết kế giao diệ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ười bán 105
3.2.2.2 Giao diện dành cho admin 111
Trang 7Chương 4: KẾT LUẬN, HƯỚNG PHÁT TRIỂN 116
4.1 Kết quả đạt được 116
4.2 Nhược điểm 117
4.3 Hướng phát triển 117
TÀI LIỆU THAM KHẢO 118
Trang 8DANH 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
Hì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
Trang 9Hì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
Hì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
Trang 10Hì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 3-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
Hì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à mua hà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
Trang 11Hì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 3-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
Hình 3-63: Giao diện chờ xác nhận chuẩn bị hàng Hình 3-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 3-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
Trang 12Hì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
Trang 13DANH 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
Bả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
Trang 14Bả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 15Bảng 3-44: Bảng AddressBook Bảng 3-45: Bảng Province
Trang 16DANH MỤC TỪ VIẾT TẮT
Từ 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
tâm (rating) của user với mỗi item
uuCF 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 171
TÓ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ội thấ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úp người dùng dễ sử dụng mà không cần quá nhiều tài nguyên và nhân lực
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
Trang 18Đố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ác kí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èo nhấ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ường rộ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ột trong 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 web thươ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àng bằ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
Trang 193
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 Thanh 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ận tiện trong quá trình mua hà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,
Giỏ hàng Sản phẩm trong giỏ hàng
được chọn sẽ tiến hành thanh toán, còn các sản phẩm bỏ chọn sẽ lưu lại trong giỏ hàng cho việc mua 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àng cho shipper, hàng đến tay khách hàng, admin xác nhận đơn hàng thành công, tiền sẽ chuyển vào ví của nhà bán
Nhà bán nhận tiền và xác nhận đơn hàng Đối với trường hợp thanh toán online, nhà bán nhận tiền trước và xác nhận đơn hàng sau Điều này gây bất tiện cho các
Trang 204
trường hợp thất lạc hàng hó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
1.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 doanh nghiệp, xưởng nội thất và người tiêu dùng trong nước trên nền tảng website 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: based method, Collaborative filtering method
Content-• 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
Trang 215
Trang 22Hì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ành khác nhau: OS X, Microsoft Windows, Linux Phần Core bên dưới của Nodejs được viết hầu hế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ể
Trang 237
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ông dụ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 nhanh hơ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ận dụ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
Hì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ác má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
Trang 248
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ính nă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
Hình 2-3: Tổng quan mô hình hoạt động của ExpressJS
2.2.2 Lý do lựa chọn
ExpressJS được xây dựng dựa trên NodeJs, được hỗ trợ việc phát triển ứng dụng theo mô hình MVC, mô hình phổ biến cho việc lập trình web hiện nay
Trang 259
Hình 2-4: Các tính năng của ExpressJS Cho phép định nghĩa Middleware hỗ trợ cho việc tổ chức và tái sử dụng code Định nghĩa routes 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
Trang 2610
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ách thô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ía server 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 xem củ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
Hì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
Trang 2711
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ày cung 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 bở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
Trang 2812
Đị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ới ngườ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ạng tin 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 2913
Hì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
Trang 3014
- 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 Api.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ữa ngườ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)
Trang 3115
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ời thô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ẽ
Trang 3216
+ 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 hay Slack 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 2 hình thức chưa đăng nhập messenger hoặc đã đăng nhập, nội dung cuộc trò chuyện được lưu lạ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 3317
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ác gầ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 qua mức độ quan tâm của các users này tới các items khác mà hệ thống đã biết
Trang 3418
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
Hì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
Trang 3519
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ị rating 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àm Cosine 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.)
Trang 3620
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 hai vector 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 cộ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 rating củ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
Trang 3721
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ểm thấ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ểm thấ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ẩn hó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:
Hì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
Trang 3822
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
Hì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
Trang 3923
Hì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ữa cá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
U rating và có độ tương đồng với item I là cao nhất Sau đó, dựa vào những rating củ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ủa cá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:
Trang 40Vớ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