CHƯƠNG 1: GIỚI THIỆU 1. Giới thiệu đề tài Bài toán xây dựng hệ thống hội thoại hay hệ thống trả lời tự động là một bài toán khó thuộc lĩnh vực xử lý ngôn ngữ tự nhiên. Bởi vì tính nhập nhằng, đa nghĩa, đa ngữ cảnh của ngôn ngữ tự nhiên. Bài toán đặt ra nhiều thách thức để phát hiện ra được câu trả lời phù hợp nhất, thông tin hữu ích nhất.
Hệ thống đối thoại (dialogue system), còn được gọi là các tác nhân hội thoại tương tác, trợ lý ảo, hay chatbot, được ứng dụng rộng rãi từ các dịch vụ hỗ trợ kỹ thuật tới các công cụ học ngôn ngữ và giải trí. Các hệ thống đối thoại có thể được chia thành các hệ thống hướng mục tiêu trên một miền ứng dụng, ví dụ như các dịch vụ hỗ trợ kỹ thuật, tư vấn bán hàng, và các hệ thống không có định hướng mục tiêu, ví dụ như các công cụ học ngôn ngữ hoặc các nhân vật trò chơi máy tính. Trên thế giới, các nhóm nghiên cứu, các doanh nghiệp đã và đang cố gắng tạo ra các dịch vụ trợ lý ảo nhằm thay đổi cách khách hàng tương tác, nhằm trợ giúp người dùng, khách hàng của mình có những trải nghiệm tốt nhất về sản phẩm và các dịch vụ cung cấp. Nổi bật nhất trong đó phải kể đến các nền tảng cho phép tạo ra các AI chatbot như Xenioo, Aivo, Botsify, Chatfuel hay Microsoft Bot Framework cho phép các nhà phát triển tạo ra các chatbot trên nền tảng Web, hay Facebook cũng có Messenger Platform cho phép các nhà phát triển tích hợp vào Messenger.
Ở trong nước, mới đây vào cuối tháng 12 năm 2018, tại sự kiện Zalo AI Summit diễn ra tại TP Hồ Chí Minh, Ki-Ki, trợ lý ảo đầu tiên của người Việt do Zalo thuộc VNG phát triển, đã cho thấy những tín hiệu lạc quan của ngành AI Việt Nam. Hiện trợ lý ảo Ki-Ki có thể thực hiện các tác vụ quen thuộc như mở nhạc, đọc tin, gửi tin nhắn, tra cứu thời tiết, tra cứu kiến thức thông qua ra lệnh bằng giọng nói tiếng Việt mà không cần thao tác chạm, gõ với điện thoại. Đặc biệt, Ki-Ki còn có khả năng hiểu được giọng nói của ba miền Bắc, Trung, Nam.1: Trợ lý ảo Ki-Ki tại Zalo AI Summit 2018 [zingnews]. Hiện nay, rất nhiều công ty, cá nhân vẫn đang cố gắng cải thiện và phát triển các trợ lý ảo để có thể hiểu được ngôn ngữ tự nhiên của con người nhiều hơn nữa, có thể đối thoại và tương tác được với con người một cách tự nhiên.
Các phương pháp tiếp cận trước đây thường giới hạn trong một nhiệm vụ nhất định, một mục tiêu rất cụ thể, ví dụ như đặt vé trực tuyến, hệ thống hỗ trợ kỹ thuật (Technical Customer Support) hay tư vấn và hỗ trợ mua hàng (Shopping Assistants), … Các hệ thống này yêu cầu phải thiết kế được các bộ luật học bằng tay, mất nhiều công sức mà hiệu quả đạt được không cao, khó mở rộng mô hình. Việc sử dụng kỹ thuật xử lý ngôn ngữ tự nhiên (Natural Language Processing – NLP) và các kỹ thuật học sâu (Deep Learning – DL) để làm tăng chất lượng và hiệu quả của hệ thống. Tuy nhiên từ lý thuyết đến thực tế là cả một chặng đường dài. Như vậy, hệ thống trả lời tự động hay hệ thống hội thoại có những nhiệm vụ và vai trò quan trọng, là cơ sở để xây dựng các trợ lý ảo để có thể trợ giúp được con người rất nhiều lĩnh vực: y tế, giáo dục, thương mại điện tử, …, xứng đáng để nghiên cứu và đưa ra các sản phẩm phù hợp với thực tế.
Với sự ra đời của mô hình Sequence-to-sequence (seq2seq) vào năm 2014 được giới thiệu bởi Google [3], nhiều hệ thống huấn luyện đã sử dụng các mạng nơ-ron để sinh ra các câu trả lời mới khi đưa vào mạng một câu hỏi hoặc một thông điệp. Lợi thế của phương pháp này là mô hình có thể được huấn luyện end-to-end trên tập dữ liệu có sẵn, và yêu cầu ít hơn các luật bằng tay. Đây là một hướng tiếp cận có nhiều triển vọng trong việc xây dựng một hệ thống đối thoại. Do đó, luận văn sẽ nghiên cứu dựa trên phương pháp Sequence-to-sequence và kết hợp với kỹ thuật Attention, để xây dựng mô hình đối thoại cho tiếng Việt, từ đó có thể áp dụng được vào các bài toán thực tế.
Mục tiêu của đề tài Với cơ sở thực tiễn trên, mục tiêu của luận văn là nghiên cứu các mô hình có thể phát sinh văn bản (Generative-based) sử dụng các mạng học sâu Deep Neural Networks, dựa trên phương pháp Sequence-to-sequence và Attention. Từ đó xây dựng một mô hình hội thoại Dialog thử nghiệm đơn giản cho tiếng Việt sử dụng kho dữ liệu phụ đề nguồn mở OpenSubtitles 2018. Ý nghĩa khoa học của đề tài Bài toán xây dựng hệ thống hội thoại hay chatbot đã được nghiên cứu và áp dụng nhiều cho tiếng Anh bởi tính phổ biến của nó và kho dữ liệu phong phú. Trong những năm gần đây bắt đầu có một số nghiên cứu để xây dựng hệ thống hội thoại cho tiếng Việt, điển hình là nghiên cứu của tác giả Nhữ Bảo Vũ [10].
Tuy nhiên, các nghiên cứu còn nhiều hạn chế và gặp rất nhiều khó khăn như thời gian huấn luyện rất lâu, chưa tận dụng được khả năng của GPU, hay chưa 14 trả lời được những câu hỏi khó, thường xuyên trả lời câu “tôi không biết”. Thực tế hiện nay, kho dữ liệu hội thoại cho tiếng Việt còn rất hạn chế. Kết hợp phương pháp Sequence-to-sequence và Attention, tác giả mong muốn tạo ra một hệ thống hội thoại cho tiếng Việt hiệu quả hơn. Từ đó, có khả năng áp dụng vào các bài toán thực tế, ví dụ như các hệ thống hỗ trợ hỏi đáp về y khoa, tư vấn mua hàng, hỗ trợ giải đáp kỹ thuật và các dịch vụ khác.
Phạm vi của đề tài Trong khuôn khổ của luận văn, tác giả giới hạn phương pháp nghiên cứu hội thoại với máy tính trong ngôn ngữ tự nhiên bằng văn bản trong tiếng Việt theo hướng học sâu sử dụng mô hình Sequence-to-sequence kết hợp kỹ thuật Attention. Dữ liệu huấn luyện và kiểm tra cho mô hình được lấy từ kho dữ liệu phụ đề nguồn mở OpenSubtitles 2018. Đầu vào hệ thống là văn bản tiếng Việt chuẩn unicode có thể là câu hỏi hoặc câu tường thuật trực tiếp, đầu ra là câu trả lời tương ứng. Những công trình nghiên cứu liên quan Hệ thống trả lời tự động đã được các nhà nghiên cứu quan tâm từ rất lâu, bao gồm các trường đại học, các viện nghiên cứu và các doanh nghiệp.
Việc nghiên cứu về hệ thống trả lời tự động có ý nghĩa trong khoa học và thực tế. Tình hình nghiên cứu ngoài nước: Công trình gần nhất 2019 của một tác giả với nickname reppy4620 hay ilikeniku1 trên Twitter - một sinh viên ở Nhật, là một hệ thống hội thoại cho tiếng Nhật sử dụng mô hình Transformer với BERT làm Encoder kết hợp với phương pháp Attention. Kiến trúc hệ thống gồm: • Encoder: BERT cl-tohoku/bert-base-japanese-whole-word-masking • Decoder: Vanilla Transformer's Decoder • Loss: CrossEntropy • Optimizer: AdamW • Tokenizer: BertJapaneseTokenizer • Epoch: 2 • Nguồn bài báo: https://qiita.com/reppy4620/items/e4305f22cd8f6962e00a • Blog cá nhân: https://jweb.asia/26-it/ai/51-bert-chatbot.html Theo bài viết, dữ liệu được tác giả thu thập từ Twitter có nhiều hạn chế nên hệ thống không có câu trả lời thích hợp (hình 1.2) và hệ thống vẫn còn trả lời “ngớ ngẩn” (hình 1.3) như: • Luôn trả lời “Chào buổi sáng” cho tất cả các câu tiếng Anh. • Nhiều câu trả lời “Hả?”.2: Kết quả của hệ thống hội thoại tiếng Nhật [reppy4620].3: Bản dịch tiếng Việt của kết quả của hệ thống hội thoại tiếng Nhật.
Một công trình khác cũng vào 2019 của nhóm tác giả Kenji Imamura và Eiichiro Sumita [14] là một hệ thống dịch máy để dịch tiếng Anh sang tiếng Đức. Hệ thống cũng sử dụng mô hình Transformer với 𝐵𝐸𝑅𝑇𝐵𝑎𝑠𝑒,𝑈𝑛𝑐𝑎𝑠𝑒𝑑 làm Encoder và có hai giai đoạn gồm: huấn luyện Decoder và fine-tuning toàn bộ mô hình. Dữ liệu được sử dụng để huấn luyện mô hình là WMT-2014 En-De Corpus của nhóm nghiên cứu NLP tại trường đại học Stanford. Hệ thống cho kết quả khá tốt mặc dù điểm BLEU cực kỳ thấp.
16 Tình hình nghiên cứu trong nước Công trình gần nhất với lĩnh vực của đề tài này cũng dựa trên mô hình Sequence-to-sequence, tác giả Nhữ Bảo Vũ [10] đã xây dựng “mô hình đối thoại cho tiếng Việt trên miền mở dựa vào phương pháp chuỗi học liên tiếp” vào 2016. Dữ liệu được sử dụng để huấn luyện mô hình là OpenSubtitles 2016. Tuy nhiên, công trình này còn nhiều hạn chế và gặp rất nhiều khó khăn như thời gian huấn luyện rất lâu, chưa tận dụng được khả năng của GPU, chưa kết hợp kỹ thuật Attention, hay chưa trả lời được những câu hỏi khó, thường xuyên trả lời câu “tôi không biết”. Tác giả đã sử dụng kiến trúc Recurrent Neural Networks (RNNs).
Điểm yếu của phương pháp này là sự phụ thuộc xa giữa các từ trong câu và tốc độ huấn luyện chậm do phải xử lý dữ liệu đầu vào một cách tuần tự, mặc dù đã sử dụng phiên bản Long-short Term Memory (LSTM) nhưng việc cải thiện cũng không đáng kể. Công trình gần đây nhất vào năm 2019 của một tác giả với nickname là mailong25 tại doanh nghiệp hoặc nhóm Solve AGI. Tác giả đã xây dựng một hệ thống hỏi đáp tiếng Việt với mô hình BERT (hình 1.4: Kiến trúc hỏi đáp với BERT [github.com] Ý tưởng của hệ thống là tác giả phát triển thêm một hệ thống phụ hỗ trợ tìm tài liệu, đoạn văn bản liên quan với câu hỏi đầu vào bằng cách sử dụng Google Search API. Tiếp theo, hệ thống xếp hạng các văn bản dựa vào độ liên quan các từ khóa trích theo n-gram (bigram, trigram, fourgram…).
Sau đó sử dụng lớp sẵn có BertForQuestionAnswering của thư viện PyTorch với mô hình học sẵn BERT để trích xuất câu trả lời trong các văn bản. Theo tác giả mailong25 thì hệ thống vẫn còn hạn chế về số lượng dữ liệu và chỉ hỗ trợ các câu hỏi liên quan đến con người bởi vì phụ thuộc độ tốt của hệ thống phụ. 17 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2. Kiến trúc Transformer Thời gian gần đây, hầu hết các tác vụ xử lý ngôn ngữ tự nhiên, đặc biệt là dịch máy (Machine Translation) thường sử dụng kiến trúc Recurrent Neural Networks (RNNs).
Điểm yếu của phương pháp này là rất khó bắt được sự phụ thuộc xa giữa các từ trong câu và tốc độ huấn luyện chậm do phải xử lý dữ liệu đầu vào một cách tuần tự, mặc dù đã sử dụng phiên bản Truncated Backpropagation Through Time, Long-short Term Memory (LSTM) hay Gated Recurrent Unit (GRU) nhưng việc cải thiện cũng không đáng kể.