CHƯƠNG 1 : TỔNG QUAN CÁC HỆ THỐNG CHATBOT Chương này sẽ giới thiệu những kiến thức tổng quan về một hệ thống Chatbot, các mô hình Chatbot bán hàng hiện nay, tìm hiểu chi tiết cấu trúc các thành phần và những vấn đề gặp phải khi xây dựng hệ thống Chatbot.1 Giới thiệu Hệ thống trả lời tự động hay còn gọi là Chatbot là một chương trình máy tính có khả năng giao tiếp với con người bằng cách tự động trả lời những câu hỏi hoặc xử lý tình huống. Trí thông minh của Chatbot được xác định bằng thuật toán của người tạo nên chúng. Chatbot được ứng dụng trong rất nhiều lĩnh vực như thương mại điện tử, dịch vụ khách hàng, tài chính ngân hàng, giải trí, y tế, giáo dục,…vv. Chatbot có thể được chia thành hai loại: - Loại thứ nhất: Hệ thống không có định hướng mục tiêu (Miền mở) Miền mở (Open Domain): Mô hình trả lời tự động trên miền mở cho phép người dùng có thể tham gia trò chuyện với một chủ đề bất kỳ, không nhất thiết phải có một mục tiêu rõ ràng hay một ý định cụ thể nào.
Các cuộc trò chuyện trên mạng xã hội như Facebook, Twitter thường là miền mở, chúng có thể đi vào tất cả các chủ đề. Số lượng các chủ đề thảo luận được đề cập đến là không giới hạn, do đó, tri thức yêu cầu được tạo ra để trả lời các câu đối thoại thuộc miền mở trở nên khó hơn. Tuy nhiên, việc thu thập trích rút dữ liệu từ miền này khá phong phú và đơn giản. - Loại thứ hai: Hệ thống hướng mục tiêu trên một miền ứng dụng (Miền đóng) Miền đóng (Close Domain): Mô hình trả lời tự động thuộc miền đóng thường tập trung vào trả lời các câu hỏi đối thoại liên quan đến một miền cụ thể, ví dụ như: Y tế, giáo dục, thời tiết, du lịch, mua sắm,.
Trong một miền đóng cụ thể, không gian các mẫu hỏi input và output là có giới hạn, bởi vì các hệ thống này đang cố gắng để đạt được một mục tiêu rất cụ thể. Hệ thống hỗ trợ kỹ thuật (Technical Customer Support) hay tư vấn và hỗ trợ mua hàng (Shopping Assistants) là các ứng dụng thuộc miền đóng. Các hệ thống này không thể đối thoại về cách lĩnh vực khác, chúng chỉ cần thực hiện các nhiệm vụ cụ thể một 5 cách hiệu quả nhất có thể. Chắc chắn, người dùng vẫn có thể hỏi đáp bất cứ gì, nhưng hệ thống không yêu cầu phải xử lý những trường hợp ngoại lệ này.
Mỗi cách tiếp cận bài toán đều có hướng giải quyết khác nhau dẫn tới các kỹ thuật sử dụng khác nhau. Trong luận văn này, tôi sẽ tập trung vào xây dựng Chatbot thuộc loại thứ hai, cụ thể là bài toán hướng mục tiêu tư vấn hỗ trợ mua hàng.2 Các mô hình chatbot bán hàng tiêu biểu hỗ trợ Tiếng Việt hiện nay 1.1 Chatbot theo kịch bản (menu/button) Chatbot theo kịch bản (menu/button) là các hệ thống phân cấp cây quyết định được trình bày cho người dùng dưới dạng các nút (button). Chatbot xây dựng sẵn một tập các menu với các lựa chọn như một chiếc điều khiển, người dùng phải giao tiếp với Chatbot thông qua các thao tác click vào nút đúng theo yêu cầu mình mong muốn, để nhận được câu trả lời của Chatbot. Sau đâu là một vài ví dụ về loại Chatbot này: Hình 1: Ví dụ về dạng Chatbot (menu/button) 6 Ở ví dụ trên Chatbot đã xây dựng sẵn ba nút chọn tương ứng với ba yêu cầu của người dùng, chỉ cần chọn click vào đúng nút theo nhu cầu của mình thì Chatbot sẽ trả lời theo đúng yêu cầu đó.
Ưu điểm của Chatbot này là xây dựng rất dễ dàng, độ chính xác cao vì người dùng đưa ra yêu cầu dựa trên những nút đã được xây dựng trước, tuy nhiên người dùng sẽ bị động trước những mong muốn của mình, mà phải phụ thuộc vào sự cung cấp các menu lựa chọn của Chatbot.2 Chatbot nhận dạng từ khoá Khác với các Chatbot dạng menu/button, các Chatbot dựa trên nhận dạng từ khóa có thể lắng nghe những câu nói của người dùng và trả lời một cách thích hợp. Những Chatbot sử dụng các từ khóa tùy biến và AI để xác định làm thế nào để đưa ra câu trả lời phù hợp nhất cho người dùng. Sau đây là ví dụ về loại Chatbot này: Hình 2: Ví dụ về Chatbot nhận dạng từ khoá 7 Trong ví dụ trên khi câu nói của người dùng xuất hiện từ khoá “xin giá” thì chatbot sẽ đưa ra câu trả lời về thông tin giá của sản phẩm và các thông tin liên quan đến sản phẩm. Ưu điểm của mô hình Chatbot này là giúp người dùng chủ động hơn trong việc đưa ra yêu cầu, như có thể đưa ra yêu cầu của mình thông qua câu nói mà không cần lựa chọn các nút nội dung yêu cầu làm cho cuộc trò truyện tự nhiên hơn.
Tuy mô hình này có những ưu điểm hơn so với Chatbot dựa trên menu/button nhưng nó vẫn còn khá nhiều những nhược điểm như khi người dùng sử dụng các từ đồng nghĩa với các từ khoá thì Chatbot không thể phát hiện được để trả lời phù hợp, và không thể nắm bắt được ngữ cảnh cuộc trò truyện. Hiện nay loại chatbot nhận dạng từ khóa kết hợp menu/button đang rất phổ biến trong lĩnh vực dịch vụ. Những dịch vụ hay sử dụng loại chatbot này là dịch vụ bán hàng, ship đồ ăn,…vv.3 Mô hình Chatbot bán hàng mà luận văn nghiên cứu Từ những phân tích về ưu nhược điểm của 2 mô hình Chatbot dựa trên menu/button và nhận dạng từ khoá, tôi lựa chọn xây dựng Chatbot dựa trên các phương pháp học máy và trí tuệ nhân tạo để có thể lắng nghe và hiểu được những yêu cầu của người dùng một cách tự nhiên nhất. Ví dụ như khi người dùng đưa ra một yêu cầu “Bộ sản phẩm mã sp90 này có giá bao nhiêu ?” thì Chatbot sẽ hiểu được ý định của người dùng đang muốn hỏi về thông tin giá sản phẩm và cụ thể là sản phẩm có mã sp90.
Với mô hình này thì mô hình này thì Chatbot thông minh hơn, có thể hiểu được các ý định và có thể trích chọn được các thông tin từ yêu cầu của người dùng, lưu được ngữ cảnh và sinh ra được câu trả lời phù hợp nhất, giúp cho trải nhiệm của người dùng được tự nhiên hơn. Để xây dựng được mô hình trên thì Chatbot phải có cấu trúc và các thành phần hệ thống như mục 1.3 của chương.3 Cấu trúc các thành phần hệ thống Chatbot Hình 3: Cấu trúc các thành phần cơ bản hệ thống Chatbot [12] Chatbot có ba thành phần chính là: thành phần hiểu ngôn ngữ tự nhiên (NLU), thành phần quản lý hội thoại (DM), thành phần sinh ngôn ngữ (NLG). Mỗi thành phần trong Chatbot đều có vai trò riêng: ➢ NLU: bao gồm việc xử lý ngôn ngữ tự nhiên (NLP) có nhiệm vụ xác định được ý định câu hỏi của người dùng (intent classification) và trích chọn thông tin (slots filter). ➢ DM: Quản lý hội thoại có nhiệm vụ xác định được hành động (action) tiếp theo dựa vào trạng thái hành động trước đó hoặc ngữ cảnh của cuộc hội thoại.
Các ngữ cảnh này phải được tham chiếu trong các kịch bản dựng sẵn (history) được đào tạo cho Chatbot. Thành phần này cũng chịu trách nhiệm việc truy xuất dữ liệu từ hệ thống khác qua các lệnh gọi API trong action. ➢ NLG: là thành phần sinh ngôn ngữ dựa vào chính sách (policy) và hành động được xác định trong DM thông qua các bộ hội thoại. NLG có thể sinh ra câu trả lời dựa vào tập mẫu câu trả lời (pre-defined template) đã đào tạo cho bot.
Để hiểu rõ chi tiết hơn về luồng xử lý tin nhắn từ các thành phần của Chatbot ta xem Hình 4: 9 Hình 4: Mô hình các thành phần xử lý trong Chatbot [1] 1.4 Hiểu ngôn ngữ tự nhiên (NLU) Đây có thể nói là thành phần quan trọng nhất của Chatbot. Chatbot có thông minh hay không thì đây là thành phần quyết định. Mục tiêu của thành phần này là trích xuất ra hai thành phần thông tin từ câu nói của người dùng: • Đầu tiên là phân loại ý định (intent classification), ví dụ như xác định được ý định của khách hàng như hỏi về giá sản phẩm, size mặc phù hợp, hỏi về dịch vụ ship hàng… • Cuối cùng là bước trích xuất thông tin (slot fillter hay entity extraction) trong câu hỏi người dùng. Ví dụ ta phải trích chọn được thông tin loại sản phẩm trong câu hỏi người dùng: “Chiếc áo này bao nhiêu tiền”.
Từ việc trích xuất được thông tin sản phẩm là “áo” thì Chatbot mới có cơ sở trả lời cho người dùng. • NLU xử lý tin nhắn người dùng bằng một đường ống (pipeline) nơi mà cấu hình các bước xử lý liên tiếp theo tuần tự: Phân loại ý định (intent Trích chọn thông tin Classification) (Entity Extraction) 10 Hình 5: Các bước xử lý chính trong pipeline của NLU [1] Trong đường ống này thì bạn có thể tùy chỉnh các thành phần từ bước tiền xử lý dữ liệu, mô hình hóa ngôn ngữ, các thuật toán dùng để tách từ và trích xuất thông tin thực thể… Để chi tiết các bước xử lý xem trong Hình 6: Hình 6: Các bước xử lý trong NLU [2] Để phân loại ý định của một câu nói của người dùng, chúng ta cần mô hình hóa ngôn ngữ, nghĩa là biểu diễn ngôn ngữ dưới dạng một vectơ số học để máy tính hiểu (vector hóa). Phương pháp phổ biến nhất hiện nay là nhúng từ (word embedding). Word embedding là tên chung cho một tập hợp các mô hình và phương pháp ngôn ngữ dành riêng cho xử lý ngôn ngữ tự nhiên (NLP), trong đó các từ hoặc cụm từ vựng được ánh xạ tới các vectơ số thực.
Về mặt khái niệm, nó liên quan đến việc nhúng toán học từ một không gian có một chiều cho mỗi từ vào không gian vectơ liên tục với các kích thước thấp hơn nhiều. Một số phương thức đại diện phổ biến như Word2Vec, GloVe hoặc FastText mới hơn sẽ được giới thiệu trong phần sau. 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 từ câu hỏi người dùng dựa trên tập đã training 11 là bước phân loại ý định (intent classification) hay phân loại văn bản. Ở bước này ta có thể dùng một số kỹ thuật như: - Naive Bayes.
- Vector Support Machine (SVM). - Convolution Neural Network (CNN). - Recurrent Neural Network (RNN). - Long Short-Term Memory (LSTM, Bi-LSTM).
Hầu hết các Chatbot hiện tại đều ứng dụng mô hình deep learning như RNN và LSTM để phân loại ý định người dùng.