Tổng quan về Chatbot Libre và ứng dụng thuật toán thông minh

MỤC LỤC

Giới thiệu về Chatbot Libre

Java là một ngôn ngữ lập trình phổ biến, đa nền tảng và linh hoạt, thường được sử dụng cho các ứng dụng đòi hỏi độ tin cậy cao và tính chuyển động. Việc sử dụng Java giúp BotLibre có thể chạy trên nhiều môi trường khác nhau và làm cho nó trở nên dễ tích hợp vào các hệ thống và dự án phức tạp.

Chức năng

● Chat: Người dùng có thể trò chuyện với giọng nói chân thực, cảm xúc tự nhiên, và tương tác qua HTML, JavaScript, nút, liên kết, và lệnh. Ngoài ra, BotLibre cho phép kết nối nhiều nền tảng như Facebook, Twitter, Telegram, WhatsApp, Skype, Kik, WeChat, Slack, email, SMS, và IVR.

Kiến trúc chung

Trong đó webhook đóng vai trò quan trọng trong việc tiếp nhận các sự kiện phát sinh bên phía dịch vụ và gửi về Bot Libre để xử lý các sự kiện đó và Bot Libre sẽ gửi phản hồi cho phía dịch vụ. ● Thông qua các giao thức như POP3 hay IMAPS, Bot Libre có thể thực hiện truy cập vào email của người dùng và từ đó có thể giúp người dùng thực hiện soạn thảo nội dung email và gửi cho những người dùng khác.

Hình 1.3.2: Mô hình đối tượng - Object Model
Hình 1.3.2: Mô hình đối tượng - Object Model

Luồng xử lý

● BOTlibreRestService: Dịch vụ REST định nghĩa API web, API web được sử dụng từ JavaScript, ứng dụng và các webhook truyền thông mạng xã hội. ● Service: Các lớp dịch vụ kiểm tra truyền thông mạng xã hội, email và thực hiện các chức năng đếm giờ theo khoảng thời gian định sẵn.

AI Engine

Nó lấy đầu vào từ hàng đợi đầu vào hoạt động của bộ nhớ và xử lý đầu vào đó bằng các kịch bản(Script) của bot và một thuật toán tìm phản hồi đáp ứng dựa trên kinh nghiệm (Heuristic response matching algorithm). Sense object chuyển đổi các đối tượng đầu vào của bot sang và từ định dạng dữ liệu của API bên ngoài, chẳng hạn như chuyển đổi các đối tượng sang XML hoặc JSON, và xử lý các yêu cầu HTTP.

Hình 1.5.1: Kiến trúc của ai-engine
Hình 1.5.1: Kiến trúc của ai-engine

Dockers

Các ứng dụng web như Gmail, Google Docs, và Facebook đã trở thành một phần không thể thiếu trong cuộc sống hàng ngày, tạo ra môi trường làm việc chia sẻ và tương tác. Desktop cũng tạo điều kiện cho trải nghiệm người dùng tối ưu với khả năng tùy chỉnh cao, làm cho máy tính trở thành không gian cá nhân hóa cho mỗi người dùng.

Ngôn ngữ lập trình 1. Java

Python là một ngôn ngữ lập trình mạnh mẽ, dễ học và linh hoạt, được thiết kế để tối ưu cho sự đọc dễ hiểu và sự productiveness của người lập trình. PHP (viết tắt từ "PHP: Hypertext Preprocessor") là một ngôn ngữ lập trình mã nguồn mở, được sử dụng chủ yếu cho việc phát triển ứng dụng web động.

Định dạng dữ liệu 1. Json

Objective-C là một ngôn ngữ lập trình hướng đối tượng được sử dụng chủ yếu trong phát triển ứng dụng cho hệ điều hành iOS và macOS của Apple. XML (Extensible Markup Language) là một ngôn ngữ đánh dấu dựa trên văn bản được thiết kế để truyền tải và lưu trữ dữ liệu.

