CHƯƠNG 1: TỔNG QUAN: Trong chương này nhóm thực hiện trình bày tổng quan về đề tài, tình hình nghiên cứu, động lực lựa chọn đề tài cũng như tính cấp thiết xoay quanh và trình bày cấu trúc của đề tài. CHƯƠNG 2: CƠ SỞ LÝ THUYẾT: Giới thiệu khái niệm về những thuật toán máy học và kỹ thuật trong xử lý ngôn ngữ tự nhiên, quy trình và giải thuật để xây dựng mô hình máy học cho chatbot, cũng như các thư viện chính được sử dụng. CHƯƠNG 3: MÔ HÌNH MÁY HỌC TRONG CHATBOT: Trình bày phương pháp để xây dựng mô hình máy học, cách tối ưu mô hình máy học về bài toán nhận dạng định danh (Intent Classification). CHƯƠNG 4: XÂY DỰNG HỆ THỐNG PHẢN HỒI VÀ ỨNG DỤNG: Trình bày phương pháp mà nhóm thực hiện để xây dựng hệ thống phản hồi cho chatbot và cách ứng dụng hệ thống vào nền tảng Facebook Messenger.
4 do an CHƯƠNG 5: THỰC NGHIỆM VÀ ĐÁNH GIÁ: Trình bày kết quả huấn luyện mô hình nhận dạng định danh và kết quả thực nghiệm của ứng dụng chatbot. CHƯƠNG 6: NHẬN XÉT VÀ HƯỚNG PHÁT TRIỂN: Trình bày những nhận xét về mô hình máy học, mô hình chatbot, ưu nhược điểm, và hướng phát triển của đề tài. 5 do an CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 2. Mô hình Chatbot 2.
Khái niệm về chatbot Theo Wiki [7], chatbot (còn có nhiều tên gọi như conversational bot) là một chương trình máy tính hoặc một Trí thông minh nhân tạo (AI) tương tác với người dùng bằng ngôn ngữ tự nhiên dưới dạng âm thanh (Audiotory) hoặc dạng tin nhắn (Textual). Một cách tổng quan, nhóm thực hiện phân loại chatbot gồm 2 loại, tương ứng với việc ứng dụng cho 2 phạm vi khác nhau: - Phạm vi mở (Open domain): Những mô hình chatbot ở đây là một phần trong Hệ thống hội thoại (Dialogue system) và được gọi như là các trợ lý ảo (Virtual Assistance) như Siri (Apple), Google Assistant (Google)… Những trợ lý ảo này có thể trả lời người dùng về những câu hỏi liên quan đến những lĩnh vực khác nhau từ chính trị, tin tức,… Tuy nhiên, những trợ lý này không thể trả lời chuyên sâu về một lĩnh vực, ví dụ như yêu cầu về cách lựa chọn quần áo, đặt đồ ăn… - Phạm vi hẹp (Closed domain): Ngược lại với mô hình chatbot ở trên, những mô hình chatbot này có thể trả lời về những vấn đề chuyên sâu hơn về một lĩnh vực nào đó. Bot có thể hỗ trợ người dùng trong việc tư vấn về vấn đề lựa chọn quần áo, đặt đồ ăn… Ví dụ như: chatbot tư vấn quần áo (H&M), chatbot đặt order (Dominos Pizza)… 2. Các loại mô hình Chatbot Có rất nhiều cách để xây dựng một mô hình Chatbot mà có thể tương tác với con người.
Ở đây, nhóm thực hiện xin giới thiệu hai cách chính để thực hiện việc này: - Triển khai theo mô hình “Tuân theo nguyên tắc” (Rule – based model): Ở mô hình này, bot sẽ trả lời theo những “nguyên tắc” đã được định nghĩa trước, những “nguyên tắc” này có thể là những dòng yêu cầu từ đơn giản đến phức tạp. Với những nguyên tắc này, những nhà phát triển phải xác định các kịch bản phản hồi cho một tin nhắn phù hợp với mẫu quy định. Có thể hiểu nôm na rằng nhà phát triển sẽ dùng những lệnh if … else để xây dựng nên kịch bản cho một cuộc hội thoại. Tuy nhiên những mô hình triển khai theo cách này thường không trả lời được những câu hỏi mang tính phức tạp.
6 do an - Triển khai theo hướng “Sử dụng những thuật toán Máy học”: Những mô hình triển khai theo hướng này có hiệu quả hơn so với cách Tuân theo nguyên tắc ở trên. Mô hình triển khai theo cách này thường có 2 loại như sau: o Mô hình dựa trên sự thu hồi (Retrieval – based model): Bot sẽ được huấn luyện dựa trên tập câu hỏi và những câu trả lời khả thi. Đối với mỗi câu hỏi, bot có thể tìm ra những câu trả lời liên quan (relevant) nhất từ tập dữ các câu trả lời khả thi sau đó sẽ xuất một câu trả lời. Mặc dù mô hình bot này không có khả năng tạo ra những câu trả lời mới nhưng nếu mô hình được huấn luyện với một tập dữ liệu lớn, và những dữ liệu này được xử lý một cách thông minh thì bot vẫn có thể xử lý những câu hỏi một cách tốt nhất có thể.
Mô hình bot này sẽ không gặp vấn đề về việc trả lời những câu bị sai ngữ pháp bởi vì những câu trả lời đã được xác định trước. o Mô hình có khả năng tự tạo ra câu trả lời (Generative Model): Mô hình bot này sẽ tốt hơn mô hình trên về khả năng tự tạo ra những câu trả lời mới. Mô hình này sẽ lấy từng từ trong câu hỏi sau đó tạo ra những câu trả lời. Điều này cũng làm cho mô hình dễ dẫn tới lỗi về mặt cú pháp hoặc phát âm.
Để xử lý những lỗi này, mô hình cần được huấn luyện một cách chính xác nhiều hơn nữa. Người ta thường sử dụng mô hình Dịch ngôn ngữ (Language translation models) để xây dựng mô hình Generative bot. Tuy nhiên, những bước phát triển cho mô hình chatbot này vẫn còn hạn chế do nhiều vấn đề về thuật toán, và chưa thể đạt hiệu quả như mong muốn. Với mong muốn thực hiện mô hình chatbot bằng những thuật toán máy học, và phạm vi đề tài còn hẹp, nhóm thực hiện chọn cách xây dựng một mô hình máy học mà có kết hợp các kỹ thuật giữa Rule – based model và Retrieval – based model.
Tổng quan về việc xây dựng một mô hình Máy học Nhìn chung, khi học về Machine Learning, người học sẽ được thực hiện những thuật toán máy học trên những tập dữ liệu có sẵn để huấn luyện và tối ưu mô hình,… Tuy nhiên, khi giải quyết các bài toán trong thực tế bằng Machine Learning, chúng ta sẽ cần phải làm rất nhiều việc, từ những khâu như thu thập dữ liệu, đánh giá dữ liệu, và sau đó chúng ta mới có thể thực hiện những bước như Tiền xử lý dữ liệu (Data Preprocessing),… và cuối cùng mới có thể áp dụng những thuật toán máy học để có huấn luyện ra những mô hình máy học tốt nhất có thể [8]. Sau đây là một bức tranh tổng quan về mô hình chung cho các bài toán Máy học: 7 do an Hình 2. Mô hình tổng quan giải quyết một bài toán Máy học Có hai giai đoạn (phases) lớn là giai đoạn Huấn luyện (Training phase) và giai đoạn Kiểm tra (Testing phase). - Training phase: Có hai khối có nền màu xanh lục chúng ta cần phải thiết kế: o Bộ trích chọn đặc trưng (Feature Extractor): Đầu ra của khối này cũng như mục đích của việc trích chọn đặc trưng là tạo ra được một bộ trích chọn đặc trưng biến dữ liệu thô ban đầu thành dữ liệu phù hợp với từng mục đích khác nhau.
Đầu vào của khối này gồm: Dữ liệu thô (raw input) là tất cả các thông tin chúng ta biết về dữ liệu. Nếu là dữ liệu bán hàng, ta sẽ có các thông tin về sản phẩm được bán, ngày giờ bán, giá, thương hiệu… Dữ liệu thô này thường không ở dạng vector, không có số chiều như nhau. Hoặc có thể có số chiều như nhau, nhưng số chiều 8 do an quá lớn (ví dụ, ảnh màu 1000x1000 pixel), như vậy, sẽ không có lợi cho lưu trữ và tính toán. Ngõ ra của tập dữ liệu (output of training set) (không bắt buộc): dữ liệu này thường không cần sử dụng.
Tuy nhiên, trong nhiều trường hợp, dữ liệu output của training set cũng được sử dụng để tạo ra Feature Extractor. Ví dụ: trong bài toán classification, ta không quan tâm nhiều đến việc mất thông tin hay không, ta chỉ quan tâm đến việc những thông tin còn lại có đặc trưng cho từng class hay không. Ví dụ, dữ liệu thô là các hình vuông và hình tam giác có màu đỏ và xanh. Trong bài toán phân loại đa giác, các output là tam giác và vuông, thì ta không quan tâm tới màu sắc mà chỉ quan tâm tới số cạnh của đa giác.
Ngược lại, trong bài toán phân loại màu, các class là xanh và đỏ, ta không quan tâm tới số cạnh mà chỉ quan tâm đến màu sắc thôi. Những hiểu biết trước về dữ liệu (Prior knowledge about data) (Không bắt buộc): Đôi khi những giả thiết khác về dữ liệu cũng mang lại lợi ích. Ví dụ, trong bài toán phân loại (classification), nếu ta biết dữ liệu là (gần như) độc lập tuyến tính (linearly separable) thì ta sẽ đi tìm một ma trận chiếu sao cho ở trong không gian mới, dữ liệu vẫn đảm bảo tính linearly separable, việc này thuận tiện hơn cho phần classification vì các thuật toán linear, nhìn chung, đơn giản hơn. Sau khi xây dựng được feature extractor thì ta cũng sẽ thu được những Đặc trưng được trích chọn (extracted features) từ raw input data.
Những extracted features này được dùng để đem vào những mô hình, giải thuật ở khối tiếp theo. o Những giải thuật chính sử dụng (Main Algorithms): Ở đây tùy vào bài toán là phân loại hay hồi quy mà chúng ta sẽ có những lựa chọn giải thuật khác nhau. o Có một số lưu ý sau về giai đoạn này: Trong một số thuật toán cao cấp hơn, việc huấn luyện feature extractor và main algorithm được thực hiện cùng lúc với nhau chứ không phải từng bước như trên. 9 do an Đặc biệt là, khi xây dựng bộ feature extractor và main algorithms, chúng ta không được sử dụng bất kỳ thông tin nào trong tập test data.
Ta phải giả sử rằng những thông tin trong test data chưa được nhìn thấy bao giờ. - Testing phase: Bước này đơn giản hơn nhiều. Với raw input mới, ta sử dụng feature extractor đã tạo được ở trên (tất nhiên không được sử dụng output của nó vì output là cái ta đang đi tìm) để tạo ra feature vector tương ứng. Feature vector được đưa vào main algorithms đã được học ở training phase để dự đoán output.
Tiền xử lý cho dữ liệu dạng chuỗi - Túi đựng từ (Bag of Words/BoW): o Mô hình bag-of-words là một biểu diễn đơn giản hóa được sử dụng trong xử lý ngôn ngữ tự nhiên và truy xuất thông tin (Information Retrieval). Trong mô hình này, một văn bản (chẳng hạn như một câu hoặc một tài liệu) được thể hiện dưới dạng túi (bag) của các từ của nó, không quan tâm đến ngữ pháp và thậm chí trật tự từ nhưng vẫn giữ tính đa dạng. [7] Ví dụ: Ta có 2 đoạn văn như sau (1) John likes to watch movies. Mary likes movies too.
(2) John also likes to watch football games.