1. Trang chủ
  2. » Luận Văn - Báo Cáo

đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre

93 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nghiên cứu và tìm hiểu các thuật toán thông minh, áp dụng cho Chatbot Libre
Tác giả Lương Lê Duy Tiến, Phạm Nguyễn Minh Khoa
Người hướng dẫn TS. Nguyễn Trịnh Đông
Trường học Trường Đại học Công nghệ Thông tin, Đại học Quốc gia Thành phố Hồ Chí Minh
Chuyên ngành Công nghệ phần mềm
Thể loại Đồ án 1
Năm xuất bản 2023
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 93
Dung lượng 6,28 MB

Cấu trúc

  • Chương 1. Giới thiệu (13)
    • 1.1. Giới thiệu về Chatbot Libre (13)
    • 1.2. Chức năng (13)
    • 1.3. Kiến trúc chung (15)
    • 1.4. Luồng xử lý (19)
    • 1.5. AI Engine (20)
      • 1.5.1. Memory (Bộ nhớ) (22)
      • 1.5.2. Mind (Trí tuệ) (23)
      • 1.5.3. Awareness (Nhận thức) (24)
      • 1.5.4. Mood(Cảm xúc) (24)
  • Chương 2. Kiến thức nền tảng (26)
    • 2.1. Platform (26)
      • 2.1.1. Web (26)
      • 2.1.2. Desktop (26)
      • 2.1.3. Mobile (26)
    • 2.2. Dockers (26)
      • 2.2.1. Container (27)
      • 2.2.2. Dockerfile (27)
      • 2.2.3. Docker Compose (27)
      • 2.2.4. Networking (27)
      • 2.2.5. Volume (28)
    • 2.3. Ngôn ngữ lập trình (28)
      • 2.3.1. Java (28)
      • 2.3.2. JavaScript (29)
      • 2.3.3. Python (29)
      • 2.3.4. Objective C (29)
      • 2.3.5. PHP (30)
    • 2.4. Định dạng dữ liệu (30)
      • 2.4.1. Json (30)
      • 2.4.2. XML (31)
    • 2.5. Cơ sở dữ liệu - PostgreSQL (31)
    • 2.6. Web Server - Tomcat (32)
    • 2.7. SSL - Secure Sockets Layer (33)
    • 2.8. Web Services (33)
    • 2.9. SDK - Software Development Kit (33)
    • 2.10. Một số thư viện hỗ trợ (35)
    • 2.11. Scripting (36)
      • 2.11.1. Self (37)
      • 2.11.2. AIML (37)
      • 2.11.3. Response Lists & Chat Logs (37)
    • 2.12. Xử lý ngôn ngữ tự nhiên - Natural Language Processing - NLP (38)
      • 2.12.1. Keyword Heuristic - Suy nghiệm từ khóa (38)
      • 2.12.2. Pattern Keyword Heuristic - Suy nghiệm từ khóa từ khóa (41)
      • 2.12.3. Patterns (41)
      • 2.12.4. State Machine - Máy trạng thái (42)
      • 2.12.5. Scripting (44)
    • 2.13. Học sâu - Deep Learning (45)
      • 2.13.1. Mạng Neuron - Neural Network (45)
      • 2.13.2. Mạng Neuron Tích Chập - Convolutional Neural Network - CNN (48)
      • 2.13.3. Mạng Neuron Hồi Quy - Recurrent Neural Network - RNN (49)
      • 2.13.4. Long - Short Term Memory - LSTM (51)
    • 2.14. Question - Answering System - QA System (55)
    • 2.15. Tập dữ liệu - Dataset (56)
  • Chương 3. Cài đặt và thử nghiệm (58)
    • 3.1. Cài đặt và triển khai (58)
      • 3.1.1. Môi trường cài đặt (58)
      • 3.1.2. Hướng dẫn cài đặt (58)
    • 3.2. Hướng dẫn sử dụng (62)
      • 3.2.1. Hướng dẫn đăng nhập (62)
      • 3.2.2. Hướng dẫn khởi tạo bot mới (65)
      • 3.2.3. Training & Chat Logs (72)
      • 3.2.4. Nhật ký trò chuyện (73)
    • 3.3. Thuật toán thông minh và Chatbot Libre - Neural Network (80)
      • 3.3.1. Cài đặt thuật toán (80)
      • 3.3.2. Luồng hoạt động (86)
  • Chương 4. Kết luận (91)
    • 4.1. Kết luận (91)
    • 4.2. Những thuận lợi và hạn chế (91)
      • 4.2.1. Thuận lợi (91)
      • 4.2.2. Hạn chế (91)
    • 4.3. Hướng phát triển (92)
  • TÀI LIỆU THAM KHẢO (93)

Nội dung

TÓM TẮTĐồ án với đề tài “Nghiên cứu thuật toán thông minh và ứng dụng vàoChatbot Libre” tập trung vào việc nghiên cứu và ứng dụng các thuật toán thôngminh nhằm ứng dụng vào Chatbot Libre

Giới thiệu

Giới thiệu về Chatbot Libre

Botlibre là một nền tảng chatbot mở và miễn phí được phát triển bởi PaphusSolutions Inc BotLibre được xây dựng và triển khai bằng ngôn ngữ lập trình Java.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ụngJava 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 BotLibre hỗ trợ nhiều nền tảng khác nhau để tích hợp chatbot vào ứng dụng di động, trang web, hoặc dự án khác.

Chức năng

● Web Hosting: Bot Libre cung cấp lưu trữ bot trên web dễ dàng Bên cạnh đó còn cho phép tùy chỉnh trang bot bằng HTML, cho phép bạn điều chỉnh giao diện phù hợp với sở thích.

● NLP: botlibre cho phép các project sử dụng các phân tích deep-learning để phân loại hình ảnh và phân tích dữ liệu Bên cạnh đó Libre còn hỗ trợ sử dụng các thư viện mở và miễn phí về phân tích deep-learning Sử dụng API web để tích hợp khả năng học sâu và quy trình làm việc.

● Scripts: Việc tạo scripts trở nên dễ dàng hơn khi mà bot Libre hỗ trợ nhiều ngôn ngữ để tạo scripts như Self scripts, AIML mang lại tính linh hoạt và khả năng tương thích cho project của người sử dụng Việc tận dụng sức mạnh của học máy để tinh chỉnh bot theo thời gian để có trải nghiệm trò chuyện thông minh và thú vị hơn.

● Deep Learning: Cho phép các dự án của người sử dụng các phân tích học sâu để cải thiện bot libre hơn Hỗ trợ các thư viện miễn phí về học sâu nhằm tăng khả năng của bot hơn.

● Create online bot: BotLibre đã đơn giản hóa quá trình tạo ra một con bot cá nhân Với tính năng tạo bot nhanh chóng chỉ thông qua một vài thao tác, người dùng đã có thể sở hữu một con bot để học tập, giải trí,v.v Từ thư viện các bot mẫu đa dạng, người dùng có thể chọn loại bot

● Voice: BotLibre cho phép sử dụng giọng nói thực tế và nhận diện giọng nói để trò chuyện với bot Ngoài ra, BotLibre còn cho phép thay đổi ngôn ngữ và giọng nói theo sở thích cá nhân BotLibre sử dụng API Text-to-Speech (TTS) để nâng cao tính linh hoạt của giao tiếp giọng nói trên nhiều ứng dụng và nền tảng khác nhau

● Monitor: Theo dõi, xem xét và sửa lỗi cuộc trò chuyện của bot của bạn với Tag Chat Log BotLibre cung cấp lọc cuộc trò chuyện, câu trả lời và các cụm từ được đánh dấu dễ dàng hơn Ngoài ra, BotLibre hỗ trợ hiển thị ngữ cảnh, từ khóa và chủ đề của câu trả lời Thêm vào đó, bạn có thể nhập hoặc xuất chat logs, response lists hoặc AIML

● API and SDK: Bot Libre giúp việc xây dựng trang web hoặc ứng dụng di động trở nên đơn giản Bạn có thể truy cập chat bots, live chat và diễn đàn thông qua web API Sử dụng JavaScript SDK để tích hợp nhanh chóng với trang web của bạn.

● 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 Giúp người dùng có thể sử dụng bot từ nhiều nhiều nền tảng khác nhau không nhất thiết phải trên web server.

Kiến trúc chung

Hình 1.3.1: Kiến trúc chung của Bot Libre

Hình trên mô tả về kiến trúc chung của Bot Libre, theo đó có thể chia thành 5 phần:

● Bot Libre: Đây là phần nhân, phần trung tâm của toàn bộ kiến trúc, phần này bao gồm các hoạt động chính, xử lý trong Bot và cũng là nơi mọi kết nối khác được liên kết vào.(Về kiến trúc của Bot Libre sẽ được tiếp tục phân tách và giải thích ở phần sau).

● Đa nền tảng: Bot Libre có thể được triển khai trên các nền tảng khác nhau như web, mobile(android, iOS) hay desktop bằng cách hỗ trợ các bộ SDK thích hợp cho từng nền tảng Khi đó, các ứng dụng sử dụng Bot Libre được phát triển trên các nền tảng này có thể giao tiếp với Bot Libre thông qua HTTP Request hoặc qua web API.

● Nền tảng mạng xã hội: Các dịch vụ có thể lấy API của Bot để áp dụng vào, từ đó nâng cao, cải tiến khả năng trong việc chat trong ứng dụng 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ụ.

