Nghiên cứu và xây dựng chatbot hỗ trợ người dùng trong ngân hàng - 7

Để tạo tính tự nhiên trong câu truyện thì ta có thể xây dựng nhiều câu trả lời Bot chọn ngẫu nhiên trả lời người dùng.

Bên cạnh đó ta cũng có thể xây dựng câu trả lời cho bot thông qua action. Hành động là những thứ bot chạy để đáp ứng với đầu vào của người dùng. Đây là thành phần có thể cung cấp thông tin trả lời người dùng dựa vào các intent, slot và dữ liệu lấy từ hệ thống khác qua API. Bên cạnh đó action của rasa còn hỗ trợ tùy biến qua ngôn ngữ python nên ta có thể điều hướng các action tiếp theo dựa vào dialog state tracker, policy và dispatcher của rasa. Có ba loại hành động trong Rasa Core:

- Default actions : các hành động default như lắng nghe người dùng, restart lại hội thoại hoặc trả lời mặc định khi không phân loại được ý định người dùng.


utter_default:


- text: "Xin lỗi tôi không hiểu. Tôi chỉ có thể hỗ trợ bạn các tính năng của ngân hàng như thông tin tài khoản, truy vấn số dư, chuyển tiền, thanh toán trực tuyến, tiết kiệm, vay tiền, gửi tiền, thông tin lãi suất, lịch sử giao dịch..."

- text: "Xin lỗi câu hỏi của bạn ngoài khả năng của tôi. nBạn có thể hỏi tôi về thông tin tài khoản, số dư, chuyển tiền, thông tin lãi suất..."

buttons:

- title: "Thông tin tài khoản" payload: "Thông tin tài khoản"

- title: "Số dư" payload: "Số dư"

- title: "Chuyển tiền" payload: "Chuyển tiền"

- title: "Thông tin lãi suất" payload: "Thông tin lãi suất"

- text: "Tôi chưa rõ ý bạn, nhưng bạn có muốn xem thông tin tài khoản hay số dư không?"

buttons:

- title: "Thông tin tài khoản" payload: "Thông tin tài khoản"

- title: "Số dư" payload: "Số dư"

- text: "Bạn có cần hỗ trợ trực tiếp qua tổng đài không"


Hình 40: Mẫu câu trả lời mặc định của bot khi không nhận ra ý định người dùng

- Utter actions: là các tập câu trả lời mẫu mà mình xây dựng cho bot


utter_ask_interest_type:


- text: "lãi suất vay tiền hay gửi tiền?"

- text: "lãi suất vay tiền hay tiết kiệm?"

- text: "lãi suất vay tiền hay lãi suất tiết kiệm?"


utter_ask_term:

- text: Xin vui lòng nhập thông tin kỳ hạn theo tháng (0>36 tháng) hoặc theo năm (1>3 năm)

- text: bạn nhập thông tin kỳ hạn?


Hình 41.8: Mẫu câu trả lời cho ý định người dùng hỏi lãi suất

- Custom actions: Khi các tập câu trả lời mẫu không áp dụng được với các câu trả lời cần có kết quả lấy từ một nguồn dữ liệu khác thì action tùy biến được sử dụng, nó sẽ trỏ đến một hàm trong lớp action (python). Trong đây mình sẽ tùy biến câu trả lời như lấy dữ liệu qua API rồi điền vào tham số trong câu trả lời.


class CheckMoney(Action):


""" This action for check money""" def name(self):

return "action_check_money"


def run(self, dispatcher, tracker, domain):

# money = tracker.get_slot('money') text = tracker.latest_message.text print(text)

# validate money money = text

if money:

# check money print(money)

else:

print('Xin vui lòng nhập lại số tiền:') dispatcher.utter_message("Xin vui lòng nhập lại số tiền:") return [UserUtteranceReverted()]


return [SlotSet('money', money)]


Hình 42: Custom action xử lý slot money

3.4.4 Xây dựng khung kịch bản (history)


Dựa vào các tập ý định người dùng và các mẫu câu trả lời tương ứng của bot ta xây dựng khung kịch bản cho bot thông qua việc sắp xếp chung thành một đoạn hội thoại như dưới:


## Generated Story without view transfer -3085341580024990180

* transfer_by_card

- utter_ask_card

* input_data

- action_check_card

- slot{"card": "12445456568345"}

- utter_ask_money

* input_data

- action_check_money

- slot{"money": "3000000"}

- utter_ask_content

* input_data

- action_check_content

- slot{"content": "tien chuyen tien"}

- utter_ask_otp

* input_data

- action_check_otp

- slot{"otp": "123456"}

- utter_transfer_complete


Hình 43: Khung kịch bản chuyển tiền bằng thẻ

Việc xây dựng đoạn hội thoại này có thể viết bằng tay hoặc thông qua việc học tương tác (Interactive Learning) với bot: Đây là một cách khác để xây dựng khung câu truyện là việc học tương tác với bot. Chế độ này cho phép người dùng tự động tạo ra các hội thoại sau khi chat trực tiếp với bot. Nếu bot nhận định các intent hay slot sai thì người dùng có thể dạy lại cho bot đúng


Hình 44 Học tương tác với bot 3 5 Thực nghiệm Tiến hành thử nghiệm chat với 1


Hình 44: Học tương tác với bot

3.5 Thực nghiệm


Tiến hành thử nghiệm chat với bot ngẫu nhiên mỗi lần 60 câu thì ta được kết quả theo bảng đánh giá sau:


Lần thử nghiệm

Số câu đúng

Độ chính xác

1

28/60

48%

2

38/60

64%

3

45/60

75%

4

47/60

79%

5

49/60

83%

Có thể bạn quan tâm!

Xem toàn bộ 81 trang tài liệu này.


Hình 45 : Bảng mô tả số lần thử nghiệm với người dùng

Thử nghiệm cuối cùng tương tác với bot 60 câu thì thấy độ chính xác của bot đạt khoảng trên 80% và chỉ tính các câu hỏi xung quanh kịch bản đã đào tạo cho bot. Còn đối với các câu hỏi mà chưa trainning(out of scops) thì bot sẽ đưa ra một số mẫu câu trả lời điều hướng người dùng tới một số câu hỏi sẵn có mà bot có thể đáp ứng được.

Một số biểu đồ đánh giá ước lượng tập dữ liệu training và khung kịch bản (history) cho bot:


Hình 46 Hình ma trận ước lượng nhầm lẫn xây dựng dữ liệu intent Với biểu 2


Hình 46: Hình ma trận ước lượng nhầm lẫn xây dựng dữ liệu intent

Với biểu đồ ước lượng trên ta thấy dữ liệu các câu đầu vào cho intent người dùng không bị xung đột hay nhầm lẫn với nhau. Điều này đảm bảo tính đúng đắn của tập dữ liệu cho việc đào tạo bot.


Hình 47 Hình ước lượng độ chính xác tập dữ liệu trainning intent Sử dụng 3


Hình 47: Hình ước lượng độ chính xác tập dữ liệu trainning intent

Sử dụng mô hình intent_classifier_tensorflow_embedding dựa trên nền tảng mô hình starspace [9] của facebook để đào tạo cho bot phục vụ việc phân loại ý định người dùng cho thấy độ chính xác tương đối cao đối với tập dữ liệu cho bài toán ngân hàng.


Hình 3 148 Hình ước lượng độ chính xác trích chọn thông tin Việc áp dụng 4


Hình 3.148 : Hình ước lượng độ chính xác trích chọn thông tin

Việc áp dụng mô hình CRF cho trích chọn thông tin đạt độ chính xác rất cao 0.99%. Qua quá trình đào tạo cho bot thì thấy việc càng training nhiều dữ liệu thì độ chính xác trích xuất càng cao với CRF. Để đảm bảo việc trích chọn thông tin chính xác nhất thì mỗi entity phải trainning cho bot từ 10 đến 20 dữ liệu.


Hình 496 Hình ước lượng độ nhầm lẫn cho việc xây dựng câu trả lời của 5


Hình 496: Hình ước lượng độ nhầm lẫn cho việc xây dựng câu trả lời của bot (action)

