Quá trình xử lý ngôn ngữ tự nhiên là hành động dữ liệu đầu vào được xử lý qua một loạt các thành phần (component) theo thứ tự gọi là pipeline, ta có thể thêm hoặc bỏ bất kì thành phần nào trong pipeline đó. Ví dụ hệ thống không cần trích chọn thực thể ta có thể loại bỏ thành phần Entity extraction, hoặc hệ thống không dùng thành phần mô hình được huấn luyện sẵn (pre-trained model) như BERT, spaCy ta có thể không cần khai báo trong cấu hình.
Tokenizer là quá trình chia nhỏ câu đầu vào thành các từ hoặc cụm từ. Rasa có hỗ trợ WhitespaceTokenizer tạo các từ cách nhau bằng dấu cách ví dụ câu “Tôi là sinh viên trường đại học Bách Khoa” đi qua thành phần WhitespaceTokenizer
45 sẽ cho ra một mảng các từ [“Tôi”, “là”, “sinh”, “viên”, “trường”, “đại”, “học”, “Bách”, “Khoa”]. Trong hầu hết trường hợp thì việc chia từ này là đúng nhưng ở tiếng Việt không chỉ gồm các từ đơn mà còn được cấu thành từ các từ ghép, ví dụ từ ghép “sinh viên” ở câu trên.
Thành phần tách từ Tiếng Việt trong Chatbot Nhất Nam sẽ sử dụng thư viện
Underthesea [25] của tác giả Vũ Anh và thư viện spaCy hỗ trợ Tiếng Việt [15]
của tác giả Trần Việt Trung, thư viện này giúp tách các từ tiếng Việt một cách chính xác nhất bao gồm cả từ đơn và từ ghép. Ví dụ trong câu trên sau quá trình tách từ ta được một chuỗi các từ [“Tôi”, “là”, “sinh_viên”, “trường”, “đại_học”, “Bách_Khoa”], do số từ được giảm cho nên quá trình training sẽ được rút ngắn và thu được kết quả tốt hơn. Rasa không hỗ trợ sẵn với thư viện Underthesea cho nên cần tạo một action tùy biến được viết trong file vietnamese_tokenizer.py.
Ứng dụng sử dụng pretrained-model spaCy hỗ trợ Tiếng Việt đã được huấn luyện dựa trên 18GB các bài báo Tiếng Việt. Cấu hình được khai báo trong file
46
Hình 3.11. Khai báo cấu hình trong file config.yml