Chương 2. CƠ SỞ LÝ THUYẾT
2.2 Luồng hoạt động và xử lý của một hệ thống chatbot
2.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.
9
Hình 2.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.
2.2.1.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
10
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.
Việc phân tách các từ (Tokenization) là một một qua trình xử lý nhằm xác định ranh giới của từ, và gán các nhãn cho từ như từ đơn, từ ghép… Có một số thuật toán hỗ trợ cho việc giải quyết các bài toán phân tách từ này như mô hình so khớp từ dài nhất (longest matching), so khớp cực đại (Maximum Matching) hay mô hình CRF (conditional random field)…
2.2.1.2 Các bước xử lý trong việc Phân loại Ý định người dùng
Hình 2.5: Sơ đồ xử lý Ngôn ngữ tự nhiên áp dụng trong hệ thống Tiếng việt
Các bước xử lý trong việc Phân loại ý định người dùng có các bước cơ bản sau:
Tiền xử lý: đây là thao tác giúp “làm sạch” dữ liệu. Bao gồm các thao tác cơ bản như hình sau:
11
Hình 2.6: Các bước Tiền xử lý câu chữ trong Tiếng Việt
Tiền xử lý dữ liệu thường thực hiện các bước như loại bỏ các câu chữ dư thừa, không có ý nghĩa (stopwords); chuẩn hóa dữ liệu, tách từ trong câu, sửa lỗi chính tả, chuẩn hóa các từ viết tắt… Đây là bước có vai trò quan trọng trong hệ thống chatbot. Việc loại bỏ và chuẩn hóa thông tin trước khi tiến hành các bước phân tích tiếp theo làm tăng khả năng chính xác trong việc xác định ý định của người dùng, cũng như độ thông minh của chatbot.
Trích xuất đặc trưng: sau khi dữ liệu có được dữ liệu đã được “làm sạch”
từ bước Tiền xử lý. Phần tiếp theo của NLU đảm nhận nhiệm vụ trích xuất đặc trưng nhằm xác định các thông tin hữu ích có trong tin nhắn của người dùng gởi đến chatbot để làm tiền đề bước xử lý tiếp theo nhằm đưa ra các hành động phù hợp với ý định của người dùng.
Ví dụ: trích xuất thông tin về Thời gian, địa điểm trong đoạn hội thoại với người dùng:
Hình 2.7: Ví dụ về trích xuất thông tin từ người dùng
12
Có nhiều thuật toán được sử dụng trong việc xử lý ngôn ngữ tự nhiên nhằm trích xuất được thông tin từ người dùng. Tuy nhiên Conditional Random Field (CRF) là một mô hình xác suất cho các bài toán dự đoán có cấu trúc và đã được áp dụng rất thành công trong rất nhiều lĩnh vực như thị giác máy tính, xử lý ngôn ngữ tự nhiên, sinh-tin học, … Trong mô hình CRF, các node chứa dữ liệu đầu vào và các node chứa dữ liệu đầu ra được kết nối trực tiếp với nhau, đối nghịch với kiến trúc của LSTM hoặc BiLSTM trong đó các đầu vào và đầu ra được kết nối gián tiếp qua các memory cell. CRF có thể được sử dụng để gán nhãn tên riêng với đầu vào là các đặc trưng của một từ được rút trích bằng tay như: Chữ cái đầu có được viết hoa hay không? Viết hoa toàn bộ? Là số? Từ đứng trước là từ hoa? Từ đang xem xét? Từ đứng trước và từ đang xét … Để trích xuất được những đặc trưng tốt, cần phải 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 dữ liệu cụ thể.
Huấn luyện mô hình: bước này nhận dữ liệu đầu vào là các đặc trưng đã được trích xuất và áp dụng một số thuật toán học máy để học ra 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 hoặc là các vector trọng số tương ứng với các đặc trưng đã trích xuất được.
Xây dựng mô hình phân lớp: đối với miền ứng dụng đóng (closed domain), chúng ta có thể giới hạn số lượng ý định của người dùng nằm trong một tập hữu hạn những ý định đã được định nghĩa sẵn, có liên quan đến nghiệp vụ mà chatbot có thể hỗ trợ. Với giới hạn này thì bài toán xác định ý định người dùng có thể quy về bài toán phân loại văn bản [5]. 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 ý định tương ứng với câu đó trong tập các intent đã được định nghĩa trước.
Để xây dựng một mô hình phân lớp ý định người dùng, cần phải có 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 từng ý định.
Ví dụ: cùng một ý định hỏi về quy chế cảnh báo học vụ, chúng ta có thể hỏi nhiều cách như sau:
- Em học bị dưới trung bình có bị cảnh báo học vụ không?
- Không đóng tiền học trong 1 năm có bị cảnh cáo không?
- Cảnh báo học vụ khi nào?