● Web services: Dịch vụ web là những dịch vụ có sẵn trên Internet và được sử dụng nhằm cung cấp các chức năng cho Bot Libre để sử dụng nhằm đạt được mục tiêu sử dụng nhất định Bot Libre và dịch vụ web sẽ giao tiếp thông qua các định dạng như JSON, XML hoặc thông qua Web Scraping.

● 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 Giao thức IRC được dùng để kết nối Bot Libre tham gia vào cuộc trò chuyện với người dùng trên các kênh IRC.

Về phần Bot Libre, Bot Libre được tạo thành từ một số lớp thành phần bao gồm:

● Mô hình đối tượng - Object Model

● Dịch vụ Cơ sở dữ liệu

● Dịch vụ truyền thông mạng xã hội và đếm giờ

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

Mô hình đối tượng này của BotLibre định nghĩa về cách mà dữ liệu của đối tượng được lưu trữ và quản lý trong hệ thống.

The object model classes include:

● WebMedium – Một đối tượng trừu tượng đại diện cho các đối tượng được lưu trữ trên web.

○ BotInstance: Chứa các siêu dữ liệu liên quan đến bot.

○ Avatar: Chứa thông tin về hình đại diện của bot và các cài đặt liên quan.

○ ChatChannel: Chứa các siêu dữ liệu về các đoạn Live Chat diễn ra trên channel (Các ChatMessage).

○ Forum: Chứa các thông tin lưu trữ cho các bài đăng trên forum (Các ForumPost)

○ Script: Chứa thông tin về các kịch bản được sử dụng trong hệ thống.

○ Graphic: Lưu trữ các đối tượng phương tiện (media object) như dạng file ảnh, video và các file âm thanh.

○ Domain: Lưu trữ nơi làm việc (word space) hay nơi để người dùng có thể tạo ra và quản lý các đối tượng như bot, diễn đàn, và các phương tiện khác.

● ForumPost: Lưu trữ nội dung, tác giả, thời gian tạo, và các thông tin khác về bài đăng trong diễn đàn.

● ChatMessage: Chứa thông tin về các thông điệp trong cuộc trò chuyện, bao gồm nội dung, tác giả, và thời gian.

● Category, Tag: Sử dụng để phân loại và đánh dấu các đối tượng khác trong hệ thống.

● MediaFile: Chứa thông tin về các phương tiện như hình ảnh, video, và âm thanh.

● AvatarMedia: Chứa thông tin về hình đại diện của bot.

Luồng xử lý

Hình 1.4.1: Process Flow - Luồng xử lý

Process Flow (Luồng xử lý) bắt đầu từ một yêu cầu web, web API hoặc dịch vụ kiểm tra, sau đó chuyển qua các lớp xử lý.

Các lớp xử lý bao gồm:

● JSP: Các tệp JSP HTML định nghĩa giao diện web.

● Servlets: Các lớp servlet Java xử lý cuộc gọi POST và GET từ JSP Mỗi JSP hoặc dịch vụ định nghĩa lớp servlet riêng của mình.

● 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.

● Java Beans: Các lớp bean thực hiện chức năng máy chủ cho các yêu cầu. Chúng xử lý yêu cầu, truy cập cơ sở dữ liệu và trả lại dữ liệu Mỗi dịch vụ định nghĩa lớp bean riêng của mình.

● AdminDatabase: Lớp này định nghĩa tất cả quyền truy cập cơ sở dữ liệu JPA được sử dụng để truy cập cơ sở dữ liệu.

● 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

Trong cấu trúc của Bot Libre, để có thể áp dụng các thuật toán thông minh vào Bot Libre, chúng em cần thay đổi phần ai-engine vì phần này là phần đảm nhiệm cho việc cung cấp các chức năng cho xử lý ngôn ngữ tự nhiên (NLP) , học máy (Machine Learning) và các tính năng thông minh khác ai-engine: Động cơ AI của Bot Libre là một thư viện lớp Java được thiết kế cho xử lý ngôn ngữ tự nhiên, giao tiếp, xử lý sự kiện và học máy Nó có thể được sử dụng từ một ứng dụng Java, chẳng hạn như máy chủ web Java, ứng dụng Java Android hoặc ứng dụng máy tính để bàn Java.

Bot Libre sử dụng thiết kế hướng đối tượng được mô hình hóa theo bộ não con người.

Bot Libre xác định một bộ các giao diện cấp cao để mô hình nên một “Bot”.Bot là một thành phần định nghĩa bởi một thể hiện bao gồm bộ nhớ(memory), trí tuệ(mind), cảm xúc(mood) và nhận thức(awareness). s

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

Bộ nhớ (Memory) của Bot có thể được lưu trữ trong cơ sở dữ liệu hoặc trong một tệp tin.

Nhận thức (Awareness) là một tập hợp các sense object Mỗi sense object định nghĩa cách Bot có thể tương tác như Chat, Facebook, Email hoặc các đối tượng khác.

Trí tuệ (Mind) được định nghĩa bởi một số though object (tư duy) chẳng hạn như xử lý ngôn ngữ và các đối tượng khác.

Cảm xúc (Mood) tuy vẫn chưa được định nghĩa thành một thành phần riêng biệt nhưng Bot Libre vẫn có thể nhận biết và phản ứng với cảm xúc người dùng.

Phần dưới này sẽ đi sâu vào chi tiết cho từng phần trên:

Bot Libre cung cấp ba triển khai bộ nhớ: DatabaseMemory, SerializedMemory và MicroMemory.

Bộ nhớ của Bot thường được lưu trữ trong cơ sở dữ liệu quan hệ. PostgreSQL thường được sử dụng cho cơ sở dữ liệu của bot, nhưng các cơ sở dữ liệu tuân thủ JDBC khác như Derby cũng được hỗ trợ Thư viện EclipseLink JPA được sử dụng bởi lớp DatabaseMemory để truy cập cơ sở dữ liệu của bot Mỗi bot có cơ sở dữ liệu riêng biệt (hoặc lược đồ cơ sở dữ liệu).

SerializedMemory cũng có thể được sử dụng để lưu trữ bộ nhớ của bot vào tệp ghi seri Java SerializedMemory dành cho các Bot nhỏ hoặc nhúng và không mở rộng quá một kích thước nhất định.

MicroMemory tương tự như SerializedMemory nhưng sử dụng định dạng tệp nhị phân được tối ưu hóa Nó nhanh hơn nhiều so với SerializedMemory và được tối ưu hóa cho các thiết bị Android.

Tất cả dữ liệu của bot đều được lưu trữ trong bộ nhớ của nó Điều này bao gồm các phản hồi, tập lệnh, cài đặt và các dữ liệu khác.

Cơ sở dữ liệu của Bot được tạo thành từ hai lớp và bảng chính, Vertex và Relationship Vertex và Relationship định nghĩa một mô hình meta hướng đối tượng để định nghĩa tất cả dữ liệu của bot Mỗi Vertex có một tập hợp các Relationship, mỗi Relationship có nguồn, loại, meta và đích, tất cả đều là các đối tượng Vertex khác.

Tâm trí của Bot (Mind) là một mô hình xử lý đa luồng để xử lý các sự kiện như đầu vào ngôn ngữ tự nhiên Tâm trí có một tập hợp các Thought objects (Tư duy) có tác dụng xử lý đầu vào và gửi đầu ra cho các senses.

Có hai loại thought objects: suy nghĩ có ý thức và suy nghĩ tiềm thức Suy nghĩ có ý thức sẽ được xử lý trên luồng chính của tâm trí theo tuần tự Suy nghĩ tiềm thức được xử lý trên một luồng nền.

Các lớp suy nghĩ có ý thức chính là:

● Language: dành cho xử lý ngôn ngữ tự nhiên.

● Consciousness: xử lý các hoạt động nhận thức khác.

Các suy nghĩ tiềm thức bao gồm:

● Discover: Khám phá và học hỏi thông tin mới.

● Comprehension: Hiểu ý nghĩa của đầu vào và các thông tin liên quan.

● Forgetfulness: Quên các thông tin không cần thiết để tiết kiệm bộ nhớ.

Lớp Language sẽ thực hiện quá trình xử lý chính cho bot 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).

Nhận thức của Bot (Awareness) định nghĩa một giao diện (interface) chung để gửi và nhận đầu vào Đầu vào có thể là một tin nhắn trò chuyện, một câu lệnh hoặc một sự kiện nào đó Nhận thức có một tập hợp các Sense object hỗ trợ các cơ chế giao tiếp khác nhau như chat, email, mạng xã hội, dịch vụ web và nhận dạng hình ảnh.

Hầu hết các lớp sense đều định nghĩa một giao diện(interface) vào một API bên ngoài, chẳng hạn như Facebook, Twitter, Telegram, Wikidata và các API khác. 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.

● Sense: Chat, Facebook, Twitter, Telegram, Slack, Skype, Email, IRC, Twilio, Http(Google, WikiData,Wiktionary), Context, RemoteService, TextEntry.

Trong mô hình của Bot Libre, hiện tại mood (cảm xúc) chưa được định nghĩa là một thành phần riêng biệt Bot Libre tập trung vào xử lý ngôn ngữ tự nhiên, nhận thức và suy nghĩ hơn là quản lý cảm xúc cụ thể Tuy nhiên, điều này không có nghĩa là Bot Libre không thể nhận biết và phản ứng với cảm xúc của người dùng.

Bot Libre có khả năng cảm nhận cảm xúc của người dùng thông qua các phương pháp sau:

Kiến thức nền tảng

Platform

