Mở đầu. Giới thiệu tổng quan về đề tài như mục tiêu nghiên cứu, đối tượng, phạm vi nghiên cứu. Chương 2: Cơ sở lý thuyết. Chương này giới thiệu về các lý thuyết liên quan đến các nội dung nghiên cứu để xây dựng Hệ thống Cố vấn Học tập ảo, giới thiệu tổng quan về một hệ thống chatbot, các lý thuyết nền về việc xử lý ngôn ngữ tự nhiên, mô hình xác định ý định người dùng, mô hình Sinh hội thoại và các kiến thức liên quan đến mã nguồn mở Framework Rasa [3] được áp dụng chính trong Hệ thống.
Chương 3: Phương pháp nghiên cứu. Trình bày Phương pháp xử lí ngôn ngữ tự nhiên, các phương pháp xác định ý định người dùng, các phương pháp trích xuất thông tin thực thể trong câu hỏi người dùng để áp dụng và mô hình nhằm lựa chọn được các câu trả lời tương ứng cho câu hỏi đó với độ chính xác khả quan. Trình bày phương pháp thực nghiệm và cách đánh giá kết quả thực nghiệm được áp dụng trong đề tài. Chương 4: Kết quả thực nghiệm.
Trình bày từng bước cách xây dựng hệ thống, cách xây dựng mô hình xác định ý định và trích xuất các thực thể của người dùng, cấu hình các câu trả lời, khung kịch bản cho các đoạn hội thoại của chatbot Cố vấn học tập ảo. Phần thực nghiệm được triển khai trên nền web và kết quả đánh giá sẽ cho ta biết khả năng phục vụ của chatbot nhằm cải tiến chatbot để tìm ra các hướng cải tiến hơn trong việc xây dựng chatbot. Chương 5: Kết luận và hướng phát triển. Chương này đưa ra kết luận của đề tài về những điều đã thực hiện được so với mục tiêu đề tài đặt ra, những mặt còn hạn chế và hướng phát triển của hệ thống.1 Tổng quan của một hệ thống chatbot 2.1 Giới thiệu Chatbot là một hệ thống đối thoại giữa người và máy.
Đây là một chương trình máy tính có khả năng tiến hàng các cuộc trò chuyện thông tin nhắn, người dùng có thể gởi các câu hỏi và chatbot sẽ có khả năng tự động trả lời hoặc xử lý tình huống theo đúng ý định của người dùng. Các chatbot hiện đại còn có các khả năng tân tiến như ngoài các câu chữ, còn có khả năng nhận diện giọng nói từ người dùng và trả lời lại người dùng với giọng nói tương tự như người (speech to text và text to speech). Chatbot ngày nay thường được ứng dụng trong nhiều lĩnh vực khác nhau như Chăm sóc khách hàng, Thương mại điện tử, Y tế, Tài chính ngân hàng, Dịch vụ Du lịch, Giải trí, Game, … Chatbot có thể được chia làm 2 loại chính: Hệ thống chatbot phục vụ theo một miền dữ liệu mở (open domain): đây là mô hình trả lời tự động trên miền mở cho phép người dùng có thể tham gia trao đổi với bất kỳ chủ đề nào, không cần phải có một ý định cụ thể nào cả. Các đoạn hội thoại trên các mạng xã hội như Facebook, Twitter, Instagram thường là miền mở, người dùng có thể trao đổi trên mọi chủ đề.
Do số lượng các chủ đề được người dùng hướng đến là không giới hạn (hay vô tận), điều này dẫn đến tri thức yêu cầu để có thể tạo ra được các câu trả lời đáp ứng cho các câu đối trong trong miền mở là một bài toán cực kỳ khó. Hệ thống chatbot phục vụ theo một miền dữ liệu đóng (closed domain): ngược lại với miền dữ liệu mở, đây là mô hình trả lời tự động theo dữ liệu phục vụ trong một lĩnh vực cụ thể nào đó, ví dụ như chatbot hỗ trợ Y tế, Giáo dục, Bán hàng, Du lịch… chỉ phục vụ các câu hỏi trong phạm vi lĩnh vực của nó. Trong một miền dữ liệu đóng, số lượng các mẫu câu hỏi và câu trả lời là một tập có số lượng hữu hạn nào đó, do đó các chatbot này được cố gắng để đạt được một mục tiêu nào đó một cách cụ thể. Ví dụ như các chatbot dạng tư vấn: tư vấn Hỗ trợ Hỏi đáp Kỹ thuật, tư vấn Mua hàng… Đối với các câu hỏi ngoài phạm vi lĩnh vực, chatbot thường không xử lý được và sẽ rơi vào trường hợp ngoại lệ.
Tùy tình huống xử lý của Hệ thống như liên hệ trực tiếp với người thật hay lưu lại thông tin người dùng và chờ người xử lý sau.2 Các thành phần cơ bản của một hệ thống chatbot Hình 2.1: Các thành phần cơ bản của một hệ thống chatbot Chatbot gồm có 3 thành phần chính là Hiểu ngôn ngữ tự nhiên (NLU – Natural Language Understanding); Quản lý Hội thoại (DM - Dialogue Management); Bộ sinh ngôn ngữ (NLG – Natural Language Generation). Mỗi thành phần đều có vai trò riêng: NLU - Natural Language Understanding: đây là thành phần chính và rất quan trọng trong hệ thống chatbot, có nhiệm vụ xử lý ngôn ngữ tự nhiên (NLP – Natural Language Processing) để xác định được ý định của người dùng (intent classification), trích xuất lưu trữ các đặc trưng (slots filter) từ câu hỏi của người dùng. DM – Dialogue Management: đây là thành phần quản lý hội thoại có nhiêm vụ xác định hành động (action) tiếp theo dựa vào trạng thái hành động trước đó hay trong ngữ cảnh hội thoại mà chatbot và người dùng đang trò chuyện, với thông tin đã được bộ nhớ lưu trữ theo dõi trạng thái của hội thoại lưu lại (dialog state tracker). Các ngữ cảnh này cần được đối chiếu trong các khung kịch bản đã được dựng sẵn (history) và đã huấn luyện cho chatbot.
Thành phần này cũng có các hành động truy cập thông tin, lấy dữ liệu từ các hệ thống khác thông qua các API có trong action, do hệ thống tự cấu hình thêm. NLG - Natural Language Generation: đây là thành phần sinh ngôn ngữ dựa vào các quy luật (policy) và các hành động đã được xác định trong bước xử lý trước đó (DM – Dialog Management) thông qua các tập hội thoại. NLG có thể được sinh ra các câu trả lời dựa trên các tập mẫu câu trả lời (templates) đã được cấu hình sẵn cho chatbot.2 Luồng hoạt động và xử lý của một hệ thống chatbot Hình 2.2: Luồng hoạt động và xử lý của một hệ thống chatbot Hình trên là mô hình về luồng hoạt động và xử lý của một hệ thống chatbot. Với các thành phần hoạt động chính theo tuần tự như sau: 2.1 Thành phần Hiểu ngôn ngữ tự nhiên (NLU) Đây là thành phần quan trọng nhất của chatbot.
Việc một chatbot có thông minh hay không phần lớn là có xác định được chính xác ý định của người dùng muốn hỏi gì? Chức năng của thành phần này là trích xuất ra các thông tin hữu ích từ tin nhắn của người dùng gởi đến để các thành phần tiếp theo xử lý. Các thông tin cần trích xuất như sau: - Đầu tiên là phân loại theo lĩnh vực (domain classification): tùy theo câu hỏi của người dùng tùy thuộc vào lĩnh vực nào thì chatbot sẽ phân loại tương ứng. Ví dụ như câu hỏi về lĩnh vực Y tế, Ngân hàng, Thương mại… Trong trường hợp chỉ có một lĩnh vực được cấu hình trong chatbot thì có thể bỏ qua bước phân loại này. - Tiếp đến là phân loại ý định của người dùng (intent classification), ví dụ như xác định được ý định người dùng muốn hỏi trong câu là cần hỏi về công tác cảnh báo học vụ, bao nhiêu điểm thì bị cảnh bảo học vụ… - Sau khi xác định ý định người dùng, sẽ đến bước trích xuất thông tin (slots filter) hoặc trích xuất thông tin theo thực thể đã được đặt tên trước (entity extraction) trong câu hỏi của người dùng.
Ví dụ chatbot cần phải trích xuất được thông tin mã số sinh viên và điểm số của người dùng trong câu hỏi: “em mã số sv M2518001, thi học kỳ được 2.5 thì có bị cảnh báo học vụ không?”. Từ việc trích xuất được thông tin Mã sinh viên và Điểm số thì mới có cơ sở để các thành phần tiếp theo có hành động (action) phản hồi phù hợp cho người dùng. Thông thường, NLU xử lý tin nhắn người dùng gởi đến bằng chuỗi các hành động nối tiếp nhau một cách tuần tự theo hình ống (pipeline), với kết quả đầu ra của hành động trước là kết quả đầu vào của hành động sau.3: Các bước xử lý trong pipeline của NLU [4] Trong đường ống (pipeline) này thì chatbot có thể tùy chỉnh các thành phần từ Phân loại tên miền, mô hình ngôn ngữ, cách áp dụng các thuật toán tách từ và trích xuất thông tin thực thể… Cuối cùng sau khi xử lý xong chuỗi hành động liên tiếp này thì bộ NLU sẽ có được một mô hình để có thể sử dụng trong chatbot.1 Các bước xử lý trong NLU Để hiểu rõ hơn về việc xử lý của NLU trong một pipeline, xem xét ví dụ xử lý của NLU đối với một câu hỏi từ người dùng gởi đến: Hình 2.4: Các bước xử lý trong NLU Để có thể phân loại được ý định của người dùng thì cần phải mô hình hóa ngôn ngữ, tức là phải biểu diễn dưới dạng vector số học để máy có thể hiểu được (vectorization). Một phương pháp phổ biến là word embedding (nhúng từ).
Tập nhúng từ là tên chung cho một tập hợp các mô hình ngôn ngữ và các phương 9 pháp học đặc trưng trong xử lý ngôn ngữ tự nhiên (NLP), nơi các từ hoặc cụm từ được ánh xạ thành các vector số thực. Sau khi mô hình hóa ngôn ngữ bao gồm dữ liệu đầu vào training cho bot thì việc xác định ý định người dùng dựa trên tập đã training trước là bước phân loại ý định (intent classification) hay phân loại văn bản [5]. Ở các chatbot hiện đại đều sử dụng mô hình máy học sâu (deep learning) như RNN và LSTM để phân loại ý định người dùng. Khó khăn nhất của bước xác định ý định người dùng là việc xác định kép hay nhiều ý định (multiple intents) trong cùng một câu nói của người dùng.
Ví dụ như người dùng nói: “xin chào, em muốn liên hệ trường và em vắng thi thì có được thi lại không?”. Trong cùng câu nói trên thì chatbot cần phải xác định được 3 ý định “chào hỏi”, “liên hệ trường”, “quy chế thi cử”. Nếu chatbot có thể hiểu được chính xác tất cả ý định của người dùng thì chatbot sẽ thực sự thông minh và đoạn hội thoại giữa người và chatbot sẽ tự nhiên hơn. Tiếp đến là việc trích xuất các thông tin hữu ích từ người dùng.
Các thông tin cần được trích xuất thường sẽ có dạng số, ngày tháng, chuỗi tên và đã được cài đặt và huấn luyện trước.