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
Trang 1TRƯỜ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
Trang 21 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
Trang 3Vớ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
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
Trang 4 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ể.
Trang 5 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
Trang 6Nề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
Trang 7Chú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:
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 machine learning 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 ChatterBot chính là một freamwork cho ChatAI (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 ChatterBot đượ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ư Wit.AI…
Quy trình hoạt động chatterbot
Trang 8Cá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 Pattern matchers để tìm kiếm các mẫu câu có trong câu hỏi của người 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 pattern đã đị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ị
Chatterbot: 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 đó
Flask: 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 Visual Studio Code trên máy tính để chạy code Python 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:
pip install chatterbot
Trang 9Sau đó 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
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)=
Trang 10Phầ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 Flask, chúng ta sẽ tạo Flask ChatterBot App chạy trên nền tảng web
Use Case – Flask ChatterBot
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
Trang 11File App.py
from flask import Flask, render_template, request from chatterbot import ChatBot
from chatterbot.trainers import ChatterBotCorpusTrainer app Flask( name )=
english_bot ChatBot(= "Chatterbot",
storage_adapter="chatterbot.storage.SQLStorageAdapter") trainer ChatterBotCorpusTrainer(english_bot)=
trainer.train("chatterbot.corpus.english")
@app.route( )"/"
def home():
return render_template("index.html")
@app.route("/get")
def get_bot_response():
userText request.args.get(= 'msg')
return str(english_bot.get_response(userText))
if name ==" main ":
app.run()
File index.html
<!DOCTYPE html>
<html>
Trang 12<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>
< >Flask Chatterbot Example</ >h1 h1
< >A web implementation of <h3 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
Trang 13$("#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;
Trang 14margin-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 {
Trang 15width: 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; padding: 10px;
border-radius: 2px;
}
Trang 16.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;
}
Sau khi chạy file app.py chatbot sẽ huấn luyện dữ liệu từ kho dữ
liệu chatterbot.corpus.english 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 categories biểu thị chủ đề còn conversations 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
Trang 18Quá 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/
Trang 19Kế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
Trang 20Mộ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