Chương 1 – Tổng quan về lĩnh vực nghiên cứu Sơ lược tổng quan về vấn đề nghiên cứu trên phương diện tổng quan nhất, nêu ra mục tiêu, phương pháp nghiên cứu và bố cục luận văn. ✓ Chương 2 – Cơ sở lý thuyết và các nghiên cứu liên quan Giới thiệu tổng quan về xử lí ngôn ngữ tự nhiên, về Word2Vector; giới thiệu về mạng nơ ron nhân tạo, các mô hình mạng nơ ron cải tiến là cơ sở của mạng học sâu. Nghiên cứu các mô hình phát sinh văn bản trong hệ thống đối thoại, giới thiệu về mô hình phân loại câu hỏi và các vấn đề chung có thể gặp phải khi xây dựng mô hình đối thoại; Trình bày cơ bản về hệ thống trả lời tự động, cùng với tình hình nghiên cứu trong nước và ngoài nước. ✓ Chương 3 – Mô hình đề xuất: Chương 3 trình bày tổng quan về mô hình đề xuất và đi sâu phân tích các đặc trưng của mô hình đề xuất.
3 ✓ Chương 4 – Thực nghiệm trình bày chi tiết cụ thể các kết quả đạt được và phân tích, đánh giá, so sánh kết quả đạt được với các mô hình trước. ✓ Chương 5 – Kết luận và hướng phát triển. 4 CHƯƠNG 2 CƠ SỞ LÝ THUYẾT VÀ CÁC NGHIÊN CỨU LIÊN QUAN 2. Xử lý ngôn ngữ tự nhiên Xử lý ngôn ngữ tự nhiên (gọi tắt NLP - Natural Language Processing) là các kĩ thuật, phương pháp nhằm hỗ trợ cho các hệ thống máy tính hiểu và xử lý, nhận dạng ngôn ngữ tự nhiên như tiếng Việt, tiếng Anh.
Dịch máy, rút trích thông tin, truy hồi thông tin, hỏi đáp tự động,… là các hướng nghiên cứu chính của xử lý ngôn ngữ tự nhiên. Tổng quan các nghiên cứu về xử lý ngôn ngữ tự nhiên được trình bày trong hình 2.1: Tổng quan các nghiên cứu về xử lý ngôn ngữ tự nhiên 2. Bài toán xác định ý định người dùng (intent detection) Thông thường, người dùng thường truy cập hệ thống trả lời tự động (chatbot) với 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ụ, người dùng của hệ thống chatbot hỗ trợ đặt vé máy bay có thể đưa ra yêu cầu đặt vé của mình khi bắt đầu cuộc hội thoại.
Để đưa ra hỗ trợ được chính xác, chatbot cần xác định được ý định (intent) đó của người dùng. Việc xác định ý định của người dùng sẽ quyết định hội thoại tiếp theo giữa người và chatbot sẽ diễn ra như thế nào. Vì thế, 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 chán ghét và không quay lại 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. 5 Đối với miền ứng dụng đó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 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ề thời tiết ở Hà Nội trong ngày hôm nay, người dùng có thể dùng những cách diễn đạt sau: • Thời tiết hôm nay ở Hà Nội thế nào ad? • Hà Nội hôm nay có mưa không vậy? • Hà Nội hôm nay bao nhiêu độ vậy? • Cho mình hỏi, ra ngoài đường hôm nay có phải mang áo mưa không? 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 khi phát triển chatbot. Khi đã có dữ liệu huấn luyện cho bài toán phân lớp intent, chúng ta sẽ mô hình bài toán thành bài toán phân lớp văn bản.
Bài toán phân lớp văn bản (text categorization) là một bài toán kinh điển trong ngành NLP và khai phá văn bản (Text Mining). Kiến trúc của hệ thống phân lớp intent được minh hoạ trong Hình 2.2: Những thành phần trong hệ phân lớp intent Hệ thống phân lớp intent có một số thành phần cơ bản: 6 • Tiền xử lý dữ liệu • Trích xuất đặc trưng • Huấn luyện mô hình • Phân lớp Trong bước tiền xử lý dữ liệu, chúng ta sẽ thực hiện các thao tác “làm sạch” dữ liệu như: loại bỏ các thông tin dư thừa, chuẩn hoá dữ liệu như chuyển các từ viết sai chính tả thành đúng chính tả, chuẩn hoá các từ viết tắt,… Việc tiền xử lý dữ liệu có vai trò quan trọng trong hệ thống chatbot do đặc thù của ngôn ngữ chat, nói: viết tắt, sai chính tả, hay dùng “teencode”. Sau khi tiền xử lý dữ liệu và thu được dữ liệu đã được làm sạch, chúng ta sẽ trích xuất những đặc trưng từ dữ liệu này. Trong học máy, bước này được gọi là trích xuất đặc trưng (feature extraction hay feature engineering).
Trong mô hình học máy truyền thống (trước khi mô hình học sâu được áp dụng rộng rãi), bước trích xuất đặc trưng ảnh hưởng lớn đến độ chính xác của mô hình phân lớp. Để trích xuất được những đặc trưng tốt, chúng ta cần phân tích dữ liệu khá tỉ mỉ và cần cả những tri thức chuyên gia trong từng miền ứng dụng cụ thể. Bước huấn luyện mô hình nhận đầu vào là các đặc trưng đã được trích xuất và áp dụng các thuật toán học máy để học ra một mô hình phân lớp. Các mô hình phân lớp có thể là các luật phân lớp (nếu sử dụng decision tree) hoặc là các vector trọng số tương ứng với các đặc trưng được trích xuất (như trong các mô hình logistic regression, SVM, hay mạng Neural).
Sau khi có một mô hình phân lớp intent, chúng ta có thể sử dụng nó để phân lớp một câu hội thoại mới. Câu hội thoại này cũng đi qua các bước tiền xử lý và trích xuất đặc trưng, sau đó mô hình phân lớp sẽ xác định “điểm số” cho từng intent trong tập các intent và đưa ra intent có điểm cao nhất. Bài toán trích xuất thông tin (IE - Information extraction) Bài toán trích xuất thông tin là một trong những bài toán chính của xử lý ngôn ngữ tự nhiên. Với ví dụ là các 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 đó. Ví dụ, khi một khách hàng muốn đặt vé máy bay, hệ thống cần biết địa điểm xuất phát và địa điểm khách muốn 7 đến, ngày giờ khách hàng muốn bay,…Thành phần của hệ thống trích xuất thông tin của các hệ thống trả lời tự động thường hỗ trợ các loại thực thể như: • Vị trí (Location) • Thời gian (Datetime) • Số (Number) • Địa chỉ liên lạc (Contact) • Khoảng cách (Distance) • Khoảng thời gian (Duration) Hình 2.3: 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 từ đó.
• Câu hội thoại: Tôi muốn đặt vé máy bay đi Phú Quốc từ sân bay Nội Bài lúc 8 giờ tối ngày mai. • Câu có các thực thể được xác định: Tôi muốn đặt vé máy bay đi [Phú Quốc]LOCATION từ sân bay [Nội Bài]LOCATION lúc [8 giờ tối ngày mai]TIME 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 (được viết với font chữ nhỏ hơn ở dưới). 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 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 BIO, 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ể 8 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. Quản lý hội thoại Trong các phiên trao đổi dài (long conversation) giữa người 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 (dialoge management) khi đó là quan trọng để đảm bảo việc trao đổi giữa người và máy là thông suốt. 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 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ụ module quản lý dialogue trong một chatbot phục vụ đặt vé máy bay cần biết khi nào người dùng đã cung cấp đủ thông tin cho việc đặt vé để tạo một ticket 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 Automata – FSA), mô hình Frame-based (Slot Filling), hoặc kết hợp hai mô hình này.4: Minh hoạ quản lý hội thoại theo mô hình máy trạng thái hữu hạn FSA 9 FSA là mô hình quản lý hội thoại đơn giản nhất.