Cơ sở dữ liệu - PostgreSQL

● Replication và Sharding: PostgreSQL hỗ trợ các giải pháp như streaming replication để đảm bảo sao lưu và khả năng chia nhỏ dữ liệu thông qua sharding để cải thiện khả năng mở rộng. PostgreSQL được sử dụng rộng rãi trong nhiều ứng dụng, từ các dự án phát triển nhỏ đến các hệ thống cơ sở dữ liệu lớn và phức tạp.

Web Server - Tomcat

● Đa nền tảng: PostgreSQL có sẵn trên nhiều hệ điều hành như Linux, Windows, MacOS, và nhiều nền tảng khác.

SDK - Software Development Kit

● SDK Javascript: SDK JavaScript của Bot Libre là một công cụ mã nguồn mở, mang đến khả năng kiểm soát hoàn toàn cho việc tùy chỉnh giao diện và trải nghiệm người dùng trên nền tảng Bot Libre. ● SDK Wordpress: Bot Libre hỗ trợ tích hợp trên nền tảng WordPress thông qua một SDK đặc biệt bằng cách nhúng mã nhúng trong SDK vào trang quản trị Wordpress để tích hợp Bot Libre vào nền tảng này.

Một số thư viện hỗ trợ

● org.json.jar: Đây là một thư viện mã nguồn mở được phát triển nhằm cung cấp các lớp và giao diện lập trình ứng dụng (API) cho việc đọc và viết dữ liệu JSON. ● Commons Logging: Thư viện này cung cấp một giao diện đăng nhập đơn giản, đồng nhất để tương tác với các hệ thống đăng nhập khác nhau như Log4J, JDK Logging, và nhiều hơn nữa mà không phải thay đổi mã nguồn.

Scripting

AIML

Mối quan hệ #response của đối tượng câu hỏi sử dụng đối tượng siêu dữ liệu quan hệ để lưu trữ siêu dữ liệu về phản hồi, chẳng hạn như chủ đề, từ khóa và các từ bắt buộc. Thiết kế được kết nối tốt này cho phép lớp Language tìm kiếm heuristic các câu hỏi phù hợp tương tự bằng cách sử dụng các mối quan hệ từ, tương tự như cách hoạt động của bộ não con người.

Xử lý ngôn ngữ tự nhiên - Natural Language Processing - NLP

Máy trạng thái cho phép phân tích ngôn ngữ phức tạp tương tự như trình biên dịch phân tích cú pháp ngôn ngữ lập trình Máy trạng thái có thể được sử dụng để xử lý các biểu thức toán học phức tạp hoặc ngôn ngữ tự nhiên. Các mẫu AIML được biên dịch thành máy trạng thái để xử lý thứ tự ưu tiên ngữ nghĩa của chúng, nhưng AIML không có khái niệm về máy trạng thái, vì vậy các tính năng nâng cao của máy trạng thái không thể được sử dụng từ AIML.

Hình 2.12.1.1: Cơ chế NLP bằng phương pháp suy nghiệm từ khóa
Hình 2.12.1.1: Cơ chế NLP bằng phương pháp suy nghiệm từ khóa

Học sâu - Deep Learning

Mạng neuron học bằng cách tạo ra các tín hiệu lỗi đo lường sự khác biệt giữa các dự đoán của mạng và giá trị mong muốn, sau đó sử dụng tín hiệu lỗi này để cập nhật lại weight và bias trong Activation function để việc dự đoán sau đó chính xác hơn. Về kỹ thuật, mô hình CNN để training và kiểm tra, mỗi hình ảnh đầu vào sẽ chuyển nó qua 1 loạt các lớp tích chập với các bộ lọc (Kernels), tổng hợp lại các lớp được kết nối đầy đủ (Full Connected) và áp dụng hàm Softmax để phân loại đối tượng có giá trị xác suất giữa 0 và 1.

Hình 2.13.1.2: Hoạt động cơ bản bên trong một hidden layer của mạng neuron
Hình 2.13.1.2: Hoạt động cơ bản bên trong một hidden layer của mạng neuron

Tập dữ liệu - Dataset

● Tập dữ liệu đào tạo chatbot chăm sóc khách hàng(Customer Support Datasets for Chatbot Training): Relational Strategies in Customer Service Dataset, Ubuntu Dialogue Corpus, Customer Support on Twitter, v.v. ● Tập dữ liệu để đào tạo khả năng hiểu và phản ứng của chatbot đối với nhiều loại yêu cầu và tình huống trò chuyện khác nhau(Dialogue Datasets for Chatbot Training): Santa Barbara Corpus of Spoken American English, Semantic Web Interest Group IRC Chat Logs, MultiWOZ, The NPS Chat Corpus, ConvAI2 Dataset, Cornell Movie-Dialogs Corpus, v.v.

Cài đặt và triển khai 1. Môi trường cài đặt

● Sau khi đã cài đặt Docker thành công, chúng ta bắt đầu phần cài đặt và triển khai Bot Libre trên máy chủ. ● Sau đó, ta thực hiện câu lệnh (khởi động các dịch vụ được định nghĩa trong tệp docker-compose.yml, đồng thời xây dựng các Docker images cho các dịch vụ đó nếu cần thiết):. sudo docker compose up –build).

Hình 3.1.2.2: Truy cập đường dẫn chứa file docker
Hình 3.1.2.2: Truy cập đường dẫn chứa file docker

Hướng dẫn sử dụng 1. Hướng dẫn đăng nhập

● Website Subdomain (or domain): Người dùng có thể chọn tên miền phụ để lưu trữ trang web riêng của bot hoặc cung cấp tên miền mà người dùng đã đăng ký và chuyển tiếp đến máy chủ này. Mỗi khi bot gặp một câu hỏi chưa được training bot có thể trả lời một theo một phản hồi mặc định, người dùng có thể thêm một phản hồi mặc định khác nhằm làm đa dụng câu trả lời cho bot.

Hình 3.2.1.2: Màn hình đăng nhập
Hình 3.2.1.2: Màn hình đăng nhập

Thuật toán thông minh và Chatbot Libre - Neural Network 1. Cài đặt thuật toán

Thông qua việc sử dụng Neural Network cho việc giải quyết bài toán về TicTacToe, kết quả đạt được có thể thấy Chatbot Libre đã tạo nên một đối thủ chơi cờ tự động vô cùng thông minh với khả năng học tự động cũng như là có thể tổ hợp nhiều chiến thuật dựa trên dữ liệu từ các ván trước đó. Trong quá trình thực hiện đồ án 1 với đề tài "Nghiên cứu thuật toán thông minh và ứng dụng vào Chatbot Libre", nhóm chúng em đã tìm hiểu và có thêm cho mình những kiến thức hữu ích về một nền tảng Chatbot Libre vô cùng mạnh mẽ và có những cơ sở lý thuyết của một số thuật toán thông minh tiêu biểu của Machine Learning điển hình như Neural Network, CNN, RNN, v.v.

Hình 3.3.1.1: Class ActivationFunction
Hình 3.3.1.1: Class ActivationFunction

Những thuận lợi và hạn chế 1. Thuận lợi

Chúng em cũng đã cài đặt được Chatbot Libre và thực hiện được quá trình training cơ bản cho chatbot thông qua các tính năng được nhà phát triển hỗ trợ,. Điển hình với phần Facebook Messenger họ đã nâng cấp graph api đến bản v18.0 nhưng ở bản Communication của Bot Libre vẫn còn ở bản v2.6.

Hướng phát triển

Điều này dẫn đến việc kết nối với Facebook không thực hiện đạt hiệu quả như mong muốn. Bot chỉ có thể kết nối và trả lời thông qua chatlog chứ không thể gửi qua messenger do lỗi phiên bản.