
lOMoARcPSD| 58707906 
TRƯỜNG ĐẠI HỌC HẢI PHÒNG 
Khoa Công nghệ thông tin 
BÀI TẬP LỚN TRÍ TUỆ NHÂN TẠO 
Đề tài: Xây Dựng Chatbox 
 SVTH 
: 
GVHD:  
 Năm 2024  
M 
ục Lục  

lOMoARcPSD| 58707906 
1. Chatbot là gì 
Chatbot là các ứng dụng phần mềm được thiết kế để giao tiếp với người dùng internet 
bằng văn bản như người thật. Tại Việt Nam, FPT.AI Conversation cung cấp nền tảng 
để tạo lập và quản lí chatbot với giao diện người dùng. Bởi được trang bị công nghệ 
xử lý ngôn ngữ tự nhiên tiếng Việt tốt nhất thị trường và hệ thống quản lí hội thoại 
tối ưu, chatbot của FPT.AI cung cấp cho các doanh nghiệp một giải pháp xây dựng 
chatbot hoàn chỉnh. 
Chatbot tương tác với người dùng như hệ thống trả lời tin nhắn tự động, nhưng thông 
minh hơn rất nhiều. Bằng cách xây dựng các kịch bản hội thoại sử dụng phương 
pháp Học Máy (Machine Learning), AI Chatbot có thể tự học, tự hiểu các câu hỏi, 
nhu cầu, mong muốn của người dùng và đưa ra các câu trả lời phù hợp. 
Chatbot của FPT.AI có thể tích hợp trên nhiều nền tảng và giao diện trò chuyện khác 
nhau, giúp tự động hóa các cuộc hội thoại giữa doanh nghiệp và khách hàng, góp 
phần đẩy mạnh bán hàng, mở rộng quy mô vận hành và mang đến sự hài lòng cho 
khách hàng. 
2. Mục đích của Chatbot 
Chatbot được tạo ra để hỗ trợ con người trong lĩnh vực dịch vụ khách hàng ở mức 
độ sơ cấp với những tác vụ được lặp đi lặp lại nhàm chán. Do đó, các doanh nghiệp 
sẽ loại bỏ được những áp lực về mặt nhân sự, đội ngũ tư vấn viên có thể tập trung 
giải quyết các công việc ở mức độ chuyên sâu và cấp thiết hơn. 
Với mỗi loại hình doanh nghiệp, chatbot lại được ứng dụng theo các cách khác nhau. 
Một số nhiệm vụ chính của chatbot đang được nhiều doanh nghiệp áp dụng như: 
•  Tư vấn, trả lời các câu hỏi thường gặp, 24/7 cho khách hàng 
•  Hỗ trợ các chiến dịch marketing (gửi thông tin về chương trình khuyến mãi, giảm 
giá, ra mắt sản phẩm mới…) 
•  Gợi ý, tìm kiếm, báo giá các sản phẩm, dịch vụ theo yêu cầu của khách hàng 
•  Đặt lịch hẹn, đặt bàn, đặt phòng, đặt vé máy bay…    Tiếp nhận các thông tin khai 
báo, mở tài khoản, mở thẻ…    Thanh toán hóa đơn đặt hàng. 
3. Các loại Chatbot phổ biến 
Chatbot được chia làm 3 loại chính: Clicking Bot, NLP Bot và NLP & Dialogue 
Management Bot. 

lOMoARcPSD| 58707906 
•  Clicking Bot là một loại Chatbot mà người dùng có thể giao tiếp bằng cách nhấn 
vào các nút được thiết kế sẵn trong Bot để dẫn dắt đến vấn đề cần hỏi. Clicking Bot 
không hiểu được nội dung tin nhắn mà khách hàng gửi đến. 
•  NLP Bot là Chatbot sử dụng công  nghệ Học Máy và  Xử  lý ngôn ngữ tự  nhiên 
(Natural Language Processing - NLP). Với NLP Bot, người dùng có thể tự gõ các 
câu hỏi bất kỳ và bot có thể hiểu được dựa trên dữ liệu đã được đào tạo từ trước.  
Các trường dữ liệu bao gồm: câu mẫu, ý định, thực thể. 

lOMoARcPSD| 58707906 
•  NLP & Dialog Management Bot là loại Chatbot toàn diện nhất, đa dạng cách xử lí 
(vừa có các nút như Clicking Bot, vừa hiểu được ý định của người dùng như NLP 
Bot). Và đặc biệt, NLP & Dialog Management Bot có khả năng ghi nhớ ngữ cảnh 
hội thoại của người dùng. 

