Nghiên cứu ứng dụng Chatbot trong lĩnh vực tư vấn dịch vụ ngân hàng Nghiên cứu ứng dụng Chatbot trong lĩnh vực tư vấn dịch vụ ngân hàng Nghiên cứu ứng dụng Chatbot trong lĩnh vực tư vấn dịch vụ ngân hàng luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-
VŨ TRƯỜNG GIANG
NGHIÊN CỨU ỨNG DỤNG CHATBOT TRONG LĨNH VỰC TƯ VẤN DỊCH VỤ NGÂN HÀNG
Chuyên ngành : CÔNG NGHỆ THÔNG TIN
LUẬN VĂN THẠC SĨ KỸ THUẬT CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN
PGS.TS CAO TUẤN DŨNG
Hà Nội – Năm 2019
Trang 22
LỜI CAM ĐOAN
Tôi – Vũ Trường Giang – xin cam đoan
Luận văn tốt nghiệp (LVTN) Thạc sĩ này là công trình nghiên cứu của bản thân tôi dưới sự hướng dẫn của PGS.TS Cao Tuấn Dũng
Các kết quả nêu trong Luận văn tốt nghiệp là trung thực, không phải là sao chép toàn văn của bất kỳ công trình nào khác
Hà Nội, ngày tháng năm 2019
Tác giả LVThS
Vũ Trường Giang
Trang 33
LỜI CẢM ƠN
Đầu tiên, tôi xin được gửi lời cảm ơn sâu sắc nhất tới Thầy giáo – Phó Giáo sư, Tiến sĩ Cao Tuấn Dũng – Phó Viện trưởng Viện Công nghệ thông tin và Truyền thông, Trường Đại học Bách Khoa Hà Nội Thầy đã tận tình hướng dẫn và cho tôi những lời khuyên quý báu trong quá trình thực hiện luận văn này
Tiếp theo, tôi xin chân thành cảm ơn các thầy cô trong Viện Công nghệ thông tin và truyền thông, Viện đào tạo sau đại học, Trường Đại học Bách Khoa Hà Nội
đã tạo điều kiện cho tôi trong quá trình học tập và nghiên cứu tại trường
Cuối cùng, tôi xin bày tỏ lòng cảm ơn tới những người thân trong gia đình, bạn
bè đã động viên và giúp đỡ để tôi hoàn thành bản luận văn này
Hà Nội, ngày tháng năm 2019
Tác giả LVThS
Vũ Trường Giang
Trang 44
MỤC LỤC
LỜI CAM ĐOAN 2
LỜI CẢM ƠN 3
MỤC LỤC 4
DANH MỤC KÝ HIỆU, CÁC CHỮ VIẾT TẮT 6
DANH MỤC CÁC BẢNG 7
DANH MỤC HÌNH VẼ 8
1 Đặt vấn đề 10
2 Phương pháp đề xuất 13
3 Mục tiêu của nghiên cứu 15
4 Bố cục luận văn 15
CHƯƠNG I: KIẾN THỨC TỔNG QUAN 17
1.1 Tổng quan về Chatbot 17
1.1.1 Giới thiệu về chatbot 17
1.1.2 Sự phát triển của chatbot 18
1.1.3 Phân loại chatbot 20
1.1.4 Cấu trúc của một chương trình chatbot 23
1.1.5 Các tính năng cơ bản của chatbot 25
1.2 Các kỹ thuật ứng dụng trong chatbot 28
1.2.1 Xử lý ngôn ngữ tự nhiên (NLP/NLU) 28
1.2.2 Sinh ngôn ngữ tự nhiên (NLG) 38
1.2.3 Các kỹ thuật học máy (Machine learning) 40
1.2.4 Mạng nơ ron nhân tạo (Neural network) 42
1.3 Các dịch vụ tài chính, ngân hàng 45
1.3.1 Tổng quan dịch vụ tài chính, ngân hàng 45
1.3.2 Marketing trong lĩnh vực tài chính ngân hàng 46
1.3.3 Ứng dụng công nghệ trong lĩnh vực dịch vụ công nghệ 47
1.4 Một số công việc liên quan đến đề tài 48
CHƯƠNG II: XÂY DỰNG CHATBOT TƯ VẤN DỊCH VỤ NGÂN HÀNG THEO TIẾP CẬN HỌC MÁY 50
2.1 Mô tả bài toán 50
2.2 Mô hình hệ thống 51
Trang 55
2.2.1 Chuẩn bị dữ liệu 52
2.2.2 Tiền xử lý dữ liệu 54
2.2.3 Trích xuất đặc trưng 55
2.2.4 Huấn luyện mô hình 57
2.2.5 Quản lý hội thoại 58
CHƯƠNG III: KẾT QUẢ VÀ THỰC NGHIỆM 60
3.1 Công nghệ và nền tảng sử dụng 60
3.1.1 Ngôn ngữ lập trình 60
3.1.2 Thư viện và môi trường sử dụng 60
3.1.3 Độ đo của mô hình 61
3.2 Các tiêu chí đánh giá 62
3.3 Cài đặt và kết quả thử nghiệm 62
3.3.1 Xây dựng dữ liệu 62
3.3.2 Cài đặt thử nghiệm trích chọn đặc trưng 66
3.3.3 Cài đặt và thử nghiệm huấn luyện mô hình 68
3.3.4 Ảo hóa quản lý hội thoại 74
3.3.5 Tích hợp lên môi trường website của ngân hàng 76
3.4 Nhận xét chung 79
KẾT LUẬN 81
1 Tổng kết 81
2 Hướng phát triển 82
TÀI LIỆU THAM KHẢO 83
Trang 66
DANH MỤC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
NLP Natural Language Process Xử lý ngôn ngữ tự nhiên NLU Natural language understanding Hiểu ngôn ngữ tự nhiên NLG Natural language generation Sinh ngôn ngữ tự nhiên
FSM Finite state machine Máy trạng thái hữu hạn
SVM Support vector machine Véc tơ máy hỗ trợ
AI Artifficial Inteligence Trí truệ nhân tạo
TF - IDF Term frequency - Inverse
document frequency
Tần suất- Tần suất đảo nghịch
từ
LSTM Long short term memory Bộ nhớ ngắn dài
Trang 77
DANH MỤC CÁC BẢNG
Bảng 1 Mô tả cải tiến kỹ thuật được sử dụng trong các thế hệ chatbot 20
Bảng 2 Frame chatbot hỏi thông tin khách hàng truy vấn dịch vụ mở sổ tiết kiệm 34 Bảng 3 Ví dụ đoạn hội thoại hỏi về thông tin dịch vụ thẻ 53
Bảng 4 Kết quả tính toán thủ công giá trị TF-IDF 67
Bảng 5 Kết quả tính toán giá trị TF-IDF từ hàm được cài đặt 67
Bảng 6 Thử độ đo theo mô hình phân lớp với các bộ dữ liệu riêng biệt 71
Bảng 7 Thời gian thử nghiệm mô hình 73
Bảng 8 Tỷ lệ trả lời đúng của mô hình sau khi huấn luyện 73
Bảng 9 Một đoạn hội thoại thử nghiệm mô hình sau huấn luyện 74
Trang 88
DANH MỤC HÌNH VẼ
Hình 1 Các mốc thời gian phát triển của chatbot 18
Hình 2.Mô tả phép thử Turing 18
Hình 3 Biếu đồ của 4 loại chatbot 21
Hình 4 Cấu trúc một chương trình chatbot cơ bản 24
Hình 5 Các dịch vụ đáp ứng yêu cầu người dùng 25
Hình 6 Các ngân hàng trong nước nổi bật hiện nay 45
Hình 7 Gán nhãn từ theo mô hình B-I-O trong trích xuất thông tin 30
Hình 8 Mô tả quản lý hội thoại theo mô hình máy trạng thái hữu hạn FSA 33
Hình 9 Phương pháp Top-Down 37
Hình 10 Nhiệm vụ và kiến trúc Pipeline của NLG 39
Hình 11 Kiến trúc hệ thống phân lớp intent theo phương pháp học có giám sát 42
Hình 12 Mô tả neural đơn 42
Hình 13 Mô tả Neural network 43
Hình 14 Mô hình thiết kế tổng quan hệ thống chatbot 52
Hình 15 Tổ chức dữ liệu intents theo định dạng markdown 54
Hình 16 Tổ chức dữ liệu theo định dạng json 54
Hình 17 Những từ đặc trưng sẽ được nhóm vào một nhóm và đánh trọng số 56
Hình 18 Mô hình BoW được sử dụng trong NLP 56
Hình 19 2-Class SVM 57
Hình 20 Multi-Class SVM 57
Hình 21 LSTM trong luồng xử lý chatbot 58
Hình 22 Kiến trúc cơ bản của mô hình hóa đoạn hội thoại 59
Hình 23 Học tăng cường của một hệ thống quản lý hội thoại 59
Hình 24 Cài đặt thư viện cần thiết 68
Hình 25 Kết quả ước lượng độ chính xác tập dữ liệu huấn luyện phân loại ý định 70 Hình 26 Ma trận nhầm lẫn, không chuẩn hóa 71
Hình 27 Biểu đồ tương quan loss value và accuracy 72
Trang 99
Hình 29 Build và start server chatbot 77
Hình 30 Deploy ứng dụng client 77
Hình 31 Cửa sổ chatbot box 78
Hình 32 Script sử dụng tích hợp lên môi trường website của ngân hàng 78
Hình 33 Demo chatbot trên môi trường web 79
Trang 1010
MỞ ĐẦU
1 Đặt vấn đề
Trong giai đoạn cạnh tranh hiện nay, ngành công nghệ thông tin đang là một trong những lĩnh vực chủ chốt, quan trọng trong chiến lược phát triển của một đất nước Thành quả của nó mang lại cho nền kinh tế đã được chứng minh trong khoảng
10 năm trở lại đây Đến năm 2019, sự phát triển của công nghệ thông tin đã được xác định đây là một giai đoạn mới và giới công nghệ cũng như các phương tiên thông tin đại chúng đã đặt tên cho nó là thời đại công nghiệp 4.0 Cùng với sự phát triển của các lĩnh vực thương mại điện tử, các công nghệ ứng dụng dữ liệu đa phương tiện đang ngày càng phổ biến, các loại hình như âm thanh, hình ảnh ngày càng trở thành công
cụ truyền thông, giải trí cũng như làm việc chủ yếu trên môi trường mạng, hoặc nội
bộ hiện nay Các thiết bị giải trí, thiết bị thông minh ngày nay ngoài việc đáp ứng được mục đích là liên lạc, trao đổi thông tin thì nó cũng được phát triển tích hợp nhằm giải quyết mục đích khai thác, làm giàu các loại dữ liệu đa phương tiện một tốc độ rất nhanh, các dữ liệu này là những nguồn dữ liệu khổng lồ đã và đang ngày phong phú
và phức tạp
Theo thống kế của các chuyên gia thì hiện nay các nguồn dữ liệu này chiếm
từ 80-90% là dữ liệu không có cấu trúc và khối lượng dữ liệu này ngày càng tăng lên một cách nhanh chóng và đáng kể Vậy để các dữ liệu này có thể được tận dụng, sử dụng có hiệu quả trong những mục đích khác nhau và việc ứng dụng của nó cụ thể ở những đâu, hoàn cảnh nào là những bài toán không hề đơn giản, chủ đề này luôn là những vấn đề mà các nhà công nghệ luôn luôn đặt ra và nghiên cứu hướng, giải pháp ngày càng tốt hơn, hiệu quả hơn trong việc xử lý những dữ liệu này
Một trong những hướng đi mà các hãng công nghệ lớn đang hướng tới trong việc ứng dụng, sử dụng những dữ liệu khổng lồ này một cách có hiệu quả đó là ứng dụng vào trí tuệ nhân tạo (Artificial Intelligent, gọi tắt là AI) và các hệ thống học máy (Machine Learning, gọi tắt là ML) Nói đến trí tuệ nhân tạo hay học máy, chúng ta có thể nghĩ ngay đến các phần mềm ứng dụng trí tuệ nhân tạo đang rất đình đám hiện nay đó là các hệ thống trả lời tự động, trợ lý ảo, nhận diện khuôn mặt ứng dụng trên
Trang 1111
các thế hệ điện thoại thông minh, trên các mạng xã hội (facebook, twitter…), và đặc biệt là sự kiện nổi tiếng gần đây khi mà một hệ thống học máy đã chiến thắng được trí tuệ con người ở một khía cạnh nào đó, đó là Alphago, một hệ thống học sâu đã chiến thắng kiện tướng cờ vây người Hàn Quốc Lee Sedol thông qua các cơ chế tự học
Từ những ứng dụng thiết thực và hướng đi rất mới của công nghệ trí tuệ nhân tạo, học máy thì hãng công nghệ lớn hoạt động trong lĩnh vực này đã và đang đầu tư phát triển công nghệ AI và ML dựa trên những dữ liệu khổng lồ được cập nhật hàng giây từ người dùng Sản phẩm của AI và ML như nhận diện khuôn mặt, các hệ dự đoán, chatbot, hệ thống trả lời tự động (question-answering)
Vậy để ứng dụng công nghệ để xử lý các khối dữ liệu phi cấu trúc trên thì các
kỹ thuật có thể xử lý dữ liệu phi cấu trúc văn bản cần được phát triển Trong luận văn này, tác giá sẽ tập trung nghiên cứu các kỹ thuật có thể xử lý văn bản bằng cách phát triển một chatbot và ứng dụng chatbot trong bối cảnh giao tiếp giữa hệ thống tư vấn ngân hàng và khách hàng sử dụng dịch vụ của ngân hàng Chatbot là một tác nhân đàm thoại có thể tương tác với con người một cách tuần tự bằng ngôn ngữ tự nhiên Mục tiêu chính của luận văn tốt nghiệp này là xây dựng một chatbot để trả lời các câu hỏi phức tạp, thường đòi hỏi câu trả lời thậm chí phức tạp hơn trong một miền được xác định rõ Trọng tâm là chỉ trả lời các câu hỏi mà câu trả lời chất lượng đưa ra
Có thể dễ dàng nhận thấy chatbot hiện nay đã xuất hiện trên nhiều hệ thống đa phương tiên khác nhau Tuy nhiên, một trong những hoạt động dịch vụ hiện nay đang vẫn còn bỏ ngỏ đó là ứng dụng chatbot trong hoạt động tư vấn dịch vụ tài chính ngân hàng, các hoạt động của các tổ chức tài chính như chứng khoán, tín dụng, hiện chưa
có một nghiên cứu ứng dụng nào cụ thể đối với lĩnh vực này Những năm gần đây số lượng khách hàng sử dụng các dịch vụ tài chính tăng từ các ngân hàng, tổ chức tín dụng lên với con số vô cùng lớn, ứng dụng chatbot trong giao tiếp với khách hàng sẽ giúp cho hoạt động kinh doanh của các tổ chức tài chính dịch vụ hiệu quả hơn rất nhiều Đặc biệt, các hoạt động về tư vấn ngân hàng trong các hoạt động cho vay, tín dụng là những hoạt động mang tính chất lặp đi lặp lại khá nhiều, trong khi hiện nay
Trang 12Trong một vài năm gần đây, các công ty tư vấn đã ứng dụng nhiều tiến bộ và phát triển của lĩnh vực học máy phục vụ hỗ trợ khách hàng trong quá trình ra quyết định Đặc biệt trong lĩnh vực Marketing và IoT, đây là các lĩnh vực có nhiều thách thức với khối lượng dữ liệu lớn, dữ liệu không cấu trúc Các chuyển gia cho rằng có đến 80-90% dữ liệu trong các tổ chức là không có có cấu trúc, và số lượng này hiện nay vẫn cho thấy tín hiệu tăng lên rất nhiều Vì vậy, đây sẽ là một thử thách về mặt
kỹ thuật đối với những dữ liệu phi cấu trúc cần được phát triển và cải thiện nhiều Trong nghiên cứu này, tác giả xây dựng một chatbot để trả lời những câu hỏi phức tạp và cả những câu trả lời tương ứng cũng phức tạp hơn, cụ thể là trên lĩnh vực tài chính Tại nghiên cứu này tác giả chỉ tập trung vào việc trả lời các câu hỏi để làm sao có được một câu trả lời với chất lượng cao nhất Tất nhiên trong đó có những câu hỏi không nằm trong phạm vi của chatbot sẽ được gửi thẳng trực tiếp đến con người
để xử lý Ví dụ hệ thống có thể rất hữu dụng cho các công ty khi họ nhận được các câu hỏi tương đối phức tạp thì hệ thống của họ sẽ phải thực hiện đưa ra những câu trả lời với chất lượng cao nhất sát nhất với mong muốn giải đáp của khách hàng, trong khi đó cũng phải làm sao để giảm thiểu được tối đa sự can thiệp của con người trong quá trình thực hiện dịch vụ hỏi đáp này, điều này cũng sẽ đồng nghĩa với việc giảm chi phí cho tổ chức đang ứng dụng chatbot này Một chatbot có thể thay thế cho các
bộ phận như helpdesk, trả lời tin nhắn tự động, trả lời các phản hồi trên mạng xã hội hoặc tư vấn về các sản phẩm dịch vụ cung cấp Việc xử lý để xây dựng nên một chatbot trong nghiên cứu này tập trung vào hai kỹ thuật quan trọng và chủ yếu đó là
xử lý ngôn ngữ tự nhiên và đưa ra các phản hồi đến người dùng với độ tin cậy và chính xác cao
Trang 1313
2 Phương pháp đề xuất
Bài toán về các hệ thống hỏi đáp nói chung hay chatbot nói riêng đã có nhiều cách giải quyết Trên thực tế, khi chúng ta đứng trước bài toán xây dựng một chatbot cho riêng mình hoặc cho một tổ chức thì, câu hỏi luôn đặt ra rằng nên bắt đầu từ đâu, lựa chọn phương pháp nào, kỹ thuật nào để xây dựng chatbot, việc lựa chọn này sẽ quyết định việc xây dựng chatbot thành công hay không
Trải qua quá trình phát triển của chatbot trong một thời gian dài như vậy, có nhiều loại chatbot được áp dụng những kỹ thuật khác nhau, chúng ta có thể tổng quát lại gồm có 2 phương pháp tiếp cận chính để có thể xây dựng lên một hệ thống chatbot
đó là:
- Máy trạng thái hữu hạn (Finite state machines - FSM)
- Học máy (Machine learning - ML)
Đối với phương pháp máy hữu hạn (FSM) [1] ý tưởng chung là dựa trên kỹ
thuật khớp mẫu (pattern matching) Các FSM này có thể thực hiện những kỹ thuật khớp mẫu từ đơn giản cho đến phức tạp cho các câu hỏi (được coi là một chuỗi văn bản đến) từ người dùng bằng những mẫu hội thoại (patterns) đã được định nghĩa trước Khớp mẫu còn được gọi là kỹ thuật tự động hữu hạn và kỹ thuật này không được xây dựng với mục đích phản hồi lại người dùng những câu hỏi ngoài phạm vi hoặc rộng hơn những nội dung mà tập mẫu của nó được định nghĩa Đây cũng là kỹ thuật khá cổ điển, độ phức tạp không khó và nó có thể dễ dàng để xây dựng với chi phí thấp, tuy nhiên phương pháp này không hiệu quả đối với miền dữ liệu phạm vi rộng hoặc những khả năng phản hồi linh hoạt, tự nhiên
Phương pháp học máy được ứng dụng với mục đích nhằm xây dựng một
chatbot với tính đáp ứng cao tới người dùng, khả năng bao quát ở một miền rộng hơn những gì mà nó đang có, những câu trả lời, phản hồi không cứng nhắc như những gì
mà nó được sắp đặt, định nghĩa trước và việc áp dụng phương pháp Với những kỹ thuật phát triển hiện nay và với những vấn đề đã được đặt ra, thì việc tiếp cận theo phương pháp học máy là một cách tiếp cận khả thi nhất để thực hiện
Trang 1414
Bản chất của phương pháp học máy sử dụng các mô hình mô phỏng mạng nơ ron (Neural network) để thực hiện cho mục đích xây dựng chatbot Bằng cách này, các chatbot sẽ có khả năng phản ứng tốt, hiệu quả hơn trong việc quản lý hội thoại với con người hơn so với phương pháp máy hữu hạn Bên cạnh đó, ứng dụng học máy ở một kỹ thuật phức tạp hơn là học sâu (deep learning) sẽ còn giúp cho bot có thể kiểm soát được đa miền (multi-domain) hơn trên phương diện đa lĩnh (multi-service) vực hơn
Lựa chọn phương pháp tiếp cận nào để xây dựng chatbot cũng chính là việc chúng ta xác định lựa chọn kiến trúc nào cho chatbot của mình Điều này phụ thuộc vào loại chatbot mà chúng ta định phát triển hay lĩnh vực nào mà chúng ta muốn áp dụng Đối với lĩnh vực như tài chính, ngân hàng đây cũng có thể được coi là một miền ứng dụng đóng Tuy nhiên, lĩnh vực lại có nhiều đối tượng cần phải thực hiện xử lý
để định hướng được đoạn hội thoại giữa chatbot và người dùng Việc xác định ý định của người dùng hết sức quan trọng để biết được chatbot cần phải trao đổi những gì với khách hàng, mặt khác việc này cũng cần phải được ứng dụng linh hoạt hơn với yêu cầu người dùng để tạo tính thân thiện, thu hút khách hàng Chatbot ứng dụng có thể là yếu tố giúp cho khách hàng có thiện cảm với dịch vụ mà ngân hàng đang cung cấp hơn, đáp ứng nhanh chóng hơn, chính xác hơn Yếu tố này cũng ảnh hưởng trực tiếp đến việc kinh doanh của ngân hàng Do đó, lựa chọn phương pháp tiếp cận để xây dựng chatbot là học máy sẽ giúp cho việc giải quyết bài toán dễ dàng hơn
Hiện nay có nhiều mô hình huấn luyện được sử dụng trong học máy có thể sử dụng như Long Short Term Memory (LSTM), RNN, Support Vector Machine (SVM)… đề tài sẽ lựa chọn SVM kết hợp với LSTM để thực hiện nghiên cứu và thử nghiệm xây dựng chatbot trên miền đóng phục vụ tư vấn các dịch vụ mà ngân hàng cung cấp
Trang 1515
3 Mục tiêu của nghiên cứu
Tác giả lựa chọn đề tài nghiên cứu với mục tiêu tổng quát là nghiên cứu về cấu trúc của một chatbot và ứng dụng chatbot cho lĩnh vực tài chính ngân hàng, các công việc chính cần cần thực hiện sẽ tập trung vào việc:
- Nghiên cứu các công nghệ tiên tiến được ứng dụng và các kỹ thuật xây dựng chatbot như xử lý ngôn ngữ tự nhiên, xác định ý định người dùng, trích xuất thông tin, quản lý hội thoại và các kỹ thuật xử lý học máy trong ứng dụng chatbot
- Đưa ra được bài toán thực nghiệm, ứng dụng một số mô hình ứng dụng chatbot AI (hay các hệ thống question-answering) cho bài toán dự đoán, hỏi đáp trong một lĩnh vực cụ thể Từ kết quả nghiên cứu này đưa ra những kết luận, đánh giá tính khả thi khi áp dụng rộng rãi mô hình hỏi đáp trong lĩnh vực cụ thể là tư vấn dịch vụ của ngân hàng Bên cạnh mục tiêu tổng quát, luận văn cũng xác định đối tượng chính của nghiên cứu là xây dựng lên một chatbot với việc trả lời các câu hỏi phức tạp, và cũng đồng thời yêu cầu cung cấp lại người dùng những câu trả lời phức tạp hơn, đa dạng hơn với miền dữ liệu về tài chính Tác giả chỉ tập trung vào việc chatbot sử dụng
kỹ thuật xử lý ngôn ngữ tự nhiên và học máy để truy vấn câu trả lời từ mô hình dữ liệu đã được huấn luyện từ bộ dữ liệu câu hỏi-đáp trên một miền đóng cụ thể
Vậy tóm lại, các mục tiêu cụ thể cần đạt được của nghiên cứu:
- Ứng dụng được các phương pháp học máy để đưa ra được phương án triển khai một chatbot tư vấn dịch vụ ngân hàng
- Đánh giá được tính hiệu quả áp dụng và khả năng triển khai chatbot trong thực tế
- Rút ra được những kết luận, đề xuất phát triển ứng dụng
4 Bố cục luận văn
Bố cục của luận văn sẽ gồm những phần chính sau:
Mở đầu: Đặt vấn đề và đưa ra hướng nghiên cứu bài toán
Chương 1: Kiến thức tổng quan: Giới thiệu các kiến thức tổng quan về
chatbot, các thành phần của một hệ thống chatbot
Trang 1616
Chương 2: Xây dựng Chatbot tư vấn dịch vụ ngân hàng : Thiết kế để xuất,
mô tả tổng thể hệ thống thử nghiệm gồm các bước thực hiện
Chương 3: Kết quả và thực nghiệm: Đề xuất bài toán, ứng dụng framework
mã nguồn mở để xây dựng thử nghiệm bài toán Đưa ra đánh giá thực tế về hệ thống, đề xuất giải pháp cải tiến
Kết luận: Đưa ra kết luận những kết quả đạt được trong luận văn và định
hướng phát triển cho bài toán rộng rãi trong thực tế
Trang 1717
CHƯƠNG I: KIẾN THỨC TỔNG QUAN 1.1 Tổng quan về Chatbot
1.1.1 Giới thiệu về chatbot
Chatbot được biết đến như một hệ thống hỗ trợ giao tiếp và nó có thể tương tác với con người theo dạng hỏi-đáp (question-answering) sử dụng ngôn ngữ tự nhiên Chatbot trước đây chỉ sử dụng hệ thống hội thoại dựa trên ngôn ngữ tự nhiên với nội dung chỉ trong một phạm vi nhất định với những câu từ, chủ đề đã được định sẵn Tuy nhiên, chatbot hiện nay đang phát triển rộng rãi, ứng dụng trên nhiều lĩnh vực khác nhau và cho nhiều mục đích khác nhau Chatbots ngày nay đã cung cấp khả năng trợ giúp theo phương thức logic học, thậm chí còn có khả năng tư duy tự nhiên dựa trên công nghệ học máy, trí tuệ nhân tạo, nó được sử dụng hiệu quả cho các lĩnh vực dịch vụ khách hàng hoặc cho các hệ thống giải trí
Mặc dù chatbots đã và đang được nghiên cứu khá rộng, tuy nhiên chúng ta có thể nhận thấy thành quả là các hệ thống hiện tại đối với một số lĩnh vực sâu đã gần tiệm cận với tri thức của con người hơn hoặc đã cho những phản hồi gần như là chính xác Toàn bộ các xử lý để đưa ra các phản hồi từ trong việc xử lý ngôn ngữ tự nhiên đều được xử lý tuyệt vời từ các hệ thống máy tính Thiết kế một hệ thống máy tính
để có thể hiểu và đưa ra ngôn ngữ của con người là một lĩnh vực sâu của học máy mà chúng ta hay nghe đến trong thời gian gần đây là Trí tuệ nhân tạo (AI), đặc biệt là xử
lý ngôn ngữ tự nhiên
Chatbots khá phổ biến ở thời điểm hiện tại Có rất nhiều tạp chí chuyên sâu về chatbot được phổ biến trên môi trường internet như Chatbot Journalvà cộng đồng như Chatbot News Sự phổ biến này đã mang đến những bước đột phá cho các công
ty lớn như Facebook, Microsoft, Google và IBM trong thế giới trí tuệ nhân tạo Không những thế một điểm nữa khiến cho chatbot trở nên phổ biến đó là nó dễ dàng với mọi người để có thể tự tạo một hệ chatbot riêng mà không cần bất cứ một kỹ năng lập trình nào Hiện nay, có nhiều websites và dịch vụ mà ở đó mọi người đều có thể sử dụng để tạo một ứng dụng bot riêng cho mình, phổ biến có thể kể đến như API.ai, Chatfuel, Kit Bot và Facebook wit.ai [1]
Trang 1818
1.1.2 Sự phát triển của chatbot
Chatbot được phát triển từ khi hình thành những ý tưởng đầu tiên cho đến nay
(thời điểm 2019) cũng đã gần 70 năm, cũng có thể nói một chặng đường lịch sử khá
dài cho một lĩnh vực công nghệ
Hình 1 Các mốc thời gian phát triển của chatbot
Từ các phép thử Turing năm 1950:
Về cơ bản phép thử được xuất phát từ một ý tưởng của một người có tên Alan
Turing Turing là một loạt các phép thử dựa trên việc phân tích câu trả lời của một
máy tính Các phép thử Touring được thực hiện để xác định xem một chương trình
máy tính có thể phân biệt được máy tính với con người trong một cuộc trò chuyện chỉ
có văn bản thuần túy hay không?
Hình 2.Mô tả phép thử Turing
Bằng cách gõ câu hỏi cho cả hai đối tượng C và B thử nghiệm, người thẩm
vấn A sẽ cố gắng xác định đối tượng nào là máy tính và đối tượng nào là con người
Máy tính sẽ vượt qua các phép thử Turing nếu người thẩm vấn không thể nói sự khác
biệt giữa chủ thể con người và máy tính
Trang 1919
Cho đến Sophia AI năm 2016:
Sophia AI thực chất đây là một robot có khả năng chuyển động phần khuôn mặt và có khả năng biểu cảm những trạng thái cơ bản gần giống với con người Đặc biệt robot này được tích hợp trí tuệ nhân tạo cho phép giao tiếp theo dạng một chatbot giọng nói với con người theo những đoạn hội thoại chuyên sâu rất đặc biệt Các đoạn hội thoại hỏi – đáp hoàn toàn có tính liên hệ một cách logic với nhau ngay cả khi những đoạn hội thoại đã khá xa với nội dung trao đổi lúc đầu
Tiếp theo đó là sự phát triển của chatbot được gắn với những hệ thống được đặt tên theo từng bước tiến của nó:
BASEBALL Hệ thống QA đầu tiên Cở sở dữ liệu tri
Mã thông báo, loại bỏ từ khóa
Trang 2020
và khớp keyword SmarterChild Chatbot phân tán đầu
tiên qua nền tảng tin nhắn
Sophia AI Được tích hợp hoàn toàn
trí tuệ nhân tạo
Dựa trên khả năng
tự học thông qua những đoạn hội thoại
Dựa trên học máy
Bảng 1 Mô tả cải tiến kỹ thuật được sử dụng trong các thế hệ chatbot
1.1.3 Phân loại chatbot
Trong phần này luận văn sẽ chỉ ra sự khác nhau giữa các loại chatbot và các tính năng của chúng Chúng ta sẽ cùng thảo luận loại và tính năng nào của chatbot thuận tiện cho mảng mà nó được áp dụng, đặc biệt là với những loại câu hỏi mang tính phức tạo cao và cần những câu trả lời có độ tin cậy cao Xa hơn nữa chúng ta sẽ cùng trao đổi các tính năng chat và kỹ thuật để đạt được những mục tiêu này
Chatbots hiện nay khá đa dạng Tuy nhiên, về cơ bản hầu hết đều sử dụng việc phân loại dựa trên phạm vi miền dữ liệu và cơ chế phản hồi giao tiếp giữa chatbot và chủ thể Trong hình này, chatbots được tổ chức vào các nhóm dựa trên miền dữ liệu khác nhau mà chúng vận hành kết hợp việc dựa trên cách mà chúng nhận câu trả lời Các chatbots có phạm vi mở (open domain) có thể trả lời các câu hỏi tương tác về những chủ đề rộng hơn, còn đối với phạm vi giới hạn (closed domain) thì chatbots chỉ hoạt động trên một chủ đề cụ thể mà các chatbots có kiến thức về phạm vi đó [2] Tất nhiên là không có rào cản cứng nhắc giữa phạm vi mở và phạm vi miền đóng
Ví dụ: Một chatbot được sử dụng để phản hồi lại các dòng trạng thái được
đăng trên mạng xã hội Twitter là một ví dụ cho phạm vi mở của chatbot, hoặc chatbot
có thể được sử dụng để đặt pizza tại một cửa hàng ăn nào đó chẳng hạn thì đây lại là một phạm vi hẹp, chỉ mang chủ đề về các loại bánh pizza Nhưng một chatbot để trả
Trang 21đã được định sẵn, hoặc nâng cao hơn có thể sử dụng một hoặc một nhóm kỹ thuật học máy (machine learning) Hệ thống này sẽ luôn trả về một câu trả lời sẵn có từ một tập các câu phản hồi đã được định nghĩa trước
- Đối với hình thức dựa trên cơ chế tự sinh (generative-based): Kỹ thuật này được áp dụng trên hình thức không có các câu trả lời định trước như truy xuất, hệ thống sản sinh ra các câu trả lời tương ứng bằng chính khả năng của nó
Trong hình dưới đây, về lý thuyết kết hợp lại các cách phân loại trên có thể cho chúng ta 4 loại chatbot:
Truy xuất Tự sinh
Loại phản hồi
Hình 3 Biếu đồ của 4 loại chatbot [2]
Miền mở (open-domain)
Miền đóng (closed-domain)
Trang 2222
1) Phạm vi miền mở kết hợp với phản hồi dựa trên truy xuất
Các phản hồi dựa trên truy xuất là các phản hồi từ một tập cố định, trong một phạm vi mở (hay còn gọi là miền mở) thì những tập cố định này sẽ là ‘Bất kỳ câu hỏi
mà ai có thể cũng nghĩ đến’ Tất nhiên, nó không thể hoàn thiện bởi lý do, miền dữ liệu đóng không thể đáp ứng với mọi câu hỏi trên một miền mở, sẽ có những phản hồi không nằm trong những tập đã định sẵn và vì thế loại chatbot này là không khả thi
2) Phạm vi miền mở kết hợp với phản hồi dựa trên cơ chế tự sinh
Trên thực tế thì đây chính là một loại kết hợp để cho ra một chatbot lý tưởng Như đã biết, chúng ta đều muốn rằng hệ thống có thể tiếp nhận bất kỳ câu hỏi nào và nhận được câu trả lời hợp lý với mọi hoàn cảnh câu hỏi Để giải quyết vấn đề này, các phản hồi dựa trên cơ chế tự sinh này sẽ ứng dụng công nghệ trí tuệ nhân tạo tổng quát (Artificial General Intelligence - AGI) [3] Điều này có nghĩa rằng chúng ta mong muốn chatbot là một cỗ máy thông minh, nó có thể thực thi thành thành công tương tự như trí thông minh của con người Đây là một phạm vi nghiên cứu đặc biệt chuyên sâu và phạm vi thì lại rộng do đó, hiện nay chưa có hang công nghệ, chuyên gia hay tổ chức nào thực sự nghiên cứu kỹ về loại hình chatbot này
3) Phạm vi miền đóng với phản hồi dựa trên truy xuất
Trong phạm vi này, chatbot được huấn luyện trong một tập dataset với dạng text trong một miền nhất định Những câu hỏi thuộc lĩnh vực của chatbot sẽ được trả lời bằng một phản hồi từ tập huấn luyện dataset Chatbot sẽ không có câu trả lời khi câu hỏi không nằm trong miền được huấn luyện hoặc những câu hỏi không lường trước Cách mà hầu hết các công ty đối mặt và xử lý với vấn đề này đó là khi có một câu hỏi chatbot không thể trả lời đó là gửi thẳng câu hỏi đó đến trực tiếp con người
xử lý
4) Phạm vi miền đóng với phản hồi dựa trên cơ chế tự sinh
Với loại phạm vi này, chatbots nên sử dụng kỹ thuật học máy (machine learning), trí tuệ nhân tạo (AI) để tạo ra những câu trả lời cho các câu hỏi nhận được Các câu trả lời được tạo ra giúp chatbot có thể xử lý các câu hỏi có trong tập dữ liệu
Trang 23Với loại chatbot thứ nhất (Open domain retrieval-based) là không khả thi trong thực tế và loại thứ 2 thì chưa được xây dựng thành công bởi các hang công nghệ lớn nào ngay cả là Google hay Microsoft Bên cạnh đó thì, cả hai hình thức gồm phương thức dựa trên truy vấn và dựa trên việc tự sinh câu trả lời trên miền giới hạn đã được ứng dụng nhiều ở thời điểm hiện tại, thông qua nhiều nghiên cứu thì độ chính xác của các phản hồi đã được cải thiện rất nhiều và miền cũng đã được mở rộng hơn so với miền mà nó được định hướng, ngoài ra việc cải thiện về mặt ngữ pháp và độ tin cậy của các phản hồi cũng đang được tập trung cải thiện Trong tương lai, khi mà kỹ thuật
tự sinh được cải thiện và tập dataset phủ rộng hơn miền câu hỏi và câu trả lời thì có thể tạo một chatbot dựa trên kỹ thuật tự sinh này cho mọi lĩnh vực
Như vậy, từ những yếu tố trên tác giả quyết định lựa chọn theo hướng nghiên cứu chatbot thực hiện trên phạm vi giới hạn (miền đóng) phục vụ cho phạm vi lĩnh vực tài chính mà đề tài đã lựa chọn kết hợp với cách thức dựa truy xuất và tự sinh phản hồi
1.1.4 Cấu trúc của một chương trình chatbot
Cấu trúc của một chương trình chatbot (ứng dụng cơ chế tự sinh) thông thường sẽ
có 3 lớp thành phần chính gồm [4]:
Trang 24- Lớp giao diện người dùng (presentation layer): Đảm nhiệm nhiệm vụ thu
thập các câu hỏi, truy vấn từ người dùng thông qua các ứng dụng phổ biến hiện nay như webapp, mobile, …
- Lớp học máy hay lớp xử lý dữ liệu (data processing layer): Là lớp xử lý dữ
liệu đầu vào, trước đây với những chatbot truyền thống thì lớp này là lớp đảm nhiệm việc thực hiện phân tích câu hỏi, dữ liệu truy vấn đầu vào vào thực hiện khớp mẫu với những tập dataset có trong cơ sở dữ liệu Đối với những hệ chatbot sau này, lớp
xử lý dữ liệu này đảm nhận vai trò quan trọng hơn đó là xử lý ngôn ngữ tự nhiên, phân tích ý định người dùng, huấn luyện cho chatbot sau… sau đó những dữ liệu được gửi đến phần lõi ra quyết định để lựa chọn những phản hồi với độ chính xác cao nhất
- Lớp quản lý dữ liệu (data management layer): Là lớp lưu trữ dữ liệu các
tập câu trả lời, câu hỏ theo kiểu quản lý hội thoại, nó có nhiệm vụ xác định được hành
Trang 2525
động (action) tiếp theo dựa vào trạng thái hành động trước đó hay ngữ cảnh hội thoại Các ngữ cảnh này phải được đối chiếu trong các kịch bản dựng sẵn (history) đã đào tạo cho bot Thành phần này cũng đảm nhiệm việc lấy dữ liệu từ các API khác gọi trong action
- Một số thành phần quan trọng khác gồm:
+ Sinh ngôn ngữ tự nhiên để trả về phản hồi cho người dụng (NLG) + Message backend là thành phần chịu trách nhiệm trả ra các phản hồi
và hay tiếp nhận những thông điệp hỏi để gửi vào lớp phân tích dữ liệu
1.1.5 Các tính năng cơ bản của chatbot
Chatbots có thể có nhiều chức năng khác nhau và một vài chức năng trong đó đóng vai trò chính quan trọng cho ứng dụng của chúng ta Chúng ta rất cần hệ thống bot để nhận được những câu trả lời đúng, đủ với ý định của người dùng Chúng ta cần bot để lựa chọn những thông tin mở rộng từ người dùng và chúng ta muốn một hệ thống bot có thể thực hiện những đoạn hội thoại (chat) thay cho việc nhận một câu trả lời cho một câu hỏi theo cách đơn thuần
Theo hướng người dùng, chatbot có thể được ứng dụng tại các lĩnh vực gồm:
Hình 5 Các dịch vụ đáp ứng yêu cầu người dùng
CHATBOT
Personal assistant
Product avertisment
Services support Order,
booking Search,
infor…
Trang 2626
Trợ lý cá nhân (Personal Assistant)
Ví dụ: Mark Zuckerberg cũng đã sở hữu Jarvis riêng của mình từ năm 2016 Apple với trợ lý ảo Siri hay Window với Cotana
Thanh toán trực tuyến
Tuy nhiên, xét về mặt kỹ thuật thì để nhận dạng các tính năng của chatbot và những giới hạn của chúng, chúng ta có một số tính năng như sau:
Tính năng thu nhận và xử lý ngôn ngữ tự nhiên
Để cung cấp được nguồn dữ liệu đầu vào cho hệ thống chatbot, các dữ liệu đầu vào sẽ được tiếp nhận và xử lý ngôn ngữ về mặt ngữ nghĩa, cú pháp hay thậm chí là
cả cả về mặt ngữ pháp, từ đó đưa ra những câu hỏi với nội dung gần với tập dataset
nhất
Tính năng tự cải thiện khả năng đưa ra các câu trả lời chính xác
Trên thực tế, những tổ chức, công ty có ứng dụng hệ thống chatbot thì việc đưa ra các câu trả lời đúng cho các khách hàng của họ là rất quan trọng Nó ảnh hưởng đến chất lượng dịch vụ của các tổ chức đó và nó hoàn toàn có thể ảnh hưởng đến số lượng khách hàng tham gia vào các hệ thống của họ Có nhiều phương pháp khác nhau để nhận được câu trả lời đúng nhất từ hệ thống chatbot như:
Nhiều thuật toán học máy có thể nhận được tỷ lệ chắc chắn cao cho những câu trả lời đầu ra Chúng ta có thể lập trình cho chabot để chỉ nhận được những câu trả lời khi mà độ chắc chắn ở mức cao Trong trường hợp mức độ chắc chắn thấp thì
hệ thống hoàn toàn có thể gửi thẳng các câu hỏi này cho con người với những đề xuất câu trả lời kèm theo mà chatbot đã lựa chọn đưa ra để con người có thể lựa chọn hoặc
ra quyết định Nếu con người đồng ý với một trong các lựa chọn mà chabot đã đề
Trang 27câu đầu tiên: “Câu hỏi của bạn có phải là một câu hỏi nào đó tương tự [trong tập dataset câu hỏi đã định nghĩa]?” Nếu người dùng trả lời có câu trả lời mà chatbot
đưa ra sẽ mang tính đúng cao hơn, nếu không câu hỏi có thể được gửi trực tiếp đến con người để xử lý
Trong tập dữ liệu hỏi-đáp có nhiều câu hỏi và câu trả lời khác nhau, nhưng một vài dữ liệu có thể sẽ trùng nhau Nếu chúng ta có thể tạo ra một tập chuẩn các câu hỏi và câu trả lời và thay thế toàn bộ những câu hỏi kiểu tương tự nhau thì hệ thống sẽ thực hiện phân loại dễ dàng hơn đối với những câu hỏi được gửi đến hệ thống mà đã có trong tập dataset và nó sẽ tạo cơ hội lớn hơn trong việc phản hồi lại một câu trả lời đúng Về mặt công nghệ, nếu như có quá nhiều câu hỏi tương tự trong dataset thì thực tế là sẽ khó để có thể khớp những câu hỏi mới với những tập câu hỏi trong tập dataset của hệ thống, nếu câu trả lời phản hổi lại câu hỏi tương tự thì việc khớp dữ liệu là không cần thiết
Tính năng trả về một câu trả lời
Về kỹ thuật, chúng ta muốn một câu trả lời được phản hồi một cách tốt nhất
từ tập dataset của chúng ta thì về cơ bản nền tảng của chúng ta vẫn xây dựng một bảng xếp hạng danh sách các câu trả lời cho một câu hỏi được gửi đến đến, thông qua các kỹ thuật huấn luyện các câu trả lời sẽ được đánh thứ hạng (score) để đánh giá những câu trả lời đúng nhất theo thứ tự, và khi gửi phản hồi thì chúng ta sẽ lâp trình cho chatbot chỉ hiển thị những câu trả lời có thứ hạng cao nhất
Những thuộc tính khác sẽ cho bot trao đổi lại với người dung và không chỉ trả lời trong câu hỏi đầu tiên Khi lập trình một chatbot chúng ta cần giữ ngữ cảnh (các
Trang 2828
câu hỏi trước, hoặc các câu hỏi liên quan) trong bộ nhớ và không xem các câu hỏi mới là một truy vấn đơn Với ngữ cảnh này về mặt kỹ thuật, chúng ta có thể nhận được các từ trong những câu hỏi trước và đánh một trọng số nhỏ hơn những từ có ở câu hỏi hiện tại, tuy nhiên vẫn phải thành lập các vector từ (word) đến tài khoản câu hỏi trước đó Sau đó, chúng ta có thể khớp những vector từ (word) này đến câu hỏi trong cơ sở dữ liệu của chúng ta
Trả về một câu hỏi
Để đáp ứng được các câu trả lời cho một câu hỏi phức tạp ở một phạm vi cụ thể thì đôi khi những thông tin mở rộng hơn cần đến từ người dùng Ví dụ: nếu một người dùng đặt câu hỏi là năm nào anh ta sẽ được nhận lương hưu, chúng ta cần biết được anh ta sinh năm nào Đây sẽ là những thuộc tính cần thiết và đẩy đủ hơn nếu chatbot có thể nhận biết và phản hồi lại câu trả lời đề nghị người dùng về ngày và tháng sinh
Rõ ràng, khi người dùng đưa ra những câu hỏi khá chung chung, không có nội dung đầy đủ để có thể thực hiện đánh giá thứ hạng các câu trả lời, thì chatbot hoàn toàn có thể dựa vào những từ (word) trong câu hỏi để tìm kiếm trong tập dataset câu hỏi- trả lời và trả lại một “câu hỏi” nhằm làm rõ ý định của người dùng
Về mặt kỹ thuật, trả về một câu hỏi phù hợp là tương đối khó Bởi vì chatbot cần hiểu được ngữ cảnh nào mà người dùng đang hỏi, loại thông tin nào cần để trả lời cho câu hỏi này, và loại thông tin nào mà người dùng đang có ý định muốn trao đổi nhưng khi hỏi thì không cung cấp cho chatbot Để xử lý với những loại câu hỏi không rõ nghĩa như vậy trong hoàn cảnh mà chatbot không thể trả về một câu hỏi đề nghị làm giàu thông tin thì ta có thể lập trình để Chabot có thể sử dụng phương án chuyển tiếp đến con người để xử lý
1.2 Các kỹ thuật ứng dụng trong chatbot
1.2.1 Xử lý ngôn ngữ tự nhiên (NLP/NLU)
a Xác định ý định người dùng (intents)
Khi người dùng truy cập hệ thống chatbot thông thường họ đều có mong muốn
hệ thống sẽ đưa ra những hành động trợ giúp mình về một vấn đề nào đó Ví dụ:
Trang 2929
Khách hàng của một ngân hàng có thể yêu cầu hệ thống chatbot hỗ trợ họ để mở một tài khoản thanh toán, họ có thể đưa ra yêu cầu liệt kê các giao dịch khi bắt đầu cuộc hội thoại
Vậy, để đưa ra hỗ trợ được chính xác cho khách hàng, chatbot cần xác định được ý định (intent) đó của khách hàng Việc xác định ý định của người dùng sẽ quyết định các đoạn hội thoại tiếp theo giữa người và chatbot sẽ diễn ra như thế nào Vì thế, ngay từ những đoạn hội thoại mở đầu, nếu xác định sai ý định người dùng, chatbot sẽ đưa ra những phản hồi không đúng, không hợp ngữ cảnh Khi đó, người dùng có thể thấy không hài lòng và không tiếp tục sử dụng hệ thống Bài toán xác định ý định người dùng vì thế đóng vai trò rất quan trọng trong hệ thống chatbot
Đối với phạm vi miền đóng, chúng ta có thể giới hạn rằng số lượng ý định của người dùng nằm trong một tập hữu hạn những intent đã được định nghĩa sẵn, có liên quan đến những nghiệp vụ doanh nghiệp mà chatbot có thể hỗ trợ Với giới hạn này, bài toán xác định ý định người dùng có thể quy về bài toán phân lớp văn bản Với đầu vào là một câu giao tiếp của người dùng, hệ thống phân lớp sẽ xác định intent tương ứng với câu đó trong tập các intent đã được định nghĩa
Để xây dựng một mô hình phân lớp intent, chúng ta cần ứng dụng kỹ thuật học máy và trí tuệ nhân tạo để thực hiện phân lớp dựa trên một tập dữ liệu huấn luyện bao gồm các cách diễn đạt khác nhau cho mỗi intent Ví dụ, cùng một mục đích hỏi về tỷ giá USD so với VNĐ trong ngày hôm nay, người dùng có thể dùng những cách diễn đạt sau:
- Tỷ giá USD hôm nay là bao nhiêu?
- Giá mua bán USD hôm nay bao nhiêu?
- 01 USD bằng bao nhiêu tiền VNĐ?
Có thể nói, bước tạo dữ liệu huấn luyện cho bài toán phân lớp intent là một trong những công việc quan trọng nhất khi phát triển hệ thống chatbot và ảnh hưởng lớn tới chất lượng sản phẩm của hệ thống chatbot về sau Công việc này cũng đòi hỏi thời gian, công sức khá lớn của những người, tổ chức phát triển chatbot
b Trích xuất thông tin (Extracting features)
Trang 3030
Bên cạnh việc xác định intent trong câu hội thoại của người dùng, chúng ta
cần trích xuất các thông tin cần thiết trong đó Các thông tin cần trích xuất trong một
câu hội thoại thường là các thực thể thuộc về một loại nào đó, một nội dung hay một
chủ đề nào đó Ví dụ: Khi một khách hàng muốn mở sổ tiết kiệm, hệ thống cần biết
loại sổ cần mở, kỳ hạn gửi, số tiền gửi, họ tên, chứng minh thư nhân dân,…Thành
phần xử lý ngôn ngữ tự nhiên (NLP) và hiểu ngôn ngữ tự nhiên (NLU) của các hệ
thống chatbot thường hỗ trợ các loại thực thể sau:
- Họ tên (Customer name)
300 triệu vnđ
Hình 6 Gán nhãn từ theo mô hình B-I-O trong trích xuất thông tin
Đầu vào của một module trích xuất thông tin là một câu hội thoại Module
trích xuất thông tin cần xác định vị trí của các thực thể trong câu (vị trí bắt đầu và vị
trí kết thúc của thực thể) Ví dụ sau minh hoạ một câu hội thoại và các thực thể được
trích xuất
Câu hội thoại: Tôi muốn mở sổ tiết kiệm phát lộc kỳ hạn 8 tháng số tiền 300
triệu vnđ
Câu có các thực thể được xác định: Tôi muốn mở sổ [tiết kiệm Phát
lộc]SAVINGTYPE [Kỳ hạn 8 tháng]DUEDATE số tiền là [300 triệu vnđ]AMOUNT
Trong câu trên có 3 thực thể (nằm trong các dấu [ ]) với các loại thực thể tương
ứng gồm: SAVINGTYP, DUEDATE, AMOUNT (được viết với font chữ nhỏ hơn ở
phía trên bên trái)
Trang 3131
Cách tiếp cận phổ biến cho bài toán trích xuất thông tin là mô hình hoá bài toán thành bài toán gán nhãn chuỗi (sequence labeling) Đầu vào của bài toán gán nhãn chuỗi là một dãy các từ, và đầu ra là một dãy các nhãn tương ứng các từ trong đầu vào Chúng ta sẽ sử dụng các mô hình học máy để học một mô hình gán nhãn từ một tập dữ liệu đầu vào bao gồm các cặp (x1…xn, y1…yn), trong đó x1…xn là dãy các từ, y1…yn là dãy các nhãn Độ dài của các dãy từ trong tập dữ liệu có thể khác nhau
Trong bài toán trích xuất thông tin, tập nhãn cho các từ trong câu đầu vào thường được tạo ra theo mô hình B-I-O, với B là viết tắt của “Beginning”, I là viết tắt của “Inside”, và O là viết tắt của “Outside” Khi biết vị trí từ bắt đầu của một thực thể và các từ nằm trong thực thể đó, chúng ta có thể xác định vị trí của thực thể trong câu Trong ví dụ ở trên, dãy các nhãn tương ứng với dãy của các từ trong câu hội thoại đầu vào được minh hoạ ở hình 2
Thuật toán huấn luyện mô hình gán nhãn chuỗi phổ biến là mô hình Markov
ẩn (HMM – Hidden Markov Models) , mô hình CRF (Conditional Random Fields) Với dữ liệu văn bản, mô hình CRF thường cho kết quả tốt hơn mô hình HMM Có khá nhiều các công cụ mã nguồn mở cài đặt mô hình CRF cho bài toán gán nhãn chuỗi như CRF++, CRF Suite, Mallet,…
Gần đây, các mô hình mạng neural hồi quy (Recurrent Neural Networks) được
áp dụng khá nhiều cho bài toán gán nhãn chuỗi Mô hình mạng neural hồi quy tỏ ra hiệu quả với dữ liệu dạng chuỗi vì nó mô hình mối quan hệ phụ thuộc giữa các từ trong câu Ví dụ, mạng neural hồi quy được áp dụng cho bài toán gán nhán từ loại (POS Tagging), bài toán xác định thực thể tên gọi
c Quản lý đoạn hội thoại (Dialogue management)
Trong các phiên trao đổi dài (long conversation) giữa người dùng và chatbot, chatbot sẽ cần ghi nhớ những thông tin về ngữ cảnh (context) hay quản lý các trạng thái hội thoại (dialog state) Vấn đề quản lý hội thoại (dialogue management) khi đó
là một phần quan trọng để đảm bảo việc trao đổi giữa người và máy là thông suốt không bị ngắt quãng giữa chừng hoặc sai lệch hẳn một chủ đề khác
Trang 3232
Chức năng của thành phần quản lý hội thoại là nhận đầu vào từ thành phần NLP/NLU, quản lý các trạng thái hội thoại (dialogue state), ngữ cảnh hội thoại (dialogue context) và truyền đầu ra cho thành phần sinh ngôn ngữ (Natural Language Generation, viết tắt là NLG) Ví dụ: Vẫn là ví dụ về yêu cầu mở sổ tiết kiệm của một khách hàng, module quản lý dialogue trong một chatbot phục vụ mở sổ tiết kiệm cần biết khi nào người dùng đã cung cấp đủ thông tin cho việc mở sổ để khí đó chatbot gửi một lệnh cho việc tạo một mã số tài khoản tiết kiệm tới hệ thống hoặc khi nào cần phải xác nhận lại thông tin do người dùng đưa vào Hiện nay, các sản phẩm chatbot thường dùng mô hình máy trạng thái hữu hạn (Finite State Machine – FSM),
mô hình Frame-based (Slot Filling), hoặc kết hợp hai mô hình này
Trang 3333
Có Không
Hình 7 Mô tả quản lý hội thoại theo mô hình máy trạng thái hữu hạn FSM
FSM là mô hình quản lý hội thoại đơn giản nhất Ví dụ: Giả sử một hệ thống chăm sóc khách hàng của một ngân hàng, phục vụ cho những khách hàng cần sử dụng dịch vụ mở sổ tiết kiệm Nhiệm vụ của chatbot là hỏi tên khách hàng, số chứng minh thư nhân dân từ đó chatbot sẽ thực hiện gửi các yêu cầu truy vấn thông tin khách hàng
và những dịch vụ khách hàng đang sử dụng hiện có ở ngân hàng như ở hình ví dụ trên Các trạng thái của FSM tương ứng với các câu hỏi mà dialogue manager hỏi người dùng Các cung nối giữa các trạng thái tương ứng với các hành động mà chatbot
sẽ thực hiện Các hành động này phụ thuộc phản hồi của người dùng cho các câu hỏi Trong mô hình FSM, chatbot là phía định hướng người sử dụng trong cuộc hội thoại
Ưu điểm của mô hình FSM là đơn giản và chatbot sẽ định trước dạng câu trả lời mong muốn từ phía người dùng cụ thể là mô hình có thể được ứng dụng tốt trên miền đóng Tuy nhiên, mô hình FSM không thực sự phù hợp cho các hệ thống chatbot
Xin bạn cho biết họ tên?
Số chứng minh thư của bạn là gì?
Chúng tôi đã kiểm tra thông tin, hiện nay bạn đã có tài khoản
tại ngân hàng và có 01 sổ tiết kiệm trị giá 100tr
Chúng tôi có thể hỗ trợ bạn dịch vụ gì tiếp theo không?
Cảm ơn bạn!
Trang 3434
phức tạp hoặc khi người dùng đưa ra nhiều thông tin khác, không cùng một chủ đề nội dung trong cùng một câu hội thoại
Mô hình Frame-based (hoặc tên khác là Form-based) có thể giải quyết vấn đề
mà mô hình FSM gặp phải Mô hình Frame-based dựa trên các frame định sẵn để định hướng cuộc hội thoại Mỗi frame sẽ bao gồm các thông tin (slot) cần điền và các câu hỏi tương ứng mà dialogue manager hỏi người dùng Mô hình này cho phép người dùng điền thông tin vào nhiều slot khác nhau trong frame
Chứng minh thư nhân dân Số chứng minh thư của bạn là gì?
Bảng 2 Chatbot hỏi thông tin khách hàng truy vấn dịch vụ mở sổ tiết kiệm
Thành phần quản lý hội thoại theo mô hình frame-based sẽ đưa ra câu hỏi cho khách hàng, ghi thông tin vào các slot từ thông tin khách hàng cung cấp cho đến khi
có đủ thông tin cần thiết Khi người dùng trả lời nhiều câu hỏi cùng lúc, hệ thống sẽ phải điền vào các slot tương ứng và ghi nhớ để không hỏi lại những câu hỏi đã có câu trả lời
Trong các miền ứng dụng phức tạp, một cuộc hội thoại có thể có nhiều frame khác nhau Vấn đề đặt ra cho người phát triển chatbot khi đó là làm sao để biết khi nào cần chuyển đổi giữa các frame Cách tiếp cận thường dùng để quản lý việc chuyển điều khiển giữa các frame là định nghĩa các luật (production rule) Các luật này dựa trên một số các thành tố như câu hội thoại hoặc câu hỏi gần nhất mà người dùng đưa
Trang 3535
ý định chính xác của người dùng muốn gì Từ đó, rất có thể hệ thống sẽ căn cứ vào các ý nghĩa của từ theo một hướng khác và hướng phản hồi sẽ bị định hướng sang một miền nội dung khác
Xử lý nhập nhằng và khử nhập nhằng đối với các dữ liệu đầu vào thường được thực hiện ở giai đoạn tách từ trong công đoạn xác định ý định người dùng Các dữ liệu đầu vào có thể được coi là một đoạn văn bản kích thước nhỏ, do đó ta cũng có thể quy về bài toán tách từ trong một đoạn văn bản Các loại nhập nhằng thường thấy trong công đoạn tách từ có thể chia như sau [7]:
- Nhập nhằng chồng (Overlapping ambiguity)
- Nhập nhằng hợp (Combination ambiguity)
Giả sử ta coi một tập D là tập hợp các từ tiếng Việt thì các trường hợp nhập nhằng trên sẽ được mô tả hình thức như sau:
- Chuỗi αβγ được coi là nhập nhằng chồng nếu như ta có {αβ, βγ} ⸦ D
- Chuỗi αβ được coi là nhập nhằng hợp nếu như ta có {α, β, αβ} ⸦ D
Trong thực tế, loại nhập nhằng chồng xảy ra thường xuyên hơn loại nhập nhằng hợp, bởi vì hầu hết các tiếng của tiếng Việt đều có thể đóng vai trò là một từ đơn độc lập Do đó, hầu hết các từ ghép đều có thể bị nhập nhằng hợp Tuy nhiên, hầu như mọi trường hợp này đều được giải quyết tốt bằng giải thuật maximum matching Vì thế, mọi hệ thống nhận diện nhập nhằng hiện tại đều chỉ chú ý đến việc giải quyết loại nhập nhằng đầu tiên là nhập nhằng chồng
Một số nguyên nhân dẫn đến nhập nhằng thường thấy trong tiếng Việt gồm:
Trang 3636
Hiện nay trên thế giới, đã có nhiều nhà khoa học, nhiều nghiên cứu để xử lý vấn đề nhập nhằng trong câu từ, một số phương pháp có thể áp dụng để khử nhập nhằng có thể thực hiện như:
- Phương pháp gán nhãn, phân loại từ kết hợp với từ điển tiếng Việt
- Phương pháp maximum matching
- Phương pháp dựa trên xác suất (Probabilistic parsing)
- Phương pháp sử dụng các thuật toán tách từ sử dụng học máy
Xử lý văn phạm, ngữ pháp
Trong các đoạn hội thoại, các văn bản được gửi đến cho hệ thống không hoàn toàn đúng ngữ pháp, các lỗi sai cơ bản về mặt ngữ pháp tiếng Việt, hay văn phạm không phù hợp hoàn cảnh, nội dung của đoạn hội thoại cũng sẽ dẫn đến việc làm sai lệch nội dung phản hồi từ chatbot
1) Các lỗi văn phạm, ngữ pháp thường thấy trong tiếng Việt:
Lỗi chính tả: Được định nghĩa như một lỗi xác định một từ không tồn tại trong
danh sách các từ đã có Tuy nhiên, trong một tập từ khác nếu có từ đó, đó lại không phải là lỗi chính tả nữa Vì vậy, có thể nói lỗi chính tả là tương đối với tập từ quy định, tuy nhiên đa phần tập từ được xây dựng dựa trên từ điển đã bao gồm gần như toàn bộ các từ, nên các lỗi xác định được thường là do người dùng nhập sai hoặc nhớ sai gây ra
Ví dụ: gNân hàng -> Ngân hàng,
Việt Nam đôgn -> Việt Nam đồng
Lỗi ngữ pháp: Được định nghĩa khi một câu không phù hợp với những tập
luật của tiếng Việt Ví dụ quy tắc cú pháp của các thành phần câu trong tiếng Việt gồm có: chủ ngữ, vị ngữ, bổ ngữ, trạng ngữ, và định ngữ Không giống lỗi chính tả, lỗi ngữ pháp được xác định cần dựa vào toàn bộ các từ trong câu Lỗi ngữ pháp được chia làm lỗi có cấu trúc và lỗi không cấu trúc Lỗi có cấu trúc là các lỗi chỉ có thể được sửa bằng cách chèn, xóa hoặc chuyển một hoặc nhiểu từ trong câu Trong khi lỗi không cấu trúc là các lỗi mà có thể được sửa bằng cách thay thế một từ có sẵn trong câu bằng một từ khác
Trang 3737
Lỗi phong cách dùng từ: Được định nghĩa là lỗi khi sử dụng các từ không
thông dụng hoặc các câu có cấu trúc phức tạp làm văn bản trở lên khó hiểu Có thể lấy ví dụ trên thực tế hiện nay, giới trẻ thường dùng những loại ngôn ngữ mang tính biến thể mà chúng hay gọi là teen code, những các dùng từ nay thường gây khó hiểu cho người khác
2) Xử lý văn phạm, ngữ pháp dựa trên phân tích cú pháp
Phương pháp phân tích cú pháp từ trên xuống (Top - Down): Phương pháp
này tìm kiếm một cây cú pháp phù hợp bằng cách cố gắng xây dựng dần dần từ nút gốc S xuống các nút lá Ta sẽ thử hết tất cả các nút là có thể sinh ra từ một nút gốc S
mà có mặt trong văn phạm, từ đó lại tiếp tục lấy các nút lá đó làm gốc để tiếp tục quá trình Nói cách khác, tại mỗi bước ta sẽ thử lần lượt từng cây có thể sinh ra
Hình 8 Phương pháp Top-Down
Phương pháp này có ưu điểm là sẽ chỉ tập trung vào những cây cú pháp có gốc là S, do vậy sẽ không lãng phí thời gian vào những cây cú pháp mà không có kết quả mong muốn Tuy nhiên, do chỉ có thể tập trung vào những cây cú pháp có gốc cụ thể, phương pháp này sẽ không phải lúc nào cũng cho ra kết quả, hơn nữa,
do tiến hành xây dựng từ gốc, cây cú pháp tạo ra có thể có những nút là không phù hợp với dữ liệu đầu vào
Phương pháp Bottom-up: Đây là phương pháp được biết đến sớm nhất, được
đưa ra lần đầu từ năm 1955 Cách tiếp cận này sẽ thực hiện bắt đầu từ những từ trong
dữ liệu đầu vào, và cố gắng xây dựng cây cú pháp dần lên trên để tạo thành gốc qua
Trang 3838
các luật, văn phạm Ưu điểm của phương pháp này là chỉ xét những cây có thể được sinh ra từ dữ liệu đầu vào Tuy nhiên, ta lại có thể xây dựng ra những cây cú pháp có gốc không phải là S như mong muốn vì ta phải xây dựng tất cả các cây có thể từ dữ liệu đầu vào
Làm giàu thông tin dữ liệu đầu vào
Như đã đề cập ở các phần trên, việc câu hỏi từ khách hàng đưa ra cho hệ thống chatbot không rõ ràng, có thể mắc các lỗi như đã đề cập như sai chính tả, sai ngữ pháp,… dẫn đến việc hệ thống không thể thực hiện phân tích cú pháp câu từ đó không thể thực hiện các công đoạn phân loại từ, gán nhãn Khi gặp phải những vấn đề này thông thường sẽ có các lựa chọn mà hệ thống đưa ra để xử lý như sau:
- Chuyển tiếp đoạn hội thoại đến con người để xử lý, khi chatbot không xác định được ý định người dùng, hoặc câu hỏi nằm ngoài miền dữ liệu cần thao tác
- Chatbot có thể thực hiện các biện pháp làm giàu thông tin dựa trên việc: Đưa
ra các câu hỏi gợi ý trong tập câu hỏi gần với ý định của người dùng
Ví dụ: Khách hàng: Chào bạn, bạn có thể cung cấp cho tôi thông tin bạn
đang có được không?
Chatbot: Chào bạn, có phải bạn đang hỏi về những dịch vụ mà ngân
hàng chúng tôi đang cung cấp có phải không?
Hoặc đơn giản hơn, chatbot có thể đưa ra câu hỏi nhằm yêu cầu khách hàng
thực hiện làm rõ hơn ý định bằng một câu hỏi khác như: “Bạn giải thích rõ hơn được không?”
Việc cung cấp đủ thông tin giúp cho chatbot có thể xác định được ý định người dùng, qua đó có thể định hướng người dùng theo những đoạn hội thoại mà nó có thể hiểu được là một điều rất quan trọng, bởi việc xác định sai ý định người dùng hoàn toàn có thể dẫn đến việc khách hàng chán ghét và không muốn sử dụng dịch vụ chatbot nữa
1.2.2 Sinh ngôn ngữ tự nhiên (NLG)
Sinh ngôn ngữ tự nhiên (Natural Language Generation) là một lĩnh vực hẹp của trí tuệ nhân tạo và ngôn ngữ học máy liên quan đến việc đáp ứng khả năng sản sinh ra văn bản theo dạng ngôn ngữ tự nhiên của loài người
Trang 39Đặc điểm của bộ NLG gồm:
- Xác định được nội dung được bao gồm / bỏ qua trong câu
- Tổ chức nội dung thành cấu trúc mạch lạc
- Phong cách (hình thức, quan điểm, thể loại, tính cách)
- Đóng gói thành câu
- Sắp xếp câu theo cấu trúc cú pháp
- Tham chiếu đến các thực thể
- Lựa chọn những từ để sử dụng trong câu
Hình 9 Nhiệm vụ và kiến trúc Pipeline của NLG [7]
Text Planner: Chính là xác định mục tiêu của đoạn văn bản sẽ sản sinh, bao
gồm việc lựa chọn nội dung, lập kế hoạch để diễn đạt ngôn ngữ, chiến lược diễn đạt dựa trên lịch sử của đoạn hội thoại, mô hình miền ứng dụng và mô hình người dùng
Trang 4040
Sentence Planner: Kế hoạch xây dựng câu cú, tổng hợp các tham chiếu để lựa chọn các từ vựng để sản sinh ra câu Sau đó Sentence realizer sẽ làm nhiệm vụ
nhận dạng và kiểm soát tính hợp lý trong câu đáp ứng được độ chính xác về từ vựng
và ngữ pháp từ đó trả ra đoạn văn bản theo ngữ điệu ngôn ngữ tự nhiên
Theo thiết kế phổ biến thì thành phần NLG như đóng vai trò là một “phát ngôn” các kết quả trả về từ phía đầu ra từ hệ thống đến con người theo những câu giao tiếp có ý nghĩa và gần với ngữ điệu của con người
1.2.3 Các kỹ thuật học máy (Machine learning)
Học máy (ML-Machine Learning) là một lĩnh vực nghiên cứu của trí tuệ nhân tạo (Artificial Inteligent) Một máy tính có khả năng học nếu nó tự cải thiện hiệu suất
hoạt động P cho một công việc T cụ thể, dựa vào kinh nghiệm E của nó
Như vậy một bài toán học máy có thể biểu diễn bằng một bộ (T, E, P) [8]
T: Một công việc (nhiệm vụ) P: Tiêu chí đánh giá hiệu năng E: Kinh nghiệm
Học máy có thể được biểu diễn dưới dạng một hàm toán, học một ánh xạ:
x: Quan sát, dữ liệu y: Phán đoán, tri thức mới, kinh nghiệm mới…
Sau khi đã học, thì hệ thống sẽ thu được những mô hình, kinh nghiệm, trí thức mới và dùng nó để suy diễn (phán đoán) cho những quan sát trong tương lai theo
đúng biểu diễn hàm: Y = f(x)
Lĩnh vực chatbot, trước đây, khi chưa có học máy hay trí tuệ nhân tạo, chatbot thường được biết đến nhưng những dạng chatbox với những câu hỏi, câu trả lời ở mức độ cơ bản và dường như người dùng đoán được rằng những phản hồi mà họ nhận được là những câu trả lời định sẵn Những phản hồi không mang tính suy diễn hoặc không có khả năng mở rộng nội dung, hoặc nó thường chỉ phản hồi ở một vài tập câu
f: x Y