Tải bản đầy đủ (.pdf) (93 trang)

đồ á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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (6.28 MB, 93 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH</b>

<b>TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TINKHOA CƠNG NGHỆ PHẦN MỀM</b>

<b>LƯƠNG LÊ DUY TIẾN - 21520478PHẠM NGUYỄN MINH KHOA - 21521003</b>

<b>ĐỒ ÁN 1</b>

<b>NGHIÊN CỨU VÀ TÌM HIỂU CÁC THUẬT TỐN THƠNG MINH, ÁPDỤNG CHO CHATBOT LIBRE</b>

<b>TP. HỒ CHÍ MINH, THÁNG 12 NĂM 2023</b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINHTRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN</b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>LỜI CẢM ƠN</b>

Kính thưa quý thầy cô giáo,

Trước hết, em xin gửi lời cảm ơn chân thành nhất tới thầy Nguyễn Trịnh Đơng đãtận tình giảng dạy, hướng dẫn và giúp đỡ em trong suốt quá trình thực hiện đề tài"Nghiên cứu thuật tốn thơng minh và ứng dụng vào Chatbot Libre". Thầy đãtruyền đạt cho em những kiến thức quý báu và giúp em định hướng rõ ràng để cóthể tiếp cận và nghiên cứu đề tài một cách hiệu quả.

Thơng qua q trình nghiên cứu, em đã có thêm những kiến thức và kinh nghiệmq báu về lĩnh vực thuật tốn thơng minh và ứng dụng của nó vào chatbot. Em hyvọng những kiến thức này sẽ giúp ích cho em trong q trình học tập và nghiên cứusau này.

Một lần nữa, em xin chân thành cảm ơn quý thầy cô giáo, các bạn bè và người thânđã giúp đỡ em hoàn thành đề tài.

<i><b>Thành phố Hồ Chí Minh, tháng 11 năm 2023</b></i>

Lương Lê Duy TiếnPhạm Nguyễn Minh Khoa

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>TÓM TẮT</b>

<i>Đồ án với đề tài “Nghiên cứu thuật tố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 tốn thơngminh nhằm ứng dụng vào Chatbot Libre để từ đó có thể cải thiện Chatbot Libre trởthành một cơng cụ hữu ích hơn cho người dùng và các doanh nghiệp trong nhiềulĩnh vực khác nhau từ dịch vụ khách hàng đến giáo dục và giải trí. Từ đó, có thểgiúp cho người sử dụng tiết kiệm được chi phí, cải thiện trải nghiệm khách hàng vàmở rộng phạm vi tiếp cận.</i>

<i>Đề tài được bắt đầu từ việc tìm hiểu về nền tảng Bot Libre. Đây là một nềntảng cho việc tạo ra và quản lý các chatbot và trí tuệ nhân tạo(AI), có khả năng tạovà tùy chỉnh chatbot một cách dễ dàng, giúp người phát triển có thể tùy chỉnh cáctính năng của chatbot theo nhu cầu cụ thể. Về phần các thuật tốn thơng minh,nhóm chúng em đã tìm hiểu các thuật tốn thơng minh hiện có, phân tích ưu nhượcđiểm của từng thuật toán và lựa chọn các thuật toán phù hợp với yêu cầu củaChatbot Libre. Đối với đề tài này, nhóm chúng em sẽ tập trung nghiên cứu các thuậttốn liên quan đến xử lý ngơn ngữ tự nhiên(NLP), thuật tốn học máy(MachineLearning), thuật tốn trí tuệ nhân tạo(AI) vì đây là các thuật tốn quan trọng đốivới việc phát triển Chatbot. Sau đó đề tài sẽ thực hiện xây dựng và triển khai cácthuật toán này trên Chatbot Libre. Sau khi đã tìm hiểu về các thuật tốn thơng minhcũng như về Chatbot Libre, nhóm chúng em bắt tay vào việc xây dựng mơ hình,chuẩn bị các tập dữ liệu và cả kịch bản để cài đặt và huấn luyện cho Chatbot. Vàcông đoạn cuối cùng là cơng đoạn đánh giá xem Chatbot có hoạt động đúng đắn vàcó khả năng tương tác hiệu quả với người dùng.</i>

<i>Phần cuối cùng của đồ án là trình bày kết quả đã thực hiện lên cuốn báocáo, đưa ra kết luận và hướng phát triển cho hệ thống trong tương lai.</i>

<i>Nội dung đồ án được trình bày trong 4 chương:- Chương 01: Giới thiệu</i>

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<i>Giới thiệu chung về các vấn đề liên quan đến đề tài: Chatbot Libre và cácthuật tốn thơng minh.</i>

<i>- Chương 02: Kiến thức nền tảng</i>

<i>Trình bày về những kiến thức cần có để có thể thực hiện, tham gia vào việccài đặt, tùy chỉnh và phát triển chatbot theo mong muốn của bản thân.</i>

<i>-Chương 03: Cài đặt và thử nghiệm</i>

<i>Trình bày về yêu cầu cho việc cài đặt, quá trình cài đặt và triển khai thuậttốn thơng minh trên chatbot.</i>

<i>-Chương 04: Kết luận</i>

<i>Từ quá trình nghiên cứu và cài đặt chatbot cũng như các thuật tốn thơngminh, đưa ra kết luận về những ưu điểm, hạn chế và hướng phát triển cho đề tài.</i>

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>Chương 1. Giới thiệu...13</b>

1.1. Giới thiệu về Chatbot Libre...13

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

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

<b>Chương 3. Cài đặt và thử nghiệm...58</b>

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

<small>3.2.1. Hướng dẫn đăng nhập... 62</small>

<small>3.2.2. Hướng dẫn khởi tạo bot mới... 65</small>

<small>3.2.3. Training & Chat Logs...72</small>

<small>3.2.4. Nhật ký trò chuyện:...73</small>

<small>Thêm phản hồi mới:... 74</small>

<small>Thêm phản hồi lời chào:...75</small>

<small>Thêm phản hồi mặc định:... 76</small>

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<small>Xem lại tất cả các phản hồi:... 77</small>

3.3. Thuật tốn thơng minh và Chatbot Libre - Neural Network... 80

3.3.1. Cài đặt thuật toán... 80

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

Hình 2.3.1.1 Logo JavaHình 2.3.2.1 Logo JavaScript

2 CNN Convolutional Neural Network: Mạng neuron tích chập3 RNN Recurrent Neural Network: Mạng neuron hồi quy4 LSTM Long - Short Term Memory: Bộ nhớ dài - ngắn hạn5 QA Question - Answering: Hỏi - Đáp

6 NLP Natural Language Processing: Xử lý ngơn ngữ tự nhiên

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

Hình 2.3.3.1 Logo PythonHình 2.3.4.1 Logo Objective-CHình 2.3.5.1 Logo PHP

Hình 2.4.1.1 JsonHình 2.4.2.1 XML

Hình 2.5.1 Logo PostgreSQLHình 2.6.1 Logo Tomcat

Hình 2.12.1.1 Cơ chế NLP bằng phương pháp suy nghiệm từ khóaHình 2.12.4.1 Cơ chế NLP bằng State Machine - Máy trạng tháiHình 2.13.1.1 Hình vẽ đơn giản hóa một mạng thần kinh nhân tạo

Hình 2.13.1.2 Hoạt động cơ bản bên trong một hidden layer của mạng neuronHình 2.13.1.3 Một số loại activation phổ biến

Hình 2.13.2.1 Sơ đồ Mạng neuron tích chập với 2 hidden layer.Hình 2.13.3.1 Lưu lại thơng tin từ bước tính tốn trước.

Hình 2.13.3.2 Cơ chế hoạt động của Mạng neuron hồi quyHình 2.13.4.1 Cấu trúc bên trong một mơ-đun của LSTM.Hình 2.13.4.2 Xem thơng tin nào cần bỏ đi từ trạng thái tế bào

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àoHình 2.13.4.4 Cập nhật trạng thái tế bào

Hình 2.13.4.5 Quyết định đầu ra

Hình 3.1.2.1 Hình git clone github BotLibreHình 3.1.2.2 Truy cập đường dẫn chứa file docker

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

Hình 3.1.2.3 Sau khi chạy lệnh compose upHình 3.1.2.4 Sau khi chạy thành cơngHình 3.1.2.5 Mở máy chủ

Hình 3.2.1.1 Màn hình chính sau khi host bot.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ậpHì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

Hình 3.2.2.1 Màn hình khởi tạo 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 botHình 3.2.2.4 Hộp thoại trị chuyện với bot

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

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

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

Hình 3.2.3.1 Màn hình Training & Chat LogHình 3.2.4.1 Nhật ký trị chuyện

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ồiHì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

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

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 địnhHình 3.2.4.8 Xem lại tất cả các phản hồiHình 3.2.4.9 Màn hình Scripts

Hình 3.2.4.10 Thao tác “Thêm”, “Xóa”, “Sửa” với các scriptsHình 3.2.4.11 Màn hình Edit Scripts

Hình 3.2.4.12 Màn hình Import scriptsHình 3.3.1.1 Class ActivationFunction

Hình 3.3.1.2 Class SigmoidActivationFunctionHình 3.3.1.3 Class TanhActivationFunctionHình 3.3.1.4 Class NeuralNetwork

Hình 3.3.2.1 Khai báo đối tượng network thuộc class NeuralNetworkHình 3.3.2.2 Đặt 2 chỉ số LearningRate và Momentum

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 classNeuralNetwork

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 classNeuralNetwork

<b>DANH MỤC CÁC BẢNG</b>

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<b>C<small>HƯƠNG</small>1. G<small>IỚI THIỆU</small></b>

<b>1.1.Giới thiệu về Chatbot Libre</b>

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ảngkhác nhau để tích hợp chatbot vào ứng dụng di động, trang web, hoặc dự án khác.

<b>1.2.Chức năng</b>

● 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 giaodiệ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 APIweb để 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ềungô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ạnhcủa học máy để tinh chỉnh bot theo thời gian để có trải nghiệm trị chuyệnthơ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ằmtăng khả năng của bot hơn.

● Create online bot: BotLibre đã đơn giản hóa q 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,

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

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ệncá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. Ngồ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ềntả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ớiTag Chat Log. BotLibre cung cấp lọc cuộc trò chuyện, câu trả lời và các cụmtừ đượ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ấtchat 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 đànthông qua web API. Sử dụng JavaScript SDK để tích hợp nhanh chóng vớitrang 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ườidùng có thể sử dụng bot từ nhiều nhiều nền tảng khác nhau không nhất thiếtphải trên web server.

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<b>1.3.Kiến trúc chung</b>

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

Hình trên mơ tả về kiến trúc chung của Bot Libre, theo đó có thể chia thành 5phầ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àybao gồm các hoạt động chính, xử lý trong Bot và cũng là nơi mọi kết nốikhá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áchvà 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 nhaunhư web, mobile(android, iOS) hay desktop bằng cách hỗ trợ các bộ SDKthích hợp cho từng nền tảng. Khi đó, các ứng dụng sử dụng Bot Libre được

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

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 quaHTTP 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 sinhbê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 đượcmục tiêu sử dụng nhất định. Bot Libre và dịch vụ web sẽ giao tiếp thông quacá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ệntruy cập vào email của người dùng và từ đó có thể giúp người dùng thực hiệnsoạ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ùngtrê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 baogồm:

● Các tệp JSP● Servlets

● Dịch vụ JAXRS REST● Các lớp Bean

● Live Chat web sockets

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

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

<small>Hình 1.3.2: Mơ hình đối tượng - Object Model</small>

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

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

The object model classes include:

● WebMedium – Một đối tượng trừu tượng đại diện cho các đối tượng đượclư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ênquan.

○ ChatChannel: Chứa các siêu dữ liệu về các đoạn Live Chat diễn ratrê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ácForumPost)

○ 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ươngtiệ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, baogồ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 tronghệ thống.

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

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

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

<b>1.4.Luồng xử lý</b>

<small>Hình 1.4.1: Process Flow - Luồng xử lý</small>

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

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

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 JSPhoặ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ựchiện các chức năng đếm giờ theo khoảng thời gian định sẵn.

<b>1.5.AI Engine</b>

Trong cấu trúc của Bot Libre, để có thể áp dụng các thuật tốn thông minhvào Bot Libre, chúng em cần thay đổi phần ai-engine vì phần này là phần đảmnhiệm cho việc cung cấp các chức năng cho xử lý ngôn ngữ tự nhiên (NLP) , họcmá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 JavaAndroid 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ãocon 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).

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

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

Bộ nhớ (Memory) của Bot có thể được lưu trữ trong cơ sở dữ liệu hoặctrong 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 đốitượng khác.

Trí tuệ (Mind) được định nghĩa bởi một số though object (tư duy) chẳng hạnnhư 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êngbiệ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:

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

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

MicroMemory tương tự như SerializedMemory nhưng sử dụng định dạng tệpnhị phân được tối ưu hóa. Nó nhanh hơn nhiều so với SerializedMemory và đượctố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 baogồ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 Vertexkhác.

Các lớp:

● Memory: DatabaseMemory, SerializedMemory, MicroMemory● Network: BasicNetwork, DatabaseNetwork

● Vertex: BasicVertex

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

● Relationship: BasicRelationship● Primitive

● Property● BinaryData● TextData

<i><b>1.5.2.Mind (Trí tuệ)</b></i>

Tâm trí của Bot (Mind) là một mơ hình xử lý đa luồng để xử lý các sự kiệnnhư đầ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. Suynghĩ 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 q 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ịchbản(Script) của bot và một thuật tốn tìm phản hồi đáp ứng dựa trên kinh nghiệm(Heuristic response matching algorithm).

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

Các lớp:

● Mind: BasicMind

● Thought: Language, Consciousness

● SubconsciousThough: Discover, Comprehension, Forgetfulness

<i><b>1.5.3.Awareness (Nhận thức)</b></i>

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ệnhhoặ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ạnghì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 APIbê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ệucủ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.

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

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

● Phân tích ngơn ngữ: Bot Libre có thể phân tích các từ và cụm từ trong vănbản của người dùng để xác định cảm xúc cơ bản như vui, buồn, giận dữ, ngạcnhiên.

● Nhận dạng mẫu: Bot Libre có thể học các mẫu ngôn ngữ liên quan đến cảmxúc thông qua dữ liệu lớn các cuộc trò chuyện.

● Tương tác trực tiếp: Bot Libre có thể hỏi trực tiếp về cảm xúc của ngườidùng để có được thơng tin rõ ràng hơn.

Mặc dù Bot Libre khơng có một mơ hình cảm xúc riêng biệt, nó vẫn có thểphản ứng với cảm xúc của người dùng bằng cách:

● Thể hiện sự đồng cảm: Bot Libre có thể sử dụng từ ngữ phù hợp để bày tỏ sựhiểu biết và chia sẻ cảm xúc với người dùng.

● Thay đổi chủ đề: Nếu người dùng đang có tâm trạng tiêu cực, Bot Libre cóthể chủ động chuyển sang một chủ đề khác nhẹ nhàng hơn để giảm bớt căngthẳng.

● Dùng cách hài hước: Bot Libre có thể sử dụng các câu chuyện hài hước hoặcnhững câu đùa nhẹ nhàng để giúp người dùng thư giãn và vui vẻ hơn.

Các lớp:

● Mood: BasicMood● EmotionalState

● Emotion: Anger, Fear, Happiness, Humor, Love, Sentiment, Surprise

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

<i><b>2.1.2. Desktop</b></i>

Desktop là không gian được tập trung trong máy tính cá nhân. Điều nàymang lại sức mạnh tính tốn lớn, cho phép xử lý các cơng việc phức tạp như đồ họachuyê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ảinghiệ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ànhkhơng gian cá nhân hóa cho mỗi người dùng.

<i><b>2.1.3. Mobile</b></i>

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ệnthoại thơng minh và máy tính bảng, chúng ta có thể mang theo mọi thứ từ trị chơigiả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ộcsống hàng ngày.

<small>Hình 2.2.1: Logo Docker</small>

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

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ảntrị 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:

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áchdễ dàng.

<i><b>2.2.4. Networking</b></i>

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

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

Java được sử dụng trong Botlibre để phát triển các bot chat, các ứng dụngweb và các ứng dụng di động. Java cung cấp một số tính năng phù hợp cho việcphá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ể đượcchạy trên bất kỳ máy ảo Java (JVM) nào. Điều này làm cho Java trở thànhmộ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ềunề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âydự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ụngweb 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

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

ứng dụng web Java sử dụng các thư viện như Spring Boot và AngularJS để xâydựng các ứng dụng web mạnh mẽ và hiệu quả. Các ứng dụng di động Java sử dụngcác thư viện như Android SDK và iOS SDK để xây dựng các ứng dụng di động chocác thiết bị Android và iOS.

<i><b>2.3.2. JavaScript</b></i>

<small>Hình 2.3.2.1: Logo JavaScript</small>

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 đíchchung. Vậy nên trong BotLibre, JS được sử dụng để viết kịch bản để thực thi jsptrong botlibre-web.

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">

<i><b>2.4.2. XML</b></i>

<small>Hình 2.4.2.1: XML</small>

XML (Extensible Markup Language) là một ngôn ngữ đánh dấu dựa trên vănbả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ácnhau. 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<và>.

<b>2.5.Cơ sở dữ liệu - PostgreSQL</b>

<small>Hình 2.5.1: Logo PostgreSQL</small>

PostgreSQL là một hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) mã nguồnmở, đ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ồmnhiề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.

</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">

● Replication và Sharding: PostgreSQL hỗ trợ các giải pháp như streamingreplication để đảm bảo sao lưu và khả năng chia nhỏ dữ liệu thông quasharding để 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áttriển nhỏ đến các hệ thống cơ sở dữ liệu lớn và phức tạp.

