Ở Việt Nam, chatbot đã bắt đầu được áp dụng ở trong một số lĩnh vực như chăm sóc khách hàng, mua sắm trực tuyến, trả lời thông tin ngân hàng, y tế… Đối với lĩnh vực năng lượng hiện nay,
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Giảng viên hướng dẫn: TS Phạm Huy Hoàng
Viện: Viện Công nghệ thông tin và Truyền thông
HÀ NỘI, 06/2022
Trang 2TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Giảng viên hướng dẫn: TS Phạm Huy Hoàng
Viện: Viện Công nghệ thông tin và Truyền thông
HÀ NỘI, 06/2022
Chữ ký của GVHD
Trang 3Lời cảm ơn
Đầu tiên, cho em xin phép gửi lời cảm ơn chân thành tới tất cả thầy cô đã tham gia giảng dạy các học phần môn học trong hơn một năm theo học chương trình thạc sĩ Khoa học tại Trường Đại học Bách Khoa Hà Nội Các thầy cô đã tạo điều kiện cho em có môi trường nghiên cứu thuận lợi và những định hướng cần thiết để em đủ khả năng đáp ứng yêu cầu khắt khe của luận văn tốt nghiệp cũng như công việc trong tương lai Sau đó, em cũng xin dành lời cảm ơn đến giảng viên hướng dẫn là thầy Phạm Huy Hoàng đã cung cấp những kỹ năng và kiến thức cần thiết để giúp em hoàn thành luận văn tốt nghiệpTóm tắt nội dung luận văn
Hiện nay, với sự chuyển mình mạnh mẽ của công nghiệp số, tất cả mọi dịch vụ, mọi mặt hàng đều có thể tìm kiếm thông tin trên internet Tuy nhiên lượng thông tin hiện nay là vô cùng đồ sộ, kéo theo thời gian tìm hiểu sẽ lâu hơn nhiều nếu không có một người chuyên sâu trong chính lĩnh vực đó tư vấn giúp Việc chăm sóc khách hàng đối với mỗi doanh nghiệp là rất quan trọng Đối với những doanh nghiệp có hàng triệu khách hàng thật sự là một bài toán khó và luôn luôn thay đổi đầu bài Vì vậy để giảm tải, lược bớt những trường hợp tương tự nhau, giành nguồn lực cho những việc chuyên trách hơn thì chatbot hỗ trợ là một giải pháp hàng đầu
Nhắc đến chatbot thì không thể không kể đến những RNN, LSTM, Neural network… Tuy nhiên việc custom một chatbot hiện nay đã không còn quá phức tạp như vậy Qua quá trình nghiên cứu các thuật toán, và các framework, em đề xuất sử dụng RASA nhằm thực hiện tối thiều hóa các bước để dựng được một trợ
lý ảo chatbot Và để trực quan hóa quá trình xây dựng chatbot áp dụng RASA thì
em đã dựng sản phẩm chatbot hỗ trợ khách hàng trong doanh nghiệp cụ thể ở đây
là xăng dầu của Petrolimex Với những chức năng chính như giải đáp trực tiếp vướng mắc khi khách hàng mua, giao dịch xăng dầu, sử dụng dịch vụ tại Petrolimex như rửa xe, thay dầu và còn cung cấp thông tin về các chương trình khuyến mại, tra cứu điểm thưởng…
HỌC VIÊN
Ký và ghi rõ họ tên
Trang 4MỤC LỤC
DANH MỤC KÝ HIỆU VÀ CÁC CHỮ VIẾT TẮT 5
DANH MỤC HÌNH VẼ VÀ BẢNG 6
CHƯƠNG 1 ĐẶT VẤN ĐỀ VÀ GIỚI THIỆU LÝ THUYẾT 8
1.1 Giới thiệu đề tài và cấu trúc luận văn 8
1.2 Mục đích và đóng góp của đề tài 9
1.3 Khái niệm, lịch sử ra đời [18] [20] 10
1.4 Tổng quan về các loại Chatbot phổ biến [7] 11
1.5 Một số nền tảng công nghệ xây dựng chatbot 13
1.6 Kết luận chương 14
CHƯƠNG 2 GIỚI THIỆU MỘT SỐ KỸ THUẬT SỬ DỤNG XÂY DỰNG CHATBOT VỚI RASA OPEN SOURCE 16
2.1 Một số kỹ thuật sử dụng trong chatbot 16
2.1.1 Xác định ý định người dùng 16
2.1.2 Trích xuất thông tin 20
2.1.3 Quản lý hội thoại 22
2.1.4 Mô hình sinh hội thoại cho chatbot 25
2.2 Tại sao lựa chọn RASA Framework 27
2.3 So sánh hướng tiếp cận sử dụng rule-based và neural 27
2.4 Các thành phần chính khi sử dụng RASA [11][4] 28
2.4.1 NLU (Natural language Uderstanding) 28
2.4.2 Domain File 30
2.4.3 Entities 33
2.4.4 Slots 34
2.4.5 Responses: 35
2.4.6 Stories 37
2.4.7 Pipeline và các components (thành phần) [11][4] 40
2.4.8 Custome Action 50
2.5 Kết luận chương 51
CHƯƠNG 3 ỨNG DỤNG VÀO CHATBOT 52
3.1 Giới thiệu bài toán thực tế 52
3.2 Xây dựng và xác định dữ liệu 52
3.2.1 Xây dựng ý định (intent) 53
3.2.2 Xây dựng domain 58
Trang 53.2.3 Xây dựng stories 59
3.3 Thiết kế, luồng dữ liệu vận hành 60
3.4 Đánh giá độ tin cậy 61
3.5 Đánh giá 79
3.6 Kết luận chương 80
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 81
TÀI LIỆU THAM KHẢO 82
Trang 6DANH MỤC KÝ HIỆU VÀ CÁC CHỮ VIẾT TẮT
T viết
AI Artificial Intelligence Trí tuẹ nhân tạo
API Application Programming
CRF Conditional Random Fields Mô hình CRF
FAQ Frequently Asked Questions Các câu hỏi thường gặp
NLG Natural language generation Sinh ngôn ngữ tự nhiên
NLP Natural Languague Processing Xử lý ngôn ngữ tự nhiên
NLU Natural language understanding Hiểu ngôn ngữ tự nhiên
Trang 7DANH MỤC HÌNH VẼ VÀ BẢNG
Hình 1-1: Lịch sử phát triển NLP 11
Hình 1-2: Phân loại Chatbot 11
Hình 1-3: so sánh các nền tảng xây dựng chatbot 14
Hình 2-1: Kiến trúc của một chatbot hội thoại 16
Hình 2-2: Xác định ý định người dùng 17
Hình 2-3: Xác định ý định dựa trên học máy 19
Hình 2-4: Trích xuất thông tin thực thể 21
Hình 2-5: Trích xuất thông tin thực thể dựa trên học máy [15] 22
Hình 2-6: Quản lý hội thoại 23
Hình 2-7: Mô hình máy trạng thái hữu hạn (Finite-State Machines) 24
Hình 2-8: Mô hình Frame-based 25
Hình 2-9 : NLP engine trích xuất thông tin dựa trên kỹ thuật học máy 26
Hình 2-10: Khai báo synonym 29
Hình 2-11: Sử dụng entities trong intent 30
Hình 2-12: Khai báo bỏ qua entities 31
Hình 2-13: Định nghĩa entities 31
Hình 2-14: Khai báo roles và groups 32
Hình 2-15: Cấu hình một session mặc định 33
Hình 2-16: Khai báo slots 34
Hình 2-17: Slot không ảnh hưởng đến hội thoại 35
Hình 2-18: Slot tác động đến hội thoại 35
Hình 2-19: Khai báo responses trong domain 36
Hình 2-20: Khai báo Responses với button 36
Hình 2-21: Truyền entities vào responses 37
Hình 2-22: Ví dụ về khai báo stories 38
Hình 2-23: Stories với slot 39
Hình 2-24: Stories sử dụng checkpoint 40
Hình 2-25: Output của MitieIntentClassifier 44
Hình 2-26: Output của LogisticRegressionClassifier 45
Hình 2-27: Output của SklearnIntentClassifier 46
Hình 2-28: Output của KeywordIntentClassifier 46
Hình 2-29: Ví dụ output của DIETClassifier 47
Trang 8Hình 2-30: Output của FallbackClassifier 50
Hình 2-31: Tham số cấu hình của action server 51
Hình 3-1: Bảng khảo sát chức năng chatbot 52
Hình 3-2: Bảng danh sách intent của chatbot Petrolimex 54
Hình 3-3: Khai báo danh sách intent thuộc general 55
Hình 3-4: Khai báo danh sách intent chuộc chichat 55
Hình 3-5: Khai báo intent thuộc nlu 57
Hình 3-6: Ví dụ nội dung intent 58
Hình 3-7: Tóm tắt cấu trúc domain 59
Hình 3-8: Ví dụ nội dung action và response trong domain 59
Hình 3-9: Khai báo các stories 60
Hình 3-10: Sơ đồ luồng giao tiếp của chatbot và ứng dụng 61
Hình 3-11: Intent confusion Matrix 62
Hình 3-12: Kết quả test mô hình 73
Hình 3-13: Kết nối thành công tới server webhook của Facebook Messenger 74
Hình 3-14: Demo sử dụng chatbot trên ứng dụng Messenger 75
Trang 9CHƯƠNG 1 ĐẶT VẤN ĐỀ VÀ GIỚI THIỆU LÝ THUYẾT 1.1 Giới thiệu đề tài và cấu trúc luận văn
Ngày nay, cùng với sự phát triển của khoa học kỹ thuật, Chatbot đang được ứng dụng phổ biến và mạnh mẽ trong nhiều lĩnh vực, tạo nên một cơn sốt công nghệ khi có nhiều hãng công nghệ nổi tiếng thế giới tham gia như Google, Facebook, Microsoft, IBM Theo Grand View Research, thị trường Chatbot dự kiến sẽ đạt khoảng 1,25 tỷ đô la trên toàn cầu vào năm 2025 Hơn nữa, các chuyên gia dự đoán rằng thị trường này sẽ tăng trưởng với tốc độ tăng trưởng gộp hàng năm hơn 24% Đặc biệt là xu hướng phát triển AI chatbot có khả năng hội thoại, xử lý những tương tác phức tạp hơn với khách hàng Ở Việt Nam, chatbot đã bắt đầu được áp dụng ở trong một số lĩnh vực như chăm sóc khách hàng, mua sắm trực tuyến, trả lời thông tin ngân hàng, y tế… Đối với lĩnh vực năng lượng hiện nay, bản thân phục vụ trong doanh nghiệp về lĩnh vực này cụ thể là Tập đoàn Xăng dầu Việt Nam, em nhận thấy chatbot chưa được sử dụng dù rằng có rất nhiều vướng mắc phát sinh
từ người tiêu dùng khi đi mua xăng tại các cửa hàng xăng dầu hiện nay và cũng nhiều hệ thống mới, chương trình mới của Tập đoàn triển khai đến người tiêu dùng rất phù hợp để đưa vào sử dụng chatbot Chatbot có thể thay thế con người trong việc trả lời các câu hỏi
có tính lặp đi lặp lại, hỗ trợ khách hàng 24/7 cho doanh nghiệp…
Cùng với mong muốn hiểu sâu hơn về chatbot và các kỹ thuật giúp chatbot trả lời câu hỏi xử lý theo ngôn ngữ tự nhiên (NLP), em quyết định chọn đề tài “Xây dựng chatbot hỗ trợ quyết định, tư vấn mua hàng trong ứng dụng chat” làm đề tài luận văn thạc
sĩ Qua đề tài em muốn nâng cao sự hiểu biết về AI Chatbot, NLP (xử lý ngôn ngữ tự nhiên) và nghiên cứu khả năng áp dụng thực tiễn tại doanh nghiệp ở Việt Nam
Nội dung luận văn được chia ra làm 3 phần như sau:
Chương 1: Giới thiệu tổng quan về hệ thống chatbot, kiến trúc high-level và các thành phần cơ bản của AI chatbot, một số nền tảng và ứng dụng của chatbot
Chương 2: Nghiên cứu, tìm hiểu về Rasa Framework và các kỹ thuật liên quan Chương 3: Trình bày về quá trình xây dựng chatbot trả lời thông tin tới người tiêu dùng mua xăng dầu, hỗ trợ họ về những chính sách khuyến mại, những chương trình
Trang 10doanh nghiệp đã triển khai theo hướng có lợi Thực nghiệm và đánh giá các kết quả
1.2 Mục đích và đóng góp của đề tài
Mục tiêu của một hệ thống Chatbot là duy trì và tiếp tục cuộc hội thoại cùng người dùng với mục tiêu bắt chước kiểu nói chuyện "không có cấu trúc" giữa người với người Tính hữu dụng và độ thông minh của Chatbot được đánh giá dựa trên phép thử Turing Hiện nay để tối ưu hóa, các hệ thống chatbot sẽ chỉ tập trung vào việc lựa chọn một số lĩnh vực nói chuyện, kiến thức cụ thể cho Chatbot (domain) và đánh giá bằng phép thử Turing trên đúng giới hạn này
Chatbot được tạo ra để hỗ trợ con người trong lĩnh vực dịch vụ khách hàng ở mức
độ sơ cấp với những tác vụ được lặp đi lặp lại nhàm chán Do đó, các doanh nghiệp sẽ loại bỏ được những áp lực về mặt nhân sự, đội ngũ tư vấn viên có thể tập trung giải quyết các công việc ở mức độ chuyên sâu và cấp thiết hơn
Với mỗi loại hình doanh nghiệp, chatbot lại được ứng dụng theo các cách khác nhau Một số nhiệm vụ chính của chatbot đang được nhiều doanh nghiệp áp dụng như:
Tư vấn, trả lời các câu hỏi thường gặp, 24/7 cho khách hàng
Hỗ trợ các chiến dịch marketing (gửi thông tin về chương trình khuyến mãi, giảm giá, ra mắt sản phẩm mới…)
Gợi ý, tìm kiếm, báo giá các sản phẩm, dịch vụ theo yêu cầu của khách hàng
Đặt lịch hẹn, đặt bàn, đặt phòng, đặt vé máy bay…
Tiếp nhận các thông tin khai báo, mở tài khoản, mở thẻ…
Thanh toán hóa đơn đặt hàng
Trong luận văn này, tác giả tập trung vào chatbot tư vấn, trả lời các câu hỏi thường gặp 24/7 cho khách hàng với bộ dữ liệu được tổng hợp thực tế từ tổng đài chăm sóc khách hàng của doanh nghiệp cụ thể là Petrolimex Nghiên cứu về framework được sử dụng để xây dựng một chatbot hoàn chỉnh, từ đó triển khai mô hình và đánh giá độ chính xác thể hiện qua các chỉ số Hệ thống lại một số những kỹ thuật tiếp cận, sử dụng Machinelearning phổ biến hiện nay
Trang 111.3 Khái niệm, lịch sử ra đời [18] [20]
Theo từ điển Cambridge, chatbot là một một chương trình máy tính được thiết kế
để trò chuyện với con người qua internet
Chatbot thường trao đổi với người dùng qua hình thức văn bản hoặc âm thanh
Do được thiết kế để mô phỏng cách trò chuyện với con người, các hệ thống chatbot thường phải điều chỉnh và thử nghiệm liên tục
Chatbot thường được sử dụng trong các hệ thống hội thoại cho các mục đích khác nhau bao gồm dịch vụ khách hàng, định tuyến yêu cầu hoặc để thu thập thông tin Mặc dù một số ứng dụng chatbot sử dụng các phương pháp phân loại từ (word- classification), xử lý ngôn ngữ tự nhiên (NLP) và trí tuệ nhân tạo (AI), một số ứng dụng khác chỉ cần quét các từ khóa chung và tạo phản hồi bằng các cụm từ phổ biến thu được từ thư viện hoặc cơ sở dữ liệu liên quan
Ngày nay, hầu hết các chatbot được truy cập trực tuyến thông qua cửa sổ popup của các trang web hoặc thông qua các trợ lý ảo như Google Assistant, Amazon Alexa hoặc các ứng dụng nhắn tin như Facebook Messenger, Telegram, WeChat, Zalo…
Lịch sử ngắn gọn của xử lý ngôn ngữ tự nhiên (NLP) NLP là lĩnh vực sử dụng máy tính để tương tác với dữ liệu văn bản do con người tạo ra
Những năm 1950 đến 1980, người ta thực sự chỉ tập trung vào các hệ thống base Và Eliza là một trong những bot trò chuyện sớm nhất và hoàn toàn dựa trên các quy tắc [5]
rule-Từ 1990 đến 2000 bắt đầu chuyển sang các phương pháp thống kê, về cơ bản là đếm các đơn vị ngôn ngữ thường là các từ
2010 có sự thay đổi một chút về thống kê bằng cách sử dụng các mô hình deep learning và neural network nói riêng như embedding, LSTM…
2017 trở đi, tiếp tục có sự phát triển của một dòng neural network mới cụ thể là transformers, gpt-3, bert
Trang 12Hình 1-1: Lịch sử phát triển NLP
1.4 Tổng quan về các loại Chatbot phổ biến [7]
Chatbot có thể được phân loại thành nhiều loại khác nhau dự trên một số tiêu chí như sau:
Hình 1-2: Phân loại Chatbot
Trang 13Theo chế độ tương tác (Interact Mode):
+ Dựa trên văn bản (Text-Based)
+ Dựa trên giọng nói (Voice-Based)
Theo miền (Domain):
+ Miền đóng/miền cụ thể (Closed Domain): Phạm vi của chatbot chỉ giải quyết một số vấn đề trong phạm vi nhất định Ví dụ: Khách hàng mua ô tô, tư vấn khách hàng mua bảo hiểm nhân thọ, dự báo thời tiết… Loại này phổ biến, dữ liệu huấn luyện trong phạm vi nhỏ nên dễ huấn luyện, độ chính xác cao
+ Miền mở (Open Domain): Loại này là mục tiêu của trí tuệ nhân tạo Một chatbot biết mọi thứ và có thể trả lời mọi vấn đề Rất nhiều chatbot thông minh được tạo
ra Tuy nhiên trả lời mọi vấn đề và vượt qua được Turing test thì vẫn chưa thể đạt tới
Theo mục tiêu (Goals):
+ Các chatbot hướng tác vụ (Task-Oriented): được thiết kế cho một nhiệm vụ cụ thể và được thiết lập để có thời gian ngắn các cuộc hội thoại, thường là trong một miền đóng
+ Các chatbot không hướng nhiệm vụ (Non Task-Oriented): có thể mô phỏng cuộc trò chuyện với một người và thường thực hiện chat cho mục đích giải trí trong các miền mở
Theo Phương pháp thiết kế (Design Approach):
+ Dựa theo quy luật (Rule- Based): Loại chatbot này khả năng rất hạn chế Chỉ có khả năng phản hồi chính xác những lệnh cụ thể mà ta đã xác định từ trước hoặc người dùng không được phép tùy ý phản hồi mà phải lựa chọn các phản hồi do lập trình viên tạo
ra Sự thông minh của chatbot phụ thuộc vào mức độ mà ta lập trình ra chatbot
+ Dựa theo trí tuệ nhân tạo (AI): Loại này có khả năng “hiểu” ngôn ngữ Nghĩa là chatbot không bị giới hạn bởi tập các luật xác định từ trước, mà có thể hiểu ở phạm vi rộng hơn Tất nhiên chatbot vẫn phải được “học” từ dữ liệu có sẵn, nhưng nó có khả năng
“dự đoán” được ý nghĩa và ngữ cảnh của những lệnh chưa từng gặp Một khả năng nữa của chatbot dựa trên AI là khả năng “học thêm” Nghĩa là ta đưa vào càng nhiều câu huấn luyện, xác xuất phản hồi người dùng chính xác càng cao Trong phương pháp này
Trang 14có thể chia ra thành dựa trên cơ sở Generative-Based như các mô hình theo trình tự, tạo
ra trả lời phù hợp trong cuộc trò chuyện hoặc dựa trên Retrieval-Based để học lựa chọn các câu trả lời từ cuộc hội thoại hiện tại từ một kho lưu trữ
1.5 Một số nền tảng công nghệ xây dựng chatbot
- Dialogflow ( https://dialogflow.com/ )
Cung cấp bởi Google
Trước đây được gọi là Api.ai và rất phổ biến rộng rãi trong cộng đồng chatbot
Cung cấp cho người dùng những cách mới để tương tác với sản phẩm của
họ bằng cách xây dựng giao diện đàm thoại dựa trên giọng nói và văn bản hấp dẫn bằng AI
Kết nối với người dùng trên Google Assistant, Amazon Alexa, Facebook Messenger và các nền tảng và thiết bị phổ biến khác
Có khả năng phân tích và hiểu ý định của người dùng để giúp bạn phản hồi
theo cách hữu ích nhất
- Rasa (https://rasa.com/ )
Rasa Open Source là một nền tảng để tự động hóa các trợ lý dựa trên văn bản và giọng nói sử dụng học máy
Có thể thực hiện các hành động mà bot có thể thực hiện bằng mã Python
Thay vì một loạt các câu lệnh if…else khác, logic của bot dựa trên một mô hình học máy được đào tạo trên các ví dụ hội thoại
- Wit.ai (https://wit.ai )
Được Facebook mua lại trong vòng 21 tháng kể từ khi ra mắt, nhóm wit.ai đóng góp cho công cụ NLP của Facebook trong Facebook
Wit.ai giúp các nhà phát triển dễ dàng xây dựng các ứng dụng và các thiết
bị mà người dùng có thể nói chuyện hoặc nhắn tin tới
Có thể sử dụng wit.ai để xây dựng chatbot, tự động hóa nhà,
- Microsoft Bot Framework (https://dev.botframework.com/ )
Được cung cấp bởi Microsoft
Microsoft Bot Framework có khả năng hiểu ý định của người dùng
Trang 15 Có thể kết hợp LUIS để hiểu ngôn ngữ tự nhiên, Cortana cho giọng nói và API Bing cho tìm kiếm
- Woebot (https://woebot.io/ )
Có thể theo dõi tâm trạng của người dùng
Giúp người dùng cảm thấy tốt hơn
Cung cấp cái nhìn sâu sắc bằng cách xem mô hình tâm trạng
Dạy người dùng làm thế nào để tích cực và năng lượng cao
- Chatfuel (https://chatfuel.com/ )
Chatfuel ra đời với mục tiêu làm cho việc xây dựng bot trở nên dễ dàng với bất kỳ ai
Không cần biết lập trình cũng có thể tạo ra chatbot
Đây nền tảng hàng đầu để xây dựng bot trên Facebook Messenger
Theo khảo sát của cộng đồng đánh giá các giải pháp thay thế phần mềm [17], chấm điểm dựa trên một vài tiêu chí của chatbot với thang điểm 100 ta có bảng so sánh các nền tảng xây dựng chatbot sau:
NLU
Microsoft Bot Framework
Chatfuel
Ngoài ra, dù có nhiều nền tảng hỗ trợ xây dựng chatbot nhưng trong luận văn này, tác giả lựa chọn Rasa framework để xây dựng thực nghiệm công cụ chatbot minh họa với các lý do sau:
Hiện tại hầu hết các nền tảng lớn như Dialogflow (Google), wit.ai, Microsoft Bot Framework… do các hãng lớn cung cấp, có nhiều công cụ xây dựng và tích hợp
Trang 16thông qua API nhưng các thuật toán và dữ liệu người dùng sẽ lưu trên các nền tảng này, khó làm chủ hệ thống trong khi đó việc sử dụng mã nguồn mở Rasa để xây dựng hệ thống Chatbot giúp nắm rõ hơn các công nghệ phía sau chatbot, làm chủ
dữ liệu và thông tin người dùng
Rasa thực sự dễ tiếp cận cho người mới bắt đầu, ngay cả người không biết gì về chatbot hay NLP cũng có thể làm quen sử dụng Hầu hết công việc của người sử dụng là tập trung xây dựng nội dung kịch bản, khả năng của chatbot chứ không cần thiết phải quan tâm đến công nghệ xây dựng
Rasa hoạt động khá tốt và mạnh mẽ, đặc biệt trong vấn đề xác định ý định người dùng (intent) và xác định thực thể (entity)
Mã nguồn của Rasa là mã nguồn mở, do đó Rasa giúp ta biết chính xác được đang làm gì với chatbot của mình, thậm chí có thể tùy biến chatbot theo mong muốn của bản thân, ví dụ như: tùy biến hành động (action), quyết định nền tảng tin nhắn (messenger) của chatbot…
Trang 17CHƯƠNG 2 GIỚI THIỆU MỘT SỐ KỸ THUẬT SỬ DỤNG XÂY DỰNG
CHATBOT VỚI RASA OPEN SOURCE 2.1 Một số kỹ thuật sử dụng trong chatbot
Cấu trúc chatbot là trọng tâm của sự phát triển chatbot Dựa trên khả năng sử dụng
và bối cảnh hoạt động kinh doanh, việc chọn kiến trúc chính xác phụ thuộc vào loại domain chatbot sẽ có Do tính chất khác nhau của việc sử dụng chatbot, kiến trúc có thể
sẽ thay đổi theo nhu cầu riêng nhưng sẽ có những thành phần cơ bản sau: [19]
Hình 2-1: Kiến trúc của một chatbot hội thoại
Trang 18Các cách thức nộp hồ sơ xét tuyển vào trường là gì? Xét tuyển vào trường như thế nào?
Hoặc khi một người dùng hỏi “What’s the weather like tomorrow?” thì chatbot cần hiểu được ý định của họ là hỏi về thời tiết (request weather)
Hình 2-2: Xác định ý định người dùng
Intent được xác định sẽ quyết định cấu trúc (frame) và kịch bản (script) của đoạn hội thoại tiếp theo Việc xác định ý định là rất quan trọng đối với chatbot Nếu chatbot xác định sai intent sẽ dẫn đến phản hồi không thích hợp dẫn đến người dùng không hài lòng
và có thể rời bỏ hệ thống
a Các vấn đề khi xác định ý định
- Thiếu nguồn dữ liệu:
Với sự phát triển của công nghệ trí tuệ nhân tạo, các công ty Internet lớn đã ra mắt chatbot Do trải nghiệm người dùng ít hơn, hầu hết các nhà nghiên cứu khó có được văn bản trò chuyện giữa người dùng và chatbot, dẫn đến số lượng văn bản đối thoại được nghiên cứu hạn chế, trong đó trở thành một vấn đề lớn phải đối mặt với các nhiệm vụ phát hiện ý định Trong quá trình thực tế phát hiện ý định, có rất ít văn bản có mục đích với chú thích và chúng rất khó lấy, điều này cũng mang lại những thách thức đối với nghiên cứu và phát triển phát hiện ý định
- Sự bất quy tắc trong diễn đạt của người dùng:
Trong hệ thống chat, mục đích của người dùng nói chung được đặc trưng bởi diễn đạt kiểu dạng nói thông thường, câu ngắn và nội dung rộng, điều này gây khó khăn cho việc xác định mục đích của người dùng Ví dụ, “em muốn xem kết quả”, mục đích tương ứng của câu này là “tìm kiếm thông tin kết quả tuyển sinh”, vì vậy câu với ý định thông
Trang 19tục làm cho miền chủ đề không rõ ràng, gây khó khăn cho việc xác định mục đích của người dùng Hoặc với câu “em muốn đăng ký”, có thể đăng xét tuyển, đăng ký ở ký túc, Do diễn đạt của người dùng quá rộng, máy không thể đưa ra phản hồi cho người dùng kịp thời
- Phát hiện ý định ngầm:
Với việc mở rộng liên tục phạm vi ứng dụng của hệ thống đối thoại giữa người và máy, ngày càng có nhiều cách để thể hiện ý định Theo các loại diễn đạt, ý định có thể được chia vào ý định rõ ràng (explicit intents) và ý định ngầm định (implicit intents) Ý định rõ ràng đề cập đến việc người dùng chỉ ra rõ ràng hoặc yêu cầu ý định trong nội dung hội thoại đã bao gồm miền chủ đề (topic domain), thể loại ý định,
Ý định ngầm định đề cập đến thực tế là người dùng không có yêu cầu mục đích rõ ràng
và cần phải suy luận người dùng có ý định thực sự bằng cách phân tích ý định Chẳng hạn
“Book a hotel near the People’s Park for one night” và câu ngầm định “I’m going to Shenzhen for two days next week” Mặc dù ý định của họ là đặt phòng khách sạn, nhưng đối với khách hàng sau cần đánh giá và suy đoán về ý định thực sự của người dùng Do
đó, phát hiện ý định ngầm mà không có chủ đề rõ ràng là rất khó khăn trong nhiệm vụ phát hiện ý định
- Phát hiện đa ý định (Multiple intents detection):
Trong câu hội thoại con người sẽ có những nội dung với đa ý định Ví dụ nếu bạn nói “xin chào, tôi muốn hỏi thông tin trường ” thì bot phải xác định được 2 ý định “chào hỏi” và “thông tin trường ” trong câu nói người dùng Nếu bot có thể hiểu và trả lời được câu hỏi loại này sẽ giúp việc tương tác với bot trở nên tư nhiên hơn Làm thế nào để phát hiện đa ý định của người dùng trong văn bản ngắn là một khó khăn của phát hiện ý định
- Phát hiện lỗi chính tả, bỏ dấu…
Đối với tiếng Việt còn đối mặt với sự nhập nhằng chẳng hạn khi người dùng gõ tiếng Việt không dấu, nhầm lẫn s, x, l, n… hoặc gõ sai lỗi chính tả cũng sẽ gây khó khăn lớn cho phát hiện ý định
b
Xác định ý định dựa trên học máy (machine learning) Trang 20Các bước xác định ý định dựa trên học máy được minh họa như hình dưới:
Hình 2-3: Xác định ý định dựa trên học máy
- Tiền xử lý dữ liệu:
Bước tiền xử lý dữ liệu chính là thao tác “làm sạch” dữ liệu như: loại bỏ các thông tin dư thừa, chuẩn hoá dữ liệu và chuyển các từ viết sai chính tả thành đúng chính tả, chuẩn hoá các từ viết tắt… Bước tiền xử lý dữ liệu có vai trò quan trọng trong hệ thống chatbot Nếu dữ liệu đầu vào có xử lý ở bước này thì sẽ làm tăng khả năng năng độ chính xác cũng như sự thông minh cho bot
Tiếp đến là bước trích xuất đặc trưng (feature extraction hay feature engineering)
từ những dữ liệu đã được làm sạch Trong mô hình học máy truyền thống (trước khi
mô hình học sâu được áp dụng rộng rãi), bước trích xuất đặc trưng ảnh hưởng lớn đến độ chính xác của mô hình phân lớp Để trích xuất được những đặc trưng tốt, chúng ta cần phân tích dữ liệu khá tỉ mỉ và cần cả những tri thức chuyên gia trong từng miền ứng
Trang 21dụng cụ thể Đây là bước biểu diễn ngôn ngữ loài người dưới dạng số sao cho có nghĩa và machine (máy) có thể hiểu được
Một số kỹ thuật trích xuất đặc trưng:
+ Word2Vec
+ One-hot Encoding
+ Bag of Words
+ TF/IDF…
- Huấn luyện mô hình và Mô hình phân lớp:
Bước huấn luyện mô hình nhận đầu vào là các đặc trưng đã được trích xuất và áp dụng các thuật toán học máy để học ra một mô hình phân lớp Các mô hình phân lớp có thể là các luật phân lớp (nếu sử dụng decision tree) hoặc là các vector trọng số tương ứng với các đặc trưng được trích xuất (như trong các mô hình logistic regression, SVM, hay mạng Neural)
và đưa ra intent có điểm cao nhất
2.1.2 Trích xuất thông tin
a Giới thiệu Trích xuất thông tin thực thể (NER)
Named Entity Recognition (NER): đây là tác vụ cơ bản trong lĩnh vực xử lý ngôn ngữ
tự nhiên Vai trò chính của tác vụ này là nhận dạng các cụm từ trong văn bản và phân loại chúng vào trong các nhóm đã được định trước như tên người, tổ chức, địa điểm, thời gian, loại sản phẩm, nhãn hiệu,
Vẫn ở ví dụ đề cập ở trên, khi người dùng hỏi “What’s the weather like tomorrow?” thì chatbot ngoài cần hiểu được ý định của họ là hỏi về thời tiết, còn cần xác định được thực thể xác định ở thời gian (date) là tomorrow (ngày mai)
Trang 22Hình 2-4: Trích xuất thông tin thực thể
Các loại thực thể mà chatbot thường hỗ trợ:
- Khoảng thời gian (Duration)
b Trích xuất thông tin thực thể dựa trên học máy
Có một số phương pháp trích xuất thông tin thực thể như phương pháp tiếp cận từ vựng (lexicon approach), hệ thống dựa trên quy tắc (rule-based systems), và phương pháp dựa trên học máy cũng rất phổ biến
Các hệ thống dựa trên học máy học cách nhận biết các thực thể trong văn bản dựa trên các ví dụ (examples) trước đây mà chúng đã thấy
Trang 23Hình 2-5: Trích xuất thông tin thực thể dựa trên học máy [15]
Để xây dựng một trình trích xuất thực thể, chúng ta cần cung cấp cho mô hình một khối lượng lớn dữ liệu huấn luyện có chú thích, để nó có thể tìm hiểu thực thể là gì Chẳng hạn, nếu ta muốn xây dựng một mô hình để trích xuất các vị trí “locations”, chúng ta cần gắn nhãn thủ công tên của các thành phố, quốc gia, địa điểm, v.v Càng nhiều ví dụ được gắn nhãn, mô hình sẽ càng chính xác Với phương pháp này, mô hình trở nên thông minh hơn theo thời gian khi nó học hỏi từ các ví dụ mới
Các kỹ thuật thường được sử dụng:
- Hidden Markov Model
- Maximum Entropy
- Conditional Random Fields – CRFs…
2.1.3 Quản lý hội thoại
a Vai trò của quản lý hội thoại
Trong các phiên trao đổi dài (long conversation) giữa người và chatbot, chatbot sẽ cần ghi nhớ những thông tin về ngữ cảnh (context) hay quản lý các trạng thái hội thoại (dialog state) Vấn đề quản lý hội thoại (dialoge management) khi đó là quan trọng để đảm bảo việc trao đổi giữa người và máy là thông suốt Vẫn ở ví dụ về hỏi về thời tiết ở trên, chatbot cần có thông tin về trạng thái hội thoại, để có thể phản hồi đúng thông tin cần
Trang 24hỏi “It will be sunny and 20 o C ”
Hình 2-6: Quản lý hội thoại
Chức năng của thành phần quản lý hội thoại là nhận đầu vào từ thành phần NLU, quản lý các trạng thái hội thoại (dialogue state), ngữ cảnh hội thoại (dialogue context), và truyền đầu ra cho thành phần sinh ngôn ngữ (Natural Language Generation - NLG) Trạng thái hội thoại (dialog state) được lưu lại và dựa vào tập luật hội thoại (dialog policy) để quyết định hành động tiếp theo cho câu trả lời của bot trong một kịch bản hội thoại, hay hành động (action) chỉ phụ thuộc vào trạng thái (dialog state) trước của nó
b Các mô hình quản lý hội thoại phổ biến
Hiện nay, các chatbot thường dùng mô hình máy trạng thái hữu hạn (Finite State Machines – FSM), mô hình Frame-based (Slot Filling) hoặc kết hợp hai mô hình này
Trang 25- Mô hình máy trạng thái hữu hạn (Finite-State Machines): Các FSM đặt một trình tự được xác định trước các bước đại diện cho trạng thái của cuộc hội thoại tại bất cứ điểm nào Các FSM là phương pháp thiết kế thủ công của DM Các trạng thái của FSM tương ứng với các câu hỏi mà DM hỏi người dùng Các cung nối giữa các trạng thái tương ứng với các hành động của chatbot sẽ thực hiện Các hành động này phụ thuộc phản hồi của người dùng cho các câu hỏi
Hình 2-7: Mô hình máy trạng thái hữu hạn (Finite-State Machines)
- Mô hình Frame-based (hoặc tên khác là Form-based) có thể giải quyết vấn đề mà mô hình FSM gặp phải Mô hình Frame-based dựa trên các frame định sẵn để định hướng cuộc hội thoại Mỗi frame sẽ bao gồm các thông tin (slot) cần điền và các câu hỏi tương ứng
mà dialogue manager hỏi người dùng Mô hình này cho phép người dùng điền thông tin vào nhiều slot khác nhau trong frame
Trang 26Hình 2-8: Mô hình Frame-based
2.1.4 Mô hình sinh hội thoại cho chatbot
Trên thực tế, có các loại ứng dụng NLG chính: NLG rule based, retrieval based và generative - based
-Các chatbot mô hình rule-based: Đây là là kiểu kiến trúc mà hầu hết các chatbot
đầu tiên đã được xây dựng Chúng chọn câu trả lời của hệ thống dựa trên một tập hợp các quy tắc được xác định trước cố định, dựa trên việc nhận ra dạng từ vựng của văn bản đầu vào mà không tạo bất kỳ câu trả lời văn bản mới nào Kiến thức được sử dụng trong chatbot được con người viết mã bằng tay (hard-coded) và được sắp xếp và trình bày bằng các mẫu hội thoại Cơ sở dữ liệu quy tắc toàn diện cho phép chatbot trả lời nhiều loại đầu vào của người dùng hơn Tuy nhiên, loại mô hình này không mạnh đối với các lỗi chính
tả và ngữ pháp trong đầu vào của người dùng Hầu hết các nghiên cứu hiện có về chatbots dựa trên quy tắc đều nghiên cứu lựa chọn phản hồi cho cuộc trò chuyện một lượt, chỉ xem xét tin nhắn cuối cùng Trong các chatbot thông minh hơn, lựa chọn phản hồi nhiều lượt xem xét các phần trước của cuộc trò chuyện để chọn phản hồi phù hợp với toàn bộ bối cảnh hội thoại Các hệ thống như vậy chủ yếu dựa vào các quy tắc, điều này khiến chúng kém linh hoạt hơn NLG nâng cao
Cách tiếp cận dựa trên quy tắc, thông thường còn được gọi là cách tiếp cận theo hướng menu (menu-driven), trong đó các hành động được thực hiện bằng menu Chatbot
cố gắng hiểu câu hỏi người dùng và sau đó trình bày một menu để chọn hành động tiếp theo Danh sách này đảm bảo backend biết hoạt động chính xác nào cần được thực hiện
để thực hiện yêu cầu
Trang 27Mô hình retrieval-based: Một chút khác biệt so với mô hình dựa trên quy tắc là mô hình
dựa trên truy xuất (retrieval-based), cung cấp tính linh hoạt hơn vì nó truy vấn và phân tích các tài nguyên có sẵn bằng cách sử dụng các API Một chatbot dựa trên truy xuất lấy một số lựa chọn phản hồi từ một chỉ mục trước khi nó áp dụng phương pháp matching cho lựa chọn phản hồi
Mô hình generative-based: tạo ra câu trả lời theo cách tốt hơn so các mô hình còn lại,
dựa trên các tin nhắn hội thoại của người dùng hiện tại và trước đó Các chatbot này giống con người hơn và sử dụng các thuật toán máy học (machine learning) hoặc kỹ thuật học sâu (deep learning) nên linh hoạt hơn NLG nâng cao cho phép dự đoán khả năng xuất hiện từ này đến từ khác và sửa các lỗi ngôn ngữ, chẳng hạn như lỗi chính tả Các thuật toán được sử dụng trong NLG nâng cao cũng tốt hơn trong việc xử lý các từ và biểu thức mới không có trong các mẫu đào tạo ban đầu
Phương pháp dựa trên AI này dựa trên một công cụ NLP nâng cao để hỗ trợ ngôn ngữ tự nhiên và đáp ứng yêu cầu dựa trên các thuật toán ML và tích hợp hệ thống để truy xuất thông tin động Độ chính xác của chatbot thấp hơn khi bắt đầu và tăng lên theo thời gian
Sự khác biệt quan trọng giữa cách tiếp cận dựa trên menu và dựa trên AI là NLP engine Engine này chịu trách nhiệm trích xuất thông tin có trong đầu vào của người dùng Hơn nữa, dựa trên thông tin trích xuất, chatbot cần quyết định các bước tiếp theo
Hình 2-9 : NLP engine trích xuất thông tin dựa trên kỹ thuật học máy
Trang 282.2 Tại sao lựa chọn RASA Framework
[2] RASA được thiết kế để xây dựng một hệ thống trò chuyện, dưới dạng hội thoại hướng tác vụ Khi người dùng muốn làm một điều gì đó cụ thể, họ có một tác vụ cần đạt được Và họ thực hiện nó thông qua nói chuyện với một hệ thống trả lời tự động hai chiều Điều này khác với một số các hệ thống tương tự khác như một chatbot tán gẫu Vì trong đó mục tiêu chỉ là trò chuyện liên tục với bot mà không nhất thiết phải thực sự làm bất cứ điều gì cụ thể Vì vậy RASA có thể làm được những gì?
Là nền tảng giúp dễ dàng hơn trong việc dựng các chatbot tùy chỉnh thông qua việc
sử dụng phối hợp các phương pháp machine learning và các rule
Cốt lõi của việc dựng một chatbot bằng RASA là cung cấp các ví dụ để hệ thống có thể học được những gì người sử dụng sẽ nói với bot, cuộc trò chuyện có diễn ra theo kiểu
đã được định sẵn để xử lý hay không
RASA có tính linh hoạt rất cao trong việc tùy chỉnh và có thể hỗ trợ nhiều trong các
dự án phức tạp khác nhau
2.3 So sánh hướng tiếp cận sử dụng rule-based và neural
Có 02 thành phần chính đối với bất kỳ chatbot hướng tác vụ nào đó là:
Hiểu ngôn ngữ văn bản tự nhiên (Understanding Text):
NLU = Raw text in, machine- readable information out
Đây là nơi có đầu vào là văn bản thô của một ngôn ngữ nào đó do con người tạo ra
và nhận được đầu ra là những thông tin máy có thể đọc được Vì vậy đây có thể là một loại trích xuất tính năng, có thể là một loại số đại diện cho những gì trong văn bản
Có 2 cách tiếp cận:
+ Rule-based:
Ví dụ một chuỗi Regex khi tìm và trích xuất địa chỉ email có cấu trúc rất dễ đoán Phương pháp này có lợi ích là dựa trên quy tắc nên sẽ không cần thiết nhiều dữ liệu, hệ thống có thể nắm bắt được quy luật của email, không cần nhiều example về việc email đó trông như thế nào
Trang 29Rule-base theo quy tắc nên nó theo xu hướng là khá nhẹ và có thể chạy rất nhanh Nhưng nó không giúp được nhiều trong việc xử lý những thứ mà nó chưa bao giờ được đặt quy luật Ví dụ như email có cấu trúc lạ, thì nó sẽ không thể tìm và trích xuất được ký hiệu và địa chỉ email đó
+ Neural:
Một model transformer-base (e.g DIET của RASA) hoạt động theo cách sắp xếp văn bản mà người dùng có thể nói vào các intents dựa trên những ví dụ thực tiễn mà nó đã được cung cấp Nó đã xem các ví dụ, nó đã trích xuất theo một cách để đưa ra quyết định rồi nó có thể sử dụng việc đưa ra quyết định đó cho các ví dụ mới mà nó chưa từng gặp trước đây Vì vậy, nhược điểm ở đây là người dựng sẽ cần phải có dữ liệu training càng nhiều càng tốt nhưng nó là một hệ thống linh hoạt hơn rule-based Cụ thể như xử lý nhiều
ký hiệu và loại địa chỉ email khác nhau
Đưa ra quyết định hành động tiếp theo
Khi hệ thống đã nắm được tất cả thông tin cung cấp và hiểu nó thì việc tiếp theo sẽ
là quyết định xem sẽ hành động phản hồi tới người dùng như thế nào, ví dụ như việc run các lệnh ở đâu đó hay chỉ chờ phản hồi cho cuộc trò chuyện tại thời điểm đó Bot sẽ nên làm gì hoặc nói gì tiếp theo
2.4 Các thành phần chính khi sử dụng RASA [11][4]
2.4.1 NLU (Natural language Uderstanding)
Mục tiêu của NLU (Hiểu ngôn ngữ tự nhiên) là trích xuất thông tin có cấu trúc từ các thông điệp của người dùng Điều này thường bao gồm mục đích (intent) của người dùng và bất kỳ thực thể (entities) nào mà tin nhắn của họ chứa Lập trình viên có thể thêm thông tin bổ sung như biểu thức chính quy và bảng tra cứu vào dữ liệu đào tạo của mình
để giúp mô hình xác định các ý định và thực thể một cách chính xác
Dữ liệu đào tạo của NLU bao gồm các câu nói ví dụ của người dùng được phân loại theo ý định Để sử dụng ý định của người dùng dễ dàng hơn, hãy đặt cho họ những cái tên liên quan đến những gì người dùng muốn đạt được với ý định đó, giữ chúng ở dạng chữ thường và tránh dấu cách và ký tự đặc biệt
Từ đồng nghĩa: Từ đồng nghĩa ánh xạ các thực thể được trích xuất thành một giá trị
Trang 30khác với văn bản được trích xuất theo nghĩa đen Có thể sử dụng từ đồng nghĩa khi có nhiều cách mà người dùng đề cập đến cùng một thứ Hãy nghĩ đến mục tiêu cuối cùng của việc trích xuất một thực thể và từ đó tìm ra những giá trị nào nên được coi là tương
Trong trường hợp này, người lập trình có thể xác định "tài khoản thẻ tín dụng" và
"tài khoản tín dụng" là từ đồng nghĩa với "tín dụng":
Hình 2-10: Khai báo synonym
Sau đó, nếu một trong hai cụm từ này được trích xuất dưới dạng thực thể, nó sẽ được ánh xạ tới giá trị “tín dụng”
Biểu thức chính quy (Regex)
Có thể sử dụng biểu thức chính quy để cải thiện phân loại ý định và trích xuất thực thể kết hợp với RegexFeaturizervà RegexEntityExtractorcác thành phần trong đường dẫn Người dùng có thể sử dụng biểu thức chính quy để cải thiện phân loại ý định bằng cách đưa RegexFeaturizer thành phần vào đường dẫn Khi sử dụng RegexFeaturizer, regex không hoạt động như một quy tắc để phân loại một ý định Nó chỉ cung cấp một tính năng mà bộ phân loại ý định sẽ sử dụng để tìm hiểu các mẫu phân loại ý định Hiện tại, tất cả các bộ phân loại ý định đều sử dụng các tính năng regex có sẵn
Tên của regex trong trường hợp này là mô tả con người có thể đọc được Nó có thể giúp người dùng nhớ regex được sử dụng để làm gì và nó là tiêu đề của tính năng mẫu tương ứng Nó không phải khớp với bất kỳ mục đích hoặc tên thực thể nào Một regex
Trang 31cho một yêu cầu "trợ giúp" có thể giống như sau:
Mục đích được đối sánh có thể là, greet hoặc bất cứ điều gì khác help_meassistance
Cố gắng tạo biểu thức chính quy của người dùng theo cách mà chúng khớp với ít từ nhất có thể Ví dụ: sử dụng \bhelp\bthay vì help.*, vì cái sau có thể khớp với toàn bộ tin nhắn trong khi cái đầu tiên chỉ khớp với một từ duy nhất
2.4.2 Domain File
Domain file được định nghĩa như một file YAML độc lập hoặc có thể tách thành nhiều file trong cùng một thư mục khi tách thành nhiều file, nội dung của domain sẽ được tự động hợp lại khi đọc Nếu dùng nhiều file domain, sử dụng câu lệnh sau để train model:
rasa train domain path_to_domain_directory
Cấu trúc của một file domain bao gồm những thành phần chính sau:
Intents:
Từ khóa intents trong file domain liệt kê tất cả các intents được dùng trong NLU và
dữ liệu hội thoại mà say này sẽ viết trong stories
Bỏ qua các entities cho một số intent
Để bỏ qua tất cả các entities cho intent nào, người dùng có thể thêm tham số use_entities: [] vào intent đó trong domain file của mình như sau:
Hình 2-11: Sử dụng entities trong intent
Để bỏ qua một số entities hoặc chỉ tính đển một số entities nhất định một cách rõ ràng có thể dùng cú pháp sau:
Trang 32Hình 2-12: Khai báo bỏ qua entities
Chỉ có thể sử dụng 1 trong 2 tham số trên cho mỗi intent
Các entities bị loại trừ cho các intent đó sẽ không được hoàn thiện và do đó sẽ không ảnh hưởng đến các dự đoán hành động tiếp theo Điều này hữu ích khi lập trình viên có intent mà không quan tâm đến các entities đang được chọn
Nếu liệt kê các intent của mình mà không có tham số use_entities hoặc ignore_entities, các entities sẽ được điền như bình thường
Cũng có thể bỏ qua một entitíe cho tất cả các intent bằng cách đặt influence_conversation = false cho chính entities đó Xem phần entities để biết chi tiết
Khi sử dụng nhiều file domain, entitíe có thể được cụ thể trong bất kỳ file nào, và
có thể được sử dụng hoặc bỏ qua bởi bất kỳ intent nào trong bất kỳ file domain nào Nếu sử dụng tính năng Entity Roles and Groups thì cũng sẽ cần liệt kê các role và group của entity đó trong khối này
Trang 33Ví dụ:
Hình 2-14: Khai báo roles và groups
Mặc định, entity ảnh hưởng đến dự đoán hành động để ngăn chặn các entity được trích xuất ảnh hưởng đến cuộc trò chuyện đối với các intent cụ thể, có thể bỏ qua các intent như đã nói ở trên
Responses:
Responses là action gửi thông điệp đến người dùng mà không cần phải chạy bất kỳ một đoạn code nào hoặc trả về sự kiện nào Các response này có thể được định nghĩa trực tiếp trong file domain dưới từ khóa responses và có thể được thêm vào các nội dung bổ sung như nút hoặc file đính kèm Xem thêm ở mục responses
Actions:
Action là thứ mà bot có thể làm để phản hồi lại người dùng Ví dụ như:
- Phản hồi lại người dùng
- Gọi một API từ bên ngoài
- Truy vấn tới database
- Thực thi một hàm tự định nghĩa bởi lập trình viên
Tất cả action nên được list trong domain ngoại trừ một số đã được liệt kê trong responses rồi thì thôi
Session configuration:
Trang 34Phiên hội thoại thể hiện cuộc đối thoại giữa trợ lý và người dùng Phiên trò chuyện
có thể bắt đầu theo ba cách:
- người dùng bắt đầu cuộc trò chuyện với trợ lý,
- người dùng gửi tin nhắn đầu tiên của họ sau một khoảng thời gian không hoạt động có thể định cấu hình, hoặc
- bắt đầu phiên thủ công được kích hoạt với /session_start và intent
Có thể xác định khoảng thời gian không hoạt động mà sau đó phiên trò chuyện mới được kích hoạt trong miền dưới key session_config
sẽ không kết thúc (lưu ý rằng action_session_start hành động sẽ vẫn được kích hoạt khi bắt đầu cuộc hội thoại)
Config:
Khóa config trong tệp miền duy trì store_entities_as_slots Tham số này chỉ được sử dụng trong ngữ cảnh đọc truyện và biến chúng thành công cụ theo dõi Nếu tham số được đặt thành True, điều này sẽ dẫn đến các vị trí được đặt ngầm từ các thực thể nếu các thực thể phù hợp có mặt trong câu chuyện Khi một thực thể khớp với from_entity ánh xạ vị trí, hãy store_entities_as_slots xác định xem giá trị thực thể có nên được đặt vào vị trí đó hay không Do đó, tham số này bỏ qua việc thêm một slot_was_set
Có thể tắt chức năng này bằng cách đặt store_entities_as_slotsfalse
2.4.3 Entities
Các thực thể là những mẩu thông tin có cấu trúc bên trong một thông điệp của người dùng Để trích xuất thực thể hoạt động, người dùng cần chỉ định dữ liệu đào tạo để
Trang 35đào tạo mô hình ML hoặc người dùng cần xác định các biểu thức chính quy để trích xuất các thực thể bằng cách sử dụng RegexEntityExtractor dựa trên mẫu ký tự
Khi quyết định thực thể nào người dùng cần trích xuất, hãy nghĩ về thông tin mà trợ
lý của người dùng cần cho các mục tiêu người dùng Người dùng có thể cung cấp các phần thông tin bổ sung mà người dùng không cần cho bất kỳ mục tiêu người dùng nào; người dùng không cần phải trích xuất chúng dưới dạng thực thể
Xem định dạng dữ liệu đào tạo để biết chi tiết về cách chú thích các thực thể trong dữ liệu đào tạo
2.4.4 Slots
Slot là bộ nhớ của bot nó hoạt động dưới dạng key-value có thể dùng để lưu trữ những thông tin người dùng cung cấp (ví dụ địa chỉ nhà, thành phố…) giống như cách thu thập thông tin từ thế giới bên ngoài
Slot được định nghĩa trong khối slot của file domain với name, type Ví dụ sau đây định nghĩa một slot tên là “slot_name”, type text và định nghĩa trước slot mapping
“from_entitiy”
Hình 2-16: Khai báo slots
Slot và hành vi hội thoại
Có thể chỉ định vị trí có ảnh hưởng đến hội thoại hay không bằng tham số influence_conversation
Nếu muốn lưu trữ thông tin trong một vị trí mà không ảnh hưởng đến cuộc trò chuyện, hãy đặt influence_conversation: false khi xác định slot
Ví dụ sau xác định slot age, sẽ lưu thông tin về tuổi của người dùng nhưng không ảnh hưởng đến luồng của cuộc trò chuyện Điều này có nghĩa là bot sẽ bỏ qua giá trị của slot mỗi khi dự đoán hành động tiếp theo
Trang 36Hình 2-17: Slot không ảnh hưởng đến hội thoại
Khi định nghĩa slot, nếu bỏ qua influence_conversation hoặc set true, thì slot đó sẽ ảnh hưởng đến hội thoại dựa trên slot type
Ví dụ sau đay định nghĩa slot home_city sẽ có ảnh hưởng đến hội thoại Từ khóa slot sẽ ảnh hưởng đến hành vi của bot phụ thuộc vào khi nào slot có value
Value cụ thể của text slot (ví dụ Bangalore hoặc new york hoặc hong kong) không
Các câu trả lời nằm dưới responses key trong tệp domain hoặc trong một tệp
"responsive.yml" riêng biệt Mỗi tên phản hồi phải bắt đầu bằng utter_ Ví dụ: có thể thêm câu trả lời cho lời chào và lời chào tạm biệt dưới tên phản hồi utter_greet và utter_bye:
Trang 37Hình 2-19: Khai báo responses trong domain
Câu trả lời phong phú:
Có thể làm cho các câu trả lời trở nên phong phú bằng cách thêm các yếu tố trực quan và tương tác Có một số loại phần tử được hỗ trợ trên nhiều kênh:
Các nút
Dưới đây là một ví dụ về phản hồi sử dụng các nút:
Hình 2-20: Khai báo Responses với button
Mỗi nút trong danh sách buttons phải có hai key:
title: Văn bản hiển thị trên các nút mà người dùng nhìn thấy
payload: Thông báo được gửi từ người dùng đến trợ lý khi nút được nhấp
Nếu muốn các nút cũng chuyển các entities cho bot:
Trang 38Hình 2-21: Truyền entities vào responses
2.4.6 Stories
Câu chuyện là một loại dữ liệu đào tạo được sử dụng để đào tạo mô hình quản lý đối thoại của bot Các câu chuyện có thể được sử dụng để đào tạo các mô hình có khả năng khái quát hóa thành các đường dẫn hội thoại không nhìn thấy
Định dạng
Câu chuyện là bản trình bày cuộc trò chuyện giữa người dùng và trợ lý AI, được chuyển đổi thành một định dạng cụ thể trong đó thông tin người dùng nhập vào được thể hiện dưới dạng ý định (và thực thể khi cần thiết), trong khi phản hồi và hành động của trợ
lý được thể hiện dưới dạng tên hành động
Đây là ví dụ về một đoạn hội thoại ở định dạng câu chuyện Rasa:
Trang 39Hình 2-22: Ví dụ về khai báo stories
Tin nhắn Người dùng:
Trong khi viết câu chuyện, không phải xử lý nội dung cụ thể của tin nhắn mà người dùng gửi Thay vào đó, có thể tận dụng kết quả đầu ra từ đường ống NLU, cho phép chỉ
sử dụng kết hợp một ý định và các thực thể để tham chiếu đến tất cả các thông điệp có thể
mà người dùng có thể gửi có ý nghĩa tương tự
Điều quan trọng là phải bao gồm các thực thể ở đây vì các chính sách học cách dự đoán hành động tiếp theo dựa trên sự kết hợp của cả ý định và thực thể (tuy nhiên, có thể thay đổi hành vi này bằng cách sử dụng thuộc tính use_entities )
Sự kiện:
Trang 40Trong quá trình đào tạo, Mã nguồn mở Rasa không gọi máy chủ hành động Điều này có nghĩa là mô hình quản lý đối thoại của bot không biết những sự kiện nào mà một hành động tùy chỉnh sẽ trả về
Do đó, các sự kiện như thiết lập vị trí hoặc kích hoạt / hủy kích hoạt biểu mẫu phải được viết ra một cách rõ ràng như một phần của câu chuyện Để biết thêm thông tin, hãy xem tài liệu về Sự kiện
Slot sự kiện:
Các sự kiện xèng được viết dưới slot_was_set dạng một câu chuyện Nếu vị trí này được đặt bên trong một hành động tùy chỉnh, hãy thêm slot_was_set sự kiện ngay sau lệnh gọi hành động tùy chỉnh Nếu hành động tùy chỉnh của lập trình viên đặt lại giá trị vị trí thành None, thì sự kiện tương ứng cho giá trị đó sẽ trông giống như sau:
Hình 2-23: Stories với slot
Checkpoints:
Checkpoints và câu lệnh OR nên được sử dụng một cách thận trọng, nếu có Thường có một cách tốt hơn để đạt được những gì mong muốn bằng cách sử dụng Rules hoặc ResponseSelector
Có thể sử dụng các Checkpoints để mô-đun hóa và đơn giản hóa dữ liệu đào tạo của mình Các Checkpoints có thể hữu ích, nhưng đừng lạm dụng chúng Việc sử dụng nhiều Checkpoints có thể nhanh chóng làm cho các câu chuyện mẫu khó hiểu và sẽ làm chậm quá trình đào tạo
Dưới đây là một ví dụ về các câu chuyện có chứa các Checkpoints: