1. Trang chủ
  2. » Cao đẳng - Đại học

Đồ án tìm hiểu chatbot framework và xây dựng ứng dụng minh họa

125 116 3

Đ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

Định dạng
Số trang 125
Dung lượng 3,72 MB

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

Nội dung

TRẦN ANH DŨNG Thời gian thực hiện: từ ngày 12/03/2021 đến ngày 23/06/2021 Sinh viên thực hiện: Nghiên cứu sâu hơn 1 ChatBot framework Wit.ai và các công nghệ liên quan Node.js, Express.j

Trang 1

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

KHOA CÔNG NGHỆ PHẦN MỀM

NGUYỄN NGỌC ĐĂNG

BÁO CÁO ĐỒ ÁN TÌM HIỂU VỀ CHATBOT FRAMEWORK VÀ XÂY

DỰNG ỨNG DỤNG MINH HỌA

ĐỒ ÁN 1 – SE121.L21

Trang 2

TP HỒ CHÍ MINH, 2021ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

KHOA CÔNG NGHỆ PHẦN MỀM

NGUYỄN NGỌC ĐĂNG - 18520557

BÁO CÁO ĐỒ ÁN TÌM HIỂU VỀ CHATBOT FRAMEWORK VÀ XÂY

DỰNG ỨNG DỤNG MINH HỌA

ĐỒ ÁN 1 – SE121.L21

GIẢNG VIÊN HƯỚNG DẪN THS PHAN TRUNG HIẾU THS TRẤN ANH DŨNG

Trang 3

TP HỒ CHÍ MINH, 2021

Trang 4

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ

MINH

TRƯỜNG ĐẠI HỌC

CÔNG NGHỆ THÔNG TIN

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT

NAM Độc Lập - Tự Do - Hạnh Phúc

TP HCM, ngày 30 tháng 03 năm 2021

ĐỀ CƯƠNG CHI TIẾT

Tên đề tài: Tìm hiểu ChatBot framework và xây dựng ứng dụng minh họa

Cán bộ hướng dẫn: THS PHAN TRUNG HIẾU, THS TRẦN ANH DŨNG

Thời gian thực hiện: từ ngày 12/03/2021 đến ngày 23/06/2021

Sinh viên thực hiện:

Nghiên cứu sâu hơn 1 ChatBot framework (Wit.ai) và các công nghệ liên quan

(Node.js, Express.js, React, Javascript) để xây dựng một ứng dụng minh họa

Xây dựng ứng dụng minh họa có tính thực tiễn trong cuộc sống, giúp ích người dùng trong việc tiếp cận thông tin

Nhóm hi vọng với nền tảng lý thuyết đã được truyền đạt trong quá trình học tập trên giảng đường cũng như khả năng tự tìm hiểu thông tin, sẽ có thể hoàn thiện được các mục tiêu đã đề ra

Phương pháp thực hiện: Dự án cá nhân, sinh viên đảm nhiệm tất cả các vai trò trong

việc tìm hiểu, thiết kế và xây dựng ứng dụng minh họa cũng như biên soạn báo cáo phục vụ cho đồ án này

Kết quả mong đợi: Sau khi xác định đề tài và định hướng nghiên cứu, nhóm hi vọng

Trang 5

Về mặt chức năng, ứng dụng có thể thực hiện trả lời các câu hỏi của người dùng về một số các vấn đề khác nhau mà người dùng muốn biết

Đối với nhà phát triển, ứng dụng trở thành cơ hội để áp dụng các công nghệ khác nhau

đã được nghiên cứu, tìm hiểu trong quá trình thực hiện đồ án, với trung tâm là

ChatBot framework

Về mặt thẩm mỹ, xây dựng một giao diện giao tiếp với ChatBot thân thiện, đơn giản

và dễ nhìn, tạo thiện cảm cho người sử dụng

Về mặt logic, tạo được liên kết giữa kết quả xử lý yêu cầu người dùng của ChatBot framework và logic ứng dụng để trả về người dùng thông tin mà người dùng muốn thấy

Về mặt bảo mật, thực hiện bảo mật các API key được sử dụng trong quá trình phát triển hệ thống, tránh trường hợp hệ thống bị lạm dụng cho các mục đích khác

Kế hoạch thực hiện:

Với thời gian thực hiện từ 12/03/2021 đến 26/06/2021, nhóm chia khung thời gian này

ra thành các giai đoạn lớn với các phần việc nhỏ hơn có thể thực hiện theo thứ tự bất

kì miễn là nằm trong giới hạn cho phép của giai đoạn đó, các giai đoạn này như sau:

Giai đoạn 1: Khảo sát hiện trạng, tìm hiểu sơ bộ về ChatBot cũng như các ChatBot framework được sử dụng rộng rãi hiện nay

Giai đoạn 2: Tìm hiểu sâu hơn về các ChatBot framework, nhận biết các ưu nhược điểm giữa các framework với nhau, xác định hướng xây dựng ứng dụng minh họa và chọn ra ChatBot framework phù hợp cũng như các công nghệ liên quan để hỗ trợ xây dựng ứng dụng này

Giai đoạn 3: Thiết kế hệ thống bao gồm kiến trúc, kịch bản, đặc tả các API được dùng trong ứng dụng

Giai đoạn 4: Xây dựng giao diện cho ứng dụng minh họa, huấn luyện cho ChatBot xử

lý yêu cầu của người dùng và xây dựng server lấy dữ liệu cho việc trả lời câu hỏi của ChatBot

Giai đoạn 5: Hoàn thiện hệ thống bằng việc liên kết giao diện với ChatBot framework

và hệ thống lấy dữ liệu trả lời, đưa vào thử nghiệm, hoàn thiện báo cáo đồ án