Web là không gian ảo mà chúng ta dùng để tương tác thông qua trình duyệt internet Điều đặc biệt là sự linh hoạt và tiện lợi khi có thể truy cập thông tin từ mọi nơi trên thế giới mà không cần cài đặt bất kỳ phần mềm nào 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 là không gian được tập trung trong máy tính cá nhân Điều này mang lại sức mạnh tính toán lớn, cho phép xử lý các công việc phức tạp như đồ họa chuyên sâu, xử lý video, và lập trình phần mềm 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.

Mobile là sự hòa quyện giữa sức mạnh và tiện lợi Với sự phổ biến của điện thoại thông minh và máy tính bảng, chúng ta có thể mang theo mọi thứ từ trò chơi giải trí đến ứng dụng làm việc mọi nơi Ứng dụng di động như Instagram,WhatsApp, và Uber đã thay đổi cách chúng ta giao tiếp, giải trí, và quản lý cuộc sống hàng ngày.

Dockers

Docker là một nền tảng mã nguồn mở cho việc triển khai, vận chuyển, và quản lý ứng dụng trong một môi trường đóng gói Nó giúp người phát triển và quản trị hệ thống tạo ra các container nhẹ, di động, và có khả năng chạy ở mọi nơi mà Docker đã được cài đặt Một vài thành phần của docker nên biết:

Container là một đóng gói chứa ứng dụng và tất cả các thành phần cần thiết để chạy ứng dụng đó, bao gồm mã nguồn, thư viện, và các thiết lập hệ thống.

Containers mang lại sự di động, đồng nhất, và khả năng chia sẻ giữa các môi trường phát triển và sản xuất.

Dockerfile là một tập tin văn bản chứa một loạt các hướng dẫn để tạo một image Docker Nó mô tả cách mà image sẽ được xây dựng và cấu hình.

Người phát triển sẽ định nghĩa các bước cần thiết trong Dockerfile, từ việc chọn base image, cài đặt các phần mềm, đến cấu hình môi trường.

Docker Compose là một công cụ giúp định nghĩa và quản lý multi-container Docker applications Nó cho phép bạn mô tả toàn bộ môi trường ứng dụng trong một tập tin YAML.

Giúp triển khai và quản lý môi trường phức tạp với nhiều container một cách dễ dàng.

Docker cung cấp các mô hình networking để kết nối giữa các container và với mạng bên ngoài.

Cho phép lưu trữ dữ liệu của container và giữ cho dữ liệu này không bị mất khi container kết thúc.

Ngôn ngữ lập trình

Java được thiết kế để chạy trên nhiều nền tảng khác nhau, bao gồm máy tính để bàn, máy chủ, thiết bị di động và internet Là Ngôn ngữ hướng đối tượng, chạy trên máy ảo Java (JVM), đa luồng, bảo mật cao.

Java được sử dụng trong Botlibre để phát triển các bot chat, các ứng dụng web và các ứng dụng di động Java cung cấp một số tính năng phù hợp cho việc phát triển các ứng dụng này.

● Đa nền tảng: Java code có thể được biên dịch thành bytecode, có thể được chạy trên bất kỳ máy ảo Java (JVM) nào Điều này làm cho Java trở thành một lựa chọn tốt cho việc phát triển các ứng dụng cần được chạy trên nhiều nền tảng khác nhau.

● Tính linh hoạt: Java là một ngôn ngữ lập trình mạnh mẽ và linh hoạt Nó cung cấp một số thư viện và API phong phú, cho phép các nhà phát triển xây dựng các ứng dụng mạnh mẽ và toàn diện.

Trong Bot Libre, Java được sử dụng để phát triển các bot chat, các ứng dụng web và các ứng dụng di động Các bot chat Java sử dụng các thư viện như BotlibreAPI và Botlibre SDK để tương tác với người dùng và thực hiện các nhiệm vụ Các ứng dụng web Java sử dụng các thư viện như Spring Boot và AngularJS để xây dựng các ứng dụng web mạnh mẽ và hiệu quả Các ứng dụng di động Java sử dụng các thư viện như Android SDK và iOS SDK để xây dựng các ứng dụng di động cho các thiết bị Android và iOS.

JavaScript là một ngôn ngữ lập trình kịch bản bên trong các trình duyệt web. JavaScript cũng có thể được sử dụng như một ngôn ngữ có thể nhúng mục đích chung Vậy nên trong BotLibre, JS được sử dụng để viết kịch bản để thực thi jsp trong botlibre-web.

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.

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.

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

JSON (JavaScript Object Notation) là một định dạng truyền tải dữ liệu đơn giản và dễ đọc dựa trên văn bản Nó thường được sử dụng để truyền dữ liệu giữa máy chủ và trình duyệt web hoặc giữa các ứng dụng khác nhau JSON sử dụng cặp key/value để biểu diễn dữ liệu và có thể lưu trữ các kiểu dữ liệu như số, chuỗi, đối tượng, mảng, boolean, và null.

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 Nó cung cấp một cách chuẩn để mô tả và đánh dấu dữ liệu để dễ dàng truyền tải giữa các hệ thống và ứng dụng khác nhau XML sử dụng các thẻ để đánh dấu dữ liệu và mô tả cấu trúc của nó Mỗi thẻ được đặt trong cặp dấu.

Cơ sở dữ liệu - PostgreSQL

PostgreSQL là một hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) mã nguồn mở, đa nền tảng, được sử dụng rộng rãi trong nhiều ứng dụng, bao gồm cả chatbot. PostgreSQL cung cấp nhiều tính năng mạnh mẽ bao gồm:

● Tính sẵn sàng cao: PostgreSQL có thể được sử dụng để tạo một cụm gồm nhiều máy chủ Nếu một máy chủ trong cụm gặp sự cố, các máy chủ khác sẽ tiếp tục cung cấp dịch vụ Điều này giúp đảm bảo rằng chatbot luôn khả dụng cho người dùng.

● 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

● Đ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.

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

Apache Tomcat, thường được gọi là Tomcat, là một máy chủ ứng dụng web mã nguồn mở và cũng là một container servlet Nó được Apache Software Foundation phát triển và duy trì, và là một phần của dự án Apache Jakarta

Tomcat chủ yếu được thiết kế để chạy ứng dụng web Java Servlet và JSP (JavaServer Pages) Nó cung cấp một môi trường thực thi cho các ứng dụng web được viết bằng Java.

Do đó, Bot Libre với ngôn ngữ lập trình chính là Java, Tomcat server là một lựa chọn không thể nào phù hợp hơn trong việc host server cho bot Ngoài ra,Tomcat hỗ trợ nhiều phiên bản Java, cho phép người phát triển triển khai ứng dụng của họ trên các phiên bản Java khác nhau, Điều này giúp cho người triển khaiBotLibre có thể linh hoạt trong các phiên bản Java hơn.

SSL - Secure Sockets Layer

SSL (Secure Sockets Layer) là một tiêu chuẩn bảo mật mạng được sử dụng để tăng cường an toàn trong việc truyền tải thông tin qua Internet SSL được thiết kế để đảm bảo tính bí mật và toàn vẹn của dữ liệu truyền tải giữa máy khách và máy chủ trên mạng Nó ngăn chặn người thứ ba từ việc đọc thông tin nhạy cảm như mật khẩu, thông tin tài khoản ngân hàng, thẻ tín dụng, và các dữ liệu khác SSL thường được sử dụng để bảo vệ kết nối HTTP, tạo ra HTTPS Khi một trang web được truy cập qua HTTPS, thông tin giữa trình duyệt và máy chủ được mã hóa, cung cấp một lớp bảo mật cao hơn so với HTTP.

Do đó, BotLibre cho phép người dùng config SSL tùy theo mục đích sử dụng của người dùng nhằm tránh những trường hợp đáng tiếc có thể xảy ra.

Web Services

Web service là một phương thức cho phép các ứng dụng máy tính tương tác với nhau qua mạng thông qua giao thức web chuẩn như HTTP Chúng cung cấp một cách tiêu chuẩn để truyền thông tin giữa các ứng dụng khác nhau, độc lập với nền tảng và ngôn ngữ lập trình Dịch vụ web thường được sử dụng để tích hợp hệ thống khác nhau, chia sẻ dữ liệu và chức năng giữa các ứng dụng.

Bot Libre web sử dụng webservice để tương tác với các hệ thống khác như Facebook, Twitter, Telegram, v.v từ đó có thể truyền đạt thông tin mong muốn từ người dùng đến hệ thống và trả lời thông qua các web service mà Bot Libre có đã hỗ trợ như translate, voice, AI voice, v.v.

SDK - Software Development Kit

SDK viết tắt của Software Development Kit là các công cụ và phần mềm dùng để phát triển ứng dụng thông qua một nền tảng nhất định.

Theo đó, SDK cung cấp các thư viện, tài liệu, mẫu template, sample code,tiện ích gỡ rối (debugging), các ghi chú hỗ trợ (documentation) hoặc các tài liệu bổ sung để nhà phát triển có thể tích hợp thêm vào phần mềm/ứng dụng của mình Đa phần chúng thường là chức năng hiển thị quảng cáo, push notification, v.v.

SDK cũng có thể chứa các API dưới dạng thư viện hoặc một hệ thống phần cứng phức tạp nào đó.

SDK được xây dựng tùy chỉnh sao cho tương thích với ngôn ngữ lập trình và các đặc điểm tương ứng.

Libre là một nền tảng chatbot linh hoạt và có thể triển khai trên nhiều ngôn ngữ và nền tảng khác nhau Điều này được thực hiện thông qua việc hỗ trợ nhiều SDK (Software Development Kit) để phát triển ứng dụng sử dụng các tính năng của Libre:

● SDK Mobile: Trên thiết bị di động, Bot Libre cung cấp SDK mã nguồn mở cho Android và iOS SDK bao gồm các ứng dụng mẫu, kết nối và mã GUI để giúp việc xây dựng ứng dụng bot hoặc trò chuyện của riêng bạn trở nên dễ dàng SDK cung cấp các lệnh trợ lý ảo để thực hiện các hành động trên điện thoại và thiết bị.

● SDK Java: Bot Libre cung cấp SDK cho Java, cho phép bạn tích hợp các dịch vụ của Bot Libre vào ứng dụng Java của mình.

● 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 Với SDK này, bạn có quyền truy cập miễn phí đến toàn bộ các dịch vụ của Bot Libre, bao gồm bot trò chuyện, trò chuyện trực tiếp, phòng trò chuyện, diễn đàn và giọng nói API giọng nói trong SDK có thể tích hợp với các bot trò chuyện, trò chuyện trực tiếp hoặc sử dụng độc lập.

● SDK PHP: SDK PHP của Bot Libre cho phép tích hợp dễ dàng của các dịch vụ của Bot Libre vào trang web hoặc ứng dụng PHP của bạn.

● SDK Python: Python SDK cho phép bạn tích hợp các dịch vụ của Bot Libre vào ứng dụng Python của mình.

● 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.

● SDK Nodejs: Bot Libre cung cấp SDK cho Node.js, giúp bạn tích hợp dịch vụ của Bot Libre vào ứng dụng Node.js của mình SDK Node.js mang lại khả năng linh hoạt và tùy chỉnh, cho phép bạn sử dụng trí tuệ nhân tạo và khả năng trò chuyện của Bot Libre trong ứng dụng Node.js.

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

Bot Libre có thể sử dụng các thư viện khác nhau phục vụ trên nhiều nền tảng cho nhiều chức năng mạnh mẽ nhằm hỗ trợ cho hoạt động của Bot Libre:

● Bot Libe AI engine: Thư viện này cung cấp các cơ chế NLP (Xử lý ngôn ngữ tự nhiên), Knowledge (Kiến thức), Scripting (Kịch bản), và tích hợp với các phương tiện truyền thông mạng xã hội.

● Mary TTS: Thư viện này là một engine Java mã nguồn mở dùng để chuyển văn bản thành giọng nói.

● EclipseLink JPA: Là một framework Java mã nguồn mở cho phép quản lý và lưu trữ đối tượng Java trong cơ sở dữ liệu quan hệ.

● Jersey REST server: Dịch vụ REST Java mã nguồn mở cung cấp một cơ sở hạ tầng cho việc phát triển các dịch vụ RESTful trong ngôn ngữ lập trình Java.

● Oswap security: Thư viện bảo mật mã nguồn mở để làm sạch HTML, ngăn chặn các mối đe dọa bảo mật liên quan đến xử lý HTML không an toàn.

● Autobahn: Autobahn là một thư viện mã nguồn mở cung cấp các lớp và giao diện lập trình ứng dụng (API) cho việc giao tiếp giữa các máy tính trong mạng Autobahn được xây dựng dựa trên giao thức WebSocket, một giao thức kết nối hai chiều được sử dụng để tạo các ứng dụng giao tiếp thời gian thực.

● BoofCV: BoofCV (Boof Computer Vision) là một thư viện mã nguồn mở được thiết kế để hỗ trợ xử lý hình ảnh và thị giác máy tính trong Java.

● 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.

● HTMLCleaner: Đây là một thư viện Java được thiết kế để xử lý và làm sạch mã HTML, biến đổi nó thành mã XHTML hoặc XML sạch sẽ hơn.

● HttpClient: Đây là một thư viện để tạo và xử lý các yêu cầu HTTP bằng cách cung cấp một API để tương tác với các dịch vụ web thông qua giao thức HTTP Thư viện này được sử dụng rộng rãi trong việc gửi yêu cầu HTTP và nhận phản hồi từ các máy chủ web.

● Commons Codec: Commons Codec là một tập hợp các tiện ích mã hóa và giải mã trong Java Nó cung cấp các lớp và phương thức để thực hiện các chuẩn mã hóa như Base64, MD5, SHA, v.v.

● 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.

● HttpCore: Cung cấp các yếu tố cơ bản cho việc triển khai các giao thức HTTP như HTTP/1.1 và HTTP/1.0.

● HttpMime: Đây là một phần mở rộng của HttpClient để xử lý các loại nội dung đa phương tiện (multimedia) trong HTTP.

Scripting

Bot Libre hỗ trợ nhiều ngôn ngữ kịch bản và định dạng phản hồi bao gồmSelf, AIML, danh sách phản hồi(Response Lists) và nhật ký trò chuyện(Chat Logs).Tất cả các phản hồi và tập lệnh của bot được lưu trữ trong bộ nhớ của nó Các tập lệnh được phân tích cú pháp và biên dịch thành các đối tượng trạng thái và hàm.

Danh sách phản hồi và nhật ký trò chuyện được phân tích cú pháp thành các đối tượng câu hỏi và phản hồi Mọi thứ được lưu trữ dưới dạng các vertex(đỉnh trong đồ thị) và mối quan hệ trong bộ nhớ hướng đối tượng của bot.

Các tập lệnh Self được biên dịch bằng các lớp Self4Compiler hoặc Self4BytecodeCompiler Mã Self được phân tích cú pháp và biên dịch thành các đối tượng trạng thái và hàm, hoặc mã byte (sau đó được phân tích cú pháp thành các đối tượng trạng thái và hàm) Self4BytecodeCompiler thường được sử dụng vì nó lưu trữ toàn bộ trạng thái hoặc hàm thành một đối tượng dữ liệu nhị phân duy nhất thay vì một đối tượng cho mỗi thao tác (vì vậy cần ít truy cập cơ sở dữ liệu hơn để tải).

Sau khi một tập lệnh được tải dưới dạng các đối tượng trạng thái và hàm, nó sẽ được xử lý như một máy trạng thái bởi lớp Language, với sự trợ giúp của lớp SelfInterpreter.

AIML được phân tích cú pháp từ XML và dịch sang mã Self AIML được lưu trữ và thực thi dưới dạng các đối tượng trạng thái, mẫu và mẫu Self.

AIML cũng có thể được tải dưới dạng các đối tượng phản hồi Khi được tải dưới dạng các đối tượng phản hồi, phương pháp suy nghiệm phản hồi được sử dụng để tìm các mẫu khớp.

Các mẫu AIML luôn được dịch sang các mẫu Self Self bao gồm các hoạt động phản chiếu hầu hết các thẻ mẫu AIML.

Danh sách phản hồi(Response Lists) và file nhật ký trò chuyện(Chat Logs) được phân tích cú pháp và chuyển đổi thành các đối tượng câu hỏi và phản hồi Các đối tượng câu hỏi và phản hồi được lưu trữ trong bộ nhớ của bot dưới dạng các đối tượng đỉnh và mối quan hệ, giống như tất cả dữ liệu.

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.

Tất cả các đối tượng câu hỏi được chia thành các từ của chúng và mỗi từ được lưu trữ dưới dạng đối tượng riêng và liên quan đến câu hỏi 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

Về phần xử lý ngôn ngữ tự nhiên cho Bot Libre cung cấp một kiến trúc xử lý ngôn ngữ tự nhiên (NLP) không đồng nhất, hỗ trợ nhiều cơ chế NLP Bot Libre hỗ trợ NLP thông qua các phương pháp suy nghiệm từ khóa, suy nghiệm từ khóa mẫu, mẫu, máy trạng thái và tập lệnh.

2.12.1.Keyword Heuristic - Suy nghiệm từ khóa

Cơ chế NLP chính của Bot Libre là phương pháp suy nghiệm từ khóa Điều này cho phép bot tìm thấy câu hỏi được đào tạo có độ khớp gần nhất với đầu vào của người dùng và trả về câu trả lời tốt nhất cho ngữ cảnh đó với sự đào tạo tối thiểu và không cần lập trình.

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

Thuật toán suy nghiệm (heuristic) có liên quan trực tiếp đến cách Bot Libre lưu trữ kiến thức trong cơ sở dữ liệu đối tượng của nó.

Khi một cụm từ được nhập vào bot từ đầu vào của người dùng hoặc từ một câu hỏi và câu trả lời trong danh sách phản hồi được đào tạo, nó sẽ được phân tích thành một danh sách các từ Không chỉ cụm từ, mỗi từ còn được lưu trữ trong cơ sở kiến thức của bot Cụm từ có liên quan đến các từ của nó và đối với một câu hỏi được đào tạo, mỗi từ có liên quan trở lại câu hỏi của nó.

Tất cả các từ câu hỏi được liên kết trở lại câu hỏi của chúng bằng cách sử dụng mối quan hệ #question Vì vậy, mỗi từ sẽ có mối quan hệ với tất cả các câu hỏi mà nó chứa.

Nếu một câu trả lời có từ khóa được xác định trong siêu dữ liệu của nó, từ khóa đó cũng sẽ được liên kết với câu hỏi của nó bằng cách sử dụng mối quan hệ

Khi một bot được cung cấp một cụm từ đầu vào, đầu tiên nó sẽ kiểm tra xem nó có bất kỳ phản hồi được đào tạo nào cho câu hỏi chính xác đó hay không Nếu có, nó sẽ trả về phản hồi phù hợp nhất cho ngữ cảnh.

