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 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ư hthố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 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 thể tích hợp trên nhiều nền tảng 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 khách hàng, góp
phần đẩy mạnh bán hàng, mở rộng quy mô vận hành 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ũ vấn viên 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 NLP & Dialogue
Management Bot.
lOMoARcPSD| 58707906
Clicking Bot là một loại Chatbot người dùng 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 Chatbot sử dụng công nghệ Học Máy Xử ngôn ngữ tự nhiên
(Natural Language Processing - NLP). Với NLP Bot, người dùng thể tự 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ử
(vừa các nút như Clicking Bot, vừa hiểu được ý định của người dùng như NLP
Bot). đặc biệt, NLP & Dialog Management Bot khả năng ghi nhngữ 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ả NLP & Dialog Management Bot. Đây loại bot
toàn diện nhất, chúng khả năng học hỏi 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 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: Ttuệ nhân tạo 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 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 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 sắc. Bot 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 hình này sẽ tự đưa ra câu trả lời thay chọn câu
trả lời trong mt 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 một công cụ tạo ra một chatbot tự động dựa trên sở học máy
machine learning bằng ngôn ngữ Python. chính một freamwork cho
(Chatbot AI) để tạo ra những con bot thông minh để bạn
thể tích hợp vào những công cụ chat như Facebook, Skype hoặc chính
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 một ngôn ng xử 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 dự án nguồn mở nên bạn hoàn toàn của thể nghiên cứu
phát triển kiểm soát được toàn bộ nguồn cũng như 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 ttậ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 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ừ tviệ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 ta phải huấn luyện con bot để
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 mt đ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à nh. Bot sẽ tự động trả lời theo ngữ cảnh 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, 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 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
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ủ đề vAI.
Sau khi chạy file app.py, ta sẽ kết nối với đang web 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 v2 thư viện Chatterbot Flask để làm một con chatbot
đơn giản.
Tuy nhiên, để nâng cao hiệu quả chatbot mình phải 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ử ngôn ngữ tự
nhiên NLP, cách một chatbot hoạt động hơn nữa đây 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.

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