Chương trình Chatb ot thử nghi m trên máy Window 10 v i các thông s ệ ớ ố ứng
dụng và môi trường như sau:
- H ệ điều hành Windows 10, Intel i7-6700HQ, Ram 16GB
- Python 3.6
- Rasa version 2.1.3 - Rasa X version 0.34.0
Chatbot tiếp c n v i c 2 cách thao tác v i các nút b m (Menu/button based) ậ ớ ả ớ ấ và cho phép người dùng nh p n i dung yêu c u, v i vi c cung c p giao di n nút ậ ộ ầ ớ ệ ấ ệ b m s ấ ẽ giúp người dùng l a chự ọn chính xác và nhanh hơn. Thử nghiệm đượ thực c hiện trên b d ộ ữ liệu gồm 36 intent với 1024 câu mẫu và 4 entity. Chatbot xây dựng các kịch ả để b n có th ể giải quyết được nh ng bài toán c ữ ụ thể ủ c a doanh nghiệp cũng như giải quyết các trường hợp gián đoạn của người dùng, dưới đây là các ví d cụ ủa thử nghiệm.
K ch b n h i giá ị ả ỏ
H i giá là câu hỏ ỏi thường g p cặ ủa người dùng các trang web bán hàng, ở Chatbot Nhất Nam có kh ả năng chào hỏi cũng như trích xuất th c th liên quan ự ể đến s n ph m, gi s n u trong câu h i cả ẩ ả ử ế ỏ ủa người dùng không bao g m entity cồ ủa s n ph m thì Chatbot s ả ẩ ẽ đưa ra các lựa chọn v s n phề ả ẩm, người dùng có th bể ấm nút để ả ờ tr l i ho c nh p tin nh n. ặ ậ ắ
Hình 3.13. Người dùng có th bể ấm nút để trả ờ l i (hình bên trái) hoặc nhập tin nh n (hình bên phải) ắ
K ch b n form nh p liị ả ậ ệu
Sau khi cung c p thông tin v giá s n phấ ề ả ẩm đến khách hàng, Chatbot sẽ thực hiện yêu cầu người dùng nh p form bao g m h tên và s đi n tho i đ nhân viên ậ ồ ọ ố ệ ạ ể h ỗ trợ liên h ệ trực tiếp tư vấn. Form được s d ng nhi u trong Chatbot ử ụ ề như hỏi người dùng v Ultraview n u gề ế ặp các trường h p c n truy c p tr c ti p máy khách ợ ầ ậ ự ế hàng ho c form nh p thông tin doanh nghiặ ậ ệp để tra cứu hóa đơn hoặc th i h n bờ ạ ảo trì, b o hành. ả
D ữ liệu người dùng nh p s ậ ẽ được trích xuất các entity để ưu vào các slot, l các slot s ẽ được action server x lý và gử ửi đến h ỗ trợ viên thông qua mail, socket hoặc Google Drive.
Hình 3. 14 Trường h p nhợ ập form liên h ệ
Trường h p form nh p li u b ợ ậ ệ ị gián đoạn do người dùng h i câu h i khác thì ỏ ỏ Chatbot s v n tr lẽ ẫ ả ời người dùng sau đó tiế ụp t c yêu cầu người dùng hoàn thành form. Hoặc nếu người dùng không muốn điền form liên h bệ ằng ý định t ừ chối thì Chatbot s không yêu cẽ ầu người dùng nh p nậ ữa.
Hình 3.15. Trường hợp form b ị gián đoạn (hình bên trái) Trường hợp t ừ chối nh p form (hình bên ph ậ ải)
K ch b n không hi u câu hị ả ể ỏi của người dùng
Trong th c t Chatbot s g p tình hu ng không th ự ế ẽ ặ ố ể giải quyết được nh ng ữ câu h i m p m ỏ ậ ờ hoặc câu h i khóỏ , để ả gi i quy t bài toán này ta s dế ẽ ựa vào ngưỡng d ự đoán ụ thể ở đây là dướ, c i 0.6, nguyên nhân của ngưỡng th p có th ấ ể do ý định của người dùng không rõ ràng ho c câu hặ ỏi đó chưa có trong tập d u huữ liệ ấn luyện, Chatbot s lẽ trả ời lại người dùng như sau.
Hình 3.16. Trường hợp Chatbot không hiểu ý người dùng
3.5 Thử nghi m và ệ đánh giá chương trình
Thử nghiệm được ti n hành trên chính t p d ế ậ ữ liệu training bao gồm 36 intent v i 1024 câu m u và 4 entity, viớ ẫ ệc đánh giá chất lượng Chatbot dựa trên độ chính xác c a ủ câu trả ờ l i khi hỏi các câu đơn lẻ trong t p d uậ ữ liệ . Để thực hi n quá trình ệ kiểm th tôi chia ng u nhiên d li u hu n luyử ẫ ữ ệ ấ ện ban đầu thành 768 câu mẫu dùng để hu n luy n và ấ ệ 256 câu mẫ dùng để ểu ki m th và 4 entity, hu n luy n d a theo ử ấ ệ ự c u hình ấ được trình bày trong 3.3.4 C u hình các thành ph nấ ầ . ếK t qu ả được đánh giá d a vào 3 thông s lự ố ần lượt là Precision, Recall và F1-score.
- Precision: là t l s ỉ ệ ố câu đúng (TP) trong số những câu được phân lo i là ạ đúng (TP + FP). ớ V i TP là true positive là nh ng câu d ữ ự đoán là đúng và kết qu ả là đúng, FP là false positive là những câu d ự đoán là sai nhưng kết qu ả là đúng. Precision càng cao thì chính xác các câu d độ ự đoán đúng càng cao.
- Recall: là t l s ỉ ệ ố câu đúng (TP) trong tổng s ố những câu th c s ự ự là đúng (TP + FN). V i FN là false negative là nh ng câu d ớ ữ ự đoán sai nhưng kết qu ả là đúng. Recall càng cao thì t lệ ỏỉ b sót các câu th c s ự ự đúng càng thấp.
- F1-score: là điểm trung bình điều hòa (harmonic mean) c a Precision và ủ Recall. Điểm F1-score càng cao thì mô hình d ự đoán càng chính xác và tin cậy.
−
Dưới đây là bảng k t qu ế ả thử nghi m cho intent và entity: ệ B ng 3.1. Thông s ả ố đo intent
Ý định (Intents) S câu test ố Thông s ố đo
Precision Recall F1-score
chao_hoi 6 1.00 0.83 0.91 bao_gia 7 1.00 1.00 1.00 loi_font_chu 7 1.00 0.86 0.92 bao_cao_ton_kho 8 0.90 1.00 0.95 nhap_tu_dien 5 0.80 0.80 0.80 tao_lai_so_phieu 8 1.00 1.00 1.00 cai_dat_phan_mem 14 0.82 1.00 0.90 doi_mat_khau 7 1.00 0.86 0.92 tao_du_lieu_moi 17 0.93 0.82 0.87 hoa_don_dien_tu 8 1.00 1.00 1.00 in_nhieu_phieu 7 0.88 1.00 0.93 copy_du_lieu 8 0.89 1.00 0.93 … … … … … Trọng s trung bình ố 256 0.92 0.91 0.91
B ng 3.2. Thông s ả ố đo entity
Thực thể (Entities) S câu ố
test
Thông s ố đo
Precision Recall F1-
score
tu dien tai khoan 23 0.85 1.00 0.92
so_dien_thoai 4 1.00 1.00 1.00
san_pham 4 1.00 1.00 1.00
ten_khach_hang 13 1.00 0.62 0.76
Hình 3. . Bi19 ểu đồ ma tr n nh m l n (Confusion matrix) gi a các ậ ầ ẫ ữ nhãn d ự đoán và nhãn đúng trong tác vụ phân lo i ý đ nh ạ ị
N hã n đú ng Nhãn d ự đoán
Hình 3. . Bi20 ểu đồ ma tr n nh m l n (Confusion matrix) gi a các ậ ầ ẫ ữ nhãn d ự đoán và nhãn đúng trong tác vụ trích xu t th c th ấ ự ể
K t qu ế ả chỉ ra rằng Chatbot d ự đoán chính xác khoảng 90%. Để lưa chọn được c u hình t t nh t và ấ ố ấ ổn định nhất tôi đã so sánh các biến th c u hình khác ể ấ nhau, v i c u hình u ti là c u hình mớ ấ đầ ên ấ ặc định được cung c p b i Rasa t tên ấ ở đặ là default-config, c u hình thấ ứ hai s d ng mô hình DIET v i thành phử ụ ớ ần tokenizer được tùy bi n s d ng ế ử ụ thư viện Underthesea [25] c a tác gi ủ ả Vũ Anh, và c u hình ấ thứ 3 cũng chính là c u hình ấ được s d ng cho ng d ng dùng ử ụ ứ ụ pretrained-model spaCy h ỗ trợ Tiếng Vi t [15] c a tác gi ệ ủ ả Trần Việt Trung đã được hu n luy n d a trên 18GB các bài báo Ti ng Viấ ệ ự ế ệt và được đặt tên là spaCy- config. K t qu ế ả thu được như sau:
Hình 3.21. Thang đo so sánh điểm intent c a 3 c u hình ủ ấ B ng 3.3ả . Kết qu ả so sánh điểm intent của 3 c u hình ấ
C u hình ấ Precision Recall F1-score
spaCy-config 0.9191 0.9102 0.9086
custom-tokenizer 0.8945 0.8867 0.8843
default-config 0.8657 0.8555 0.8520
Hình 3.22. Thang đo so sánh điểm entity c a 3 c u hình ủ ấ
B ng 3.4ả . Kết qu ả so sánh điểm entity của 3 c u hình ấ
C u hình ấ Precision Recall F1-score
spaCy-config 0.9226 0.8864 0.8878
custom-
tokenizer 0.8328 0.8333 0.8208
default-config 0.8028 0.8103 0.8028
Ở ấ c u hình mặc định c a Rasa default-config ủ đạt điểm th p nh t c nhi m ấ ấ ở ả ệ v phân loụ ại ý định và trích ch n th c th , lý do chính là c u hình này phù h p vọ ự ể ấ ợ ới m i ngôn ng ọ ữ chữ Latinh nhưng không thể chính xác m t ngôn ng c ở ộ ữ ụ thể ví d ụ Tiếng Vi t. ệ C u hình stom-config ấ cu thể ệ hi n k t qu vư t tr i hế ả ợ ộ ơn default-config ở ả c 2 tác vụ, điều đó chứng minh đượ ằc r ng l a ch n tokenizer phù h p v i ngôn ự ọ ợ ớ ngữ ẽ tăng đáng kể s kh ả năng dự đoán của Chatbot. c u hình spaCy-config ta Ở ấ thu được k t qu t t nh t, v i vi c s d ng ế ả ố ấ ớ ệ ử ụ tính năng tokenizer và pretrain-model spaCy s d ng cho Ti ng Viử ụ ế ệt giúp Chatbot có đủ thông tin ng c nh c a t vữ ả ủ ừ ựng dù chưa từng huấn luy n ệ trước đó. Với k t qu t t nhế ả ố ất, tôi đã chọn c u hình spaCy-ấ config để xây d ng Chatbot Nh t Nam. ự ấ
T quá trình tìm hi u nghi p v , xây d ng và các k t qu t ừ ể ệ ụ ự ế ả ừ thực nghiệm thì tôi có những đánh giá sau:
D ữ liệu huấn luyện và các k ch b n xây d ng là y u t vô cùng quan tr ng ị ả ự ế ố ọ trong xây d ng m Chatbot, d u và k ch bự ột ữ liệ ị ản được cung c p càng nhi u và t ấ ề ỉ m thì Chatbot s càng linh ho t và thông minh. ỉ ẽ ạ
Việc định nghĩa và xây dựng các ý định, th c th ự ể cũng đóng vai trò rất quan trọng. N u d ệu huấế ữ li n luy n nhiệ ều nhưng được phân lo i m t cách m p m , ạ ộ ậ ờ không có hoạch định rõ ràng, ví d các câu m u cùng mụ ẫ ột ý định nhưng lại đặt vào 2 intent khác nhau s r t khó cho Chatbot ẽ ấ biết được ý định của người hỏi.
Không th có m t bài toán cể ộ ụ thể để quy ho ch hạ ết các trường h p có th xợ ể ảy ra trong m t phiên h i cộ ỏ ủa người dùng, cho nên c n xây d ng k ch b n cho nh ng ầ ự ị ả ữ trường hợp chưa được hu n luy n Chatbot không b trong tình c nh không th ấ ệ để ị ả ể đưa ra câu trả ời cho ngườ l i dùng hoặc đưa câu trả ờ l i sai l ch. ệ
K T LU N Ế Ậ
Trong luận văn này tôi đã tìm hiểu tổng quan v h ề ệ thống Chatbot, các thành phần c u trúc và nhi m v c a các thành ph n trong Chatbot, tìm hi u mô hình ấ ệ ụ ủ ầ ể Transformer và mô hình DIET để ứ ng d ng vào trong Chatbot ụ giải quy t bài toán ế bán hàng, tư vấn và h tr khách hàng. Chatbot đư c xây d ng d a trên công c ỗ ợ ợ ự ự ụ Rasa và tích h p tri n khai trên website c a doanh nghiợ ể ủ ệp.
Các vấn đề mà luận văn đã đạ được t
1. Xây dựng phương pháp phân loại ý định và trích xu t th c th giúp ấ ự ể Chatbot có kh ả năng trả ờ ự độ l i t ng các câu h i c a khách hàng m t cách chính ỏ ủ ộ xác nh t. Nh ng câu h i khó không có trong d ấ ữ ỏ ữ liệu huấn luy n s ệ ẽ được chuyển đến chuyên viên tư vấn.
2. Xây d ng ự Chatbot b ng công c Rasa s d ng mô hình DIET trong quá ằ ụ ử ụ trình huấn luy n và tích h p thành công vào Website công ty s d ng Wordpress. ệ ợ ử ụ Tùy chỉnh mô hình để có th x lý Tiể ử ếng Việt tốt hơn.
3. Đánh giá độ chính xác mô hình trong nhi m v phân loệ ụ ại ý định và trích xuất thực thể.
4. So sánh v i các tùy ch nh cớ ỉ ấu hình để đưa ra cấu hình t t nhố ất ứng d ng ụ cho Chatbot.
Định hướng phát tri n ể
1. M rở ộng thêm các ý định và thực th ph c v nghi p v doanh nghi p. ể ụ ụ ệ ụ ệ 2. Xây d ng Chatbot h ự ỗ trợ multi intent – người dùng có th h i nhi u câu ể ỏ ề h i kép v i cùng m t intent. ỏ ớ ộ
3. Xây d ng Chatbot có kh ự ả năng phân tích cảm xúc để đánh giá và đưa ra
TÀI LI U THAM KH O Ệ Ả
[1] Moussiades, E. Adamopoulou and Lefteris, "An Overview of Chatbot Technology".
[2] P. Suta, X. Lan, B. Wu, P. Mongkolnam and J. H. Chan, "An Overview
of Machine Learning in Chatbots," 2020.
[3] Kompella and Ravindra, 2018. [Online]. Available:
https://towardsdatascience.com/architecture-overview- -a-of
conversational- -chat-ai bot-4ef3dfefd52e.
[4] R. Vargas, A. Mosavi and R. Ruiz, "DEEP LEARNING: A REVIEW,"
2018.
[5] "WildML," 2015. [Online]. Available:
http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial- part-1-introduction- -rnns/. to
[6] Ruder and Sebastian, "An overview of gradient descent optimization algorithms," 2017.
[7] R. Pascanu, T. Mikolov and Y. Bengio, "On the difficulty of training recurrent neural networks".
[8] A. Vaswani, N. Shazeer, N. Parmar, J. Uszkoreit, L. Jones, A. N. Gomez,
L. Kaiser and I. Polosukhin, Attention is all you need, 2017.
[9] F. Chaubard, M. Fang, G. Genthial, R. Mundra and R. Socher, "Natural
Language Processing with Deep Learning," 2019.
[10] L. Google, "Tensor2Tensor," 2018. [Online]. Available:
https://colab.research.google.com/github/tensorflow/tensor2tensor/blob/ master/tensor2tensor/notebooks/hello_t2t.ipynb#scrollTo=OJKU36Qafq OC.
[11] J. L. Ba, J. R. Kiros and G. E. Hinton, "Layer Normalization," 2016. [12] K. He, X. Zhang, S. Ren and J. Sun, "Deep Residual Learning for Image
Recognition," 2015.
[13] T. Bunk, D. Varshneya, V. Vlasov and A. Nichol, "DIET: Lightweight Language Understanding for Dialogue Systems," 2020.
[14] X.-S. Vu, T. Vu, S. N. Tran and L. Jiang,
"https://github.com/sonvx/word2vecVN," [Online].
[15] T. V. Trung. [Online]. Available: https://gitlab.com/trungtv/vi_spacy. [16] D. Q. Nguyen and A. T. Nguyen, "PhoBERT: Pre-trained language
models for Vietnamese," [Online]. Available:
https://github.com/VinAIResearch/PhoBERT.
[17] Y. Liu, M. Ott, NamanGoyal, J. Du, M. Joshi, D. Chen, OmerLevy, MikeLewis, L. Zettlemoyer and V. Stoyanov, "RoBERTa: ARobustly Optimized BERT Pretraining Approach," 2019.
[18] J. Lafferty, A. McCallum and F. Pereira, "Conditional Random Fields: Probabilistic Models for Segmenting and Labeling Sequence Data," 2001.
[19] M. Korobov, "sklearn-crfsuite," 2015. [Online]. Available:
https://sklearn-crfsuite.readthedocs.io/.
[20] Ledell, A. Fisch, S. Chopra, K. Adams, A. Bordes and J. Westom, "Emed All The Things!," 2017.
[21] X. Liu, A. Eshghi, P. Swietojanski and V. Rieser, "Benchmarking Natural Language Understanding Services for building Conversational Agents," 2019.
[22] A. Vanzo, E. Bastianelli and O. Lemon, Hierarchical multi-task natural language understanding for cross-domain conversation ai: Hermit nlu, 2019, pp. 254-263.
[23] T. Bocklisch, J. Faulkner, N. Pawlowski and A. Nichol, "Rasa: Open Source Language Understanding and Dialogue Management," 2017. [24] V. Vlasov, J. E. M. Mosig and A. Nichol, "Dialogue Transformers," 2020. [25] V. Anh, "Underthesea - Vietnamese NLP Toolkit," 2018. [Online].
Available: https://underthesea.readthedocs.io/en/latest/readme.html. [26] A. Sherstinsky, "Fundamentals of Recurrent Neural Network (RNN) and
Long Short-Term Memory (LSTM) Network," 2021.
[27] M.-W. C. K. L. K. T. Jacob Devlin, "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding," 2019.
[28] O. V. Q. V. L. Ilya Sutskever, "Sequence to Sequence Learning with Neural Networks".
[29] "Michael Phi," 25 9 2018. [Online]. Available:
https://towardsdatascience.com/illustrated-guide- -lstms-and-gru-s-a-to step- -by step-explanation-44e9eb85bf21.
[30] M. Sonali, B. Maind and M. P. Wankar, "Research Paper on Basic of Artificial Neural Network," 2014.
[31] Mavuduru and Amol, 2 12 2020. [Online]. Available:
https://towardsdatascience.com/what-are-transformers-and-how-can-
you-use-them-f7ccd546071a.
[32] J. Alammar, "The Illustrated Transformer," [Online]. Available: https://jalammar.github.io/illustrated-transformer/.
[33] J. Mosig and V. Vlasov, "Why Rasa uses Sparse Layers in Transformers," 19 4 2021. [Online]. Available: https://rasa.com/blog/why-rasa-uses- sparse-layers- -transformers/. in