ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA KHOA HỌC - KỸ THUẬT MÁY TÍNH
OOO
BK
TP.HCM
LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC
PHÁT TRIỂN HỆ THỐNG CHATBOT TRÒ
CHUYỆN NHIỀU TẦNG
NGÀNH: CÔNG NGHỆ PHẦN MỀM
HỘI ĐỒNG
GVHD
GVPB
SVTH
:
:
:
:
KHOA HỌC MÁY TÍNH 11
PGS. TS. QUẢN THÀNH THƠ
TS. NGUYỄN ĐỨC DŨNG
NGUYỄN DƯƠNG MINH TÂM ĐẠT (1710059)
ĐẠI HỌC QUỐC GIA TP.HCM
---------TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA:KH & KT Máy tính
BỘ MÔN: KHMT
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc
NHIỆM VỤ LUẬN ÁN TỐT NGHIỆP
Chú ý: Sinh viên phải dán tờ này vào trang nhất của bản thuyết trình
HỌ VÀ TÊN: Nguyễn Dương Minh Tâm Đạt
NGÀNH: KHMT
MSSV: 1710059
LỚP: MT17KHTN
1. Đầu đề luận án:
Phát triển hệ thống chat bot trò chuyện nhiều tầng
2. Nhiệm vụ (yêu cầu về nội dung và số liệu ban đầu):
✔ Nghiên cứu các lý thuyết học máy nền tảng
✔ Nghiên cứu lý thuyết xây dựng chatbot
✔ Phân tích và thiết kế hệ thống chatbot với khả năng tương tác với
một số chatbot khác để hỗ trợ giao tiếp với người dùng. Các chatbot
có thể giao tiếp bằng hình ảnh và văn bản.
✔ Xây dựng demo
✔ Đánh giá hệ thống
3. Ngày giao nhiệm vụ luận án: 03/09/2015
4. Ngày hoàn thành nhiệm vụ: 20/12/2015
5. Họ tên giảng viên hướng dẫn:
1)
2)
3)
Phần hướng dẫn:
Nội dung và yêu cầu LVTN đã được thông qua Bộ môn.
Ngày ........ tháng ......... năm ..........
CHỦ NHIỆM BỘ MÔN
GIẢNG VIÊN HƯỚNG DẪN CHÍNH
(Ký và ghi rõ họ tên)
(Ký và ghi rõ họ tên)
PGS.TS. Quản Thành Thơ
PHẦN DÀNH CHO KHOA, BỘ MÔN:
Người duyệt (chấm sơ bộ):
Đơn vị:
Ngày bảo vệ:
Điểm tổng kết:
Nơi lưu trữ luận án:
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA KH & KT MÁY TÍNH
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc
---------------------------Ngày
tháng
năm
PHIẾU CHẤM BẢO VỆ LVTN
(Dành cho người hướng dẫn/phản biện)
1. Họ và tên SV: Nguyễn Dương Minh Tâm Đạt
MSSV: 1710059
Ngành (chuyên ngành): KHMT
2. Đề tài: Phát triển hệ thống chat bot trò chuyện nhiều tầng
3. Họ tên người hướng dẫn/phản biện: PGS.TS. Quản Thành Thơ
4. Tổng quát về bản thuyết minh:
Số trang:
Số chương:
Số bảng số liệu
Số hình vẽ:
Số tài liệu tham khảo:
Phần mềm tính toán:
Hiện vật (sản phẩm)
5. Tổng quát về các bản vẽ:
- Số bản vẽ:
Bản A1:
Bản A2:
Khổ khác:
- Số bản vẽ vẽ tay
Số bản vẽ trên máy tính:
6. Những ưu điểm chính của LVTN:
-
-
Đề tài có tính thực tế cao. Sinh viên đã nghiên cứu nhiều mảng kiến thức
học thuật liên quan đến xử lý ngôn ngữ tự nhiên sử dụng học sâu và vận
dụng phù hợp vào đề tài. Đặc biệt, học viên đã vận dụng nhiều tầng xử lý
bao gồm QA và Information Retrieval để hoàn thiện đề tài của mình.
Đề tài đã được bắt đầu áp dụng thực tế, đáp ứng được các nhu cầu về
non-functional requirement của công nghiệp.
7. Những thiếu sót chính của LVTN:
- Sinh viên cần phân tích kỹ hơn về khái niệm “chatbot nhiều tầng” của
mình.
8. Đề nghị: Được bảo vệ □
Bổ sung thêm để bảo vệ □
9. 3 câu hỏi SV phải trả lời trước Hội đồng:
10. Đánh giá chung (bằng chữ: giỏi, khá, TB):
Không được bảo vệ □
Điểm :
9/10
Ký tên (ghi rõ họ tên)
PGS.TS. Quản Thành Thơ
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA KH & KT MÁY TÍNH
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc
---------------------------Ngày 01 tháng 08 năm 2021
PHIẾU CHẤM BẢO VỆ LVTN
(Dành cho người hướng dẫn/phản biện)
1. Họ và tên SV: Nguyễn Dương Minh Tâm Đạt
MSSV: 1710059
Ngành (chuyên ngành): CNPM
2. Đề tài: PHÁT TRIỂN HỆ THỐNG CHATBOT TRÒ CHUYỆN NHIỀU TẦNG
3. Họ tên người hướng dẫn/phản biện: Nguyễn Đức Dũng
4. Tổng quát về bản thuyết minh:
Số trang:
Số chương:
Số bảng số liệu
Số hình vẽ:
Số tài liệu tham khảo:
Phần mềm tính toán:
Hiện vật (sản phẩm)
5. Tổng quát về các bản vẽ:
- Số bản vẽ:
Bản A1:
Bản A2:
Khổ khác:
- Số bản vẽ vẽ tay
Số bản vẽ trên máy tính:
6. Những ưu điểm chính của LVTN:
Luận văn đã phát triển được một hệ thống chatbot hỗ trợ các cuộc trò chuyện hướng phi mục tiêu.
Với hệ thống dề xuất, các câu phản hồi có thể được phân vào nhóm các câu đã biết qua hình thức
template matching. Trường hợp các câu hỏi không match được và có thể phân loại các câu hỏi về
người thì nhóm sử dụng module Q&A để xử lý. Trong trường hợp còn lại thì sử dụng GPT-2 model
để sinh câu trả lời. Về cơ bản nhóm đã hoàn thành các yêu cầu đặt ra của đề tài với cách tiếp cận sử
dụng các mô hình phù hợp có sẵn.
7. Những thiếu sót chính của LVTN:
Đề tài chatbot dạng này có độ phức tạp thực tế cao hơn nhiều. Mặc dù nhóm đã hoàn thành các mục
tiêu cơ bản, tuy nhiên nhóm còn chưa cân nhắc các yếu tố cần thiết cho một chatbot dạng này. Thứ
nhất là vấn đề về hội thoại, tác nhân của hội thoại trong trường hợp này là người dùng, tuy nhiên
với hệ thống trò chuyện, đôi khi bot phải là người bắt đầu cuộc trò chuyện, điều này cần ghi rõ
trong scope đề tài. Thứ hai, về các dạng matching cơ bản là vô cùng đa dạng và khó bao phủ hết,
càng bao phủ nhiều càng tốn chi phí tính toán cho module template matching. Thêm nữa, các hình
thức sinh câu trả lời hiện tại đều là không có nhớ, không sử dụng thông tin ngữ cảnh. Do đó kết quả
sinh ra của câu trả lời thường bị overfit trên tập dữ liệu huấn luyện. Điều này thấy rõ trong phần thí
nghiệm của nhóm.
8. Đề nghị: Được bảo vệ o
Bổ sung thêm để bảo vệ o
Không được bảo vệ o
9. 3 câu hỏi SV phải trả lời trước Hội đồng:
a. Nếu muốn cải thiện câu phản hồi của chatbot mà có yếu tố ngữ cảnh, nhóm cần thay đổi gì trong
cách tiếp cận bài toán?
b. Việc sử dụng lại GPT-2 hay các mô hình seq2seq có thực sự hợp lý đối với chatbot phi mục tiêu?
10. Đánh giá chung (bằng chữ: giỏi, khá, TB): Giỏi
Điểm: 9 /10
Ký tên (ghi rõ họ tên)
Nguyễn Đức Dũng
LỜI CAM ĐOAN
Tôi xin cam đoan rằng, ngoại trừ các kết quả tham khảo từ các công trình khác có liên quan đã
ghi rõ trong luận văn, các nội dung trình bày trong luận văn này là do chính tôi thực hiện và
chưa có phần nội dung nào được nộp để lấy bằng cấp ở một trường khác.
TP. HCM, NGÀY 25 THÁNG 7 NĂM 2021
LỜI CẢM ƠN
Đầu tiên, tôi xin gửi lời cảm ơn chân thành nhất đến PGS TS. Quản Thành Thơ, người thầy gắn
bó với tôi trong quá trình thực hiện luận văn này. Xin cảm ơn những sự hướng dẫn tận tình, chu
đáo của thầy, chính nhờ những kiến thức mà thầy đã truyền đạt lại đã giúp cho tôi hoàn thành
tốt luận văn này.
Tôi cũng xin được cảm ơn TS. Nguyễn Đức Dũng, giảng viên phản biện của đề tài trong quá
trình Đề cương và Luận văn, với những định hướng và góp ý giúp cho tôi có thể hoàn thành đề
tài này.
Xin gửi lời cảm ơn đến các thầy cô trường Đại học Bách Khoa, đặc biệt là các thầy cô bộ môn
trong khoa Khoa học và Kỹ thuật Máy tính đã truyền đạt những kiến thức quý báu trong những
năm học qua.
Cuối cùng, tôi xin cảm ơn các bạn sinh viên, những người đã tham gia thử nghiệm cho đề tài
của tôi, cảm ơn các bạn đã đóng góp một phần quan trọng trong việc đánh giá hệ thống của tôi.
Tôi cũng xin cảm ơn gia đình, bạn bè đã hỗ trợ tôi trong suốt quá trình học tập và hoàn thành
luận văn.
TÁC GIẢ.
iii
TÓM TẮT
Hiện nay, có rất nhiều chatbot ra đời với nhiều mục đích khác nhau. Một số chatbot được tạo ra
với mục đích nhất định, cũng có một số được tạo ra để có thể trò chuyện giúp người dùng giải
trí. Cùng với sự phát triển của công nghệ và những bước tiến trong nghiên cứu, nhiều mô hình
hỗ trợ cho việc tạo ra chatbot có khả năng hiểu được ngôn ngữ của con người tốt hơn. Trong đề
tài luận văn này, nhóm sẽ xây dựng một hệ thống chatbot có thể trò chuyện với người dùng để
giải trí. Hệ thống được thiết kế gồm nhiều tầng áp dụng nhiều mô hình học máy khác nhau để
có thể trò chuyện và trả lời một số câu hỏi của người dùng.
MỤC LỤC
Tóm tắt
iii
Danh mục hình ảnh
vii
Danh mục bảng biểu
viii
Danh mục chữ viết tắt
Chương 1 TỔNG QUAN
1.1 Đặt vấn đề . . . . . . . . . . . . . . . . .
1.2 Ví dụ minh hoạ . . . . . . . . . . . . . .
1.3 Mục tiêu và các giai đoạn thực hiện đề tài
1.3.1 Mục tiêu đề tài . . . . . . . . . .
1.3.2 Các giai đoạn thực hiện . . . . . .
1.4 Giới hạn đề tài . . . . . . . . . . . . . . .
1.5 Cấu trúc luận văn . . . . . . . . . . . . .
ix
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Chương 2 KIẾN THỨC NỀN TẢNG
2.1 Tổng quan về chatbot . . . . . . . . . . . . . . . . . . .
2.1.1 Giới thiệu . . . . . . . . . . . . . . . . . . . . .
2.1.2 Phân loại chatbot . . . . . . . . . . . . . . . . .
2.1.3 Các kỹ thuật thiết kế chatbot . . . . . . . . . . .
2.2 Word Embedding . . . . . . . . . . . . . . . . . . . . .
2.2.1 Giới thiệu . . . . . . . . . . . . . . . . . . . . .
2.2.2 Continuous Bag-of-Words Model . . . . . . . . .
2.2.3 Continuous Skip-gram Model . . . . . . . . . .
2.3 Mạng nơ-ron nhân tạo - Artificial Neural Network (ANN)
2.3.1 Giới thiệu . . . . . . . . . . . . . . . . . . . . .
2.3.2 Các công thức toán học . . . . . . . . . . . . . .
2.3.3 Khả năng của ANN . . . . . . . . . . . . . . . .
2.3.4 Một số hàm Activation . . . . . . . . . . . . . .
2.3.4.1 Hàm Tanh . . . . . . . . . . . . . . .
2.3.4.2 Hàm Sigmoid . . . . . . . . . . . . . .
2.3.4.3 Hàm Relu . . . . . . . . . . . . . . . .
2.3.5 Huấn luyện ANN . . . . . . . . . . . . . . . . .
2.4 Recurrent Neural Networks . . . . . . . . . . . . . . . .
2.4.1 Giới thiệu . . . . . . . . . . . . . . . . . . . . .
2.4.2 Một số ứng dụng của RNN . . . . . . . . . . . .
2.4.2.1 One-to-one . . . . . . . . . . . . . . .
2.4.2.2 Many-to-one . . . . . . . . . . . . . .
2.4.2.3 Many-to-many loại 1 . . . . . . . . . .
2.4.2.4 Many-to-many loại 2 . . . . . . . . . .
2.4.3 Long Short-Term Memory networks . . . . . . .
2.4.4 Sequence to sequence model . . . . . . . . . . .
2.5 Attention và Transformer . . . . . . . . . . . . . . . . .
2.5.1 Giới thiệu cơ chế Attention . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
2
3
3
3
4
4
5
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6
7
7
7
8
9
9
9
10
10
10
11
12
12
12
13
13
14
14
14
15
15
16
16
16
17
18
19
19
v
MỤC LỤC
2.5.2
.
.
.
.
.
.
21
21
22
22
23
24
Chương 3 CÁC CÔNG TRÌNH LIÊN QUAN
3.1 Chatbot tiếng Việt dựa trên mạng nơ-ron (A Neural Network Based Vietnamese
Chatbot) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Mô hình BERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3 Mô hình GPT-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
26
26
28
Chương 4 TẬP DỮ LIỆU
4.1 Dữ liệu phụ đề phim tiếng Việt - OpenSubtitles . . . . . . . . . . . . . . . . .
4.2 Tập dữ liệu trả lời câu hỏi . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
30
30
Chương 5 ĐẶC TẢ VÀ HIỆN THỰC HỆ THỐNG
5.1 Thiết kế hệ thống . . . . . . . . . . . . . . . . . . . . .
5.1.1 Tổng quan về kiến trúc hệ thống và chức năng . .
5.1.2 Sơ đồ tình huống sử dụng (Use Case Diagram) .
5.1.3 Sơ đồ trình tự (Sequence Diagram) . . . . . . . .
5.2 Chi tiết các thành phần . . . . . . . . . . . . . . . . . .
5.2.1 Bộ xử lý tin nhắn cơ bản (General Chat Module)
5.2.2 Bộ trả lời câu hỏi (QA Module) . . . . . . . . .
5.2.3 Bộ sinh ngôn ngữ tự nhiên (GPT Module) . . . .
5.2.4 Bộ phân loại tin nhắn (Message Classifier) . . . .
5.2.5 Bộ xử lý tin nhắn (Message Handler) . . . . . . .
5.3 Vấn đề cần giải quyết . . . . . . . . . . . . . . . . . . .
5.4 Khó khăn . . . . . . . . . . . . . . . . . . . . . . . . .
5.5 Giải pháp . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
31
32
32
32
35
35
35
37
38
38
39
39
39
39
Chương 6 CÔNG NGHỆ SỬ DỤNG
6.1 Ngôn ngữ lập trình . . . . . .
6.1.1 Python . . . . . . . . .
6.1.2 JavaScript . . . . . . .
6.2 Nền tảng và thư viện . . . . .
6.2.1 NodeJS . . . . . . . .
6.2.2 Pytorch . . . . . . . .
6.2.3 Pandas . . . . . . . . .
6.2.4 TensorFlow . . . . . .
6.2.5 Botkit . . . . . . . . .
6.2.6 Scikit-learn . . . . . .
6.2.7 Pymongo . . . . . . .
6.2.8 Amazon Web Services
6.2.9 HuggingFace . . . . .
6.3 Công cụ . . . . . . . . . . . .
6.3.1 Google Colab . . . . .
6.3.2 MongoDB . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
41
42
42
42
42
42
43
43
43
43
43
43
44
44
44
44
44
2.6
2.7
Mô hình Transformer . . . . . . . . . . . . . . . . . . . . . . . .
2.5.2.1 Giới thiệu . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.2.2 Encoder và Decoder . . . . . . . . . . . . . . . . . . .
2.5.2.3 Attention . . . . . . . . . . . . . . . . . . . . . . . . .
Mô hình Generative Pre-trained Transformer . . . . . . . . . . . . . . . .
Mô hình Bidirectional Encoders Representation from Transformer (BERT)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Chương 7 THÍ NGHIỆM VÀ ĐÁNH GIÁ
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
45
vi
MỤC LỤC
7.1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
46
46
46
48
48
48
48
48
48
48
49
49
50
50
50
51
51
51
52
55
Chương 8 TỔNG KẾT
8.1 Các kết quả đạt được . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2 Các hạn chế . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.3 Định hướng trong tương lai . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
59
59
59
Tài liệu tham khảo
59
Danh mục từ khoá
62
7.2
7.3
7.4
7.5
7.6
7.7
7.8
Xây dựng bộ trả lời câu hỏi . . . . . . . . . . . . . . . . . . . . . . . . .
7.1.1 Mô hình trả lời câu hỏi áp dụng BERT . . . . . . . . . . . . . . .
7.1.2 Hệ thống truy vấn đoạn văn cho mô hình trả lời câu hỏi . . . . . .
Xây dựng bộ phân loại tin nhắn . . . . . . . . . . . . . . . . . . . . . . .
7.2.1 Phương pháp Pattern Matching . . . . . . . . . . . . . . . . . . .
7.2.2 Kết quả . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Xây dựng bộ trả lời các ý định cơ bản . . . . . . . . . . . . . . . . . . . .
Xây dựng mô hình ngôn ngữ . . . . . . . . . . . . . . . . . . . . . . . .
7.4.1 Môi trường huấn luyện mô hình . . . . . . . . . . . . . . . . . .
7.4.2 Mô hình ngôn ngữ dùng LSTM . . . . . . . . . . . . . . . . . . .
7.4.3 Mô hình GPT-2 . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.4.4 Kết quả và đánh giá . . . . . . . . . . . . . . . . . . . . . . . . .
Xây dựng cơ sở dữ liệu lưu trữ đoạn hội thoại . . . . . . . . . . . . . . .
Triển khai hệ thống chatbot . . . . . . . . . . . . . . . . . . . . . . . . .
7.6.1 Thông số hệ thống . . . . . . . . . . . . . . . . . . . . . . . . .
7.6.2 Sơ đồ triển khai phần mềm . . . . . . . . . . . . . . . . . . . . .
Kiểm thử các thành phần của hệ thống chatbot . . . . . . . . . . . . . . .
7.7.1 Kiểm thử thành phần xử lý câu nói thông thường và trả lời câu hỏi
7.7.2 Kiểm thử giao diện . . . . . . . . . . . . . . . . . . . . . . . . .
Đánh giá của người dùng . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
DANH
MỤC HÌNH ẢNH
1.1
Ví dụ một đoạn hội thoại giữa chatbot và người dùng . . . . . . . . . . . . . .
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
2.10
2.11
2.12
2.13
2.14
2.15
2.16
2.17
2.18
2.19
2.20
Các hướng phân loại chatbot . . . . . . . . .
Mô hình CBOW và Skip-gram . . . . . . . .
Mô hình nơ-ron nhân tạo . . . . . . . . . . .
MLP với hai hidden layer . . . . . . . . . . .
Các kí hiệu và công thức tính toán trong MLP
Đồ thị hàm tanh . . . . . . . . . . . . . . . .
Đồ thị hàm sigmoid . . . . . . . . . . . . . .
Đồ thị hàm ReLU . . . . . . . . . . . . . . .
Kiến trúc cơ bản của mạng RNN . . . . . . .
One-to-many RNN . . . . . . . . . . . . . .
Many-to-one RNN . . . . . . . . . . . . . . .
Many-to-many RNN loại 1 . . . . . . . . . .
Many-to-many RNN loại 2 . . . . . . . . . .
Kiến trúc của LSTM . . . . . . . . . . . . .
Kiến trúc mô hình Sequence-to-sequence . . .
Encoder-decoder với Attention mechanism . .
Alignment matrix . . . . . . . . . . . . . . .
Kiến trúc mô hình Transformer . . . . . . . .
Mô tả khối decoder được dùng trong GPT . .
Các tác vụ cụ thể áp dụng BERT . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
10
11
11
12
13
13
14
14
15
16
16
17
17
19
19
20
21
23
24
3.1
3.2
3.3
3.4
3.5
3.6
Ví dụ về cặp câu hỏi và trả lời [22] . . . . . . . . . . . . . . . . . . .
Một số kết quả được đề cập trong bài viết [22] . . . . . . . . . . . . .
Tổng quát quá trình tiền huấn luyện và áp dụng của mô hình BER [21]
So sánh kết quả trên tập SQuAD 1.1 [21] . . . . . . . . . . . . . . . .
So sánh kết quả trên tập SQuAD 2.0 [21] . . . . . . . . . . . . . . . .
So sánh kết quả mô hình GPT-2 [20] . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
26
26
27
27
28
28
5.1
5.2
5.3
5.4
Kiến trúc hệ thống . . . . . . . . . . . . . . . . . . . . . .
Sơ đồ tình huống sử dụng - Use Case Diagram của chatbot
Sơ đồ trình tự - Sequence Diagram của hệ thống chatbot . .
Chi tiết bộ trả lời câu hỏi . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
32
33
35
38
7.1
7.2
7.3
7.4
7.5
7.6
7.7
7.8
7.9
7.10
7.11
Hệ thống truy vấn đoạn văn cho câu hỏi . . . . . . . . . . . . . . . . . .
Sơ đồ triển khai các thành phần của hệ thống chatbot . . . . . . . . . . .
Kết quả kiểm thử thành phần xử lý câu nói thông thường và trả lời câu hỏi
Kết quả kiểm thử thành phần xử lý câu nói thông thường và trả lời câu hỏi
Giao diện trên máy tính . . . . . . . . . . . . . . . . . . . . . . . . . . .
Giao diện trên điện thoại . . . . . . . . . . . . . . . . . . . . . . . . . .
Giao diện trên máy tính bảng . . . . . . . . . . . . . . . . . . . . . . . .
Kết quả đánh giá độ hài lòng của người dùng về câu trả lời của chatbot . .
Kết quả đánh giá của người dùng về thời gian phản hồi của chatbot . . . .
Kết quả đánh giá của người dùng về giao diện . . . . . . . . . . . . . . .
Kết quả đánh giá của người dùng về tương thích của giao diện . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
47
51
52
52
52
53
54
55
56
56
57
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
DANH
MỤC BẢNG BIỂU
4.1
Thống kê chi tiết bộ dữ liệu OpenSubtitles đã xử lý . . . . . . . . . . . . . . .
30
5.1
5.2
Bảng mô tả tình huống hỏi về người với chatbot . . . . . . . . . . . . . . . . .
Bảng mô tả tình huống nhắn tin với chatbot . . . . . . . . . . . . . . . . . . .
33
34
7.1
7.2
7.3
Đánh giá PPL giữa hai mô hình LSTM và GPT-2 . . . . . . . . . . . . . . . .
Một số câu do hai mô hình sinh ra . . . . . . . . . . . . . . . . . . . . . . . .
Cấu trúc dữ liệu đoạn hội thoại . . . . . . . . . . . . . . . . . . . . . . . . . .
50
50
50
DANH MỤC CHỮ VIẾT TẮT
Danh sách dưới đây liệt kê các chữ cái viết tắt sẽ được sử dụng về sau trong nội dung cuốn đề
cương luận văn này.
ANN
Artificial Neural Network
BERT
Bidirectional Encoder Representation from Transformer
CBOW
Continuous Bag-of-Words Model
DNN
Deep Neural Network
GPT
Generative Pre-trained Transformer
LSTM
Long Short-Term Memory Network
MLP
Multilayer Perceptron
NLP
Natural Language Processing
RNN
Recurrent Neural Network
Seq2Seq
Sequence to Sequence
Skip-gram Continuous Skip-gram Model
Word2Vec
Word to Vector
1
TỔNG
QUAN
Trong chương này, tôi xin giới thiệu sơ lược về nội dung đề tài và cấu trúc luận văn.
Mục lục
1.1
Đặt vấn đề . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2
Ví dụ minh hoạ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.3
Mục tiêu và các giai đoạn thực hiện đề tài . . . . . . . . . . . . . . . . . . . . . .
3
1.4
Giới hạn đề tài . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
1.5
Cấu trúc luận văn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
CHƯƠNG 1 TỔNG QUAN
1.1
2
Đặt vấn đề
Hiện nay, các trợ lý ảo hay chatbot đã rất phổ biến với mọi người, ví dụ như trợ lý ảo của Google,
Alexa của Amazon hay Siri của Apple. Các trợ lý ảo này đã dần dần thay đổi cách chúng ta giao
tiếp với máy móc. Giờ đây ta đã có thể điều khiển cả ngôi nhà bằng cách ra lệnh bằng giọng nói
hay trò chuyện với trợ lý ảo như một người bạn và hỏi những thông tin, tin tức cần thiết hoặc về
một địa điểm, một nhân vật nào đó. Ngoài ra, trợ lý ảo còn như một người bạn giúp chúng ta
giải toả căng thẳng hay giải trí sau một ngày học tập, làm việc.
Trợ lý ảo, hay còn được gọi là chatbot, là một phần mềm trí tuệ nhân tạo ứng dụng từ lĩnh vực
xử lý ngôn ngữ tự nhiên. Mô hình chatbot được chia thành hai loại: mô hình truy vấn thông tin
(Retrieval-based model) và mô hình sinh (Generative-based model). Mô hình chatbot truy vấn
thông tin sẽ cung cấp câu trả lời dựa những câu trả lời đã được định nghĩa sẵn. Mô hình này
có thể giúp chatbot xử lý những tình huống thường gặp như đặt vé xem phim, vé máy bay hay
mua hàng trực tuyến. Ngoài ra, mô hình này còn có thể trả lời những câu hỏi thường gặp trong
một lĩnh vực nhất định bằng cách định nghĩa trước một bộ các câu hỏi và lời đáp. Tuy nhiên,
mô hình này không thể đưa ra câu trả lời cho những câu hỏi chưa được định nghĩa trước đó. Mô
hình sinh được phát triển để giải quyết vấn đề trên. Mô hình sinh có thể tạo ra những câu trả
lời dựa vào những gì mà người dùng cung cấp. Những câu trả lời này còn có thể tạo cho người
dùng cảm giác đang trò chuyện với con người thật. Để sinh ra những câu trả lời không cần định
nghĩa trước, mô hình cần một lượng lớn dữ liệu để huấn luyện cách sinh ra câu trả lời. Hiện nay,
mô hình thường được dùng để sinh câu trả lời có thể kể đến là mô hình Sequence-to-Sequence
và mô hình GPT (Generative Pretrained Transformer). Gần đây, các công trình nghiên cứu mới
về cơ chế Attention trong mô hình Sequence-to-Sequence đã giúp lĩnh vực xử lý ngôn ngữ tự
nhiên có thêm nhiều hướng phát triển. Các bài toán về dịch máy, phân loại văn bản, tóm tắt văn
bản đều có những bước tiến mới. Bài toán về chatbot cũng không là ngoại lệ khi có thể áp dụng
những sự cải tiến đó để giúp tạo ra những câu trả lời tự nhiên hơn.
Ngoài ra, chatbot còn có thể tích hợp hệ thống trả lời câu hỏi. Điều này giúp cho chatbot có thể
trả lời được những câu hỏi trong một lĩnh vực nhất định như về địa điểm, con người hay thời
gian. Việc xây dựng một hệ thống trả lời câu hỏi có thể thực hiện bằng hai phương pháp sau:
dựa vào kiến thức có sẵn và dựa trên văn bản. Trong đó, phương pháp dựa vào kiến thức có sẵn
đòi hỏi phải xây dựng một cơ sở dữ liệu tri thức để có thể truy xuất được câu trả lời từ câu hỏi
nhập vào. Việc xây dựng cơ sở dữ liệu như vậy là rất tốn thời gian và chi phí. Phương pháp dựa
trên văn bản thì ngược lại, câu trả lời sẽ được tìm ra trong một hoặc nhiều đoạn văn bản liên
quan dựa trên câu hỏi nhập vào. Phương pháp này có thể thực hiện bằng hai cách: trích xuất
thông tin (Information Retrieval) hoặc dùng học sâu (Deep learning). Nhờ vào sự phát triển của
những mô hình học sâu trong những năm gần đây, phương pháp trả lời câu hỏi từ văn bản đã đạt
được những tiến bộ nhất định.
Trong đề tài luận văn này, nhóm sẽ xây dựng một chatbot kết hợp một số phương pháp nêu trên
với kiến trúc nhiều tầng. Mục tiêu của thiết kế này sẽ giúp cho chatbot có thể trò chuyện với
người dùng được liên tục và trả lời được nhiều thông tin thú vị. Với thiết kế nhiều tầng, một
câu hỏi hay câu nói của người dùng được xử lý qua các tầng với mỗi tầng là một phương pháp
và chatbot sẽ đưa ra câu trả lời có độ phù hợp tốt hơn. Ngoài ra, việc mở rộng và thêm nhiều
phương pháp khác để xử lý cũng dễ dàng hơn nhờ các tầng được thiết kế để làm nhiệm vụ độc
lập với nhau, đảm bảo chatbot có thể trả lời ổn định khi có một tầng gặp sự cố.
CHƯƠNG 1 TỔNG QUAN
1.2
3
Ví dụ minh hoạ
Hình 1.1: Ví dụ một đoạn hội thoại giữa chatbot và người dùng
Hình 1.1 là mẫu trò chuyện của người dùng với chatbot. Khi người dùng nhập một câu nói,
chatbot sẽ dùng câu nói đó để sinh ra câu trả lời bám sát với ngữ cảnh của cuộc trò chuyện. Từ
đó giúp cho người dùng có thể cảm thấy vui vẻ, thoải mái khi được chia sẻ cùng chatbot.
1.3
1.3.1
Mục tiêu và các giai đoạn thực hiện đề tài
Mục tiêu đề tài
Trong đề tài này, nhóm tập trung xây dựng một hệ thống hội thoại tự động có thể trò chuyện
cùng người dùng bằng cách kết hợp truy vấn các câu trả lời định nghĩa sẵn, phương pháp sinh
câu trả lời dựa vào mô hình học sâu và trả lời câu hỏi về con người bằng phương pháp trích
xuất thông tin trong văn bản. Hệ thống chatbot được thiết kế theo hướng không có tác vụ cụ thể.
CHƯƠNG 1 TỔNG QUAN
4
Thay vào đó, chatbot có thể đưa ra câu đáp lại với hầu hết câu nhập vào của người dùng. Hệ
thống bao gồm các tính năng sau:
• Trả lời các câu hỏi của người dùng về người.
• Trả lời các câu trả lời của người dùng bằng cách kết hợp phương pháp truy xuất thông tin
có sẵn và dùng mô hình sinh.
Để đạt được những tính năng nêu trên, nhóm cần đạt được những mục tiêu sau:
• Xây dựng bộ trả lời dựa trên những câu được định nghĩa sẵn.
• Xây dựng bộ trả lời câu hỏi về người và truy vấn thông tin văn bản để trả lời.
• Thu thập dữ liệu về hội thoại và huấn luyện mô hình sinh văn bản.
• Xây dựng bộ lựa chọn câu trả lời để phản hồi về người dùng.
• Xây dựng giao diện chatbot thân thiện và dễ sử dụng.
1.3.2
Các giai đoạn thực hiện
Với những mục tiêu đã đề ra ở mục 1.3.1, nhóm đã chia đề tài thành các giai đoạn thực hiện như
sau:
• Giai đoạn 1: Thu thập dữ liệu về hội thoại và huấn luyện mô hình sinh văn bản.
• Giai đoạn 2: Định nghĩa các trường hợp trả lời dùng câu trả lời có sẵn và tạo dữ liệu các
câu trả lời.
• Giai đoạn 3: Xây dựng bộ trả lời câu hỏi về người gồm: bộ tìm kiếm thông tin qua Google
Search Engine, bộ trích xuất thông tin và bộ trích xuất câu trả lời.
• Giai đoạn 4: Xây dựng bộ lựa chọn câu trả lời từ câu nhập vào của người dùng.
• Giai đoạn 5: Tổng hợp các thành phần thành một hệ thống hoàn chỉnh và kiểm thử phần
mềm.
1.4
Giới hạn đề tài
Do chatbot có thể thiết kế theo nhiều phương pháp khác nhau, và mỗi phương pháp dùng để giải
quyết những yêu cầu khác nhau của người dùng. Vì vậy, như mục tiêu của đề tài đặt ra, chatbot
được thiết kế trong đề tài này sẽ bị giới hạn trong phạm vi nghiên cứu như sau:
• Vì những khó khăn về công nghệ cũng như tài nguyên máy tính nên nhóm sẽ cố gắng giải
quyết các câu hỏi về người cho bộ trả lời câu hỏi.
5
CHƯƠNG 1 TỔNG QUAN
• Việc chatbot trả lời tự nhiên và bám sát với ngữ cảnh là một thách thức về mặt công nghệ
và dữ liệu ở thời điểm hiện tại đối với tiếng Việt. Do đó, nhóm sẽ tận dụng những bộ dữ
liệu dạng hội thoại có sẵn để tiến hành thử nghiệm, đánh giá trên một số mô hình học sâu
khác nhau. Từ đó chọn lựa mô hình tối ưu nhất để câu trả lời của chatbot có thể tự nhiên
và bám sát với ngữ cảnh ở mức chấp nhận được.
1.5
Cấu trúc luận văn
Những nội dung trong quá trình luận văn được nhóm trình bày trong các chương sau:
Chương 1. Tổng quan.
Trong chương đầu tiên, nhóm trình bày khái quát về đề tài, mục
tiêu, phạm vi và cấu trúc đề tài luận văn.
Chương 2. Kiến thức nền tảng.
Chương này nhóm trình bày những kiến thức nền tảng để
phát triển hệ thống chatbot và các kiến thức liên quan trong xử lý ngôn ngữ tự nhiên.
Chương 3. Các công trình liên quan.
Chương này nhóm sẽ trình bày về những công trình
và hệ thống liên quan đến đề tài của nhóm.
Chương 4. Tập dữ liệu.
Chương này bao gồm các tập dữ liệu đã tham khảo và được dùng
để huấn luyện các mô hình trong luận văn.
Chương 5. Đặc tả và hiện thực hệ thống.
Chương này nhóm trình bày về phương pháp
thực hiện đề tài và mô hình kiến trúc hệ thống đề xuất.
Chương 6. Công nghệ sử dụng.
dụng phát triển đề tài này.
Chương này nhóm giới thiệu các công nghệ dự định để sử
Chương 7. Thí nghiệm và đánh giá.
Chương này nhóm trình bày các thí nghiệm và đánh
giá hệ thống chatbot sau khi đã triển khai.
Chương 8. Tổng kết.
Chương cuối cùng, nhóm tổng kết lại các vấn đề trong quá trình hoàn
thiện đề tài luận văn. Đồng thời, nhóm nêu ra các hạn chế cũng như mở ra các hướng phát triển
của đề tài trong tương lai.
2
KIẾN THỨC NỀN
TẢNG
Trong chương này, tôi sẽ trình bày những kiến thức nền tảng được sử dụng trong quá trình thực
hiện luận văn bao gồm: giới thiệu về hệ thống chatbot, các khái niệm thường được sử dụng
trong mạng học sâu, xử lí ngôn ngữ tự nhiên và học tăng cường.
Mục lục
2.1
Tổng quan về chatbot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.2
Word Embedding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.3
Mạng nơ-ron nhân tạo - Artificial Neural Network (ANN) . . . . . . . . . . . . .
10
2.4
Recurrent Neural Networks . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
2.5
Attention và Transformer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
2.6
Mô hình Generative Pre-trained Transformer . . . . . . . . . . . . . . . . . . . .
23
2.7
Mô hình Bidirectional Encoders Representation from Transformer (BERT) . . . .
24
CHƯƠNG 2 KIẾN THỨC NỀN TẢNG
2.1
2.1.1
7
Tổng quan về chatbot
Giới thiệu
Chatbot là một phần mềm được thiết kế để mô phỏng lại đoạn hội thoại của người dùng, đặc biệt
là những cuộc trò chuyện qua Internet. Phần mềm này đóng vai trò như là một phương thức để
con người có thể giao tiếp được với máy tính. Nó cung cấp cho máy tính khả năng hiểu được câu
hỏi từ ngôn ngữ tự nhiên của con người và trả lời người dùng. Hệ thống chatbot đầu tiên được
thiết kế tại M.I.T vào năm 1966 là ELIZA [1]. Tiếp sau đó đã có nhiều chatbot được phát triển,
ví dụ như tương tác với người dùng bằng những tính cách khác nhau [2], kết hợp với các công cụ
tìm kiếm [3]. Qua từng năm, chatbot ngày càng trở nên phức tạp, có thể xử lý được những đoạn
hội thoại một cách tự nhiên và giúp cho người dùng thoải mái khi được trợ giúp nhanh nhất có
thể. Mặc dù không thể xử lý được tất cả những yêu cầu từ người dùng, nhưng chatbot có thể xử
lý được hầu hết các yêu cầu thường gặp giúp cho thời gian xử lý được cải thiện đáng kể.
2.1.2
Phân loại chatbot
Hiện tại, chatbot được chia thành nhiều loại dựa trên nhiều tiêu chí khác nhau như: dựa trên
cách giao tiếp (giọng nói hoặc văn bản), dựa trên kiến thức (đóng hoặc mở), dựa trên phương
pháp học (dựa theo luật, dựa theo trích xuất thông tin, hoặc dựa vào học máy), và dựa trên mục
tiêu (có hoặc không có mục tiêu cụ thể) [4].
Hình 2.1: Các hướng phân loại chatbot
- Xem thêm -