Giai đoạn (Thời gian

Trang 6

- Tìm hiểu chung về ChatBot

- Tìm hiểu sơ bộ về các ChatBot framework đang được sử dụng rộng rãi hiện tại

Giai đoạn 2

(26/03/2021 –

09/04/2021)

- Tìm hiểu sâu hơn giữa các ChatBot framework

- So sánh các hướng tiếp cận xây dựng ChatBot

- Xác định phương án xây dựng ứng dụng minh họa

- Tìm hiểu các công nghệ liên quan để xây dựng ứng dụng minh họa

Giai đoạn 3

(09/04/2021 –

14/05/2021

- Thiết kế kiến trúc hệ thống

- Thiết kế giao diện

- Thiết kế kịch bản giao tiếp

- Thiết kế API truy vấn thông tin

- Hoàn thiện đặc tả thiết kế hệ thốngGiai đoạn 4

(14/05/2021 –

3/06/2021)

- Cài đặt giao diện

- Huấn luyện ChatBot xử lý yêu cầu

- Cài đặt hệ thống truy vấn thông tinGiai đoạn 5 (3/06/2021

– 23/06/2021) - - Hoàn thiện hệ thốngVận hành thử nghiệm

Xác nhận của CBHD

(Ký tên và ghi rõ họ tên)

PHAN TRUNG HIẾU

TP HCM, ngày 30 tháng 03 năm 2021

Sinh viên

(Ký tên và ghi rõ họ tên)

NGUYỄN NGỌC ĐĂNG

Trang 7

MỤC LỤC

1 TỔNG QUAN VỀ ĐỀ TÀI 16

1.1 Giới thiệu về đề tài 16

1.1.1 Chatbot là gì 16

1.1.2 Cái nhìn chung về nhu cầu tra cứu thông tin 17

1.1.3 Lý do lựa chọn đề tài 18

1.2 Khảo sát hiện trạng 18

1.2.1 CleverBot – Chatbot trò chuyện nổi tiếng nhất thế giới 21

1.2.2 Google – Nền tảng tra cứu thông tin lớn nhất thế giới 22

1.3 Đối tượng nghiên cứu 22

1.4 Phạm vi nghiên cứu 23

1.5 Phương pháp nghiên cứu 23

1.6 Nhiệm vụ của đề tài 23

2 CƠ SỞ LÝ THUYẾT 24

2.1 Tổng quan về ECMAScript 24

2.1.1 Khái niệm 24

2.1.2 Cấu trúc 25

2.1.3 Ưu điểm 25

2.2 Tổng quan về Node.js 26

2.2.1 Khái niệm 26

Trang 8

2.2.2 Cấu trúc 27

2.2.3 Ưu điểm 29

2.3 Tổng quan về Express.js 29

2.3.1 Khái niệm 29

2.3.2 Cấu trúc 30

2.3.3 Ưu điểm 31

2.4 Tổng quan về React 32

2.4.1 Khái niệm 32

2.4.2 Cấu trúc 32

2.4.3 Ưu điểm 33

2.5 Tổng quan về MongoDB 35

2.5.1 Khái niệm 35

2.5.2 Cấu trúc 35

2.5.3 Ưu điểm 36

3 KẾT QUẢ TÌM HIỂU 36

3.1 Kết quả tìm hiểu về Chatbot 36

3.1.1 Cách xây dựng một Chatbot 36

3.1.2 Ứng dụng của Chatbot 45

3.2 Kết quả tìm hiểu về Chatbot Framework 46

3.2.1 Khái niệm Chatbot Framework 46

3.2.2 Bảng mô tả sơ lược các Chatbot Framework thông dụng 47

3.3 Kết quả tìm hiểu về Wit.ai 54

3.3.1 Giới thiệu về Wit.ai 54

3.3.2 Ưu điểm của Wit.ai 54

Trang 9

3.3.4 Mô tả sơ lược cách sử dụng Wit.ai 65

4 THIẾT KẾ HỆ THỐNG ỨNG DỤNG MINH HỌA 76

4.1 Xác định yêu cầu 76

4.1.1 Sơ đồ ca sử dụng 76

4.1.2 Đặc tả ca sử dụng 76

4.2 Thiết kế kiến trúc hệ thống 91

4.3 Thiết kế mô hình dữ liệu 93

4.3.1 Sơ đồ lớp 93

4.3.2 Đặc tả lớp dữ liệu 93

4.4 Thiết kế luồng xử lý 105

4.4.1 Luồng xử lý chức năng đăng nhập 105

4.4.2 Luồng xử lý chức năng đăng kí 106

4.4.3 Luồng xử lý chức năng thu phí 107

4.4.4 Luồng xử lý chức năng giao tiếp với Chatbot 108

4.5 Thiết kế module truy vấn thông tin 108

4.5.1 Truy vấn thông tin thời tiết 108

4.5.2 Truy vấn thông tin tỉ giá tiền tệ 109

4.5.3 Truy vấn thông tin dịch thuật 110

4.5.4 Truy vấn giá cổ phiếu 111

4.5.5 Truy vấn thông tin dịch COVID-19 112

4.6 Thiết kế giao diện 113

4.6.1 Màn hình chính 116

4.6.2 Màn hình đăng nhập 118

4.6.3 Màn hình đăng kí 119

4.6.4 Màn hình liệt kê giá dịch vụ 120

Trang 10

4.6.5 Màn hình giao tiếp với Chatbot 121

4.6.6 Màn hình nhập thông tin thanh toán 122

4.6.7 Màn hình xem lịch sử thanh toán 123

4.6.8 Màn hình xem thông tin người dùng 124

4.6.9 Màn hình danh sách bài viết 125

5 CÀI ĐẶT HỆ THỐNG 126

5.1 Quy trình huấn luyện Chatbot 126

5.1.1 Phương thức huấn luyện Chatbot 126

5.1.2 Quá trình huấn luyện Chatbot 126

5.2 Quy trình cài đặt giao diện 127

5.2.1 Phương thức cài đặt giao diện 127

5.2.2 Quá trình cài đặt giao diện 127

5.3 Quy trình cài đặt hệ thống xử lý 128

5.3.1 Phương thức cài đặt hệ thống xử lý 128

5.3.2 Quá trình cài đặt hệ thống xử lý 129

5.4 Quy trình cài đặt cơ sở dữ liệu 129

5.4.1 Phương thức cài đặt cơ sở dữ liệu 129

5.4.2 Quá trình cài đặt cơ sở dữ liệu 130

6 KẾT QUẢ CÀI ĐẶT HỆ THỐNG 130

6.1 Giới thiệu hệ thống 130

6.2 Sơ lược tính năng hệ thống 131

6.3 Đánh giá độ hoàn thiện hệ thống 134

7 KẾT LUẬN 135

7.1 Đánh giá kết quả làm việc 135

Trang 11

7.1.2 Khó khăn 136

7.2 Kết quả đạt được 136

7.2.1 Ưu điểm 136

7.2.2 Nhược điểm 136

7.3 Hướng phát triển 137

8 PHỤ LỤC 137

8.1 Tài liệu tham khảo 137

8.2 Danh mục công nghệ được sử dụng 138

DANH MỤC HÌNH Hình 1.1 Dữ liệu Google Trend cho cụm từ "chatbot" trong vòng 5 năm trở lại đây .19 Hình 1.2 Một giao diện của Cleverbot 21

Hình 1.3 Giao diện tra cứu thông tin của Google 22

Hình 2.1 Hình mô tả cách mà Node.js phân bố công việc cho các tiểu trình trong hệ thống 28

Hình 3.1 Cấu trúc đầy đủ của một Chatbot 43

Hình 3.2 Màn hình tạo ứng dụng mới của Wit.AI 66

Hình 3.3 Màn hình Understanding, nơi khởi đầu của việc thiết kế Chatbot 66

Hình 3.4 Cách thức chọn Intent 67

Hình 3.5 Chọn Intent sau khi đã tạo mới 67

Hình 3.6 Chọn đoạn văn bản làm Entity 68

Hình 3.7 Chọn loại Entity cho đoạn văn bản 68

Hình 3.8 Màn hình chọn Trait 69

Hình 3.9 Tạo giá trị mới cho Trait vừa tạo 69

Hình 3.10 Một Utterance được cài một cách hoàn chỉnh, sẵn sàng để train 70

Trang 12

Hình 3.11 Màn hình quản lý Intent 70

Hình 3.12 Màn hình quản lý Entity 71

Hình 3.13 Màn hình quản lý Trait 71

Hình 3.14 Màn hình quản lý Utterance 72

Hình 3.15 Màn hình cài đặt cấu hình hệ thống 72

Hình 3.16 Ví dụ gửi yêu cầu đến Wit.AI bằng Postman 73

Hình 3.17 Màn hình xem thống kê lưu lượng truy cập 75

Hình 3.18 Màn hình Live Utterance 75

Hình 4.1 Sơ đồ ca sử dụng 76

Hình 4.2 Sơ đồ kiến trúc hệ thống 91

Hình 4.3 Sơ đồ lớp của hệ thống 93

Hình 4.4 Sơ đồ luồng xử lý chức năng đăng nhập 105

Hình 4.5 Sơ đồ luồng xử lý chức năng đăng ký 106

Hình 4.6 Sơ đồ luồng xử lý chức năng thu phí 108

Hình 4.7 Sơ đồ luồng xử lý chức năng giao tiếp với Chatbot 108

Hình 4.8 Sơ đồ luồng xử lý truy vấn thông tin thời tiết 109

Hình 4.9 Sơ đồ luồng xử lý truy vấn thông tin tỉ giá ngoại tệ 110

Hình 4.10 Sơ đồ luồng xử lý dịch thuật 111

Hình 4.11 Sơ đồ luồng xử lý truy vấn giá cổ phiếu 112

Hình 4.12 Sơ đồ luồng xử lý truy vấn thông tin dịch COVID-19 113

Hình 4.13 Sơ đồ màn hình 114

Hình 4.14 Giao diện màn hình chính (Chưa đăng nhập) 116

Hình 4.15 Giao diện màn hình chính (Đã đăng nhập) 117

Hình 4.16 Giao diện màn hình đăng nhập 118

Trang 13

Hình 4.18 Giao diện màn hình liệt kê giá dịch vụ 120

Hình 4.19 Giao diện màn hình giao tiếp với Chatbot 121

Hình 4.20 Giao diện màn hình nhập thông tin thanh toán 122

Hình 4.21 Giao diện màn hình xem lịch sử thanh toán 123

Hình 4.22 Giao diện màn hình xem thông tin người dùng 124

Hình 4.23 Giao diện màn hình danh sách bài viết 125

Hình 6.1 Chức năng cơ bản của Chatbot 131

Hình 6.2 Các chức năng khác của Chatbot 132

Hình 6.3 Hỏi Chatbot về tinhg dịch COVID-19 132

Hình 6.4 Chức năng đổi giọng nói thành tin nhắn 133

Hình 6.5 Chức năng tra cứu thông tin sử dụng Wikidata 133

Hình 6.6 Màn hình đăng nhập 134

DANH MỤC BẢNG Bảng 2.1 Bảng danh sách các thành phần Middleware được tích hợp vào Express.JS30 Bảng 3.1 Bảng danh sách các thành phần trong một Chatbot 43

Bảng 3.2 Bảng so sánh 10 Chatbot Framework được dùng nhiều nhất hiện tại 47

Bảng 3.3 Bảng danh sách thuộc tính trong một Entity 55

Bảng 3.4 Bảng danh sách thuộc tính trong một Intent 55

Bảng 3.5 Bảng Intent được xây dựng sẵn trong Wit.AI 56

Bảng 3.6 Bảng danh sách thuộc tính của một Entity Parameter 60

Bảng 3.7 Bảng Entity được xây dựng sẵn trong Wit.AI 60

Bảng 3.8 Bảng danh sách thuộc tính của Trait 64

Bảng 3.9 Bảng Trait được xây dựng sẵn trong Wit.AI 64

Trang 14

Bảng 4.1 Bảng mô tả thành phần chính trong hệ thống 92

Bảng 4.2 Bảng thuộc tính lớp User 94

Bảng 4.3 Bảng phương thức lớp User 94

Bảng 4.4 Bảng thuộc tính lớp Service 94

Bảng 4.5 Bảng phương thức lớp Service 95

Bảng 4.6 Bảng thuộc tính lớp Session 95

Bảng 4.7 Bảng phương thức lớp Session 95

Bảng 4.8 Bảng thuộc tính lớp Bill 96

Bảng 4.9 Bảng phương thức lớp Bill 96

Bảng 4.10 Bảng thuộc tính lớp PendingBill 96

Bảng 4.11 Bảng phương thức lớp PendingBill 97

Bảng 4.12 Bảng thuộc tính lớp ConfirmBill 97

Bảng 4.13 Bảng phương thức lớp ConfirmBill 98

Bảng 4.14 Bảng thuộc tính lớp Context 98

Bảng 4.15 Bảng phương thức lớp Context 99

Bảng 4.16 Bảng thuộc tính lớp ActiveContext 99

Bảng 4.17 Bảng phương thức lớp ActiveContext 99

Bảng 4.18 Bảng thuộc tính lớp Message 100

Bảng 4.19 Bảng phương thức lớp Message 100

Bảng 4.20 Bảng thuộc tính lớp Option 100

Bảng 4.21 Bảng phương thức lớp Option 101

Bảng 4.22 Bảng thuộc tính lớp InformationKey 101

Bảng 4.23 Bảng phương thức lớp InformationKey 101

Bảng 4.24 Bảng thuộc tính lớp Utterance 102

Trang 15

Bảng 4.26 Bảng thuộc tính lớp Intent 102

Bảng 4.27 Bảng phương thức lớp Intent 103

Bảng 4.28 Bảng thuộc tính lớp Entity 103

Bảng 4.29 Bảng phương thức lớp Entity 103

Bảng 4.30 Bảng thuộc tính lớp Trait 104

Bảng 4.31 Bảng phương thức lớp Trait 104

Bảng 4.32 Bảng danh sách màn hình trong hệ thống 114

Bảng 4.33 Bảng danh sách các thành phần trong màn hình chính 117

Bảng 4.34 Bảng danh sách thành phần trong màn hình đăng nhập 118

Bảng 4.35 Bảng danh sách thành phần trong màn hình đăng ký 119

Bảng 4.36 Bảng danh sách thành phần trong màn hình liệt kê giá dịch vụ 120

Bảng 4.37 Bảng danh sách thành phần trong màn hình giao tiếp với Chatbot 121

Bảng 4.38 Bảng danh sách thành phần trong màn hình nhập thông tin thanh toán .122

Bảng 4.39 Bảng danh sách thành phần trong màn hình lịch sử thanh toán 123

Bảng 4.40 Bảng danh sách thành phần trong màn hình xem thông tin người dùng 124

Bảng 4.41 Bảng danh sách thành phần trong màn hình danh sách bài viết 125

Bảng 5.1 Bảng tác vụ huấn luyện Chatbot 126

Bảng 5.2 Bảng tác vụ cài đặt giao diện 127

Bảng 5.3 Bảng tác vụ cài đặt hệ thống xử lý 129

Bảng 5.4 Bảng tác vụ cài đặt cơ sở dữ liệu 130

Bảng 6.1 Bảng đánh giá độ hoàn thiện hệ thống 134

Bảng 8.1 Bảng danh sách công nghệ được sử dụng trong đồ án 138

Trang 16

Đa số các chatbot được hiện thực hóa dưới dạng một cửa số nhắn tin hoặc một trợ lý

ảo truy cập được thông qua mạng máy tính Chúng có thể được phân loại dựa vào lĩnh vực sử dụng như sau:

quan đến công việc, …)

Trang 17

Nhìn chung thì Chatbot vẫn còn là một loại hình ứng dụng còn rất nhiều tiềm năng để khai phá mặc dù không yêu cầu cao về trình độ để có thể khởi đầu

1.1.2 Cái nhìn chung về nhu cầu tra cứu thông tin

Chúng ta không thể phủ nhận rằng một trong những lợi thế của mạng Internet là khả năng tiếp cận thông tin nhanh và chính xác Trong các nguồn lực phát triển xã hội, thông tin được coi là nguồn tài nguyên quan trọng nhất Thông tin là tri thức, là sức mạnh và là bí quyết góp phần định hướng đúng, giúp lãnh đạo quản lý ra các quyết định chính xác hơn Mọi hoạt động kinh tế - xã hội đều liên quan tới thông tin

Nhu cầu tra cứu thông tin là đòi hỏi khách quan của con người (cá nhân, nhóm, xã hội) đối với việc tiếp nhận và sử dụng thông tin để duy trì hoạt động sống Khi đòi hỏi

về thông tin trở lên cấp thiết thì nhu cầu tra cứu thông tin xuất hiện Thông tin trở thành nhu cầu của con người, là một dạng của nhu cầu tinh thần, nhu cầu bậc cao của con người Nhu cầu nảy sinh trong quá trinh thực hiện các loại hoạt động khác của conngười, thông tin về đối tượng hoạt động, về môi trường và các phương tiện hoạt động

là yếu tố quan trọng tạo nên hiệu quả hoạt động của con người Bất kỳ hoạt động nào muốn có kết quả tốt thì cũng cần phải có thông tin Mọi người càng tham gia nhiều hoạt động khác nhau thì nhu cầu tin của con người càng phong phú hơn, tham gia hoạtđộng phức tạp thì nhu cầu tin càng trở lên sâu sắc hơn

Ta lấy ví dụ về việc tra cứu thông tin như sau: Buổi tối một ngày, A đang nghĩ về việcchạy bộ buổi sáng hôm sau A sẽ có nhu cầu tra cứu thời tiết của ngày hôm sau và A biết được rằng thời tiết ngày mai khả năng cao sẽ mưa A đổi kế hoạch của mình cho sáng hôm sau sang việc uống cà phê và đọc tin tức Sáng hôm sau, A đang đọc tin tức trên một trang mạng Có một thông tin quan trọng hiện lên: Theo chỉ đạo của thủ tướng chính phủ, người dân được khuyến khích ở nhà để phòng chống đại dịch C Vậy

là A nghĩ về việc thay vì ra ngoài đường để chạy bộ, có thể mua một máy chạy bộ không phải là một ý tưởng tồi Vì thế A lại tìm kiếm thông tin về một máy chạy bộ giávừa phải và có thể được chuyển đến trong thời gian ngắn Như ta có thể thấy, chỉ với một công việc ban đầu đó là chạy bộ, A đã thực hiện tra cứu từ thông tin thời tiết, đến thông tin thời sự, rồi lại đến thông tin sản phẩm máy chạy bộ Những thông tin này có thể không thật sự cần thiết cho A trong việc có chạy bộ hay không Nhưng ở đây ta

Trang 18

cũng có thể thấy, với việc sử dụng mạng Internet mà việc tiếp cận thông tin cũng trở nên cực kì dễ dàng và nó giúp ích cho A trong việc lựa chọn cách thức chạy bộ cho bản thân mà không gây ra bất tiện cho bản thân hay những người xung quanh Bởi vậynhu cầu tra cứu thông tin, đặc biệt là thông qua mạng Internet là một nhu cầu không thể thiếu trong quá trình làm việc cũng như giải trí của con người

1.1.3 Lý do lựa chọn đề tài

Như đã được đề cập trong các phần trước, nhu cầu tra cứu thông tin của con người đang ngày một gia tăng Cũng như nền tảng công nghệ Chatbot đang dần được hoàn thiện, dẫn đến sự ra đời của các Chatbot Framework (sẽ được đề cập kĩ hơn trong phần sau) Nhóm đã đi tới việc tìm hiểu về các Chatbot Framework và xây dựng ứng dụng minh họa với mục tiêu là sử dụng một Chatbot Framework để xây dựng một hệ thống trả lời tự động, cung cấp thông tin cho người sử dụng Lý do cụ thể bao gồm:

cứu thông tin

Hiện nay, Chatbot là một ứng dụng được sử dụng rộng rãi dưới đủ quy mô cũng như

độ phức tạp Dưới đây là một số sô liệu cụ thể để khẳng định điều này

Trang 19

Hình 1.1 Dữ liệu Google Trend cho cụm từ "chatbot" trong vòng 5 năm trở lại đây

Dữ liệu Google Trend cho cụm từ “Chat bot” có xu hướng tăng dần theo từng năm và hiện tại đang ở mức khá ổn định

việc kinh doanh của họ (theo như Accenture)

năng của tổ chức trong việc xử lý yêu cầu của khách hàng bằng mạng lưới liên kết với những con bot khác Chúng có thể đem lại sự chăm chút đến từng cá nhân đối với từng đối tượng tiếp xúc với trang web (theo như Accenture)

Về mặt trải nghiệm, ta có những số liệu sau

(theo như Chatbots Journal)

nghiệm không tốt (theo như OpenText)

(theo như SuperOffice)

hàng của họ sử dụng Chatbot (theo như Lauren Foye of Juniper Research, via Chatbots Magazine)

Vể ảnh hưởng đến nhân viên chăm sóc khách hàng truyền thống, ta có những số liệu sau

Trang 20

 64% thời gian AI Chatbot giao tiếp với khách hàng sẽ dùng để giải quyết các vấn đề phức tạp (theo như Salesforce 2)

nhắc đến nhất của Chatbot (about one in 10)

Về ý thích của người dùng, ta có những số liệu sau

khách hàng (theo như Salesforce)

tiếp xúc với một nhãn hàng (theo như Drift)

trong 5 năm tới (theo như Salesforce)

Chatbot (theo như Forbes)

điện từ đã tăng 50% kể từ năm 2012 (theo như Forrester)

giao tiếp với một thực thể kinh doanh thông qua Facebook Messenger bởi khả năng mà họ được hồi âm là cao hơn so với những phương thức khác (theo như Facebook Business)

Về tiềm năng phát triển của Chatbot, ta có những số liệu sau:

lên 9.4 tỷ USD vào năm 2024 với với tỉ lệ tăng trưởng hàng năm là 29.7% (theo như Business Insider)

hiện một cách chủ động bởi các hệ thống được điều hành bởi AI và các hệ thống tích hợp thông minh khác (theo như Gartner)

Như vậy ta có thể thấy rằng Chatbot là một trong những nhân tố nổi bật trong quá trình phát triển của các doanh nghiệp và tiềm năng của nó trong tương lai là rất lớn

Trang 21

Để khảo sát rõ hơn tình trạng thực tiễn của Chatbot cũng như nhu cầu tra cứu thông tin, ta khảo sát hai đối tượng sau

1.2.1 CleverBot – Chatbot trò chuyện nổi tiếng nhất thế giới

Hình 1.2 Một giao diện của Cleverbot

Cleverbot là một phần mềm chatbot sử dụng thuật toán trí tuệ nhân tạo để thiết lập một cuộc trò chuyện với con người Nó được tạo ra bởi nhà khoa học nghiên cứu về

AI tên là Rollo Carpenter Người tiền nhiệm của nó là Jabberwacky Dự án được bắt đầu vào năm 1996 và chính thức được đưa lên mạng vào năm 1997 Trong khoảng thập kỉ đầu tiên trong sự tồn tại của nó, Cleverbot học cách giao tiếp thông qua việc lắng nghe hàng nghìn cuộc trò chuyện giữa ông Carpenter với những người đồng sự của ông Sau khi phiên bản web của Cleverbot được ra mắt, con số này đến nay đã lên tới 150 triệu

Một số thành tích nổi bật của Cleverbot bao gồm: Trong bài thử Turing được tổ chức chính thức tại ngày hội Techniche 2011 tại Học viện công nghệ Guwahati Ấn Độ Cleverbot đạt được điểm tỉ lệ 59.3% số người tham gia đồng ý đây là con người, đạt được với 1334 phiếu bầu, so với tỉ lệ 63.3% mà người thật Số điểm trên 50.5% được xét là đạt bài kiểm tra này

Trang 22

Thay vì sử dụng một kịch bản hoặc các quy định cho trước, Cleverbot sử dụng logic

mở để tìm kiếm một cách phản hồi phù hợp từ dữ liệu chính là các cuộc trò chuyện trước đó của Cleverbot với người dùng

1.2.2 Google – Nền tảng tra cứu thông tin lớn nhất thế giới

Hình 1.3 Giao diện tra cứu thông tin của Google

Google là nền tảng công cụ tìm kiếm lớn nhất thế giới hiện tại, với 92% lưu lượng yêucầu tìm kiếm diễn ra tại đây và cũng biến Google trở thành trang web được truy cập nhiều nhất thế giới Tuy nhiên cái ta quan tâm ở đây là Google Knowledge Graph Đây là dịch vụ giúp Google thu thập thông tin từ nhiều nguồn khác nhau và cung cấp thông tin đó cho người dùng ngay tại trang hiện kết quả tìm kiếm Thông tin đó có thể

là về một cá nhân, tập thể, thời tiết, chứng khoán, v.v Và nó cũng trở thành nền tảng

để các trợ lý ảo như Google Home có thể trả lời câu hỏi của người dùng

1.3 Đối tượng nghiên cứu

Đồ án này hướng đến nghiên cứu các đối tượng sau

o MongoDB

Trang 23

o Người có nhu cầu tra cứu thông tin

o Người có nhu cầu trò chuyện với một phong cách giống người

1.4 Phạm vi nghiên cứu

Ứng dụng YourChatStarter được viết chủ yếu bằng ngôn ngữ lập trình Javascript (Chuẩn ECMAScript 6) Ngoài ra nhóm phát triển sẽ tiến hành xây dựng hệ thống frontend để tạo môi trường giao tiếp với người dùng sử dụng React, phần chatbot cũngmột số tính năng khác sẽ được phát triển chạy trên Node.js và giao tiếp với frontend

sử dụng Express.js, Dữ liệu được quản lý bằng MongoDB Hệ thống được cài đặt bằng Visual Studio Code

1.5 Phương pháp nghiên cứu

Nhóm đã sử dụng các phương pháp nghiên cứu:

1.6 Nhiệm vụ của đề tài

Đề tài: “Tìm hiểu ChatBot framework và xây dựng ứng dụng minh họa” sẽ bao gồm 2 nhiệm vụ chính

o Tìm hiểu chung về Chatbot và cách thức giải quyết các vấn đề trong việc thiết kế một Chatbot

Trang 24

o Tìm hiểu về các Chatbot Framework phổ biến, phân tích được điểm mạnh cũng như điểm yếu của chúng, từ đó chon ra Framework phù hợp

để nghiên cứu kĩ hơn

o Tìm hiểu sâu hơn về một Chatbot Framework, cụ thể về các thành phấn chính cấu tạo nên Framework, cách cài đặt, sử dụng

o Trình bày kết quả tìm hiểu trong báo cáo này

o Đăng kí: Đăng kí tài khoản để sử dụng trong hệ thống

o Đăng nhập: Đăng nhập vào tài khoản để sử dụng hệ thống

o Xem thông tin người dùng

o Mua gói cao cấp của hệ thống (Bao gồm tính năng thanh toán online)

o Quản lý đơn hàng

o Màn hình giao tiếp với Chatbot (mô phỏng một cửa sổ chat)

năng

o Chào hỏi

o Cung cấp thông tin về thời tiết

o Cung cấp thông tin về tỉ giá

o Thực hiện phép toán

o Dịch thuật theo yêu cầu

o Thu thập thông tin để cá nhân hóa phản hồi

o Phản hồi để xây dựng một chuỗi hội thoại

o Phản hồi các trường hợp đầu vào không như dự định

Trang 25

Vào cuối năm 1995 trên thế giới xuất hiện một ngôn ngữ kịch bản được phát triển bởi Brendan Eich (nhân viên của Netscapce) có tên là Mocha và chỉ ngay sau đó một thời gian nó lại được đổi tên thành LiveScript và cuối cùng là Javascript (tên hiện tại) Và tiếp đó vào tháng 3 năm 1996 trình duyệt Netscape Navigator 2.0 ra đời và đã hỗ trợ Javascript Sau đó Microsoft cũng cho ra đời một ngôn ngữ tương tự có tên là JScript

để cạnh tranh với Netscape và nó đã bắt đầu được hỗ trợ từ internet Explorer 3.0 (8 - 1996)

Sau đó Netscape đã chuyển Javascript đến ECMA International để làm công tác chuẩnhóa và viết đặc tả Cái tên ECMAScript đã được hình thành từ đây

Về cơ bản thì ECMAScript chính là chuẩn của ngôn ngữ Javascript ta sẽ sử dụng trong dự án này

2.1.2 Cấu trúc

ECMAScript là một ngôn ngữ lập trình hướng đối tượng để thực hiện các tác vụ tính toán cũng như thao tác với các đối tượng điện toán trong một môi trường vật chủ ECMAScript được định nghĩa ở đây không có ý định trở nên tự chủ về mặt thực hiện tác vụ tính toán Và đúng là như vậy, không có một yếu tố nào trong đặc tả này liên quan đến việc xử lý dữ liệu đầu ra hoặc đầu vào của tác vụ tính toán Thay vào đó, nó được kì vọng rằng môi trường điện toán chứa chương trình ECMAScript sẽ không chỉ cung cấp đối tượng tính toán và các cơ sở hạ tầng được miêu tả trong đặc tả của ECMAScript (Ví dụ các kiểu dữ liệu, chuẩn đầu ra, đầu vào, v.v.) mà còn cung cấp một số đối tượng điện toán đặc trưng của môi trường vật chủ đó, với mô tả và hành vi vượt quá định nghĩa của ngôn ngữ này ngoại trừ mục đích thể hiện rằng chúng có thể cung cấp một số tính chất nhất định có thể được truy cập hoặc một số hàm có thể đượcgọi bởi chương trình viết bằng ECMAScript

2.1.3 Ưu điểm

ECMAScript là bố quy chuẩn ngôn ngữ scripting trên trình duyệt web và Javascript chính là hiện thân của ECMAScript Lợi ích của việc dùng ECMAScript tương đương với sử dụng Javascript, bao gồm:

Trang 26

 Xử lý logic bên phía máy khách đem lại trải nghiệm người dùng nhanh hơn Bắt nguồn từ việc bớt đi nhu cầu phải gọi từ mày chủ Ngay cả với sự tồn tại cảu máy chủ thì với bản chất của Javascript là bất động bộ thì việc liên lạc với máy chủ sẽ diễn ra đằng sau trình duyệt và không làm ảnh hưởng tới việc ngườidùng tương tác với trang web

dùng lên các trang web Giờ đây nó đang làm điều đó với nhiều loại ứng dụng hơn cả Ngày nay những framework như Vue.js, Angular hay React đã đem trảinghiệm người dùng lên tầm cao mới

càng ngày nhà phát triển phải thiết kế ứng dụng của mình phù hợp với nhiều loại thiết bị với nhiều kích thước khác nhau Kết hợp HTML5, CSS3 cũng Javascript cho phép nhà phát triển đạt được điều đó chỉ với một tập mã nguồn

của Javascript dễ hiểu vầ linh hoạt cho người mới bắt đầu Đơn giản hóa quy trình phát triển các phần mềm phức tạp hơn bằng cách cho phép nhà phát triển đơn giản hóa tổ chức mã nguồn ứng dụng Nhiều framework cũng như thư việncũng được sinh ra để hỗ trợ lập trình viên

sàng giúp đỡ người mới bắt đầu với những khó khăn học có thể gặp phải

2.2 Tổng quan về Node.js

2.2.1 Khái niệm

Nodejs là một nền tảng (Platform) phát triển độc lập được xây dựng ở trên Javascript Runtime của Chrome (V8 Engine) mà chúng ta có thể xây dựng được các ứng dụng mạng một cách nhanh chóng và dễ dàng mở rộng

Node.js được xây dựng và phát triển từ năm 2009, bảo trợ bởi công ty Joyent, trụ sở tại California, Hoa Kỳ

Phần Core bên dưới của Nodejs được viết hầu hết bằng C++ nên cho tốc độ xử lý và hiệu năng khá cao

Trang 27

Nodejs tạo ra được các ứng dụng có tốc độ xử lý nhanh, realtime thời gian thực.

Nodejs áp dụng cho các sản phẩm có lượng truy cập lớn, cần mở rộng nhanh, cần đổi mới công nghệ, hoặc tạo ra các dự án Startup nhanh nhất có thể

2.2.2 Cấu trúc

Có nhiều hiểu nhầm cho rằng node.js chạy ứng dụng của nó chỉ trên một luồng Thực

tế không hề như vậy và nó cũng giúp cho ta thấy được điểm mạnh của Node.js trước những framework khác

Như ta đã biết, Node.js về cơ bản là trình chạy Javascript được xây dựng trên engine V8 của chrome Đồng nghĩa với việc, Node.js dựa trên kiến trúc đơn luồng của

Javascript Vì vậy, mỗi khi có một yêu cầu từ máy khách, nó được xử lý bởi một luồn chính Vòng lặp sự kiện chính là thành phần chính giúp cho Node.js có thể chạy các tác vụ I/O mà thường gây ra trạng thái block lên ứng dụng (Ví dụ như đọc file, lấy dữ liệu từ server, …) theo một cách mà không gây ra trạng thái block Nó liên tục theo dõi trạng thái của các tác vụ bất đồng bộ (Ví dụ như kiểm tra lời gọi hàm callback) và

di chuyển chúng vào hàng đợi thực thu khi mà chúng đã hoàn thành Nó thực hiện việc này trên luồn ứng dụng chính mà ta đã đề cập tới

Một điều đáng chú ý ở đây đó là dù chỉ có một luồng ứng dụng chính, còn tồn tại nhiều luồng ứng dụng phụ trợ khác tại tầng lõi của hệ thống giúp cho Node.js có thể tối ưu hóa các hoạt động liên quan đến đọc ghi tại ổ đĩa hoặc các hoạt động bất đồng

bộ qua mạng máy tính Nhóm các luồng này thường được gộp chung lại gọi là worker pool

Trang 28

Hình 2.4 Hình mô tả cách mà Node.js phân bố công việc cho các tiểu trình trong hệ thống

Vòng lặp sự kiện có thể đảm bảo cho các tác vụ xử lý cơ bản, nhưng đối với các tác

vụ I/O bất đồng bộ liên quan đến các module như fs (Xử lý đọc ghi tệp tin) hoặc crypto (Mã hóa, nặng về CPU), nó có thể san sẻ gánh nặng sang worker pool tại tầng nhân của hệ thống Worker pool được cài đặt bằng thư viện lõi libuv và có khả năng khởi tạo và quản lý nhiều luồng ứng dụng cùng một lúc nếu cần thiết Những luồn ứngdụng này có thể chạy động lập đối với những tác vụ được giao riêng cho chúng một cách đồng bộ và trả phản hồi về vòng lặp sự kiện khi đã sẵn sàng Trong khi những luồn ứng dụng này làm việc với những tác vụ được giao, vòng lặp sự kiện có thể chạy như bình thường, đồng thời đáp ứng các yêu cầu khác từ máy khách Khi mà luồng ứng dụng khác đã hoàn thành công việc, chúng có thể trả kết quả thực hiện về vòng lặp sự kiện, nó sẽ được đặt lại về hàng đợi xử lý để được thực thi hoặc trả về cho máy khách

Ý niệm đằng sau kiến trúc cho quy trình xử lý này có thể được trỏ về sự thật rằng dướimột lượng tải thông thường của một trang web, một luồng chính có thể thực thi cũng như mở rộng tốt hơn nhiều so với kiến trúc “một yêu cầu một luồng” thông thường Như là một hệ quả, Node.js trở thành lựa chọn thường xuyên của nhiều người vì lợi thế của nó về mặt tốc độ cũng như khả năng mở rộng Một điểm khó khăn ở đây đó là việc hiệu suất có thể bị ảnh hưởng bởi độ phức tạp tức thời, các tác vụ nặng về mặt bộ nhớ như nhân ma trận cho xử lý hình ảnh, khoa học dữ liệu hay ứng dụng máy học sẽ dẫn đến việc luồng ứng dụng chính bị chặn, làm cho máy chủ trở nên chậm chạp,

Trang 29

worker mà nhà phát triển có thể tận dụng để tạo ra ứng dụng Node.js đa luồng một cách hiệu quả

2.2.3 Ưu điểm

Điểm mạnh đáng chú ý của Node.js có thể được biểu diễn thông qua danh sách dưới đây

Không đồng bộ: Tất cả các API của NodeJS đều không đồng bộ

(none-blocking), nó chủ yếu dựa trên nền của NodeJS Server và chờ đợi Server trả dữliệu về Việc di chuyển máy chủ đến các API tiếp theo sau khi gọi và cơ chế thông báo các sự kiện của Node.js giúp máy chủ để có được một phản ứng từ các cuộc gọi API trước (Realtime)

Chạy rất nhanh: NodeJ được xây dựng dựa vào nền tảng V8 Javascript

Engine nên việc thực thi chương trình rất nhanh

Đơn luồng nhưng khả năng mở rộng cao: Node.js sử dụng một mô hình

luồng duy nhất với sự kiện lặp cơ chế tổ chức sự kiện giúp các máy chủ để đápứng một cách không ngăn chặn và làm cho máy chủ cao khả năng mở rộng nhưtrái ngược với các máy chủ truyền thống mà tạo đề hạn chế để xử lý yêu cầu Node.js sử dụng một chương trình đơn luồng và các chương trình tương tự có thể cung cấp dịch vụ cho một số lượng lớn hơn nhiều so với yêu cầu máy chủ truyền thống như Apache HTTP Server

Không đệm: NodeJS không đệm bất kì một dữ liệu nào và các ứng dụng này

chủ yếu là đầu ra dữ liệu

Có giấy phép: NodeJS đã được cấp giấy phép bởi MIT License.

2.3 Tổng quan về Express.js

2.3.1 Khái niệm

Expressjs là một framework được xây dựng trên nền tảng của Nodejs Nó cung cấp các tính năng mạnh mẽ để phát triển web hoặc mobile Expressjs hỗ trợ các method HTTP và midleware tạo ra API vô cùng mạnh mẽ và dễ sử dụng

Một số chức năng chính của Express.js bao gồm:

Trang 30

 Define router cho phép sử dụng với các hành động khác nhau dựa trên phương thức HTTP và URL.

Bảng 2.1 Bảng danh sách các thành phần Middleware được tích hợp vào Express.JS

cũng như điền thông tin cookie vào yêu cầu HTTP

express.cookieParser

nguồn (CORS) với cài đặt đa dạng

NA

triển

express.errorHandler

Trang 31

serve-static Cung cấp file tĩnh express.static

để render trang web

Components của công cụ này được phát triển bởi Facebook Nó được ra mắt như một công cụ JavaScript mã nguồn mở vào năm 2013 Hiện tại, nó đã đi trước các đối thủ chính như Angular và Bootstrap, hai thư viện JavaScript bán chạy nhất thời bấy giờ

2.4.2 Cấu trúc

Nguyên tắc thiết kế của React có thể được thể hiện thông qua các tính chất sau đây

phần Các thành phần viết bởi những con người khác nhau nên làm việc nhịp

Trang 32

nhàng với nhau Điều quan trọng là nhà phát triển có thể thêm chức năng vào một thành phần bất kì mà không tạo nên hiệu ứng sóng nước lên toàn bộ tập mãnguồn

thực hiện nếu đội ngũ phát triển react nhận thất nhiều thành phần đang cài đặt một chức năng cụ thể một cách khó tương thích và thiếu hiệu quả Và họ sẵn sàng làm việc đó một cách triệt để, đó là bởi vì họ tin rằng nâng mức độ trừu tượng hóa có thể đem lại lợi ích thiết thực lên toàn bộ hệ sinh thái Sự chuẩn hóa State, phương thức lifecycle cũng như sự kiện đa trình duyệt là những ví

dụ rõ ràng hơn cả

phẩm tại Facebook Và trong khi React chịu ảnh hưởng của một số hướng tiếp cận còn chưa thực sự phổ biến như lập trình hướng hàm, giữ cho framework dễtiếp cận đến một tập hợp rộng lớn các nhà phát triển ở những trình độ và kĩ năng khác nhau chính là mục tiêu rõ ràng của dự án này

tốt Nó sẽ sớm trở nên cồng kềnh và chậm chạp Thay vào đó, sự ổn ddingj được thể hiện trong việc “Chức năng này được sử dụng rộng rãi trong môi trường thực tế, và khi có thứ gì đó thay đổi, phải có một con đường rõ ràng (tự động nữa thì càng tốt) để thích ứng với thay đổi đó”

cho phép chuyển đổi dần dần được đánh giá cao Ngay cả Facebook vẫn còn tồn tại một lượng lớn mã nguồn không phải là React Điều quan trọng là bất kì đội ngũ thiết kế sản phẩm nào đều có thể bắt đầu sử dụng React cho một chức năng nhỏ thay vì việc viết lại toàn bộ tập mã nguồn đánh cược vào React

nổi tiếng đi theo hướng “đẩy” dữ liệu khi mà tính toán được thực hiện ngay khi

dữ liệu mới được cập nhật Ngược lại, React sử dụng hướng tiếp cận “kéo” dữ liệu và việc tính toán được trì hoãn đến khi cần thiết React phải là một thư viện

xử lý dữ liệu Nó là một thư viện để xây dựng giao diện người dùng Điều đó

Trang 33

cho phép react đứng vào một vị trí mà nó có thể biết được việc tính toán nào là cần thiết và liên quan vào lúc này

điều quan trọng

có được vụn bánh mì để theo dấu sai sót trong mã nguồn Đối với React, props,state là những mẩu vụn bánh mì đó

cung cấp một số tùy chính toàn bụ ở tầng build, ví dụ như việc tách biệt cấu hình môi trường phát triển và môi trường thực

2.4.3 Ưu điểm

Các ưu điểm cảu React có thể được kể đến như sau:

hơn React cho phép bạn viết component một cách sạch sẽ và có tính module hóa cao, phân rã dự án thành các thành phần riêng biệt Cho phép sử dụng lại

mã nguồn, rất tốt trong việc tăng năng suất làm việc của nhà phát triển

dễ bảo trì và cập nhật do bản chất module hóa của nó Sản phẩm làm ra từ React cực kì linh hoạt và có thể được mở rộng một cách dễ dàng Điều này có thể dễ dàng tiết kiệm thời gian cũng như tiền bạc trong dài hạn

ban đầu, các chức năng chính của thư viện, như DOM ảo hoặc render phía máy chủ, cho phép bạn tạo ra ứng dụng quy mô lớn với hiệu năng rất cao

việc render tại backend, dự án dùng React được tối ưu hóa tối ưu cho các công

cụ tìm kiếm Hơn nữa, với tốc độ cao và hiệu năng ổn định đã được nêu ở phía trên, đóng góp vào việc SEO, và cũng cung cấp một trải nghiệm tốt hơn cho người dùng

miễn phí và rộng cửa cho tất cả mọi người Hơn nữa, nó có một hệ sinh thái

Trang 34

giàu có, bao gồm những công cụ phải có như Flux hay Redux cũng như

Node.js tại backend với một số lượng lớn các thư viện nguồn mở phục vụ mục đích khác nhau

được hỗ trợ và bảo trì bởi một công ty với nhiều hơn 1000 người đóng góp độc lập trên toàn cầu Nhờ vào cộng đồng đầy nhiệt huyết này cũng như nền tảng chắc chắn của một tập đoàn công nghệ lớn, React sẽ được đảm bảo là đáng tin cậy và bắt kịp với công nghệ mới

triển ứng dụng di động, dựa trên React, Vì vậy, việc nhà phát triển quen với React hoàn toàn có thể sử dụng React Native để xây dựng trải nghiệm người dùng trên di động một cách nhanh chóng và thân thiện Hơn nữa, bạn có thể dụng một phần ứng dụng react của bạn trong ứng dụng React Native (chủ yếu trong hần logic nghiệp vụ) Điều này giúp cải thiện tốc độ phát triển

Với cơ sở dữ liệu quan hệ chúng ta có khái niệm bảng, các cơ sở dữ liệu quan hệ (như MySQL hay SQL Server ) sử dụng các bảng để lưu dữ liệu thì với MongoDB chúng

ta sẽ dùng khái niệm là collection thay vì bảng

So với hệ quản trị cơ sở dữ liệu quan hệ thì trong MongoDB collection ứng với table, còn document sẽ ứng với row , MongoDB sẽ dùng các document thay cho row trong

hệ quản trị cơ sở dữ liệu quan hệ

Các collection trong MongoDB được cấu trúc rất linh hoạt, cho phép các dữ liệu lưu trữ không cần tuân theo một cấu trúc nhất định

Trang 35

Thông tin liên quan được lưu trữ cùng nhau để truy cập truy vấn nhanh thông qua ngôn ngữ truy vấn MongoDB

2.5.2 Cấu trúc

MongoDB được thiết kế để đáp ứng những nhu cầu của phần mềm hiện đại với một nền tảng công nghệ cho phép bạn sử dụng những thành phần sau:

việc với dữ liệu

ngoan

phép bạn chuẩn bị ứng dụng của mình cho tương lai cũng như hạn chế việc bị

bó buộc với phía cung cấp dịch vụ

Với những khả năng này, bạn có thể xây dựng một nền tảng điều hành dữ liệu thông minh, được bảo trợ bởi MongoDB

2.5.3 Ưu điểm

Các ưu điểm của MongoDB được liệt kê dưới đây:

hệ thống

Trang 36

 Ngôn ngữ truy vấn gần như mạnh bằng SQL

thì MongoDB được xây dựng cho đám mây

Ví dụ cơ bản nhất có thể được mô tả như sau:

Người dùng: Bạn khỏe không?

Chatbot: Tôi khỏe

Ở đây đầu vào của người dùng là “Bạn khỏe không?” và phản hồi của Chatbot là “Tôi khỏe” Ta có thể lập trình cho hệ thống xử lý đầu vào của Chatbot so khớp dữ liệu đầuvào với chuỗi “Bạn khỏe không?” và nếu kết quả so khớp là đúng, trả về xâu ký tự

“Tôi khỏe” Rõ ràng cách làm này bộc lộ nhiều vấn đề và ta sẽ đi lần lượt qua những vấn đề đó cũng như cách giải quyết chúng

Trước hết lấy ví dụ sau

Người dùng: Bạn có khỏe không?

Ở đây rõ ràng người dùng có ý định hỏi giống như câu “Bạn khỏe không?” Tuy nhiên Chatbot sẽ không thể nhận ra được ý nghĩa của câu này nếu nó tiếp tục thực hiện so khớp với xâu “Bạn khỏe không?” (Kết quả so khớp sẽ là sai) Hướng giải quyết vấn đềnày có thể bao gồm việc chỉ sử dụng từ khóa nhất định (Ví dụ như cụm từ “khỏe không”) và so khớp nó với bất kì chuỗi con nào trong câu hoặc sử dụng các thuật toán tìm chuỗi mờ (Fuzzy String Search) bằng cách chia các từ trong câu ra một chuỗi các

từ, chia các câu từ khóa ra thành một chuỗi các từ khác Sau đó tính toán khoảng cách Levenshtein để xác định khoảng cách nhỏ nhất hoặc khoảng cách nằm trong một giới

Trang 37

hạn nhất định để thỏa mãn điều kiện so khớp với từ khóa Trong thực tế ta có thể kết hợp cả 2 phương pháp này để tăng tỉ lệ Chatbot có thể xác định được từ khóa

Tiếp theo, ta xét ví dụ sau

Người dùng: Bạn khỏe không?

Chatbot: Tôi khỏe

Người dùng: Bạn khỏe không?

Chatbot: Tôi khỏe

Người dùng: Bạn khỏe không?

Chatbot: Tôi khỏe

Ta dễ dàng thấy được vấn đề ở đây đó là: với đầu vào giống nhau, Chatbot sẽ trả về kết quả giống nhau Điều này làm mất đi tính tự nhiên của một Chatbot và người dùng

sẽ phàn nàn về việc phản hồi của nó là quá thô cứng (Canned response) Để giải quyếtvấn đề này Ta có thể tạo ra một tập hợp các phản hồi mà Chatbot có thể lựa chọn nếu

từ khóa tương ứng được so khớp Để tránh tình trạng lặp lại, ta có thể lưu phản hồi trước đó của Chatbot đối với từ khóa này và tránh phản hồi đó nếu gặp lại từ khóa đó lần tới

Tiếp đến, ta xét trường hợp Chatbot được thiết kế như sau

Từ khóa: “Tên bạn là gì?”

Phản hồi: “Tên tôi là Chatbot A”

Từ khóa: “Bạn là gì?”

Phản hồi: “Tôi là một Chatbot”

Xét đoạn hội thoại sau

Người dùng: Tên của bạn là gì?

Chatbot: Tên tôi là Chatbot A

Ở ví dụ trên, đầu vào của người dùng sẽ trùng với cả 2 từ khóa “Tên bạn là gì?” và

“Bạn là gì?” Phản hồi nào mà Chatbot nên lựa chọn? Rõ ràng phải là phản hồi của từ khóa “Tên bạn là gì?” Vì vậy ta cần phải có cách để xếp hạng các từ khóa sao cho Chatbot có thể chọn ra phản hồi phù hợp nhất Cách đơn giản nhất ở đây sẽ là lựa chọn từ khóa có độ dài lớn nhất

Trang 38

Tiếp tục với ví dụ dưới đây

Người dùng: Bạn không hề có thật!

Chatbot: Vậy bạn nghĩ tôi không hề có thật?

Người dùng: Bạn chẳng biết cái gì cả

Chatbot: Vậy bạn nghĩ tôi chẳng biết cái gì cả?

Ta thấy người dùng đưa ra 2 đầu vào rất khác nhau về mặt mục đích và khá chắc chắn rằng Chatbot của chúng ta không thể lường trước được những đầu vào này Tuy nhiên với một vài kĩ thuật chuyển đổi ngôi từ và phản hồi theo khuôn mẫu, ta có thể giúp cho Chatbot đối phó được với những câu này một cách thuyết phục hơn Một ví dụ về cách xử lý có thể như sau

tương ứng với một chuỗi bất kì (wildcard), ta có thể đưa nguyên câu nói của người dùng vào chuỗi wildcard này

Ví dụ như nếu ta tìm thấy từ “Bạn”, “mày”, “anh”, “chị”, …(Đại từ nhân xưng ngôi thứ hai) biến đổi các từ đó thành các đại từ nhân xưng ngôi thứ nhất (“Tôi”, “mình”) hoặc ngược lại, nếu tìm thấy đại từ nhân xưng ngôi thứ nhất, biến đổi nó thành đại từ nhân xưng ngôi thứ hai

Cần phải lưu ý rằng ta không nên lạm dụng cách làm này bởi vì những phản hồi như thế này thường ít khi tạo ra được giá trị trong cuộc trò chuyện giữa người và Chatbot

Trang 39

Nếu sử dụng nhiều người dùng sẽ dễ dàng nhận ra khuôn mẫu của Chatbot và ta lại rơivào trường hợp trả lời rập khuôn, thô cứng

Ta lại tiếp tục với ví dụ sau đây

Từ khóa: “Bạn là ai”

Phản hồi: “Tôi là Chatbot A”

Xét đoạn hội thoại sau

Người dùng: Bạn là ai?

Chatbot: Tôi là Chatbot A

Người dùng: Bạn là ai mà dám lên mặt với tôi?

Chatbot: Tôi là Chatbot A

Người dùng: Ca sĩ yêu thích của bạn là ai?

Chatbot: Tôi là Chatbot A

Người dùng: Tôi biết bạn là ai Rất vui được gặp bạn

Chatbot: Tôi là Chatbot A

Vấn đề xảy ra ở đây chính là việc Chatbot không xác định được vị trí của từ khóa có thể làm ảnh hưởng đến ý nghĩa của đầu vào Cách giải quyết ở đây sẽ là thêm vào kí hiệu để Chatbot biết được từ khóa đó nằm ở đâu trong câu thì sẽ dùng phản hồi đó Với chuỗi ví dụ trên, ta có thể kí hiệu rằng nếu chuỗi “Bạn là ai” được tìm thấy ở đầu câu thì phản hồi “Tôi là Chatbot A” sẽ là phù hợp

Tiếp đến ta xét đoạn hội thoại sau

Người dùng: Ca sĩ yêu thích của bạn là ai?

Chatbot: Tôi thích Lady Gaga

Người dùng: Tại sao?

Chatbot: Vì bộ đồ cô ấy mặc rất thú vị với tôi

Và đoạn hội thoại sau

Người dùng: Tại sao?

Chatbot: Tôi không hiểu bạn đang hỏi gì

Cùng là câu “Tại sao?” nhưng ta đang mong đợi Chatbot trả lời theo 2 hướng khác nhau Tất cả dựa vào ngữ cảnh của cuộc trò chuyện Để giữ cho ứng dụng đơn giản, ta

Trang 40

sẽ chỉ xét ngữ cảnh là tập hợp tất cả các câu hội thoại giữa Chatbot và người dùng trong một ca giao tiếp Ngữ cảnh ở đoạn hội thoại đầu tiên trước câu hỏi “Tại sao?” bao gồm việc người dùng đã hỏi Chatbot ai là ca sĩ mà chatbot yêu thích với câu trả lời nhận về là Lady Gaga Vì vậy mà Chatbot có thể hiểu được câu hỏi sẽ là “Tại sao bạn thích ca sĩ Lady Gaga?” và có phản hồi tương ứng Chính vì vậy lưu trữ ngữ cảnh cũng là một công việc quan trọng để tạo nên một Chatbot có thể giao tiếp ở mức thuyết phục

Tiếp tục xét đoạn hội thoại sau

Người dùng: Chào bạn

Chatbot: Chào bạn, bạn tên gì?

Người dùng: Mình tên A

Chatbot: Mình có thể giúp gì cho A?

Ở đây Chatbot đã chủ động hỏi người dùng họ tên gì, nếu người dùng trả lời đúng theo từ khóa mà Chatbot đã dự đoán (Ví dụ như “Tên tôi là *”, “Tên mình là *”,

“Mình tên *”, …) Chatbot sẽ có thể lưu lại thông tin đó để tăng tính cá nhân của cuộc hội thoại

Người dùng: Chào bạn

Chatbot: Chào bạn, mình có thể giúp gì được cho bạn?

Người dùng: Cho mình hỏi thời tiết ở thành phố X như thế nào

Chatbot: Thời tiết nhiều mây, nhiệt độ 23.4 độ C nhé bạn

Ta thấy rằng, để xây dựng một chatbot cung cấp thông tin, ta sẽ phải có một tầng tìm kiếm thông tin từ các API khác để có thể soạn ra phản hồi cho người dùng

Như vậy thông qua các ví dụ trên, ta có thể giải quyết được một số trường hợp có thể làm cho Chatbot phản hồi một cách thiếu thuyết phục Tuy nhiên quan trọng nhất chính là việc tạo ra một cơ sở kiến thức càng lớn càng tốt cho Chatbot để nó có thể phản hồi trước các đầu vào từ phía người dùng Một số phương pháp có thể kể đến như sau

của Chatbot

Ngày đăng: 05/09/2021, 20:46

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w