Dưới là danh sách câu hỏi và trả lời khi người dùng tương tác với bot trong thử nghiệm cuối.


No

Người dùng

Bot

Slot

Đánh giá

1

Xin chào

Chào bạn




2


bạn có thể hướng dẫn tôi cái gì

Tôi có thể hỗ trợ bạn các tính năng(tài khoản, số dư, chuyển tiền, thanh toán, tiết kiệm, vay tiền, gửi tiền, lãi suất...) Để biết thông tin chi tiết mời bạn điền thông tin tính năng cần hỗ trợ. Ví dụ:

'chuyển tiền'




3


thông tin tài khoản

Số tài khoản: {&account_number}.

Tên tài khoản: {@account_name}. Loại tài khoản: {&account_type}. Chi nhánh

{&account_branch}




4

kiểm tra giúp tôi số dư tài

khoản

Tài khoản {&account}. {&name}. Số dư của bạn là: {&money}



5

Cảm ơn

Không có gì, đó là trách nhiệm của tôi




6

bạn có hỗ trợ qua điện

thoại?

Quý khách có thể gọi về tổng đài

{&phone} miễn phí để được hỗ trợ và hướng dẫn xử lý




7

cảm ơn. tôi sẽ gọi cho tổng đài hỗ trợ nếu

cần

Quý khách có thể gọi về tổng đài

{&phone} miễn phí để được hỗ trợ và hướng dẫn xử lý



8

Cảm ơn

Rất vui khi giúp đỡ bạn




9


bạn có thể hướng dẫn tôi cái khác

Tôi có thể hỗ trợ bạn các tính năng(tài khoản, số dư, chuyển tiền, thanh toán, tiết kiệm, vay tiền, gửi tiền, lãi suất...) Để biết thông tin chi tiết mời bạn điền thông tin tính năng cần hỗ trợ. Ví dụ:

'chuyển tiền'




10


chuyển tiền

Bạn chọn loại chuyển tiền nào: Chuyển tiền qua thẻ, chuyển tiền trong ngân hàng, chuyển tiền ngoài ngân hàng,

chuyển tiền nhanh từ danh bạ?



11

qua thẻ

Mời bạn nhập số thẻ:




12


1234 6534

9544 6468


Tên người nhận: Nguyễn Tất Tiến, ngân hàng Vietinbank

account: 1234

6534 9544 6468

Name: Nguyễn Tất Tiến

Bank: Vietinbank




Mời bạn nhập số tiền chuyển:



13

2 triệu

Mời bạn nhập nội dung chuyển tiền:

Money: 2 triệu



14


tiến chuyển tiền

Mời bạn xác nhận thông tin!

Bạn muốn chuyển: 2,000,000 VNĐ

Cho số thẻ: 1234 6534 9544 6468 Người nhận: Nguyen Tat Tien

Ngân Hàng: Vietinbank


Content: tiến chuyển tiền



Nội dung chuyển tiền: tiến chuyển tiền





Mời bạn nhập otp:




15


123456

Giao dịch thành công! Chuyển 2,000,000 VNĐ

Cho số thẻ: 1234 6534 9544 6468 Người nhận: Nguyen Tat Tien

Ngân Hàng: Vietinbank

Nội dung chuyển tiền: tiến chuyển tiền


Otp: 123456


16

cảm ơn

Tôi hi vọng bạn sẽ hài lòng




17

cảm ơn tôi rất hài lòng với

bạn


Tôi hi vọng bạn sẽ hài lòng



18

ok bạn

Tôi là chatbot hỗ trợ ngân hàng. Tôi sinh

năm 2018. Luôn sẵn lòng hỗ trợ bạn




19

bạn hướng dẫn tôi

chuyển tiền tiếp chứ

Bạn chọn loại chuyển tiền nào: Chuyển tiền qua thẻ, chuyển tiền trong ngân

hàng, chuyển tiền ngoài ngân hàng, chuyển tiền nhanh từ danh bạ?




20

chuyển tiền

trong ngân hàng


Mời bạn nhập số tài khoản:




21


9842 4223