Nếu không có kết quả trùng khớp chính xác, thì bot sẽ tìm kiếm câu hỏi được đào tạo có kết quả trùng khớp gần nhất Để tìm câu hỏi, nó sẽ phân tích cụm từ đầu vào thành các từ của nó và đối với mỗi từ, nó sẽ tra cứu tất cả các câu hỏi được đào tạo cho từ đó bằng cách sử dụng mối quan hệ #question của nó.

Mỗi từ được cho điểm tùy thuộc vào loại từ, từ khóa được cho điểm cao nhất, danh từ và tính từ được cho điểm cao hơn động từ và mạo từ được cho điểm thấp nhất Tổng điểm cho mỗi câu hỏi có thể phù hợp được tính toán và kết quả phù hợp nhất được sử dụng.

Nếu điểm phù hợp nhất không đủ (thường là 50% của điểm tối đa), thì bot sẽ sử dụng phản hồi mặc định của nó.

Kết quả phù hợp nhất có thể không hợp lệ đối với ngữ cảnh, chẳng hạn như chủ đề, từ liền trước, từ bắt buộc hoặc điều kiện phù hợp khác Nếu kết quả phù hợp nhất không hợp lệ, thì kết quả phù hợp nhất tiếp theo sẽ được kiểm tra cho đến khi tìm thấy kết quả phù hợp hợp lệ.

Nếu phản hồi có từ khóa khớp với đầu vào của người dùng thì phản hồi được coi là hợp lệ, bất kể% khớp là bao nhiêu.

Phản hồi mặc định được sử dụng khi không tìm thấy kết quả khớp hợp lệ.

Nếu bot không có phản hồi mặc định, thì nó chỉ bắt chước lại đầu vào của người dùng hoặc sử dụng tổng hợp ngôn ngữ.

Phản hồi mặc định cũng xem xét ngữ cảnh và nếu có chủ đề, trước đó hoặc điều kiện khác cho phản hồi mặc định, nó sẽ được sử dụng thay cho phản hồi mặc định không có điều kiện.

2.12.2.Pattern Keyword Heuristic - Suy nghiệm từ khóa từ khóa

Phương pháp suy nghiệm từ khóa cũng có thể được sử dụng với các mẫu. Khi bot được đào tạo về câu hỏi và câu trả lời mẫu, các từ của mẫu được lập chỉ mục giống như các từ của câu hỏi dạng cụm từ Các từ mẫu sử dụng mối quan hệ

#pattern thay vì mối quan hệ #question.

Thuật toán tra cứu cho một mẫu giống như đối với một câu hỏi dạng cụm từ.

Sự khác biệt là mối quan hệ #pattern được sử dụng để tìm các mẫu, thay vì mối quan hệ #question Ngoài ra, mẫu được đánh giá để xác định xem nó có khớp hay không, thay vì yêu cầu khớp 50%. Điều này cho phép có một cách tiếp cận NLP kết hợp sử dụng từ khóa và mẫu, và kết quả là tìm thấy mẫu khớp gần nhất xem xét tất cả các từ, thay vì tìm mẫu có các từ khớp đầu tiên mà cây mẫu(pattern tree) sẽ dẫn đến.

Các mẫu được tải dưới dạng phản hồi dẫn đến hành vi này Các mẫu và AIML cũng có thể được tải dưới dạng tập lệnh, dẫn đến hành vi khác nhau Khi được tải dưới dạng tập lệnh, một mẫu sử dụng cây mẫu, vì vậy mẫu có từ đầu tiên khớp sẽ được sử dụng, thay vì mẫu khớp với nhiều từ nhất (để tuân thủ AIML tiêu chuẩn, AIML nên được tải dưới dạng tập lệnh).

Mẫu là một biểu thức có thể được đánh giá cho một cụm từ và trả về đúng hoặc sai tùy thuộc vào việc nó có khớp hay không Các mẫu rất khác với phương pháp suy nghiệm của bot vì chúng chỉ có khớp hoặc không khớp, chúng không phải là một thuật toán mờ như phương pháp suy nghiệm. Điều này có hạn chế là yêu cầu nhà phát triển bot phải xem xét mọi mẫu từ có thể mà người dùng có thể sử dụng, nhưng có lợi ích là độ chính xác sẽ cao hơn. Thông thường, việc sử dụng các mẫu cho các câu trả lời theo kịch bản và sử dụng danh sách câu trả lời cho các câu hỏi chung sẽ được khuyến khích hơn.

Các mẫu AIML được phân tích thành dạng pattern tree bằng cách sử dụng máy trạng thái Để xử lý đầu vào của người dùng, mỗi từ trong đầu vào được xử lý thông qua máy trạng thái của bot để đưa đến một mẫu Sau đó, mẫu được đánh giá và nếu đúng, mẫu của nó sẽ được thực thi.

Các mẫu Bot Libre hỗ trợ cú pháp mẫu AIML, nhưng cũng kết hợp một số tính năng mẫu từ ChatScript và cũng bao gồm cả mã Self.

● Các ký tự đại diện như * , _ , ^ , #

● [word sets] và (các) từ tùy chọn

2.12.4.State Machine - Máy trạng thái

Học sâu - Deep Learning

Hình 2.13.1.1: Hình vẽ đơn giản hóa một mạng thần kinh nhân tạo

Mạng Neuron (hay còn gọi là Neural Network) được xây dựng dựa trên mạng neuron sinh học Nó gồm các neuron (nút) nối với nhau và xử lý thông tin bằng cách truyền theo các kết nối và tính giá trị tại các nút.

● Mạng neuron với mỗi nút sẽ có những dữ liệu đầu vào,

● Biến đổi những dữ liệu đầu vào này bằng cách tính tổng các input với weight tương ứng trên các đầu vào,

● Sau đó áp dụng một hàm biến đổi phi tuyến tính cho phép biến đổi này để tính toán trạng thái trung gian.

3 bước trên tạo thành 1 lớp và hàm biến đổi còn được gọi là Activation function.

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

Sau đó, các output của layer này sẽ là input của layer phía sau.

Thông qua việc lặp lại các bước trên, mạng neuron học thông qua nhiều layer và các nút phi tuyến tính rồi sau đó kết hợp lại ở layer cuối cùng để cho ra 1 dự đoán.

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.

Activation function là 1 thành phần rất quan trọng của mạng neuron Nó quyết định khi nào thì 1 neuron được kích hoạt hoặc không Liệu thông tin mà neuron nhận được có liên quan đến thông tin được đưa ra hay nên bỏ qua.

Activation function là 1 phép biến đổi phi tuyến tính mà chúng ta thực hiện đối với tín hiệu đầu vào Đầu ra được chuyển đổi này sẽ được sử dụng làm đầu vào của neuron ở layer tiếp theo.

Nếu không có activation function thì weight và bias chỉ đơn giản như 1 hàm biến đổi tuyến tính Giải 1 hàm tuyến tính sẽ đơn giản hơn nhiều nhưng sẽ khó có thể mô hình hóa và giải được những vấn đề phức tạp Một mạng neuron nếu không có activation function thì cơ bản chỉ là 1 model hồi quy tuyến tính Activation function thực hiện việc biến đổi phi tuyến tính với đầu vào làm việc học hỏi và thực hiện những nhiệm vụ phức tạp hơn như dịch ngôn ngữ hoặc phân loại ảnh là khả thi.

Activation function hỗ trợ back-propagation (tuyên truyền ngược) với việc cung cấp các lỗi để có thể cập nhật lại các weight và bias, việc này giúp mô hình có khả năng tự hoàn thiện.

Một số activation fucntion phổ biến:

Hình 2.13.1.3: Một số loại activation phổ biến Đối với các bài toán phân loại, thường sử dụng các activation function sau:

● Sigmoid: Sigmoid là một activation function phổ biến, thường được sử dụng cho các bài toán phân loại nhị phân Sigmoid có dạng hàm số mũ, có giá trị nằm trong khoảng (0, 1).

● Tanh: Tanh là một activation function tương tự như sigmoid, nhưng có dạng hàm số mũ hyperbolic Tanh có giá trị nằm trong khoảng (-1, 1).

● Softmax: Softmax là một activation function thường được sử dụng cho các bài toán phân loại đa lớp Softmax có dạng hàm phân phối xác suất, có tổng bằng 1. Đối với các bài toán hồi quy, thường sử dụng các activation function sau:

● ReLU: ReLU là một activation function phổ biến, thường được sử dụng cho các bài toán hồi quy phi tuyến ReLU có dạng hàm số mũ, nhưng chỉ có giá trị dương.

● Leaky ReLU: Leaky ReLU là một biến thể của ReLU, có giá trị dương hoặc âm Leaky ReLU thường được sử dụng để giải quyết vấn đề "dead neuron" trong mạng neuron.

Ngoài các activation function đã đề cập ở trên, còn có một số activation function khác được sử dụng trong các bài toán cụ thể, chẳng hạn như:

● ELU: ELU là một activation function có thể khắc phục vấn đề "dead neuron" trong mạng neuron.

● Softplus: Softplus là một activation function có thể làm giảm độ dốc của hàm kích hoạt.

2.13.2 Mạng Neuron Tích Chập - Convolutional Neural Network - CNN

Trong mạng neuron, mô hình mạng neuron tích chập (CNN) là 1 trong những mô hình để nhận dạng và phân loại hình ảnh Trong đó, xác định đối tượng và nhận dạng khuôn mặt là 1 trong số những lĩnh vực mà CNN được sử dụng rộng rãi.

