Chatbot 101
Một cái nhìn khái quát về cái ở title

If performing a task took longer than 2 steps on UI, chatbots provided a much better user experience.

Trong bài này, chúng mình sẽ cùng tìm hiểu về một thứ gọi là Chatbot.

Giới thiệu

Thực ra thì với từ Chatbot, mình muốn nói tới Conversational Agent hay Dialog Agent. Theo mình đọc được từ cuốn Speech and Language Processing thì 2 từ trên là 2 từ phổ biến được giới nghiên cứu sử dụng để nói tới cái mà bọn mình đang tìm hiểu. Tuy nhiên, từ Chatbot lại được sử dụng phổ biến và rộng rãi trong báo chí cũng như công nghiệp; trong giới nghiên cứu, từ này được sử dụng với một định nghĩa khác hơn. Bài viết sẽ giới thiệu khái quát về các vấn đề mà khi tìm hiểu Chatbor bạn sẽ thường gặp phải.

Có 2 loại Dialog Agent:

Open Domain vs Closed Domain

Từ 2 loại Chatbot kể trên mà người ta có khái niệm về Open DomainClosed Domain.

Trong Open Domain, người dùng có thể đưa cuộc hội thoại đến bất cứ đâu. Không có một chủ đề hay một mục đích cố định nào. Nó tương tự như những cuộc hội thoại trên Mạng xã hội, khi các bạn chat với nhau. Bạn có thể đang nói về một bộ phim và chuyển sang tối nay ăn gì rồi lại quay sang chuyện cách mạng 4.0. Cũng vì do số lượng chủ đề là vô vàn, hệ thống cần phải trả về lượng reponse tương ứng mà đây trở thành một bài toán khá khó. Mitsuku chính là một ví dụ tiêu biểu cho Open Domain.

Open Domain: I can ask a question about any topic… and expect a relevant response. (Harder) Think of a long conversation around refinancing my mortgage where I could ask anything.

Còn với Closed Domain, inputs và outputs được cho là có hạn bởi vì hệ thống chỉ chú tâm vào giải quyết một mục tiêu cụ thể. Các chatbot ngân hàng là 1 ví dụ cụ thể, ở đây bạn không thể vào hỏi những câu kiểu thời tiết ngày mai như nào và mong có câu trả lời thích đáng được (có thể có nếu như ngân hàng áp dụng Open Domain chăng).

Closed Domain: You can ask a limited set of questions on specific topics. (Easier). What is the Weather in Miami?

Các bước cơ bản để dựng 1 Chatbot (Task-oriented)

Khi dựng 1 Chatbot thường sẽ quan tâm đến 3 thứ sau:

Ví dụ: Thời tiết ở Hà Nội ngày mai như nào ?

Đế thiết kế ra một hệ thống chatbot, bạn có thể sử dụng các công cụ có sẵn hỗ trợ hay tự mình dựng lại từ đầu. Sau đây, chúng mình sẽ cùng tìm hiểu về cả 2 cách nhé.

Chatbot frameworks

Không cần đụng tới một dòng code nào, bạn vẫn có thể tạo cho mình một hệ thống Chatbot sử dụng các frameworks như: Chatfuel, ManyChat, FlowXO, Octane, Recime, etc.

Nếu bạn là lập trình viên, có ít kinh nghiệm với Machine Learning, nhưng muốn tích hợp chatbot cho hệ thống có sẵn của mình, bạn có thể sử dụng các APIs, services được cung cấp bởi các công ty công nghệ hàng đầu như Google Diaglogflow, Amazon Lex, Facebook Wit, etc

Mỗi công cụ đều có điểm mạnh yếu riêng, nhưng nhìn chung thì chúng có luồng làm việc khá là giống nhau.

Retrieval-base vs Generative models

Việc tự xây cho mình Chatbot models sẽ yêu cầu bạn có kiến thức nhiều hơn về mảng lập trình, Machine learning và có thể là cả Deep learning. Chatbot models nhìn chung chia ra ít nhất làm 2 loại là Retrieval-base models và Generative models.

Retrieval-based model

Mô hình này lấy câu trả lời/ hồi đáp từ một tập định trước bằng một số loại Heuristic để có thế pick được phản hồi phù hợp nhất với đầu vào (input) và bối cảnh (context). Heuristic ở đây có thể đơn giản là các kĩ thuật khớp luật (rule-based expression matching), sử dụng bài toán phân lớp trong Machine Learning, phức tạp hơn là các Neural Network và state-of-the-art hiện nay theo mình biết là Memory NetworkSenmatic Networks

Ưu điểm:

Nhược điểm:

Generative models

Những mô hình như thế này không dựa vào tập phản hồi định nghĩa trước. Chúng tạo ra những câu trả lời “mới toanh” hay là do nó tự “nghĩ” ra. Generative models được phát triển dựa trên bài toán Dịch Máy (Machine translation), nhưng thay vì dịch từ ngôn ngữ này sang ngôn ngữ khác, chúng mình dịch từ input ra output (phản hồi). Lớp bài toán này thường sử dụng model sequence to sequence để sinh ra text.

Ưu điểm:

Nhược điểm:

Kết luận

Mặc dù vậy, hiện nay Chatbot phần lớn vẫn là rule-based khá nhiều, tồn tại một số thách thức như là: Theo sát được bối cảnh câu chuyện (context), cá nhân hóa, gán cho mỗi Chatbot một tính cách, định danh riêng, rồi thì làm thế nào để đánh giá được một mô hình Chatbot là tốt hay không tốt, tốt như thế nào. Các thách thức kể trên vẫn đang và sẽ được các nhà khoa hoc, các viện nghiên cứu tập trung tìm phương án giải quyết. Chúng mình có thể hi vọng vào tương lai sẽ có một Doraemon, một Samantha thực sự có thể trò chuyện với con người, đem đến cảm giác như là 2 con người đang nói với nhau chứ không chỉ còn là người và máy.

Nếu có dịp, mình sẽ viết sâu hơn về các models đề cập trong bài viết này. Thanks for reading !

References:

*****
Written by Trung Nghia Nguyen on 01 January 2019