5345 8723


Tên người nhận: Nguyễn Tất Tiến

account: 9842

4223 5345 8723

Name: Nguyễn Tất Tiến




Mời bạn nhập số tiền chuyển:




22


123552342

Chỉ được phép chuyển dưới 10,000,000

mỗi lần. Xin vui lòng nhập lại số tiền chuyển!

Money: 123552342



23


11 triệu

Chỉ được phép chuyển dưới 10,000,000

mỗi lần. Xin vui lòng nhập lại số tiền chuyển!


Money: 11 triệu


24

9 triệu

Mời bạn nhập nội dung chuyển tiền:

Money: 9 triệu



22


tiến trả tiền dư nợ thẻ tín dụng

Mời bạn xác nhận thông tin! Bạn muốn chuyển: 9,000,000

Cho số tài khoản: 9842 4223 5345 8723 Người nhận: Nguyen Tat Tien Ngân Hàng: None

Nội dung chuyển tiền: tiến trả tiền dư nợ thẻ tín dụng


Content: tiến trả tiền dư nợ thẻ tín dụng




Mời bạn nhập otp:



23

1234567

OTP không đúng. Xin vui lòng nhập lại

OTP!

OTP: 1234567



24


456234

Giao dịch thành công!

Chuyển 9,000,000 cho Nguyen Tat Tien, ngân hàng None.

Nội dung chuyển tiền:tiến trả tiền dư nợ thẻ tín dụng


OTP: 456234


25

bạn có thể

chuyển tiền

Mời bạn nhập số tài khoản:


sai


qua kênh nào

khác?





26

bạn nhầm rồi. tôi muốn hủy

giao dịch


Hủy giao dịch thành công!




27


hướng dẫn chuyển tiền?

Bạn chọn loại chuyển tiền nào: Chuyển tiền qua thẻ, chuyển tiền trong ngân hàng, chuyển tiền ngoài ngân hàng,

chuyển tiền nhanh từ danh bạ?




28

chuyển tiền ngoài ngân

hàng


Mời bạn nhập ngân hàng:



29

vietinbank

Mời bạn nhập chi nhánh:

Bank: vietinbank


30

hà nội

Mời bạn nhập số tài khoản:

Branch: hà nội


31

8734 2345

2341 9584

Tên người nhận: Nguyễn Tất Tiến

Account: 8734

2345 2341 9584




Mời bạn nhập số tiền chuyển:




32

tiến chuyển

tiền ngoài ngân hàng


Xin vui lòng nhập lại số tiền:



33

5 trăm

Mời bạn nhập nội dung chuyển tiền:

Money: 5 trăm



34


tiến test chuyển tiền ngoài ngân hàng

Mời bạn xác nhận thông tin! Bạn muốn chuyển: 500,000

Cho số tài khoản: 8734 2345 2341 9584 Người nhận: Nguyen Tat Tien

Ngân Hàng: vietinbank Chi Nhánh: hà nội

Nội dung chuyển tiền: tiến test chuyển tiền ngoài ngân hàng


Content: tiến test chuyển tiền ngoài ngân hàng



35


danh bạ người nhận tiền

Danh bạ người nhận:

tiến - Nguyễn Tất Tiến, tài khoản 8888 8888 8888 8888, ngân hàng Vietinbank tú - Nguyễn Đình Tú, tài khoản 6666 6666 6666 6666, ngân hàng Vietcombank

thảo - Nguyễn Thanh Thảo, tài khoản 9999 9999 9999 9999, ngân hàng Vietinbank




36


chuyển 6 triệu cho nam

Không tìm thấy nam trong danh bạ. Xin vui lòng nhập đúng tên trong danh bạ người nhận


Receiver: nam



37

chuyển cho thảo 6000000

Hệ thống ghi nhận!

Bạn muốn chuyển: 6000000 VNĐ Người nhận: thảo từ danh bạ

Name: thảo Money: 6000000




Mời bạn nhập nội dung chuyển tiền:



..... Xem trang tiếp theo?
⇦ Trang trước - Trang tiếp theo ⇨

Ngày đăng: 12/12/2022