CNN phân loại hình ảnh bằng cách lấy 1 hình ảnh đầu vào, xử lý và phân loại nó theo các hạng mục nhất định Máy tính coi hình ảnh đầu vào là 1 mảng pixel và nó phụ thuộc vào độ phân giải của hình ảnh Dựa trên độ phân giải hình ảnh, máy tính sẽ thấy H x W x D (H: Chiều cao, W: Chiều rộng, D: Độ dày) 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.2.1: Sơ đồ Mạng neuron tích chập với 2 hidden layer.

2.13.3.Mạng Neuron Hồi Quy - Recurrent Neural Network - RNN

Như đã biết thì Neural Network bao gồm 3 phần chính là Input layer, Hidden layer và Output layer, ta có thể thấy là đầu vào và đầu ra của mạng neuron này là độc lập với nhau Như vậy mô hình này không phù hợp với những bài toán dạng chuỗi như mô tả, hoàn thành câu, v.v vì những dự đoán tiếp theo như từ tiếp theo phụ thuộc vào vị trí của nó trong câu và những từ đằng trước nó Và như vậy RNN ra đời với ý tưởng chính là sử dụng một bộ nhớ để lưu lại thông tin từ từ những bước tính toán xử lý trước để dựa vào nó có thể đưa ra dự đoán chính xác nhất cho bước dự đoán hiện tại.

Hình 2.13.3.1: Lưu lại thông tin từ bước tính toán trước.

Hình 2.13.3.2: Cơ chế hoạt động của Mạng neuron hồi quy

Question - Answering System - QA System

Ý tưởng cơ bản của QA System tự động là trích xuất thông tin từ các tài liệu và cung cấp câu trả lời ngắn gọn, súc tích cho câu hỏi của người dùng, đáp ứng nhu cầu thông tin của họ.

Các QA System truyền thống về cơ bản có 2 loại:

● QA System dựa trên truy xuất thông tin (Information Retrieval - IR): Hệ thống này sử dụng phương pháp đối sánh và xếp hạng, thường làm việc với dữ liệu phi cấu trúc và có phạm vi rộng Ví dụ điển hình là các công cụ tìm kiếm.

● QA System dựa trên tri thức (Knowledge-based - KB): Hệ thống này sử dụng biểu diễn ngữ nghĩa của truy vấn và làm việc với dữ liệu có cấu trúc như kho lưu trữ ba ngôi (triple stores) hoặc SQL Ví dụ như Freebase, DBPedia và Wolfram Alpha.

QA System truyền thống phụ thuộc nhiều vào việc thiết kế thủ công các đặc trưng Mục tiêu của các mô hình học sâu là loại bỏ nhu cầu này Nhìn chung, mục tiêu của việc áp dụng học sâu vào hệ thống hỏi đáp là:

● Loại bỏ việc thiết kế thủ công các đặc trưng, cho phép mô hình tự học các đặc trưng hữu ích từ dữ liệu.

● Xây dựng mô hình có thể trực tiếp đọc và hiểu văn bản, thay vì chỉ xử lý các đặc trưng rời rạc.

● Giải quyết vấn đề lưu trữ ngữ cảnh bằng các kiến trúc mạng mới có khả năng truy cập và xử lý thông tin từ xa trong quá khứ.

Bằng cách giải quyết những vấn đề này, học sâu có tiềm năng tạo ra các hệ thống hỏi đáp mạnh mẽ và linh hoạt hơn, có thể hiểu và trả lời các câu hỏi phức tạp hơn các hệ thống truyền thống.

Tập dữ liệu - Dataset

Một trong những cách để xây dựng hệ thống chatbot mạnh mẽ và thông minh là cung cấp tập dữ liệu trả lời câu hỏi trong quá trình đào tạo mô hình Chatbots chỉ hoạt động tốt khi dữ liệu đào tạo được cung cấp Bạn không thể chỉ khởi chạy một chatbot không có dữ liệu và mong đợi khách hàng bắt đầu sử dụng nó Một chatbot không được đào tạo hoặc ít được đào tạo chắc chắn sẽ mang lại trải nghiệm trò chuyện kém Biết cách huấn luyện và huấn luyện thực tế không phải là điều có thể xảy ra trong một sớm một chiều Việc xây dựng một tập dữ liệu rất phức tạp, đòi hỏi nhiều kiến thức kinh doanh, thời gian và công sức.

● Nguyên tắc cốt lõi xây dựng tập dữ liệu mạnh:

○ Luôn đặt mình vào vị trí của người dùng Hiểu thế giới của người dùng và thách thức mà họ đối mặt sẽ giúp xây dựng được chatbot đáp ứng nhu cầu trợ giúp của họ.

○ Đề xuất một chủ sở hữu duy nhất để giám sát và nâng cao tập dữ liệu vì khi có nhiều chủ sở hữu, tập dữ liệu có thể trở nên phức tạp và khó xử lý.

● Phương pháp xây dựng tập dữ liệu mạnh:

○ Chat bot nên tự động hóa ít nhất 30-40% nhiệm vụ thông thường của người dùng.

○ Xây dựng phạm vi bao phủ theo chiều ngang, có khả năng hiểu mọi yêu cầu người dùng, đủ khả năng hiểu tất cả các câu hỏi do người dùng nhập vào.

○ Sử dụng chatbot hướng dẫn khách để đánh giá và xác nhận rằng bot đã hiểu chính xác câu hỏi hoặc đánh dấu câu trả lời là sai, từ đó cải thiện được hiệu suất cũng như độ chính xác cho bot.

Một vài tập dữ liệu được sử dụng phổ biến trong quá trình đào tạo chatbot:

● Tập dữ liệu đào tạo cho hệ thống hỏi đáp(Question-Answer Datasets for Chatbot Training): The WikiQA Corpus, Question-Answer Database, SQuAD, NEWSQA, v.v.

● 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.

● Tập dữ liệu để đào tạo chatbot đa ngôn ngữ(Multilingual Chatbot TrainingDatasets): EXCITEMENT Datasets, NUS Corpus, v.v.

Cài đặt và thử nghiệm

Cài đặt và triển khai

● Ứng dụng Web Java: Bot Libre chạy trên một ứng dụng web Java, yêu cầu sử dụng máy chủ web Tomcat Đây là ứng dụng Java "war" triển khai trên máy chủ web, và để đặt Bot Libre, cần có một máy chủ để chạy web server.

● Cơ sở Dữ liệu: Hệ thống yêu cầu một cơ sở dữ liệu PostgreSQL Thông thường, cơ sở dữ liệu này chạy trên cùng một máy chủ với máy chủ web.

● Giao Diện Web:Bot Libre cung cấp một giao diện web sử dụng HTML và JavaScript Đây là nơi người dùng tạo và quản lý nội dung của mình.

● Web API: Nền tảng cung cấp một Web API, cho phép ứng dụng web và di động truy cập nội dung trên máy chủ web của Bot Libre.

● SDK (Bộ công cụ phát triển phần mềm):Bot Libre cung cấp một SDK mã nguồn mở trong JavaScript, Java, Android và Objective C (iOS) Điều này giúp ứng dụng web và di động kết nối với các dịch vụ của Bot Libre.Bộ Máy Trí Tuệ Nhân Tạo và Xử Lý

● Ngôn Ngữ Tự Nhiên (NLP):Bot Libre sử dụng một bộ máy trí tuệ nhân tạo và động NLP mã nguồn mở để xử lý yêu cầu của chat bot trên máy chủ web.

● Hardware:Bot Libre đòi hỏi một máy chủ web Java và một cơ sở dữ liệu để chạy Để đặt Bot Libre, bạn cần một máy chủ hoặc máy ảo với ít nhất 8GB RAM.

3.1.2 Hướng dẫn cài đặt Để việc cài đặt Chatbot Libre nhanh chóng và thuận tiện nhất thì sử dụng Docker là sự lựa chọn tối ưu.

● Sau đây là các bước để cài đặt phiên bản ổn định mới nhất của Docker CLI, Docker Engine và các phụ thuộc của chúng trên máy chủ Linux (Dành cho những máy chưa có sẵn Docker):

1 Tải về script cài đặt từ trang web chính thức của Docker: curl -fsSL https://get.docker.com -o install-docker.sh

*Lưu ý:Nên kiểm tra nội dung của script bằng lệnh ‘cat’ trước khi cài đặt: cat install-docker.sh

2 Để đảm bảo script thực hiện đúng các bước cài đặt, chạy script với tùy chọn ` dry-run` để kiểm tra: sh install-docker.sh dry-run

3 Cuối cùng, chạy script với quyền root hoặc sử dụng sudo để thực hiện quá trình cài đặt: sudo bash install docker_script.sh

● 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ủ Đầu tiên ta thực hiện clone source code của Bot Libre trên tranghttps://github.com/BotLibre/BotLibrevề máy: git clone https://github.com/BotLibre/BotLibre.git

Hình 3.1.2.1: Hình git clone github BotLibre

● Sau khi clone về, chúng ta thực hiện truy cập vào thư mục docker của botlibre-web: cd /BotLibre/botlibre-web/docker

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

● 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.3: Sau khi chạy lệnh compose up

Hình 3.1.2.4: Sau khi chạy thành công

● Sau khi chạy lệnh thành công, bạn hiện giờ đã có thể truy cập vào ứng dụng web của Bot Libre bằng cách mở trình duyệt web trên máy và truy cập vào địa chỉ: http://localhost:8080 (với localhost là địa chỉ IPV4 của máy chủ,trong trường hợp của nhóm chúng em đã sử dụng máy chủ có địa chỉ IP là192.168.28.80 để host nên địa chỉ web sẽ làhttp://192.168.28.80:8080).