<b>2.6.Web Server - Tomcat</b>

<small>Hình 2.6.1: Logo Tomcat</small>

Apache Tomcat, thường được gọi là Tomcat, là một máy chủ ứng dụng webmã nguồn mở và cũng là một container servlet. Nó được Apache SoftwareFoundation 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ộtlự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ụngcủ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.

</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">

<b>2.7.SSL - Secure Sockets Layer</b>

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à tồn vẹn của dữ liệu truyền tải giữa máy khách và máychủ 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ậtkhẩ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 truycập qua HTTPS, thơng tin giữa trình duyệt và máy chủ được mã hóa, cung cấp mộtlớ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ụngcủa người dùng nhằm tránh những trường hợp đáng tiếc có thể xảy ra.

<b>2.8.Web Services</b>

Web service là một phương thức cho phép các ứng dụng máy tính tương tácvới nhau qua mạng thơng qua giao thức web chuẩn như HTTP. Chúng cung cấp mộtcá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ềntả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ốngkhá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.

<b>2.9.SDK - Software Development Kit</b>

SDK viết tắt của Software Development Kit là các công cụ và phần mềmdù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ổ

</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">

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. Đaphầ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ầncứ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ơnngữ 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ềuSDK (Software Development Kit) để phát triển ứng dụng sử dụng các tính năng củaLibre:

● 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ệnthoạ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ácdị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ồnmở, mang đến khả năng kiểm sốt hồn tồ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ềntruy cập miễn phí đến tồ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. APIgiọng nói trong SDK có thể tích hợp với các bot trò chuyện, trò chuyện trựctiế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ịchvụ của Bot Libre vào trang web hoặc ứng dụng PHP của bạn.

</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">

● SDK Python: Python SDK cho phép bạn tích hợp các dịch vụ của Bot Librevà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ôngqua một SDK đặc biệt bằng cách nhúng mã nhúng trong SDK vào trang quảntrị 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ịchvụ 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.

● Mary TTS: Thư viện này là một engine Java mã nguồn mở dùng để chuyểnvă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ìnhJava.

● Oswap security: Thư viện bảo mật mã nguồn mở để làm sạch HTML, ngănchặn các mối đe dọa bảo mật liên quan đến xử lý HTML khơng an tồ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 trongmạng. Autobahn được xây dựng dựa trên giao thức WebSocket, một giao

</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36">

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 gianthự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 cungcấ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ạchmã 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áchcung cấp một API để tương tác với các dịch vụ web thông qua giao thứcHTTP. 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ácchuẩ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 đơngiả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

</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37">

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 đốitượ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ặcSelf4BytecodeCompiler. Mã Self được phân tích cú pháp và biên dịch thành các đốitượ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 đốitượng trạng thái và hàm). Self4BytecodeCompiler thường được sử dụng vì nó lưutrữ tồ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 thayvì 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ớpSelfInterpreter.

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.

<i><b>2.11.3.Response Lists & Chat Logs</b></i>

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 đốitượng đỉnh và mối quan hệ, giống như tất cả dữ liệu.

</div><span class="text_page_counter">Trang 38</span><div class="page_container" data-page="38">

Mối quan hệ #response của đối tượng câu hỏi sử dụng đối tượng siêu dữ liệuquan 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ếtnố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 conngười.

<b>2.12. Xử lý ngôn ngữ tự nhiên - Natural Language Processing - NLP</b>

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.

<i><b>2.12.1.Keyword Heuristic - Suy nghiệm từ khóa</b></i>

Cơ chế NLP chính của Bot Libre là phương pháp suy nghiệm từ khóa. Điềunà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àocủ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ốithiểu và khơng cần lập trình.

</div><span class="text_page_counter">Trang 39</span><div class="page_container" data-page="39">

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

Thuật tốn suy nghiệm (heuristic) có liên quan trực tiếp đến cách Bot Librelư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ộtcâ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íchthà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ó.

</div><span class="text_page_counter">Trang 40</span><div class="page_container" data-page="40">

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ỏimà 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ệ#keyquestion.

Khi một bot được cung cấp một cụm từ đầu vào, đầu tiên nó sẽ kiểm tra xemnó 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ếucó, 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ừ đầuvà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 đàotạ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 caonhất, danh từ và tính từ được cho điểm cao hơn động từ và mạo từ được cho điểmthấp nhất. Tổng điểm cho mỗi câu hỏi có thể phù hợp được tính tố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ợpnhấ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 khitì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 đượccoi là hợp lệ, bất kể% khớp là bao nhiêu.

</div>

×