End-to-end testing với Rasa……….……….44 Trang 13 MỞ ĐẦU Trong thời đại số hóa ngày nay, khi mọi hoạt động kinh doanh đều chịu ảnh hưởng sâu rộng bởi sự phát triển của công nghệ, chatbot
Trang 1KHOA CÔNG NGHỆ THÔNG TIN 1 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Trang 2-
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Hệ : ĐẠI HỌC CHÍNH QUY
Trang 3LỜI CẢM ƠN
Đầu tiên, em xin em xin gửi lời cảm ơn chân thành tới các thầy cô trong Học viện Công nghệ Bưu chính Viễn thông nói chung và các thầy cô trong khoa Công nghệ thông tin nói riêng, những người đã cho em cơ hội được học tập, tích lũy kiến thức và tận tình chỉ dẫn em trong những năm vừa qua cũng như cơ hội để làm đồ án tốt nghiệp này
Đặc biệt, em xin gửi lời cảm ơn tới cô TS Nguyễn Thị Mai Trang, người đã trực tiếp hướng dẫn, chỉ bảo em thực hiện đồ án, củng cố thêm kiến thức về chuyên môn cũng như thực tế và tạo điều kiện thuận lợi nhất để em thực hiện đồ án
Cuối cùng, em xin gửi lời cảm ơn tới bố mẹ, người thân và bạn bè đã hỗ trợ và luôn
là chỗ dựa tinh thần trong quá trình học tập và làm đồ án tốt nghiệp
Dù đã cố gắng rát nhiều trong quá trình thực hiện đồ án nhưng đồ án rất khó tránh khỏi những thiếu sót, em rất mong nhận được sự góp ý, chỉ bảo của quý thầy cô
Em xin chân thành cảm ơn!
Hà Nội, tháng 12 năm 2023 Đặng Minh Đạt
Trang 4Hệ đào tạo: Đại học chính quy
Tôi – Đặng Minh Đạt – cam kết đồ án tốt nghiệp là công trình nghiên cứu của bản thân dưới sự hướng dẫn của TS Nguyễn Thị Mai Trang Các kết quả nêu trong đồ án tốt nghiệp là trung thực, là thành quả của riêng tôi, không sao chép bất kỳ công trình nào khác Tất cả những tham khảo trong đồ án tốt nghiệp đều được ghi rõ ràng và đầy đủ nguồn gốc trong danh mục tài liệu tham khảo Tôi xin hoàn toàn chịu trách nhiệm nếu vi phạm quy chế của nhà trường
Hà Nội, tháng 12 năm 2023
Tác giả Đặng Minh Đạt
Trang 5NHẬN XÉT (Của giảng viên phản biện)
Trang 6
NHẬN XÉT (Của giảng viên hướng dẫn)
Điểm: (bằng chữ: ) Đồng ý/Không đồng ý cho sinh viên bảo vệ trước hội đồng chấm đồ án tốt nghiệp?
……, ngày…… tháng ……năm 2023
CÁN BỘ - GIẢNG VIÊN HƯỚNG DẪN
(ký, ghi rõ họ tên)
Trang 7MỤC LỤC
DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT viii
DANH MỤC CÁC BẢNG ix
DANH MỤC CÁC HÌNH VẼ x
MỞ ĐẦU 1
CHƯƠNG I TỔNG QUAN VỀ SỬ DỤNG CHATBOT HỖ TRỢ BÁN HÀNG TRỰC TUYẾN 3
1.1 Giới thiệu đề tài 3
1.2 Chatbot và lịch sử phát triển của chatbot 3
1.2.1 Chatbot 3
1.3 Phân loại chatbot 6
1.4 Các phương pháp xây dựng chatbot 7
1.5 Chatbot trong hỗ trợ bán hàng trực tuyến 8
1.6 Các nền tảng hỗ trợ xây dựng chatbot 9
1.7 Kết luận chương 10
CHƯƠNG II NỀN TẢNG PHÁT TRIỂN CHATBOT BÁN HÀNG VÀ CÁC THUẬT TOÁN TÌM KIẾM SẢN PHẨM 12
2.1 Nền tảng Rasa 12
2.1.1 Giới thiệu về nền tảng Rasa 12
2.1.2 Ưu điểm khuyết điểm của Rasa trong xây dựng chatbot 12
2.1.3 Lựa chon Rasa trong xây dựng chatbot bán hàng 14
2.3 Các thành phần của Rasa 15
2.3.1 Mô hình hiểu ngôn ngữ tự nhiêu Rasa NLU 15
2.3.2 Quản lý hội thoại Rasa Core 16
2.3.4 Các thành phần khác hệ thống Rasa 16
2.4 Phương pháp đánh giá hiệu suất của Rasa NLU, Rasa Core 17
Trang 82.5 Thuật toán tìm kiếm sản phẩm từ cơ sở dữ liệu dựa trên văn bản người dùng
18
2.5.1 Các thuật toán tính sự tương đồng văn bản 19
2.5.2 Lựa chọn thuật toán 21
2.6 Kết luận chương 22
CHƯƠNG III: XÂY DỰNG CHATBOT HỖ TRỢ BÁN QUẦN ÁO SỬ DỤNG NỀN TẢNG RASA 23
3.1 Mô tả hệ thống 23
3.2 Phân tích và xây dựng các chức năng 24
3.2.1 Chào hỏi cơ bản 25
3.2.2 Hỏi thông tin shop, sản phẩm 26
3.2.3 Gợi ý mua hàng 26
3.2.4 Hỗ trợ đặt hàng 26
3.2.5 Hỗ trợ hủy đơn hàng 27
3.3 Biểu đồ tuần tự 27
3.3.1 Chào hỏi cơ bản 27
3.3.2 Hỏi thông tin shop, sản phẩm 29
3.3.3 Gợi ý mua hàng 31
3.3.4 Hỗ trợ đặt hàng 32
3.3.5 Hỗ trợ hủy đơn hàng 32
3.4 Xây dựng Chương trình 33
3.4.1 Nguồn dữ liệu 33
3.4.2 Xây dựng ý định 33
3.4.3 Xây dựng thực thể 36
3.4.4 Xây dựng câu trả lời 37
3.4.5 Xây dựng kịch bản 40
3.4.6 Đào tạo chatbot 41
Trang 93.4.7 Kiểm tra chatbot 43
3.4.8 Kết nối chatbot với telegram 44
3.5 Kết luận chương 45
CHƯƠNG IV KẾT QUẢ THỰC NGHIỆM, ĐÁNH GIÁ CHATBOT 46
4.1 Môi trường thực nghiệm 46
4.2 Kết quả thực nghiệm 46
4.2.1 Đánh giá mô hình Rasa NLU và Rasa Core 46
4.2.2 Test trên giao diện người dùng cuối 49
4.3 Kết luận chương 55
KẾT LUẬN 56
TÀI LIỆU THAM KHẢO 57
Trang 10DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT
STT Từ viết tắt Tiếng Anh Tiếng Việt/Giải thích
1 AI Artificial intelligence Trí tuệ nhân tạo
Hệ thống hiểu ngôn ngữ tự nhiên
5 API Application Programming
Trang 11DANH MỤC CÁC BẢNG
Bảng 1 So sánh ưu nhược điểm của Rasa và một số nền tảng khác……….13
Bảng 2 Bảng phân confusion matrix……… ……… 17
Bảng 3 Xây dựng ý định………33
Bảng 4: Các Action của chatbot……….39
Bảng 5: Đánh giá trích chọn thông tin thực thể (entity)……….47
Bảng 6: Đánh giá mô hình Rasa Core………47
Bảng 7: Test trên giao diện người dùng cuối……… 48
Trang 12DANH MỤC CÁC HÌNH VẼ
Hình 1.1 Chatbot trong Marketing và bán hàng……….………8
Hình 1.2 Nền tảng hỗ trợ xây dựng chatbot……….……….10
Hình 2.1 Mô tả quá trình xử lý thông tin qua Rasa NLU ……… 15
Hình 2.2 Các thành phần hệ thống RASA……….16
Hình 3.1 Kiến trúc chatbot……… ……… 23
Hình 3.2 Các chức năng của chatbot……….………….25
Hình 3.3 Sơ đồ tuần tự của Giới thiệu chức năng……….……….…………27
Hình 3.4 Sơ đồ tuần tự của Chào hỏi……….…………28
Hình 3.5 Sơ đồ tuần tự Trả lời một số câu hỏi khác……… 28
Hình 3.6 Sơ đồ tuần tự Hỏi thông tin shop……… ………… 29
Hình 3.7 Sơ đồ tuần tự Hỏi về các loại sản phẩm……… …………29
Hình 3.8 Sơ đồ tuần tự Hỏi theo giá cả……….…………30
Hình 3.9 Sơ đồ tuần tự Hỏi chi tiết sản phẩm theo tên………30
Hình 3.10 Sơ đồ tuần tự Hỏi chi tiết sản phẩm đã liệt kê trước đó………31
Hình 3.11 Sơ đồ tuần tự Gợi ý mua hàng……… ……….31
Hình 3.12 Sơ đồ tuần tự Hỗ trợ đặt hàng……….……… 32
Hình 3.13 Sơ đồ tuần tự Hủy đơn hàng……….………32
Hình 3.14 Đào tạo một model……….……… 41
Hình 3.15 Đào tạo cho chatbot dạng shell……….………42
Hình 3.16 Chế độ đào tạo cho chatbot bằng Interactive Learning……….42
Hình 3.17 Ví dụ về trực quan hoá cuộc hội thoại ……….………43
Hình 3.18 End-to-end testing với Rasa……….……….44
Hình 4.1 Intent Confusion matrix……… ……… 46
Trang 13MỞ ĐẦU
Trong thời đại số hóa ngày nay, khi mọi hoạt động kinh doanh đều chịu ảnh hưởng sâu rộng bởi sự phát triển của công nghệ, chatbot đã nổi lên như một công cụ quan trọng không thể thiếu trong ngành bán hàng và tiếp thị Với khả năng tương tác tự động thông qua giao diện trò chuyện, chatbot không chỉ đơn giản là một phần mềm mà còn là một
"người trợ giúp ảo" mạnh mẽ, mang lại sự tiện lợi và tối ưu hóa trải nghiệm của khách hàng
Việc sử dụng chatbot trong bán hàng đã không còn chỉ là xu hướng mà là một nhu cầu thiết yếu Đã từ lâu, việc phục vụ và tương tác trực tiếp với khách hàng là một trong những yếu tố quan trọng nhất trong việc xây dựng mối quan hệ và tạo niềm tin Tuy nhiên, với sự gia tăng của lưu lượng thông tin và nhu cầu phục vụ ngày càng tăng, việc duy trì một đội ngũ nhân viên hỗ trợ khách hàng 24/7 đã trở nên không khả thi đối với nhiều doanh nghiệp
Chính vì lý do này, chatbot đã nổi lên như một giải pháp hoàn hảo Khả năng tự động hóa việc trả lời câu hỏi cơ bản, hỗ trợ tìm kiếm thông tin sản phẩm, xử lý đơn hàng,
và thậm chí là cung cấp dịch vụ hỗ trợ sau bán hàng, chatbot đáp ứng được nhu cầu tương tác của khách hàng một cách nhanh chóng và hiệu quả Đây cũng chính là lý do đề tài “Xây dựng chatbot bán quần áo” được lựa chọn để giúp các doanh nghiệp có thể làm hài lòng khách hàng từ đó có thể tăng doanh thu giảm chi phí một cách hiệu quả
Bên cạnh các ưu điểm của chatbot như hỗ trợ nhanh chóng, giảm chi phí vận hành, hoạt động 24/7 các chatbot được thiết kế để hiểu ngôn ngữ tự nhiên như mục đích, yêu cầu, thực thể được đề cập trong yêu cầu Các chatbot dạng này giúp hiểu thông tin khách hàng cung cấp chính xác hơn, mở rộng khả năng của chatbot và cũng nâng cao chất lượng trò chuyện Vì những ưu điểm kể trên đồ án này tập trung vào việc xây dựng một chatbot có khả năng trò chuyện với khách hàng trong phạm vi bán hàng quần áo online Chatbot này được thiết kế phù hợp với mục đích đề ra và sẽ là trợ thủ đắc lực trong việc bán hàng online hiện nay
Đồ án gồm 5 chương và mục lục với nội dung như sau:
Chương I: Trình bày tổng quan về sử dụng chatbot hỗ trợ bán hàng trực tuyến, trong
đó giới thiệu về đề tài, tìm hiểu chatbot, phân loại chatbot và các framework để xây dựng chatbot
Trang 14phẩm, trong đó giới thiệu về nền tảng xây dựng chatbot Rasa, các thành phần của nó, đồng thời giới thiệu thuật toán có sử dụng trong việc tìm kiếm sản phẩm
Chương III: Xây dựng chatbot hỗ trợ bán quần áo sử dụng nền tảng Rasa, chương này mô tả hệ thống của chatbot, các chức năng cần phát triển, cách để xây dựng các thành phần của chatbot
Chương IV: Kết quả thực nghiệm, đánh giá chatbot, trong đó thử nhiệm chatbot và đánh giá lại dựa trên các tiêu chí của Rasa, ngoài ra sẽ thử nghiệm trên giao diện người dùng cuối
Chương V: Kết luận, chương cuối sẽ đánh giá lại đồ án, những công việc đã làm được trong đồ án và kế hoạch phát triển tiếp trong tương lai
Trang 15CHƯƠNG I TỔNG QUAN VỀ SỬ DỤNG CHATBOT HỖ TRỢ BÁN HÀNG
TRỰC TUYẾN
Trong chương 1, đồ án sẽ giới thiệu chi tiết về đề tài, chatbot, lịch sử phát triển của chatbot, cách để phân loại chatbot, chatbot trong việc bán hang trực tuyến ngày nay như thế nào, ngoài ra sẽ giới thiệu thêm về các nền tảng để phát triển chatbot
1.1 Giới thiệu đề tài
Trong thời đại số hóa ngày nay, khi mọi hoạt động kinh doanh đều chịu ảnh hưởng sâu rộng bởi sự phát triển của công nghệ, chatbot đã nổi lên như một công cụ quan trọng không thể thiếu trong ngành bán hàng và tiếp thị Với khả năng tương tác tự động thông qua giao diện trò chuyện, chatbot không chỉ đơn giản là một phần mềm mà còn là một
"người trợ giúp ảo" mạnh mẽ, mang lại sự tiện lợi và tối ưu hóa trải nghiệm của khách hàng
Việc sử dụng chatbot trong bán hàng đã không còn chỉ là xu hướng mà là một nhu cầu thiết yếu Đã từ lâu, việc phục vụ và tương tác trực tiếp với khách hàng là một trong những yếu tố quan trọng nhất trong việc xây dựng mối quan hệ và tạo niềm tin Tuy nhiên, với sự gia tăng của lưu lượng thông tin và nhu cầu phục vụ ngày càng tăng, việc duy trì một đội ngũ nhân viên hỗ trợ khách hàng 24/7 đã trở nên không khả thi đối với nhiều doanh nghiệp
Chính vì lý do này, chatbot đã nổi lên như một giải pháp hoàn hảo Khả năng tự động hóa việc trả lời câu hỏi cơ bản, hỗ trợ tìm kiếm thông tin sản phẩm, xử lý đơn hàng,
và thậm chí là cung cấp dịch vụ hỗ trợ sau bán hàng, chatbot đáp ứng được nhu cầu tương tác của khách hàng một cách nhanh chóng và hiệu quả Đây cũng chính là lý do tôi chọn
đề tài “Xây dựng chatbot bán quần áo” để hỗ trợ trong việc bán hàng online
1.2 Chatbot và lịch sử phát triển của chatbot
1.2.1 Chatbot
Chatbot được định nghĩa là một loại phần mềm hoặc chương trình máy tính được thiết kế để tương tác với con người thông qua giao diện trò chuyện, thường là qua các ứng dụng nhắn tin hoặc trang web Chatbot có khả năng tự động phản hồi và đáp ứng các câu hỏi, yêu cầu hoặc nhu cầu của người dùng dựa trên các quy tắc cụ thể hoặc thông qua trí tuệ nhân tạo (Artificial Intelligient,AI) Mục tiêu chính của chatbot là cung cấp thông tin,
hỗ trợ trong việc giải quyết vấn đề, hoặc thực hiện các nhiệm vụ cơ bản mà không cần sự can thiệp trực tiếp từ con người
Trang 16Các chatbot có thể được lập trình để thực hiện nhiều chức năng khác nhau, từ việc cung cấp thông tin về sản phẩm và dịch vụ, hỗ trợ tư vấn mua hàng, trả lời câu hỏi tự động đến việc thực hiện các nhiệm vụ như đặt hàng, đặt lịch hẹn hoặc hỗ trợ kỹ thuật cơ bản
Được xây dựng dựa trên các thuật toán máy học và trí tuệ nhân tạo, một số chatbot tiên tiến có khả năng học hỏi từ dữ liệu và tương tác người dùng để cung cấp trải nghiệm tương tác tốt hơn và cá nhân hóa hơn Các công nghệ như xử lý ngôn ngữ tự nhiên (NLP) giúp chatbot hiểu và xử lý ngôn ngữ tự nhiên của con người để có thể tương tác một cách
tự nhiên và linh hoạt hơn
1.2.2 Lịch sử phát triển
Chatbot đầu tiên ra đời năm 1960, tên là Eliza, và là một chương trình máy tính của Joseph Weizenbaum (Viện Công nghệ Massachusetts, Mỹ) Chương trình được thiết kế theo cách bắt chước cuộc trò chuyện của con người Chatbot Eliza hoạt động bằng cách chuyển các từ mà người dùng đã nhập vào máy tính và sau đó ghép nối chúng vào danh sách các câu trả lời có kịch bản Nó sử dụng một kịch bản mô phỏng một nhà tâm lý trị liệu Kịch bản được chứng minh là một tác động đáng kể đến việc xử lý ngôn ngữ tự nhiên
và trí thông minh nhân tạo và là một trong những chương trình đầu tiên có thể vượt qua bài kiểm tra Turing
Vào năm 1972 một bác sĩ tâm thần người Mỹ Kenneth Colby đã xây dựng 1 chatbot với tên Parry Chương trình bắt chước một bệnh nhân tâm thần phân liệt Nó là một chương trình ngôn ngữ tự nhiên tương tự như suy nghĩ của một cá nhân Parry hoạt động thông qua một hệ thống phức tạp các giả định, phân bổ và “phản ứng cảm xúc” được kích hoạt bằng cách thay đổi trọng số được gán cho các đầu vào bằng lời nói Trong cùng năm đó, Parry
và Eliza đã “gặp” và “nói chuyện” với nhau tại Hội nghị Quốc tế về Truyền thông Máy tính ở Washington DC Sau đó, Parry cũng đã vượt qua một phiên bản của Turing Test
Những năm 1980 chatbot Jabberwacky được phát triển, nó được thiết kế để “mô phỏng trò chuyện của con người tự nhiên theo cách thú vị và hài hước” Mục đích ban đầu của dự án Chatbot Jabberwacky là tạo ra một trí tuệ nhân tạo có khả năng vượt qua các phép thử Turing Nó được thiết kế để bắt chước tương tác của con người và thực hiện các cuộc hội thoại với người dùng Mục đích cuối cùng của chương trình là chuyển từ một hệ thống dựa trên văn bản sang toàn bộ hoạt động bằng giọng nói Tác giả của nó tin rằng nó
có thể được kết hợp vào các vật thể xung quanh nhà như robot, các thiết bị thông minh,
…Trong khi tất cả các chatbot trước đó dựa trên cơ sở dữ liệu tĩnh để trả lời và trò chuyện, Jabberwacky thu thập cụm từ được sử dụng bởi những người tham gia trò chuyện với nó
Trang 17Nó tự thêm những câu trả lời vào cơ sở dữ liệu và tự động phát triển nội dung của riêng mình Trong năm 2008, Jabberwacky đã phát hành một phiên bản mới và đổi tên thành Cleverbot
Đến đầu những năm 1990, Creative Labs đã tạo ra Dr SBAITSO, Dr SBAITSO “trò chuyện” với người dùng như thể nó là một nhà tâm lý học Mặc dù hầu hết các câu trả lời của nó đều là “WHY DO YOU FEEL THAT WAY?” nghĩa là “Bạn cảm thấy như thế nào?” Thay vì bất kỳ loại tương tác phức tạp, khi đối mặt với một cụm từ mà nó không thể hiểu được, nó thường trả lời là “THAT’S NOT MY PROBLEM” (Đó không phải là vấn đề của tôi)
Sau Dr SBAITSO vài năm ALICE được xây dựng trên cùng một kỹ thuật được sử dụng để tạo nên ELIZA ALICE ban đầu được sáng tạo bởi Richard Wallace, ra đời vào ngày 23 tháng 11 năm 1995 Chương trình được viết lại bằng ngôn ngữ Java vào năm 1998 ALICEBOT sử dụng một lược đồ XML có tên AIML (Artificial Intelligence Markup Language - Ngôn ngữ đánh dấu trí thông minh nhân tạo) để xác định các quy tắc trò chuyện heuristic Tuy nhiên, nó lại không thể vượt qua Các phép thử Turing
Năm 2001, SmarterChild được ra đời, SmarterChild là một Chatbot có sẵn trên mạng AOL Instant Messenger và Windows Live Messenger (trước đây là MSN Messenger) AOL Instant Messenger là một chương trình tin nhắn tức thời và hiện diện do AOL tạo ra, sử dụng giao thức nhắn tin tức thời OSCAR độc quyền và giao thức TOC để cho phép người dùng đăng ký giao tiếp trong thời gian thực SmarterChild đóng vai trò giới thiệu cho việc truy cập dữ liệu nhanh và cuộc trò chuyện được cá nhân hóa thú vị hơn Hơn nữa, khi kết hợp với các nhà mạng, chúng trở thành một kênh tiếp thị hiệu quả và miễn phí Chúng giúp người dùng giao tiếp nhanh chóng với hệ thống mạng bằng cách hiển thị các thông tin ngắn gọn với các lựa chọn trên bàn phím điện thoại
Sau đó 5 năm, IBM Watson được tạo ra với mục tiêu vượt lên và chiến thắng các thí sinh tham dự cuộc thi Jeopardy! Với khả năng chạy hàng trăm thuật toán phân tích ngôn ngữ cùng một lúc, IBM Watson sở hữu một sự thông minh ngôn ngữ đáng ngạc nhiên IBM thiết lập cho Watson có quyền truy cập vào cơ sở dữ liệu khổng lồ về thông tin Watson có thể nhanh chóng truy cập 200 triệu trang dữ liệu, làm cho nó trở thành một máy trả lời câu hỏi lý tưởng (hoặc, trong trường hợp của Jeopardy, Watson trở thành máy tạo câu hỏi lý tưởng) Rõ ràng, một hệ thống có thể nhanh chóng lấy thông tin dựa trên đầu vào đàm thoại cũng có thể cung cấp nền tảng cho việc tạo các trợ lý ảo mạnh mẽ Hiện nay, IBM Watson
Trang 18phục vụ như là “bộ não” cho nhiều chatbots hoạt động trên nhiều ngành công nghiệp và lĩnh vực trên khắp thế giới
Từ năm 2011 đến năm 2016 là khoảng thời gian các ông lớn trong làng công nghệ cho ra hàng loạt các chatbot Siri, một trợ lý cá nhân thông minh, đã được ra mắt vào năm
2011 dưới dạng một ứng dụng iPhone và sau đó được tích hợp là một phần của iOS Năm
2012, Google ra mắt chatbot Google Now Năm 2016, Google đã giới thiệu trợ lý cá nhân thông minh mới Google Assistant, là một sự tiến hóa của Google Now Trợ lý này có thể tham gia đối thoại hai chiều với người dùng Trước đó vào năm 2014, Amazon phát hành Alexa, Microsoft giới thiệu Cortana vào 2015 Với khả năng phân tích và xử lý ngôn ngữ
tự nhiên, các trợ lý ảo này kết nối với các dịch vụ web để trả lời các câu hỏi và đáp ứng các yêu cầu của người dùng
Vào ngày 12 tháng 4 năm 2016 Facebook - mạng xã hội lớn nhất thế giới giới thiệu Messenger Platform Một nền tảng thân thiện hơn và cho phép bất kỳ ai cũng có thể tạo cho mình một chatbot Ngay sau đó, các ứng dụng chat khác như LINE, WhatsApp, Telegram hay Twitter cũng đưa ra các hỗ trợ hoặc các API cho phép người dùng tạo các Chatbot trên ứng dụng nhắn tin Nhưng WeChat của Trung Quốc mới chính là tiên phong trong lĩnh vực này khi cho ra mắt Xiaoice - chatbot khá hoàn thiện từ năm 2013 Trong cuộc đua của các nhà phát triển chatbots, Facebook đang nắm giữ thị phần toàn cầu lớn nhất vì có đến hơn 1 tỷ người sử dụng ứng dụng Messenger hàng tháng Còn riêng ở thị trường Trung Quốc, WeChat lại là ứng dụng chat số 1 mà không ứng dụng chat nào có thể cạnh tranh nổi
1.3 Phân loại chatbot
Dựa vào một số các tiêu chí thì chatbot có thể phân làm nhiều loại Dưới đây là một
số phân loại phổ biến của chatbot:
Trang 19+ Dựa trên học máy (Machine Learning-based): Chatbot sử dụng trí tuệ nhân tạo
và học máy để học từ dữ liệu, cải thiện khả năng tương tác và đáp ứng người dùng
- Theo mục đích sử dụng
+ Dịch vụ/Cung cấp (Service/Offering): Chatbot được sử dụng để cung cấp thông tin, hỗ trợ mua hàng, tư vấn sản phẩm/dịch vụ, và thực hiện các giao dịch + Hỗ trợ (Support): Chatbot chủ yếu được sử dụng để hỗ trợ khách hàng, giải quyết vấn đề kỹ thuật, cung cấp thông tin sau bán hàng, vv
1.4 Các phương pháp xây dựng chatbot
Để tạo một chatbot, có nhiều phương pháp và công nghệ khác nhau sau đây là môt
số phương pháp phổ biến:
- Sử dụng nền tảng chatbot không cần code
Nền tảng này cung cấp môi trường trực quan để tạo các bot mà không cần viết code Chatfuel, ManyChat: Chúng cho phép người dùng tạo chatbot trên Facebook Messenger bằng cách sử dụng công cụ kéo và thả
Botsify, Chatbot.com: Cung cấp các công cụ dễ sử dụng để tạo bot mà không cần code, hỗ trợ tích hợp trên nhiều nền tảng khác nhau
- Xây dựng tự chủ từ đầu
Sử dụng Ngôn ngữ Lập trình và Nền tảng AI/NLP: Sử dụng Python hoặc Node.js và thư viện như TensorFlow, PyTorch, hoặc các nền tảng AI khác để xây dựng các mô hình dựa trên học máy và xử lý ngôn ngữ tự nhiên
Tích hợp với API Trí tuệ nhân tạo: Sử dụng các API như Dialogflow (Google), LUIS (Microsoft), hoặc Wit.ai (Facebook) để tích hợp khả năng hiểu ngôn ngữ tự nhiên vào bot của bạn
- Sử dụng công cụ và framework mã nguồn mở
Rasa: Một framework mã nguồn mở mạnh mẽ cho chatbots, cung cấp khả năng xử lý ngôn ngữ tự nhiên, tương tác và học máy
Botpress: Một nền tảng chatbot mã nguồn mở với khả năng tương tác và tích hợp cao
- Sử dụng dịch vụ trí tuệ nhân tạo
Dialogflow (by Google): Cung cấp khả năng hiểu ngôn ngữ tự nhiên và tạo hội thoại dễ dàng
IBM Watson Assistant: Cho phép tạo các ứng dụng hội thoại thông minh sử dụng AI, học máy và xử lý ngôn ngữ tự nhiên
Trang 20Amazon Lex: Dịch vụ xử lý ngôn ngữ tự nhiên từ Amazon Web Services, cung cấp khả năng xây dựng bot với việc nhận diện giọng nói và xử lý văn bản
- Xây dựng bot trên nền tảng cụ thể (Messenger hoặc Slack, …)
Nếu bạn muốn chatbot của mình hoạt động trên một nền tảng cụ thể như Facebook Messenger, Slack hoặc WhatsApp, bạn có thể sử dụng API và SDK mà nền tảng đó cung cấp
Khi xây dựng chatbot cần xác định rõ mục tiêu, chức năng của chatbot dựa vào đó
sẽ chọn công nghệ và phương pháp cho phù hợp
1.5 Chatbot trong hỗ trợ bán hàng trực tuyến
Hình 1.1 Chatbot trong Marketing và bán hàng(Nguồn tuoitre.vn)
Ngày nay, mua sắm trực tuyến đang trở thành xu hướng phổ biến với sự phát triển nhanh chóng của thương mại điện tử Do đó, cửa hàng trực tuyến ngày càng phải đối mặt với môi trường cạnh tranh gay gắt hơn bao giờ hết Trước tình hình cạnh tranh khốc liệt này, sự tích hợp của chatbot không chỉ trở nên quan trọng mà còn mang lại nhiều lợi ích to lớn
Chatbot đóng vai trò quan trọng trong việc tối ưu hóa trải nghiệm mua sắm trực tuyến Bằng cách cung cấp thông tin sản phẩm, hỗ trợ tư vấn trực tuyến, và xử lý các yêu
Trang 21cầu mua hàng, chatbot giúp cung cấp dịch vụ mua sắm thân thiện và thuận tiện hơn cho khách hàng Ngoài ra, chatbot cũng có khả năng tạo và duy trì một mối quan hệ tiếp cận và tương tác lâu dài với khách hàng, từ đó tăng cường sự trung thành và nâng cao trải nghiệm của họ
Một ưu điểm nổi bật khác của việc tích hợp chatbot là khả năng tự động hoá một số tác vụ như hỗ trợ sau bán hàng, theo dõi đơn hàng và xử lý tình huống phàn nàn của khách hàng Điều này giúp giảm tải cho đội ngũ hỗ trợ khách hàng, giúp họ tập trung vào những vấn đề cụ thể và phức tạp hơn
Trên tất cả, việc tích hợp chatbot vào cửa hàng trực tuyến không chỉ giúp nâng cao năng lực cạnh tranh mà còn tạo ra một môi trường mua sắm trực tuyến thông minh, hiệu quả, và cá nhân hóa hơn đáng kể
1.6 Các nền tảng hỗ trợ xây dựng chatbot
Chatbot đã phát triển rầm rộ vào năm 2016, kể từ đó cũng rất nhiều nền tảng hỗ trợ
để phát triển chatbot được ra đời, đến hiện tại có một số nền tảng phổ biến như:
- Dialogflow: (trước đây gọi là Api.ai) là một nền tảng phát triển chatbot dựa trên cloud, cho phép bạn xây dựng giao diện giọng nói và văn bản có khả năng hiểu ngữ cảnh và xử lý ngôn ngữ tự nhiên
- Microsoft Bot Framework: Đây là một bộ công cụ từ Microsoft để xây dựng chatbots có thể tích hợp với nhiều dịch vụ như Skype, Teams, Slack, và hỗ trợ trí tuệ nhân tạo qua Cognitive Services
- IBM Watson Assistant: Watson Assistant là một công cụ từ IBM, tận dụng khả năng của Watson AI để tạo ra các chatbot Nó có thể được tích hợp vào nhiều nền tảng khác nhau và là lựa chọn mạnh mẽ để xử lý ngôn ngữ tự nhiên
- Amazon Lex: là dịch vụ của AWS cho phép bạn xây dựng các ứng dụng giao tiếp như chatbots hoặc voicebots, sử dụng cùng công nghệ nhận dạng giọng nói và nhận thức ngôn ngữ như là Amazon Alexa
- ManyChat và Chatfuel: Cả hai nền tảng này đều tập trung vào việc tạo chatbot cho Facebook Messenger Chúng được thiết kế để người dùng không cần kỹ năng lập trình, với giao diện kéo và thả (drag-and-drop) dành cho việc thiết lập các luồng hội thoại
- Rasa: là một khung công cụ mã nguồn mở mạnh mẽ cho phép bạn xây dựng chatbots với khả năng hiểu ngôn ngữ tự nhiên, và cung cấp một cơ sở vững chắc cho các hệ thống phức tạp
Trang 22- Botpress: là một nền tảng mã nguồn mở khác, với một giao diện người dùng trực quan và một hệ sinh thái plugin, cho phép mở rộng tính năng và tích hợp dễ dàng
- Botsify: là một dịch vụ chatbot dành cho website và các nền tảng như Facebook Messenger Nó cung cấp các template hội thoại và giao diện kéo và thả, giúp việc tạo bot trở nên đơn giản hơn
- Wit.ai: là một nền tảng của Facebook cho phép người dùng tạo ra các ứng dụng có thể hiểu và xử lý ngôn ngữ tự nhiên Nó thường được dùng để tạo ra các voice interface
Hình 1.2 Nền tảng hỗ trợ xây dựng chatbot
1.7 Kết luận chương
Trong chương 1 đã giới thiệu tổng quan về chatbot hỗ trợ bán hàng trực tuyến thông qua việc trình bày về nội dung đề tài, tìm hiểu về chatbotvà lịch sử phát triển của chatbot Bên cạnh đó cũng tìm hiểu các phương pháp xây dựng chatbot, trình bày chatbot trong hỗ trợ bán hàng trực tuyến và các nền tảng để xây dựng các chatbot này Ở chương này đã làm
rõ các ưu điểm mà một chatbot mang lại đối với việc kinh doanh online và đã làm rõ tính cấp thiết của đề tài “Thiết kế và triển khai chatbot thông minh hỗ trợ bán hàng trực tuyến”
Ở các chương tiếp theo sẽ trình bày về việc xây dựng chatbot phù hợp với đề tài đặt ra
Trang 23Các chương tiếp theo cần ghi kết luận tương tự, trình bày toàn bộ các mục đã được xem xét liệt kê trong chương
Trang 24CHƯƠNG II NỀN TẢNG PHÁT TRIỂN CHATBOT BÁN HÀNG VÀ CÁC
THUẬT TOÁN TÌM KIẾM SẢN PHẨM
Trong chương 2, đồ án giới thiệu nền tảng phát triển chatbot Rasa, so sánh Rasa và một số nền tảng phát triển chatbot phổ biến ngày nay, bên cạnh đó sẽ giới thiệu them về thuật toán để tìm kiếm sản phẩm từ cơ sở dữ liệu dựa trên văn bản người dùng
2.1 Nền tảng Rasa
2.1.1 Giới thiệu về nền tảng Rasa
"Chatbot" là một thuật ngữ quen thuộc trong lĩnh vực trí tuệ nhân tạo, đặc biệt là trong lĩnh vực xử lý ngôn ngữ tự nhiên Chatbot là một công cụ được lập trình để hiểu và trả lời những lời nói và tin nhắn của con người Để xây dựng một con chatbot từ đầu thì tốn rất nhiều công sức và có nhiều rủi ro về hiệu suất và khả năng mở rộng, vì thế đã có rất nhiều framework được phát triển để hỗ trợ việc tạo chatbot dễ dàng hơn, trong đó có Rasa
Rasa là một framework mã nguồn mở mạnh mẽ cho việc xây dựng các ứng dụng trí tuệ nhân tạo dựa trên trò chuyện (chatbot) và xử lý ngôn ngữ tự nhiên (NLP) Nó cung cấp các công cụ để xử lý việc hiểu ý định của người dùng và quản lý logic của các hệ thống trò chuyện, giúp chatbot hiểu và phản hồi một cách tự nhiên dựa trên dữ liệu đầu vào từ người dùng
Rasa bao gồm hai thành phần chính:
• Rasa NLU (Natural Language Understanding): Module này được sử dụng để hiểu ý định (intent) và trích xuất thông tin quan trọng từ văn bản hoặc giọng nói Rasa NLU giúp chatbot hiểu ý định của người dùng và trích xuất thông tin như ngày tháng, địa điểm, số lượng, …
• Rasa Core (Rasa Open Source): Module này quản lý logic của hệ thống trò chuyện, quyết định hành động nào nên được thực hiện dựa trên thông tin từ Rasa NLU và lịch sử trò chuyện
Rasa được ra mắt lần đầu vào năm 2016 dưới dạng một dự án mã nguồn mở, sau đó Rasa nhanh chóng nhận được sự quan tâm của cộng đồng lập trình viên nhờ vào tính linh hoạt và khả năng tùy chỉnh của nó
2.1.2 Ưu điểm khuyết điểm của Rasa trong xây dựng chatbot
Hiện tại các nền tảng hỗ trợ phát triển chatbot đẫ rất nhiều, tùy thuộc vào mục đích, nguồn lực và khả năng tương thích, sau đây là so sánh một số các nền tảng phổ biến hiện nay:
Trang 25Bảng 1 So sánh ưu nhược điểm của Rasa và một số nền tảng khác
Thấp đến Trung bình, dựa vào nền tảng của Facebook
Cao, có hỗ trợ mạnh mẽ từ Azure khi cần
Cao, tích hợp tốt với các dịch
vụ cloud của Google
Tính linh hoạt
(Flexibility)
Rất cao, mã nguồn mở và có thể được tùy chỉnh rộng rãi
Cao trong việc
xử lý ngôn ngữ
tự nhiên nhờ vào Facebook
AI
Cao, có khả năng tích hợp với nhiều dịch
vụ và nguồn dữ liệu
Trung bình đến cao, cung cấp khả năng tùy chỉnh thông qua Dialogflow CX cho các trường hợp phức tạp Ngôn ngữ lập
trình
Python Không yêu cầu,
dùng giao diện Web để thiết lập
C#, JavaScript, Python, và nhiều ngôn ngữ khác thông qua SDK
Không yêu cầu, dùng giao diện Web để thiết lập
Độ phức tạp
của triển khai
Cao, đòi hỏi kỹ năng kỹ thuật
để tùy chỉnh và
mở rộng
Thấp, dễ dàng
để bắt đầu và triển khai
Trung bình đến cao tùy theo nhu cầu tùy chỉnh
Trung bình, có giao diện trực quan nhưng cũng hỗ trợ triển khai nâng cao
Tính cộng đồng
và hỗ trợ
Mạnh, cộng đồng nguồn mở lớn
Mạnh, với hỗ trợ từ Google
và cộng đồng người dùng rộng rãi
Trang 26Tài liệu và tài
nguyên học
Rất đầy đủ và chi tiết
Thấp đến trung bình, nhưng có hướng dẫn để bắt đầu
Rất đầy đủ và chi tiết cho các mức độ kỹ năng khác nhau
Chi tiết và rất nhiều tài liệu hướng dẫn sử dụng
Khả năng tích
hợp
Cao với hệ thống có sẵn do tính mảnh mai
và mã nguồn
mở
Trung bình, dễ dàng tích hợp vào ứng dụng Facebook
Cao, đặc biệt với các sản phẩm và dịch
Microsoft
Cao, đặc biệt với Google Assistant và các dịch vụ Google khác
Giá cả Miễn phí, mã
nguồn mở (chi phí phát sinh từ phát triển và triển khai)
Miễn phí đến một ngưỡng nhất định, sau
đó theo chi phí dựa trên sử dụng
Có thể miễn phí hoặc có chi phí tùy theo dịch vụ Azure sử dụng
Có phiên bản miễn phí với hạn chế, phiên bản trả phí tùy thuộc vào sử dụng
2.1.3 Lựa chon Rasa trong xây dựng chatbot bán hàng
Hiện nay Chatbot và AI đã phát triển rất mạnh, cho nên rất nhiều framework được
ra đời để hỗ trợ việc xây dựng chatbot dễ dàng hơn ví dụ như: AgentBot, Twyla, Live Agent, wit.ai, manyChat,… Tuy nhiên Rasa vẫn có rất nhiều lý do để là 1 lựa chọn tốt cho việc xây dựng chatbot như:
Đầu tiên, Rasa là một framework mã nguồn mở, mang lại sự linh hoạt và kiểm soát cao đối với dữ liệu và mô hình, ngoài ra vì là mã nguồn mở nên không yêu cầu chi phí sử dụng ban đầu, điều này giúp giảm chi phí cho dự án phát triển
Thứ hai, Rasa cho phép tích hợp với nhiều nền tảng, API và ngôn ngữ lập trình khác nhau
Thứ ba, Với Rasa người dùng hoàn toàn có thể kiểm soát dữ liệu của mình, không cần chia sẻ với bất kỳ bên thứ ba nào, đây là điều rất quan trọng trong việc bảo vệ thông tin người dùng
Ngoài ra Rasa có một cộng đồng người dùng lớn và nhiều tài liệu hữu ích, cung cấp
sự hỗ trợ đáng kể khi người dùng gặp vấn đề tropng quá trình phát triển
Trang 27Cuối cùng, Rasa còn có các công cụ bổ trợ như Rasa X giúp quản lý và huấn luyện
mô hình một cách trực quan, và Rasa Enterprise dành cho doanh nghiệp với các tính năng bảo mật và quản lý mở rộng
2.3 Các thành phần của Rasa
2.3.1 Mô hình hiểu ngôn ngữ tự nhiêu Rasa NLU
Hình 2.1 Mô tả quá trình xử lý thông tin qua Rasa NLU
Đây là module đóng vai trò xử lý đầu vào câu hội thoại người dùng (tokenize, featurize), xác định ý định người dùng (Intent Classification) và trích chọn thực thể (Entity Extraction) Ngoài ra, RASA NLU còn có các tính năng khác như Regular Expression, Synonyms, Lookup Table
- Regular Expression: Trích chọn thực thể bằng Regex
VD: ngày tháng, từ khóa cụ thể
- Synonym: Từ đồng nghĩa
VD: "ub", "ubnd" và "Ủy ban nhân dân", khi gặp các từ "ub", "ubnd", hệ thống tự chuyển thành "Ủy ban nhân dân"
- Lookup Table: Định nghĩa một tập giá trị cho một biến (RASA gọi là slot)
VD: Slot Province, ta định nghĩa Lookup Table gồm 64 tên tỉnh thành: "Hà Nội", "Hải Phòng", "Hà Nam", Khi hệ thống phát hiện từ "Hải Phòng" trong câu hội thoại người
Trang 28dùng, hệ thống sẽ tự gán giá trị "Hải Phòng" cho biến Province trong bộ nhớ, điều này giúp chatbot có thể nhận ra một số giá trị bổ trợ cho ngữ cảnh
2.3.2 Quản lý hội thoại Rasa Core
Rasa Core có vai trò kiểm soát luồng hội thoại, quyết định hành động nào được thực hiện để đáp lại câu hội thoại người dùng Rasa Core bao gồm các chính sách (Policy) để
xử lý luồng hội thoại, gồm:
- RulePolicy: Sử dụng các luật (Rule) để xác định hành động tiếp theo
- MemoizationPolicy: Sử dụng các Story để xác định hành động tiếp theo
- TEDPolicy: Sử dụng học sâu để xác định hành động tiếp theo
Các Policy này cùng nhau hợp lại thành Dialog Policies
2.3.4 Các thành phần khác hệ thống Rasa
Ngoài Rasa NLU và Rasa Core, hệ thống chatbot Rasa cần thêm các thành phần để
xử lý bộ nhớ, kết nối các thành phần lại với nhau để hoạt động hiệu quả:
Hình 2.2 Các thành phần hệ thống Rasa
định là action dạng text)
Trang 29- Tracker Store: Module lưu trữ các slot, entity, câu hội thoại (Đây chính là module
bộ nhớ lưu trữ của chatbot)
không bị race condition
Trong các thành phần trên, chúng ta chủ yếu làm việc với NLU Pipeline, Dialog Policies, Action Server và sử dụng Tracker để xử lý dữ liệu trong Action Server
2.4 Phương pháp đánh giá hiệu suất của Rasa NLU, Rasa Core
Dưới đây là một số phương pháp đánh giá các mô hình phân loại của Rasa
• Confusion matrix:
Là một phương pháp đánh giá kết quả của những bài toán phân loại với việc xem xét cả những chỉ số về độ chính xác và độ bao quát của các dự đoán cho từng lớp Confusion matrix là một ma trận tổng quát thể hiện kết quả phân loại chính xác và quả phân loại sai được tạo ra bởi một mô hình phân loại Đây là một ma trận vuông với kích thước các chiều bằng số lượng lớp dữ liệu Giá trị tại hàng thứ i, cột thứ j là số lượng điểm lẽ ra thuộc vào class i nhưng lại được dự đoán là thuộc vào class j
• True/False Positive/Negative:
Xét một confusion matrix gồm 4 chỉ số sau đối với mỗi lớp phân loại:
Bảng 2 Bảng phân confusion matrix
Dự đoán (predicted)
Thực tế (Actual) Positive True Positive False Negative
Negative False Positive True Negative
• TP (true positive) – mẫu mang nhãn dương được phân lớp đúng vào
lớp dương
• FN (false negative) – mẫu mang nhãn dương bị phân lớp sai vào lớp
âm
• FP (false positive) – mẫu mang nhãn âm bị phân lớp sai vào lớp dương
• TN (true negative) – mẫu mang nhãn âm được phân lớp đúng vào lớp
âm
Trang 30• Accuracy:
Cách đánh giá này đơn giản tính tỉ lệ các lớp đã phân loại đúng / tổng số dự đoán
• Precision / Recall:
• Precision là tỉ lệ số điểm Positive mô hình dự đoán đúng (TP) trên tổng
số điểm mô hình dự đoán là Positive (TP+FP), theo công thức:
𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 = 𝑇𝑃
𝑇𝑃 + 𝐹𝑃0< Precision <=1, Precision càng lớn có nghĩa là độ chính xác của các điểm tìm được càng cao
Precision = 1, tức là tất cả số điểm mô hình dự doán là Positive đều đúng, hay không có điểm nào có nhãn là Negative mà mô hình dự đoán nhầm là Positive
• Recall là tỉ lệ số điểm Positive mô hình dự đoán đúng (TP) trên tổng
số điểm thật sự là Positive (hay tổng số điểm được gán nhãn là Positive ban đầu TP+FN), chỉ số này được tính theo công thức:
𝑅𝑒𝑐𝑎𝑙𝑙 = 𝑇𝑃
𝑇𝑃 + 𝐹𝑁Recall càng cao, tức là số điểm là positive bị bỏ sót càng ít Recall = 1, tức là tất cả
số điểm có nhãn là Positive đều được mô hình nhận ra
2.5 Thuật toán tìm kiếm sản phẩm từ cơ sở dữ liệu dựa trên văn bản người dùng
Trong khi người dùng sử dụng chatbot để tìm kiếm sản phẩm hoặc nhắc tới 1 sản phẩm nào đó thông qua tên sản phẩm, rất có khả năng người dùng ghi thiếu hoặc viết sai chính tả Vì vậy nên cần tính toán sự tương đồng giữa chuỗi người dùng nhập vào và tên sản phẩm có trong Database để dựa vào đó và dự đoán sản phẩm khách hàng muốn nhắc đến
Trang 312.5.1 Các thuật toán tính sự tương đồng văn bản
a, Levenshtein Distance (Edit Distance)
Thuật toán khoảng cách Levenshtein, hay còn gọi là Edit Distance, được sử dụng
để đo lường số lần các hoạt động chỉnh sửa (insertion, deletion, substitution) cần thiết để chuyển đổi một chuỗi thành chuỗi khác Python có thể thực hiện thuật toán này thông qua một cách đơn giản và hiệu quả
Các bước cơ bản để tính toán khoảng cách Levenshtein:
- Khởi tạo ma trận với các giá trị ban đầu:
+ Ô ở góc trái trên cùng (0, 0) sẽ có giá trị là 0
+ Các ô ở hàng và cột đầu tiên sẽ chứa các số từ 0 đến độ dài tương ứng của chuỗi
- Lặp qua từng ô trong ma trận, tính toán số lần biến đổi cần thiết để chuyển từ một chuỗi con của chuỗi thứ nhất thành một chuỗi con của chuỗi thứ hai Các phép biến đổi có thể
là chèn, xóa hoặc thay thế
- Tính toán giá trị của mỗi ô dựa trên các giá trị ở các ô xung quanh (trên, trái và đường chéo trên bên trái) Các bước này có thể được thực hiện như sau:
+ Nếu ký tự ở vị trí i trong chuỗi thứ nhất bằng ký tự ở vị trí j trong chuỗi thứ hai, ô tại vị trí (i, j) sẽ có giá trị bằng giá trị của ô (i-1, j-1)
+ Ngược lại, ô tại vị trí (i, j) sẽ có giá trị bằng giá trị của ô (i-1, j-1) + 1 (để thực hiện thay thế), hoặc ô (i, j-1) + 1 (để thực hiện chèn), hoặc ô (i-1, j) + 1 (để thực hiện xóa)
- Giá trị cuối cùng ở ô góc dưới cùng (m, n) sẽ là khoảng cách Levenshtein giữa hai chuỗi ban đầu
• |A ∩ B| là số lượng phần tử chung giữa tập hợp A và B
• |A ∪ B| là số lượng phần tử trong tập hợp A hoặc B hoặc cả hai
Các bước cơ bản để tính Jaccard Similarity:
• Xác định các phần tử trong hai tập hợp A và B
• Tính số lượng phần tử chung giữa A và B
• Tính tổng số phần tử trong A và B (bao gồm cả các phần tử không trùng nhau)
Trang 32• Sử dụng công thức Jaccard Similarity để tính toán giá trị tương đồng giữa hai tập hợp
Công thức tính Cosine Similarity giữa hai vector A và B được biểu diễn như sau:
Trong đó:
• A⋅B là tích vô hướng (dot product) giữa hai vector A và B
• ∥A∥ và ∥B∥ lần lượt là độ dài (norm) của các vector A và B
Các bước cơ bản để tính toán Cosine Similarity giữa hai chuỗi văn bản:
• Biểu diễn hai chuỗi văn bản dưới dạng các vector trong không gian vector hóa từ, chẳng hạn như sử dụng word embeddings
• Tính toán tích vô hướng (dot product) giữa hai vector biểu diễn cho hai chuỗi văn bản
• Tính toán độ dài (norm) của mỗi vector
• Sử dụng công thức Cosine Similarity để tính toán giá trị tương đồng giữa hai chuỗi văn bản
d, N-gram Similarity
Thuật toán N-gram Similarity được sử dụng để đo đạc sự tương đồng giữa hai chuỗi văn bản bằng cách xem xét các phân đoạn gồm n phần tử liên tiếp (gọi là n-gram) trong mỗi chuỗi và đếm số lượng các n-gram chung giữa chúng
Trang 33Công thức tính toán N-gram Similarity không khó, nhưng cần thực hiện một số bước cơ bản:
• Chia các chuỗi thành các n-gram: Đầu tiên, bạn cần chia các chuỗi văn bản thành các phân đoạn có kích thước n phần tử liên tiếp (n-gram)
• Đếm số lượng n-gram chung: Tiếp theo, bạn đếm số lượng các n-gram chung giữa hai chuỗi văn bản
• Tính toán N-gram Similarity: Sử dụng số lượng n-gram chung để tính toán giá trị tương đồng giữa hai chuỗi
e, Ratcliff/Obershelp Similarity
Thuật toán Ratcliff/Obershelp Similarity (RO) được sử dụng để tính toán độ tương đồng giữa hai chuỗi bằng cách tìm chuỗi con chung dài nhất (longest common subsequence
- LCS) và tính tỷ lệ giữa độ dài của chuỗi con chung và tổng độ dài của hai chuỗi
Công thức tính toán Ratcliff/Obershelp Similarity:
• Tìm chuỗi con chung dài nhất (LCS) giữa hai chuỗi văn bản
• Tính tỷ lệ giữa độ dài của chuỗi con chung và tổng độ dài của hai chuỗi
Ví dụ:
Cho hai chuỗi văn bản: "kitten" và "sitting"
• Chuỗi con chung dài nhất (LCS) là "ittn" (độ dài là 4)
• Tổng độ dài của hai chuỗi là 7 ("kitten" có độ dài là 6 và "sitting" có độ dài là 7) Ratcliff/Obershelp Similarity giữa "kitten" và "sitting" là 4/7 = 0.5714
Đây chỉ là một ví dụ đơn giản để minh họa cách tính toán RO Similarity Trong thực tế, có thể cần sử dụng các thuật toán tìm chuỗi con chung hiệu quả như thuật toán tìm kiếm LCS thông qua lập bảng quy hoạch động để giải quyết vấn đề này
2.5.2 Lựa chọn thuật toán
Bài toán ta cần sử dụng là tính sự tương đồng của tên sản phẩm và sản phẩm khách nhập vào( có thể là khách ghi nhiếu, sai sót hoặc gõ sai chính tả) nên tôi quyết định chọn thuật toán khoảng cách Levenshtein Khi khách hàng nhập tên không chính xác thì ta sẽ tính khoảng giữa tên sản phẩm và tên do khách hàng nhập, nếu sản phẩm nào có khoảng cách ngắn nhất thì đó là sản phẩm khách hàng muốn nói đến
Đến đây đã xảy ra vấn đề do độ dài tên sản phẩm khác nhau
Ví dụ:
Tên sản phẩm 1: “váy công sở dự tiệc sang trọng bigsize amyra”
Tên sản phẩm 2: “váy ren tiểu thư”
Tên khách hàng nhập: “váy công sở dự”
Trang 34ð Khoảng cách dựa trên độ dài sp1: 29/44 = 0.65
ð Khoảng cách dựa trên độ dài sp2: 12/16 = 0.75
è Chọn sản phẩm 1
2.6 Kết luận chương
Trong chương này, đồ án đã trình bày về nền tảng phát triển chatbot Rasa, được chọn lựa bởi khả năng tùy biến cao và khả năng xử lý ngôn ngữ mạnh mẽ, phù hợp cho việc triển khai các giải pháp chatbot thông minh và an toàn Bên cạnh đó cũng giới thiệu các thuật toán hiện đại để tính toán sự tương đồng của hai chuỗi ký tự, như Levenshtein Distance, Jaccard Similarity, và Cosine Similarity, giúp chatbot hiểu rõ hơn ý định của người dùng
Trang 35CHƯƠNG III: XÂY DỰNG CHATBOT HỖ TRỢ BÁN QUẦN ÁO SỬ DỤNG NỀN
TẢNG RASA
Trong chương 3, đồ án sẽ phân tích và thiết kế hệ thống, phân tích các chức năng
của chatbot, ngoài ra sẽ giới thiệu các bước để xây dựng chatbot dựa trên nền tảng Rasa
framework
3.1 Mô tả hệ thống
Trên hình 2 trình bày tổng quan về kiến trúc hệ thống của chatbot bán hàng bao
gồm: SQLite DB, Tracker Store, Lock Store, Filesystem, Action Server, Dialoge Policies
và NLU Pipeline
Hình 3.1 Kiến trúc chatbot