1. Trang chủ
  2. » Tất cả

Xây dựng chatbot hỗ trợ quyết định, tư vấn mua hàng trong ứng dụng chat

86 5 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây dựng chatbot hỗ trợ quyết định, tư vấn mua hàng trong ứng dụng chat
Tác giả Trần Đăng Tuyến
Người hướng dẫn TS. Phạm Huy Hoàng
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Khoa học Máy tính
Thể loại Luận văn thạc sĩ
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 86
Dung lượng 2,73 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • CHƯƠNG 1. ĐẶT VẤN ĐỀ VÀ GIỚI THIỆU LÝ THUYẾT (9)
    • 1.1 Giới thiệu đề tài và cấu trúc luận văn (9)
    • 1.2 Mục đích và đóng góp của đề tài (10)
    • 1.3 Khái niệm, lịch sử ra đời [18] [20] (11)
    • 1.4 Tổng quan về các loại Chatbot phổ biến [7] (12)
    • 1.5 Một số nền tảng công nghệ xây dựng chatbot (14)
    • 1.6 Kết luận chương (15)
  • CHƯƠNG 2. GIỚI THIỆU MỘT SỐ KỸ THUẬT SỬ DỤNG XÂY DỰNG (17)
    • 2.1 Một số kỹ thuật sử dụng trong chatbot (17)
      • 2.1.1 Xác định ý định người dùng (17)
      • 2.1.2 Trích xuất thông tin (21)
      • 2.1.3 Quản lý hội thoại (23)
      • 2.1.4 Mô hình sinh hội thoại cho chatbot (26)
    • 2.2 Tại sao lựa chọn RASA Framework (28)
    • 2.3 So sánh hướng tiếp cận sử dụng rule-based và neural (28)
    • 2.4 Các thành phần chính khi sử dụng RASA. [11][4] (29)
      • 2.4.1 NLU (Natural language Uderstanding) (29)
      • 2.4.2 Domain File (31)
      • 2.4.3 Entities (34)
      • 2.4.4 Slots (35)
      • 2.4.5 Responses (36)
      • 2.4.6 Stories (38)
      • 2.4.7 Pipeline và các components (thành phần) [11][4] (41)
      • 2.4.8 Custome Action (51)
    • 2.5 Kết luận chương (52)
  • CHƯƠNG 3. ỨNG DỤNG VÀO CHATBOT (53)
    • 3.1 Giới thiệu bài toán thực tế (53)
    • 3.2 Xây dựng và xác định dữ liệu (53)
      • 3.2.1 Xây dựng ý định (intent) (54)
      • 3.2.2 Xây dựng domain (59)
      • 3.2.3 Xây dựng stories (60)
    • 3.3 Thiết kế, luồng dữ liệu vận hành (61)
    • 3.4 Đánh giá độ tin cậy (62)
    • 3.5 Đánh giá (80)
    • 3.6 Kết luận chương (81)
  • TÀI LIỆU THAM KHẢO (83)

Nội dung

Ở 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 1

TRƯỜ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 2

TRƯỜ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 3

Lờ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ệp

Tó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 4

MỤ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 5

3.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 6

DANH 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 7

DANH 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 8

Hì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 9

CHƯƠ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 10

doanh 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 11

1.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 12

Hì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 13

Theo 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 14

có 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 16

thô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 17

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 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 18

Cá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 19

tụ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 20

Cá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 21

dụ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 22

Hì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 23

Hì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 24

hỏ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 26

Hì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 27

Mô 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 28

2.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 29

Rule-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 30

khá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 31

cho 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 32

Hì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 33

Ví 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 34

Phiê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 36

Hì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 37

Hì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 38

Hì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 39

Hì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 40

Trong 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:

Ngày đăng: 09/01/2023, 14:23

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Deep Machine Learning and Neural Networks - Chandrahas Mishra, D. L. Gupta [2] https://rasa.com/docs/rasa/nlu-training-data[3] http://tflearn.org/ Link
[11] RASA whiteboard agorithm - https://www.youtube.com/watch?v=7tAWk_Coj-s [12] Tensorflow trong Machine learning - https://bizflycloud.vn/tin-tuc/tensorflow-la-gi-vai-tro-cua-tensorflow-trong-su-phat-trien-cua-hoc-may-20211104172943825.htm Link
[18] A brief history of chatbots – Timeline. Truy nhập ngày 10/10/2020: https://roboticsbiz.com/a-brief-history-of-chatbots-timeline/ Link
[20] Lịch sử hình thành và phát triển của chatbot. https://congdongchatbot.com/lich-su-hinh-thanh-va-phat-trien-cua-chatbot/ Link
[5] Sumit Raj (2019). Building Chatbots with Python Using Natural Language Processing and Machine Learning, Apress Khác
[10] Towards End-to-End Unified Scene Text Detection and Layout Analysis Khác

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w