lOMoARcPSD| 58707906 
Nền tảng tạo bot của FPT.AI Conversation cho phép xây dựng cả 3 loại chatbot trên, 
nhưng được ưa chuộng hơn cả là NLP & Dialog Management Bot. Đây là loại bot 
toàn diện nhất, chúng có khả năng học hỏi và thông minh hơn theo thời gian, đáp 
ứng yêu cầu khắt khe của nhiều doanh nghiệp khó tính. 
Ngoài ra, FPT.AI Conversation còn có giao diện tạo bot thân thiện, giao diện quản 
lí hội thoại tối ưu, và dễ dàng tích hợp trên nhiều kênh giao tiếp khác nhau. 
4. Hướng Dẫn Lập Trình Chatbot Với Python 
Hạn chế của chatbot 
Nền tảng: Trí tuệ nhân tạo là cái nhân của con chatbot, tuy nhiên để tạo ra được 
chatbot có thể nói chuyện như người thật thì thực sự vẫn còn khá xa. 
Nội tâm: Khả năng vấn đáp của chatbot còn hạn chế, các lỗi xuất hiện có tính hệ 
thống. 
Chúng ta hy vọng với những tiến bộ của ngành trí tuệ nhân tạo hiện nay có thể tạo 
ra được một con robot giao tiếp tốt như con người. 
Nguyên lý làm việc 
Chúng ta chia chatbot làm 2 hướng: 

lOMoARcPSD| 58707906 
Rule-Based Approach:  Với  phương  pháp  này,  bot  được  lập  trình  theo  những 
nguyên tắc có sắc. Bot có thể trả lời những truy vấn đơn giản nhưng với truy vấn 
phức tạp thì không. 
Self-Learning Approach: Bot được huấn luyện dựa trên các thuật toán học mày 
.  Chúng ta tiếp tục chia làm 2 loại: 
Retrieval-Based Models: Với phương pháp này, bot chọn ra 
câu trả lời tốt nhất trong danh sách các câu trả lời theo truy vấn của người dùng. 
Generative Models: Những mô hình này sẽ tự đưa ra câu trả lời thay vì chọn câu 
trả lời trong một bộ câu trả lời điều này làm bot ngày càng trở nên thông minh. 
Thư viện ChatterBot trong Python 
ChatterBot là  một  công  cụ tạo  ra  một  chatbot tự  động  dựa  trên  cơ  sở  học  máy 
machine learning bằng ngôn ngữ Python.   chính là một freamwork cho 
(Chatbot AI) để tạo ra những  con bot thông minh để bạn có 
thể  tích hợp vào những công cụ chat như Facebook, Skype hoặc chính là là 
những  nền  tảng  chat  do  các  bạn  tự  tạo  ra.    được  thiết  kế  dựa  trên 
Python là một ngôn ngữ  xử lý ngôn ngữ hàng đầu cho phép ChatterBot 
có để đào tạo bất kỳ ngôn ngữ nào. Kể cả ngôn ngữ Tiếng Việt. 
Đặc biệt do ChatterBot là dự án mã nguồn mở nên bạn hoàn toàn của thể nghiên cứu 
phát triển và kiểm soát được toàn bộ mã nguồn cũng như cơ sở dữ liệu. Điều này 
làm bảo mật toàn bộ thông tin con bot mà bạn phát triển không phải phụ thuộc vào 
bất kỳ nền tảng do một bên thứ 3 nào như …. 
Quy trình hoạt động chatterbot 
Các Chatbot hoạt động bằng cách sử dụng phương pháp phát hiện trùng khớp các 
mẫu  câu   để tìm kiếm các mẫu câu có trong câu hỏi của người  
machine 
learning 
ChatterBot 
ChatAI 
ChatterBot 
Wit.AI 
Pattern 
matchers 

lOMoARcPSD| 58707906 
dùng và xem có khớp với các câu hỏi đã được "huấn luyện" lưu trữ trong hệ thống 
để đưa ra các câu trở lời phù hợp nhất. Ban đầu câu hỏi người dùng được đưa vào 
tiếp theo đó chúng ta sử dụng các   đã định nghĩa từ trước để chia nhỏ câu hỏi 
thành từng pattern con. Tiếp theo  ta sử dụng các thuật toán học máy để xác 
định câu hỏi khớp nhất trong các câu hỏi đã được định nghĩa từ trước. Sau đó với 
câu hỏi ta chọn được khớp nhất ta sẽ chọn câu trả lời từ tập câu trả lời được định 
nghĩa trước bởi câu hỏi đó. Cuối cùng, trả lời cho người dùng câu trả lời ta tìm được. 
Chuẩn bị 
: là cái nhân của chatbot. Đây là thư viện phục vụ việc nhận tin nhắn  
của người dùng rồi học cách để trả lời cho tin nhắn đó. 
: Tạo giao diện browser tương tác thực với người dùng. 
Mình tải và cài đặt 
. 
Thư viện chatterbot 
Cài đặt thư viện 
Bạn có thể cài đặt thư viện vào hệ thống sử dụng  : 
pip install chatterbot 
Sau đó ta sẽ thử làm chatbot với vài dòng lệnh đầu tiên. Một con chatbot sẽ được 
hoàn thiện trong 3 phần Phần 1: Tạo chatbot 
Từ thư viện chatterbot import đối tượng ChatBot với mục đích khởi tạo một con 
chatbot. Sau đó ta tạo một chatbot tên Ron Obvious rồi gán vào biến chatbot. 
from  chatterbot  import 
ChatBot 
chatbot  =  ChatBot("Ron 
Obvious") 
Phần 2: Huấn luyện ChatBot 
Sau khi tạo một con ChatterBot. Việc tiếp theo là ta phải huấn luyện con bot để nó 
học được những kiến thức ban đầu với những câu trả lời cụ thể. Phương pháp đào 
tạo mà thư viện cho phép là cho một đoạn hội thoại ngắn đại diện là một list các câu 
hội thoại của bot và mình. Bot sẽ tự động trả lời theo ngữ cảnh mà mình cài đặt 
trước. 
pattern 
Chatterbot 
Flask 
Visual Studio Code 
 trên máy tính để chạy code  
Python 
pip 

lOMoARcPSD| 58707906 
from chatterbot.trainers import ListTrainer 
conversation  =  [ 
"Hello", 
 "Hi there!", 
 "How are you doing?", 
 "I'm doing great.", 
 "That is good to hear", 
 "Thank you.", 
 "You're welcome." 
] 
trainer = ListTrainer(chatbot) 
trainer.train(conversation) 
Phần 3: Chọn câu trả lời 
Con bot sẽ nhận một tin nhắn sau đó từ những kiến thức nó học được, nó sẽ trả lời 
theo ngữ cảnh nó được học từ trước và ngữ cảnh mình vừa huấn luyện cho bot. 
response = chatbot.get_response("Good morning!") 
print(response) 
 Sau đây, kết hợp với thư viện chạy trên nền tảng . 
Flask 
, chúng ta sẽ tạo  
Flask ChatterBot App 
web 

lOMoARcPSD| 58707906 
Ta chia thành 3 phần: 
Phần 1: Main chatbot. Thư viện chatterbot đảm nhiệm nhiệm vụ này. Các câu trả 
lời sẽ được đưa ra khi nhập tin nhắn người dùng vào. 
Phần 2: GUI. Thư viện Flask là thư viện tạo ra với mục đích viết app nền tảng web 
bằng Python. Ta sẽ giao diện hóa những gì Chatterbot làm được. 
Phần 3: Dữ liệu. Các file SQLite và file Pickle sẽ được tạo thêm với nhiệm vụ lưu 
dữ liệu mà chatbot huấn luyện được. 
Use Case – Flask ChatterBot 

lOMoARcPSD| 58707906 
<!DOCTYPE html> 
<html> 

lOMoARcPSD| 58707906 
 <head> 
 <link rel="stylesheet" type="text/css" href="/static/style.css"> 
 <script  
src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 </head> 
 <body> 
 <h1>Flask Chatterbot Example</h1> 
 <h3>A web implementation of <a  
href="https://github.com/gunthercox/ChatterBot">ChatterBot</a>  using 
Flask.</h3>  <div> 
 <div 
id="chatbox"> 
 <p 
class="botText"><span>Hi! 
I'm Chatterbot.</span></p> 
 </div> 
 <div 
id="userInput"> 
 <input 
id="textInput" 
type="text" name="msg" 
placeholder="Message"> 
 <input 
id="buttonInput" 
type="submit" 
value="Send"> 
 </div> 
 <script> 
 function getBotResponse() {  var 
rawText = $("#textInput").val(); 
 var userHtml = '<p class="userText"><span>' + rawText + '</span></p>'; 
 $("#textInput").val(""); 
 $("#chatbox").append(userHtml); 
 document.getElementById('userInput').scrollIntoView({block: 'start',  
behavior: 'smooth'}); 
 $.get("/get", { msg: rawText }).done(function(data) { 
 var botHtml = '<p class="botText"><span>' + data + '</span></p>'; 

lOMoARcPSD| 58707906 
 $("#chatbox").append(botHtml); 
 document.getElementById('userInput').scrollIntoView({block: 'start',  
behavior: 'smooth'}); 
 }); 
 } 
 $("#textInput").keypress(function(e)  { 
if(e.which  ==  13)  { 
getBotResponse(); 
 } 
 }); 
 $("#buttonInput").click(function()  {  
getBotResponse(); 
 }) 
 </script> 
 </div> 
 </body> 
</html> 
File Style.css 
body { 
 font-family: Garamond; 
} 
h1 
{ 
 color: black; 
 margin-bottom: 0; 

lOMoARcPSD| 58707906 
 margin-top: 0; 
 text-align: center; 
 font-size: 40px; 
} 
h3 
{ 
 color: 
black; 
 font-size: 
20px; 
 margin-top: 
3px; 
 text-align: 
center; 
} 
#chatbox { 
 margin-left: 
auto; 
 margin-right: 
auto; 
 width: 
40%; 
 margin-top: 
60px; 
} 
#userInput { 
 margin-left: 
auto; 
 margin-right: 
auto; 
 width: 
40%; 
 margin-top: 
60px; 
} 
#textInput { 

lOMoARcPSD| 58707906 
 width: 
87%; 
 border: 
none; 
 border-
bottom:  3px 
solid #009688; 
 font-
family: 
monospace; 
 font-
size: 17px; 
} 
#buttonInput { 
 padding: 
3px; 
 font-family: 
monospace; 
 font-size: 
17px; 
} 
.userText { 
 color: 
white; 
 font-family: 
monospace; 
 font-size: 
17px; 
 text-
align: right; 
 line-
height: 30px; 
} 
.userText span { 
 background-color: #009688; 

lOMoARcPSD| 58707906 
 padding: 10px; 
 border-radius: 2px; 
} 

lOMoARcPSD| 58707906 
.botText { 
 color: 
white; 
 font-family: 
monospace; 
 font-size: 
17px; 
 text-
align: left; 
 line-
height: 30px; 
} 
.botText span { 
 background-color: #EF5350; 
 padding: 10px; 
 border-radius: 2px; 
} 
#tidbit { 
 position:absolute; 
 bottom:0; 
right:0; 
 width: 300px; 
} 

lOMoARcPSD| 58707906 
Sau khi chạy file   chatbot sẽ huấn luyện dữ liệu từ kho dữ  
liệu    có  sẵn  của  chatterbot.  Trong  kho  dữ  liệu 
gồm rất  
nhiều lĩnh vực. Mỗi lĩnh vực sẽ được lưu trữ dữ liệu dưới dạng file yml. Trong file  
sẽ gồm 2 phần   biểu thị cặp câu hỏi  
và trả lời tương  ứng.  Chatbot  sẽ  học 
những dữ liệu này để phản hồi lại tin nhắn của mình. 
app.py 
chatterbot.corpus.english 
categories 
 biểu thị chủ đề còn  
conversations 

lOMoARcPSD| 58707906 
Quá trình chatbot huấn luyện dữ liệu. Tất cả chủ đề đều được huấn luyện. Như trên 
mình chỉ biểu thị chủ đề về AI. 
Sau khi chạy file app.py, ta sẽ kết nối với đang web mà thư viện Flask vừa tạo qua 
đường link http://127.0.0.1:5000/ 

lOMoARcPSD| 58707906 
Kết luận 
Bài viết hướng dẫn cơ bản về 2 thư viện Chatterbot và Flask để làm một con chatbot 
đơn giản. 
Tuy nhiên, để nâng cao hiệu quả chatbot mình phải có tập huấn luyện đa dạng, đủ 
tốt để bot học được nhiều kiến thức hơn. 
Một con chatbot đơn giản giúp chúng ta hiểu hơn về quy trình xử lý ngôn ngữ tự 
nhiên NLP, cách một chatbot hoạt động hơn nữa đây là nền tảng để chúng ta làm 
một con trợ lý ảo có thể giao tiếp trực tiếp bằng giọng nói với mình. 
                            Bấm  Tải xuống để xem toàn bộ.
                        
                                                    
                                                                            Preview text:
   Flask Chatterbot Example 
 A web implementation of href="https://github.com/gunthercox/ChatterBot">ChatterBot  using  Flask.   id="chatbox"> 
class="botText">Hi! I'm Chatterbot. id="userInput"> id="textInput" type="text" name="msg" placeholder="Message"> id="buttonInput" type="submit" value="Send">