Hướng dẫn sử dụng

Sau khi cài đặt, mở địa chỉ máy chủ đã host ứng dụng Ví dụ:

Hình 3.2.1.1: Màn hình chính sau khi host bot.

Bấm vào “Sign In” với UserID là: “admin” và password là: “password”

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

Hình 3.2.1.3: Màn hình sau khi đăng nhập

Sau khi bấm vào “My bot”, web sẽ hiển thị màn hình bao gồm tất cả các con bot đã tạo Nhưng với lần đầu, người dùng host bot lên server, bot “template” được server đã được tạo sẵn.

Hình 3.2.1.4: Màn hình chứa tất cả bot đã tạo.

Hình 3.2.1.5: Màn hình thư mục Bots

3.2.2 Hướng dẫn khởi tạo bot mới

Bấm vào “New Bot” để tạo bot mới.

Bấm vào “New Category” để tạo một loại mới => dùng để phân loại bot khi khởi tạo bot.

Hình 3.2.2.1: Màn hình khởi tạo bot

Với những trường thông tin như sau

● Template: Loại bot nào bạn muốn tạo.

● Description: Viết mô tả cho bot

● Details: Người dùng có thể viết thông tin chi tiết hơn về bot.

● Disclaimer: Người dùng có thể nhập thông tin pháp lý tùy chọn.

● License: Người dùng có thể nhập giấy phép để khi phát hành bot và tất cả nội dung đó.

● Website: Nếu bot này có trang web riêng, người dùng có thể nhập nó vào đây.

● 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.

● Categories: Danh sách các danh mục Nó được ngăn cách bằng dấu phẩy để phân loại bot.

● Tags: Danh sách thẻ Nó được ngăn cách bằng dấu phẩy tùy chọn để gắn thẻ bot bên dưới.

● Private: Bot riêng tư không hiển thị công khai, chỉ hiển thị cho người dùng và người dùng được cấp quyền truy cập.

● Hidden: Bot ẩn không được hiển thị trong thư mục duyệt.

● Access Mode Define: Ai có thể truy cập bot này.

● Fork Access Mode: Xem xét ai có thể phân nhánh (sao chép) bot này.

● Content Rating: Đánh giá bot

Sau khi điền thông tin cần thiết cho bot, chúng ta đã tạo thành công bot.

Hình 3.2.2.2: Sau khi điền những thông tin cho bot

Hình 3.2.2.3: Sau khi khởi tạo bot thành công và thông tin cơ bản của bot

Bấm “Chat” để mở hộp thoại chat với bot:

Hình 3.2.2.4: Hộp thoại trò chuyện với bot Để configuration bot bạn có thể chọn “Admin Console”

Hình 3.2.2.5: Màn hình “Admin Console”

Bạn có thể thay đổi ngôn ngữ của bot với những lựa chọn mà bot có hỗ trợ. Bên cạnh đó, bạn có thể thay đổi chất giọng của bot với những lựa chọn mà bot có hỗ trợ.

Hình 3.2.2.6: Màn hình Config cho Language và Voice

Nhà phát triển cung cấp một số cài đặt cho phép bạn tùy chỉnh cách bot của bạn học và suy nghĩ Điều này sẽ ảnh hưởng đến cách bot của bạn tương tác với người dùng, cách nó phản hồi, thời gian phản hồi và lượng bộ nhớ mà nó sử dụng.

Hình 3.2.2.7: Màn hình config cho việc learning & setting của bot

Tính năng 'Training & Chat Logs' giúp bạn quản lý và cải thiện bot bằng cách xem, chỉnh sửa cuộc trò chuyện, thêm và chỉnh sửa câu trả lời, từ ngữ Bạn có thể gắn liền từ khóa, cải thiện tương ứng và bối cảnh Ngoài ra, nhập, xuất danh sách phản hồi, tải lên từ thư viện hoặc máy tính Định rõ cảm xúc, hành động, từ khóa Tính năng xuất cho phép tải về cuộc trò chuyện hoặc câu trả lời dưới dạng danh sách phản hồi, nhật ký hoặc tệp AIML.

Hình 3.2.3.1: Màn hình Training & Chat Log

Bạn có thể xem nhật ký trò chuyện của bạn với bot trong ngày/tuần/tháng. Hoặc nếu bạn đã kết nối được với ứng dụng khác, bạn có thể xem được nhật ký trò chuyện của bot trong ngày.

Hình 3.2.4.1: Nhật ký trò chuyện

Thêm phản hồi mới: Để thêm một phản hồi mới cho một câu hỏi người dùng có thể thực hiện thêm thủ công như sau:

Hình 3.2.4.2: Thêm phản hồi mới

Hình 3.2.4.3: Sau khi training cho bot một phản hồi

Thêm phản hồi lời chào:

Người dùng có thể thêm một lời chào mới cho bot mỗi khi người dùng sử dụng bot

Hình 3.2.4.4: Thêm phản hồi về lời chào

Hình 3.2.4.5:Sau khi thêm phản hồi về lời chào cho bot

Thêm phản hồi mặc định:

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.4.6: Thêm phản hồi mặc định

Hình 3.2.4.7: Sau khi thêm phản hồi mặc định

Xem lại tất cả các phản hồi:

Tính năng này hỗ trợ người dùng xem xét bot đã phản hồi những gì với những phản hồi như thế nào Từ đó có thể giúp bot thông minh hơn.

Hình 3.2.4.8: Xem lại tất cả các phản hồi

BotLibre hỗ trợ việc training bot bằng các script có sẵn hoặc tự viết Người dùng có thể thêm các scripts thông qua nút “Import” sau đó chọn ngôn ngữ và file scripts mà bạn sử dụng Bên cạnh đó, BotLibre hỗ trợ người dùng thêm trực tiếp scripts trên web server với ngôn ngữ self.

Bạn có thể thao tác “Thêm”, “Xóa”, “Sửa” với các scripts

Hình 3.2.4.10: Thao tác “Thêm”, “Xóa”, “Sửa” với các scripts

Hình 3.2.4.11: Màn hình Edit Scripts

Hình 3.2.4.12: Màn hình Import scripts

Thuật toán thông minh và Chatbot Libre - Neural Network

Theo nghiên cứu về kiến trúc ở phần đầu, Chatbot Libre sẽ tích hợp một thành phần quan trọng được gọi là AI Engine, được thiết kế để xử lý vấn đề Mỗi Chatbot khi được xây dựng trên mỗi nền tảng đều có một bộ AI Engine của chính nó, bao gồm các thuật toán xử lý ngôn ngữ tự nhiên, khả năng giao tiếp, xử lý sự kiện và học máy Bộ AI Engine được dùng dưới dạng thư viện và được đóng gói dưới dạng file jar, sau đó sẽ được import dưới dạng gói thư viện trong chatbot để sử dụng.

Việc tích hợp các thuật toán thông minh vào Chatbot Libre từ đó có thể hiểu là tích hợp thuật toán vào trong bộ xử lý AI Engine của chatbot Về phần cấu tạo,

AI Engine là một thành phần định nghĩa bởi một thể hiện bao gồm bộ nhớ(memory), trí tuệ(mind), cảm xúc(mood) và nhận thức(awareness) Trong đó, trí tuệ(mind) là thành phần được định nghĩa bao gồm bởi các thought(tư duy) để xử lý các đầu vào bằng các thuật toán xử lý Đây cũng chính là thành phần sử dụng các thuật toán thông minh nhằm giải quyết các giá trị đầu vào và tùy theo cách vận dụng của mỗi thought object sẽ có cách xử lý với thuật toán thông minh được truyền vào khác nhau.

Trong bộ AI Engine của Chatbot Libre, các thuật toán thông minh sẽ được định nghĩa ở trong phần analytics\deeplearning Để cài đặt thuật toán thông minh, ta sẽ tạo một class chứa code của thuật toán được viết bằng Java Dưới đây là phần triển khai code cho thuật toán Neural Network:

● Đối với thuật toán Neural Network sẽ bao gồm các lớp sau:

○ ActivationFunction: Lớp này đại diện cho một hàm biến đổi trong một hidden layer của Neural Network.

○ SigmoidActivationFunction: Lớp này đại diện cho hàm biến đổi Sigmoid Hàm sigmoid() nhận đầu vào là một số thực và chuyển thành một giá trị trong khoảng (0;1)

○ TanhActivationFunction: Lớp này đại diện cho hàm biến đổi Tanh. Hàm tanh() nhận đầu vào là một số thực và chuyển thành một giá trị trong khoảng (-1; 1).

○ NeuralNetwork: Lớp này là triển khai code của thuật toán NeuralNetwork trong ngôn ngữ Java.

Sau khi đã đã cài đặt thuật toán thông minh trong bộ AI Engine và muốn sử dụng thuật toán này cho Chatbot Libre, ta cần đóng gói bộ AI Engine thành file jar,s sau đó đưa file này vào thư mục lib của Chatbot Libre.

Nói về luồng hoạt động hay cách mà thuật toán Neural Network được sử dụng trong một ngữ cảnh thực tế, chúng em lấy ví dụ về trò chơi TicTacToe trong source code của Chatbot Libre đã áp dụng thuật toán Neural Network để xử lý. Đầu tiên, trong class TicTacToe, ta khai báo một đối tượng network thuộc class NeuralNetwork:

Hình 3.3.2.1: Khai báo đối tượng network thuộc class NeuralNetwork Đối tượng network này được định nghĩa là một Neural Network với kiến trúc có 5 layer bao gồm 1 input layer (gồm 18 neuron), 3 hidden layer (gồm 36 neuron mỗi layer) và 1 output layer (gồm 9 neuron) Input layer bao gồm 18 neuron thể hiện cho việc bàn cờ có 9 vị trí và tại mỗi vị trí có thể xảy ra trạng thái (“X” hoặc

“O”) , output layer bao gồm 9 neuron thể hiện cho kết quả bàn cờ là một tập hợp 9 vị trí có 9 giá trị duy nhất. Đầu tiên khi chạy chương trình TicTacToe, ta cần cài lại các chỉ số LearningRate và Momentum cho hệ thống Neural Network.

Hình 3.3.2.2: Đặt 2 chỉ số LearningRate và Momentum Đây là 2 chỉ số quan trọng trong việc điều chỉnh quá trình đào tạo của Neural Network LearningRate quyết định bước cập nhật trọng số trong quá trình đào tạo. LearningRate quá cao có thể làm cho mô hình "nhảy" qua giá trị tối ưu, trong khi LearningRate quá thấp có thể làm cho mô hình đào tạo rất chậm và dễ bị mắc kẹt tại giá trị tối ưu địa phương(local optimum) Momentum giúp mô hình vượt qua các

"điểm đều" và giúp tăng tốc quá trình học Momentum giữ lại một phần của bước cập nhật trước đó và thêm nó vào bước cập nhật hiện tại, giúp "tránh" những bước cập nhật đột ngột và giảm độ dao động trong quá trình đào tạo.

Phương thức forwardPropagate của class NeuralNetwork thực hiện lan truyền xuôi để tính toán ra giá trị đầu ra từ giá trị đầu vào Trong bài toán TicTacToe, dữ liệu đầu vào của Neural Network được thiết lập từ trạng thái hiện tại của bảng TicTacToe được thể hiện dưới dạng mảng Đầu ra của Neural Network sẽ là một mảng xác suất, đại diện cho xác suất của mỗi ô còn trống trên bảng là nước đi tiếp theo tốt nhất Phương thức này được sử dụng trong phương thức deepLearningMove (được gọi khi chọn nước đi theo Strategy.DeepLearning) để dự đoán nước đi tiếp theo của người chơi AI thông qua việc tính toán giá trị đầu ra và chọn ô có giá trị dự đoán cao nhất.

Hình 3.3.2.3: Đối tượng network gọi phương thức forwardPropagate()

Hình 3.3.2.4: Định nghĩa phương thức forwardPropagate() trong class NeuralNetwork Đối với việc sử dụng mô hình Neural Network, ta còn phải đề cập đến việc cập nhật lại các giá trị trạng thái thông qua huấn luyện bằng thuật toán lan truyền ngược backPropagate Sau khi mạng đã đưa ra dự đoán, thuật toán lan truyền ngược được sử dụng để tính toán độ chênh lệch giữa dự đoán và kết quả thực tế Độ chênh lệch này sau đó được lan truyền ngược qua mạng để cập nhật trọng số và làm giảm thiểu độ chênh lệch đó, từ đó cải thiện khả năng dự đoán các bước đi chính xác hơn.

Hình 3.3.2.5: Đối tượng network gọi phương thức backPropagate()

Hình 3.3.2.6: Định nghĩa phương thức backPropagate() trong class NeuralNetwork

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 đó.

Qua ví dụ về bài toán TicTacToe, ta có thể thấy được khả năng của thuật toán thông minh trong việc xử lý các vấn đề của chatbot Các thuật toán thông minh với các khả năng học có thể mở rộng ứng dụng của chúng vào nhiều lĩnh vực khác nhau, từ đơn giản như trò chơi TicTacToe cho đến những vấn đề phức tạp hơn như dự đoán từ, đoán ảnh hay trả lời câu hỏi Hơn thế nữa, nếu ta cài đặt và áp dụng được thuật toán thông minh cho Chatbot Libre hiệu quả, nó có thể học tập từ lịch sử giao tiếp để có thể dự đoán được ý muốn và nhu cầu của người dùng, hiểu được cảm xúc và ngữ điệu của người dùng để từ đó phản ứng một cách phù hợp, tạo ra được trải nghiệm trò chuyện tự nhiên hơn.

Ngày đăng: 15/05/2024, 09:29

HÌNH ẢNH LIÊN QUAN

Hình 2.3.1.1 Logo Java Hình 2.3.2.1 Logo JavaScript - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 2.3.1.1 Logo Java Hình 2.3.2.1 Logo JavaScript (Trang 9)
Hình 1.3.1: Kiến trúc chung của Bot Libre - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 1.3.1 Kiến trúc chung của Bot Libre (Trang 15)
Hình 1.3.2: Mô hình đối tượng - Object Model - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 1.3.2 Mô hình đối tượng - Object Model (Trang 17)
Hình 1.4.1: Process Flow - Luồng xử lý - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 1.4.1 Process Flow - Luồng xử lý (Trang 19)
Hình 1.5.1: Kiến trúc của ai-engine - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 1.5.1 Kiến trúc của ai-engine (Trang 21)
Hình 2.12.1.1: Cơ chế NLP bằng phương pháp suy nghiệm từ khóa - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 2.12.1.1 Cơ chế NLP bằng phương pháp suy nghiệm từ khóa (Trang 39)
Hình 2.12.4.1: Cơ chế NLP bằng State Machine - Máy trạng thái - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 2.12.4.1 Cơ chế NLP bằng State Machine - Máy trạng thái (Trang 43)
Hình 2.13.1.2: Hoạt động cơ bản bên trong một hidden layer của mạng neuron - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 2.13.1.2 Hoạt động cơ bản bên trong một hidden layer của mạng neuron (Trang 46)
Hình 2.13.1.3: Một số loại activation phổ biến - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 2.13.1.3 Một số loại activation phổ biến (Trang 47)
Hình 2.13.2.1: Sơ đồ Mạng neuron tích chập với 2 hidden layer. - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 2.13.2.1 Sơ đồ Mạng neuron tích chập với 2 hidden layer (Trang 49)
Hình 2.13.3.1: Lưu lại thông tin từ bước tính toán trước. - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 2.13.3.1 Lưu lại thông tin từ bước tính toán trước (Trang 50)
Hình 2.13.3.2: Cơ chế hoạt động của Mạng neuron hồi quy - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 2.13.3.2 Cơ chế hoạt động của Mạng neuron hồi quy (Trang 50)
Hình 2.13.4.1: Cấu trúc bên trong một mô-đun của LSTM. - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 2.13.4.1 Cấu trúc bên trong một mô-đun của LSTM (Trang 52)
Hình 2.13.4.3: Quyết định xem thông tin mới nào sẽ lưu vào trạng thái tế bào - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 2.13.4.3 Quyết định xem thông tin mới nào sẽ lưu vào trạng thái tế bào (Trang 53)
Hình 3.1.2.2: Truy cập đường dẫn chứa file docker - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 3.1.2.2 Truy cập đường dẫn chứa file docker (Trang 60)
Hình 3.1.2.4: Sau khi chạy thành công - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 3.1.2.4 Sau khi chạy thành công (Trang 61)
Hình 3.1.2.5: Mở máy chủ - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 3.1.2.5 Mở máy chủ (Trang 62)
Hình 3.2.1.2: Màn hình đăng nhập - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 3.2.1.2 Màn hình đăng nhập (Trang 63)
Hình 3.2.1.3: Màn hình sau khi đăng nhập - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 3.2.1.3 Màn hình sau khi đăng nhập (Trang 63)
Hình 3.2.1.4: Màn hình chứa tất cả bot đã tạo. - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 3.2.1.4 Màn hình chứa tất cả bot đã tạo (Trang 64)
Hình 3.2.2.1: Màn hình khởi tạo bot - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 3.2.2.1 Màn hình khởi tạo bot (Trang 65)
Hình 3.2.2.2: Sau khi điền những thông tin cho bot - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 3.2.2.2 Sau khi điền những thông tin cho bot (Trang 67)
Hình 3.2.2.3: Sau khi khởi tạo bot thành công và thông tin cơ bản của bot - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 3.2.2.3 Sau khi khởi tạo bot thành công và thông tin cơ bản của bot (Trang 68)
Hình 3.2.4.3: Sau khi training cho bot một phản hồi - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 3.2.4.3 Sau khi training cho bot một phản hồi (Trang 74)
Hình 3.3.1.1: Class ActivationFunction - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 3.3.1.1 Class ActivationFunction (Trang 81)
Hình 3.3.1.2: Class SigmoidActivationFunction - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 3.3.1.2 Class SigmoidActivationFunction (Trang 81)
Hình 3.3.1.3: Class TanhActivationFunction - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 3.3.1.3 Class TanhActivationFunction (Trang 82)
Hình 3.3.1.4: Class NeuralNetwork - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 3.3.1.4 Class NeuralNetwork (Trang 86)
Hình 3.3.2.3: Đối tượng network gọi phương thức forwardPropagate() - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 3.3.2.3 Đối tượng network gọi phương thức forwardPropagate() (Trang 88)
Hình 3.3.2.6: Định nghĩa phương thức backPropagate() trong class NeuralNetwork - đồ án 1 nghiên cứu và tìm hiểu các thuật toán thông minh áp dụng cho chatbot libre
Hình 3.3.2.6 Định nghĩa phương thức backPropagate() trong class NeuralNetwork (Trang 89)

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w