Khóa học
Bạn đã mệt mỏi vì phải chờ đợi trong hàng dài để cuộc gọi được kết nối với nhân viên chăm sóc khách hàng? Việc đọc các mục Hỏi đáp (FAQ) khiến bạn uể oải? Vậy thì bạn đang ở đúng nơi. Bạn có nhớ lần gần đây nhất bạn trò chuyện với bộ phận chăm sóc khách hàng qua chat vì nhận sai hàng không? Rất có thể bạn đang trò chuyện với một bot chứ không phải nhân viên thật. Vậy bot thực chất là gì? Chúng ta xây dựng một con bot như thế nào? Cần loại mã nguồn nào? Đây là một số câu hỏi sẽ được giải đáp trong bài viết này!
Trí tuệ nhân tạo, kết hợp học máy và Xử lý ngôn ngữ tự nhiên (NLP) để xây dựng bot hoặc chatbot, được thiết kế nhằm giúp tương tác giữa con người và máy tính trở nên trơn tru. Chatbot có mặt ở khắp mọi nơi, từ website ngân hàng, cửa hàng pizza đến các sàn thương mại điện tử, bạn sẽ thấy chatbot ở khắp nơi. Chatbot cung cấp hỗ trợ chăm sóc khách hàng theo thời gian thực cho một loạt câu hỏi được xác định trước liên quan đến lĩnh vực mà nó được xây dựng. Nó tiếp nhận ngôn ngữ tự nhiên của con người và trò chuyện theo cách giống con người.
Để đơn giản hóa định nghĩa, có thể coi chatbot là sự phát triển của hệ thống Hỏi - Đáp sử dụng xử lý ngôn ngữ tự nhiên. Theo các nguồn tin, đến năm 2024, quy mô thị trường hội thoại toàn cầu sẽ tăng lên 15,7 tỷ đô la, với tỷ lệ tăng trưởng hàng năm là 30,2%. Chẳng hạn, trong bối cảnh đại dịch CoronaVirus, chúng ta đã chứng kiến hàng nghìn tin đồn thất thiệt lan truyền trên WhatsApp, như dùng gì để điều trị COVID, hay cách tăng cường miễn dịch, hoặc liệu virus được tạo ra trong phòng thí nghiệm. Để chấm dứt những tin đồn đó, Facebook đã ra mắt một chatbot hoạt động như công cụ kiểm chứng thông tin.
Bạn quan tâm xây dựng chatbot với các công cụ như OpenAI và Pinecone? Xem phần code-along bên dưới:
Chatbot là gì?
Thuật ngữ “chatterbot” xuất hiện vào năm 1994 khi Michael Mauldin tạo ra chatbot đầu tiên tên “Julia”. Theo Từ điển Oxford, chatbot được định nghĩa là “Một chương trình máy tính được thiết kế để mô phỏng cuộc trò chuyện với người dùng, đặc biệt là qua Internet.” Có thể xem chatbot như một trợ lý ảo giao tiếp với người dùng qua tin nhắn văn bản và giúp doanh nghiệp đến gần khách hàng hơn. Đó là một chương trình được thiết kế để bắt chước cách con người giao tiếp với nhau. Việc này có thể thực hiện qua giao diện chat hoặc cuộc gọi thoại. Các nhà phát triển thường thiết kế chatbot sao cho người dùng khó nhận ra họ đang nói chuyện với người hay robot.
Chatbot giúp bất kỳ doanh nghiệp/tổ chức nào đạt được các mục tiêu sau:
- Tăng hiệu quả vận hành.
- Tự động hóa việc đáp ứng yêu cầu của khách hàng.
- Xử lý các truy vấn cơ bản, từ đó giải phóng nhân viên cho các yêu cầu phức tạp & giá trị cao hơn.
- Hỗ trợ đa ngôn ngữ.
- Tiết kiệm thời gian & công sức nhờ tự động hóa hỗ trợ khách hàng.
- Cải thiện tốc độ phản hồi cũng như mức độ tương tác của khách hàng.
- Cá nhân hóa giao tiếp

Chatbot hoạt động như thế nào?
Chatbot thực chất là các ứng dụng phần mềm có lớp ứng dụng, cơ sở dữ liệu và API. Để đơn giản hóa cách hoạt động, có thể nói chatbot dựa trên khớp mẫu để phân loại văn bản và tạo phản hồi phù hợp cho câu hỏi/yêu cầu của người dùng. Chatbot phản hồi theo chương trình đã được lập trình sẵn. Có nhiều loại chatbot khác nhau, tùy thuộc vào mục đích sử dụng. Chủ yếu có ba loại chatbot như sau:
-
Chatbot dựa trên luật: Đây là loại chatbot cơ bản, người dùng tương tác với bot bằng các tùy chọn được xác định trước. Để nhận câu trả lời từ những bot này, người dùng cần nhấp vào một số lựa chọn. Những bot như vậy thu thập yêu cầu của người dùng, phân tích và đưa ra kết quả dưới dạng nút bấm. Chúng thường được dùng để thay thế các câu hỏi thường gặp; với các truy vấn phức tạp, chúng không phải lúc nào cũng là giải pháp tốt nhất.
-
Chatbot độc lập (từ khóa): Đây là các bot học máy; khác với chatbot dựa trên luật, chúng phân tích người dùng muốn gì và phản hồi phù hợp. Những chatbot này sử dụng các từ khóa tùy chỉnh và học máy để xác định cách phản hồi yêu cầu của người dùng một cách hiệu quả.
-
Chatbot NLP (theo ngữ cảnh): Đây là loại chatbot tiên tiến nhất hiện nay. Chúng kết hợp ưu điểm của chatbot dựa trên luật và chatbot từ khóa. Những chatbot này dùng NLP để hiểu ngữ cảnh và ý định trong yêu cầu của người dùng và hành động tương ứng. Chúng có thể xử lý nhiều yêu cầu từ cùng một người dùng một cách dễ dàng.
So sánh các nền tảng chatbot
Nhiều nền tảng cung cấp chatbot tùy chỉnh với tự động hóa, mang đến dịch vụ hỗ trợ liền mạch, đúng hạn, chất lượng cao cho khách hàng bất cứ khi nào họ cần mà không cần năng lực hội thoại đóng gói sẵn. Khách hàng cũng có xu hướng mua hàng từ doanh nghiệp mà họ có thể dễ dàng kết nối qua tin nhắn.
Danh sách các nền tảng xây dựng AI chatbot năm 2020:
-
Azure Bot Service: Azure bot service cho phép xây dựng chatbot từ đầu, tức là bạn có thể xây, kết nối, kiểm thử và triển khai. Nó cho phép nhà phát triển sử dụng SDK và công cụ mã nguồn mở. Nó cũng hỗ trợ tạo các bot nâng cao như trợ lý ảo để xử lý các truy vấn phức tạp.
-
Botsify: Điểm độc đáo của công cụ này là cho phép người không chuyên kỹ thuật xây dựng chatbot với giao diện trực quan. Bot được thể hiện dưới dạng câu chuyện, tức là bạn có thể tạo nhiều câu chuyện hoặc nhiều chatbot và triển khai theo nhu cầu. Một tính năng hay khác là khả năng lưu phản hồi của người dùng vào một biểu mẫu có thể dễ dàng xuất ra CSV.
-
Amazon Lex: Amazon Lex cho phép nhà phát triển xây dựng giao diện hội thoại bằng văn bản và giọng nói. Nó đi kèm các chức năng học sâu tiên tiến và NLP để hiểu ngữ cảnh văn bản. Công cụ cung cấp bảng điều khiển dễ dùng để xây chatbot chỉ trong vài phút.
-
Mobile Monkey: Mobile Monkey cho phép xây chatbot phục vụ mục đích tiếp thị. Nó cho phép tạo bot quảng cáo Facebook, bot SMS và chatbot web gốc, tất cả trên một nền tảng. Họ cũng cung cấp mẫu chatbot dựng sẵn cho hầu hết mọi loại hình kinh doanh, có thể nhúng trực tiếp vào website.
-
ChatterOn: Nền tảng này cho biết có thể xử lý nhiều loại phản hồi nội dung phong phú từ Bot vì cho phép nhà phát triển kết nối các API khác nhau ở mỗi lần tương tác với người dùng. ChatterOn cung cấp hơn 20 bot dựng sẵn có thể sử dụng chỉ với một cú nhấp. Không cần nhiều mã, giúp người không chuyên kỹ thuật dễ dàng xây chatbot.
-
TARS: Nền tảng này cho phép bạn xây dựng landing page hội thoại, giúp tạo chatbot tự động để chào hỏi khách hàng, cung cấp thông tin liên quan đến truy vấn về sản phẩm, đồng thời xin thông tin liên hệ. Tars cung cấp nhiều mẫu chatbot dựng sẵn, được phân loại theo hai phần - theo ngành và theo tình huống sử dụng.
Đến đây hẳn bạn đã háo hức muốn tự xây một chatbot. Và còn gì tuyệt hơn một chatbot NLP có thể tùy biến? Hãy bắt đầu xây dựng chatbot của riêng mình bằng Python với thư viện chatterbot.
Chatterbot

Đúng như tên gọi, chatterbot là một thư viện Python được thiết kế riêng để tạo chatbot. Thuật toán này sử dụng tuyển tập các thuật toán học máy để tạo ra các phản hồi khác nhau cho người dùng theo yêu cầu của họ.
Chatterbot giúp việc phát triển chatbot có thể trò chuyện trở nên dễ dàng hơn. Nó bắt đầu bằng việc tạo một chatterbot chưa được huấn luyện, không có kinh nghiệm hay kiến thức trước về cách giao tiếp. Khi người dùng nhập câu, thư viện sẽ lưu yêu cầu của người dùng cũng như phản hồi gửi lại cho họ. Khi số lượng ví dụ trong chatterbot tăng lên, độ chính xác của phản hồi cũng tăng theo.
Chatterbot được huấn luyện để tìm phản hồi tương tự gần nhất bằng cách tìm yêu cầu tương tự gần nhất do người dùng đưa ra, tương đương với yêu cầu mới. Sau đó nó chọn một phản hồi từ các phản hồi đã có. Điểm khác biệt của chatterbot là cho phép nhà phát triển dễ dàng tạo bộ dữ liệu và cấu trúc của riêng mình.
Xây dựng Chatbot bằng Chatterbot
Hãy bắt đầu bằng cách cài đặt thư viện chatterbot. Để tạo chatbot, bạn cũng cần cài đặt chatterbot corpus. Corpus - nghĩa đen là một tập hợp từ. Gói này chứa một kho dữ liệu đi kèm mô-đun chatterbot. Mỗi corpus thực chất là một nguyên mẫu gồm các câu đầu vào khác nhau và phản hồi của chúng. Các corpus này được bot sử dụng để tự huấn luyện. Phương pháp được khuyến nghị nhất để cài chatterbot và chatterbot_corpus là dùng pip.
Các lệnh cài đặt cho terminal:
pip install chatterbot
pip install chatterbot_corpus
Các lệnh cài đặt cho Jupyter Notebook:
!pip install chatterbot
!pip install chatterbot_corpus
Trước tiên, hãy import lớp Chatbot của mô-đun chatterbot.
# Importing chatterbot
from chatterbot import ChatBot
Tạo thể hiện Chatbot
Bây giờ đến phần thú vị nhất, tức là đặt tên cho chatbot của bạn bằng cách tạo một đối tượng Chatbot. Bạn có thể chọn bất kỳ tên nào bạn muốn. Chỉ một dòng mã này sẽ tạo con bot mới của chúng ta tên Buddy. Chúng ta cần chỉ định thêm một số tham số trước khi chạy chương trình đầu tiên.
# Create object of ChatBot class
bot = ChatBot('Buddy')
[nltk_data] Downloading package averaged_perceptron_tagger to
[nltk_data] /root/nltk_data...
[nltk_data] Unzipping taggers/averaged_perceptron_tagger.zip.
[nltk_data] Downloading package stopwords to /root/nltk_data...
[nltk_data] Unzipping corpora/stopwords.zip.
[nltk_data] Downloading package wordnet to /root/nltk_data...
[nltk_data] Unzipping corpora/wordnet.zip.
Bạn có thể cấu hình bộ tiếp hợp lưu trữ (storage adapter) cho đối tượng chatbot. Storage Adapter cho phép bạn kết nối tới một bộ lưu trữ hoặc mạng cụ thể. Để sử dụng storage adapter, ta cần chỉ định nó. Ở đây, chúng ta dùng SQL Storage Adapter, cho phép chatbot kết nối tới cơ sở dữ liệu theo chuẩn SQL. Bằng tham số database, ta sẽ tạo một cơ sở dữ liệu SQLite mới. Vui lòng làm theo đoạn mã dưới đây để tạo cơ sở dữ liệu mới cho chatbot.
# Create object of ChatBot class with Storage Adapter
bot = ChatBot(
'Buddy',
storage_adapter='chatterbot.storage.SQLStorageAdapter',
database_uri='sqlite:///database.sqlite3'
)
Bạn cũng có thể cấu hình bộ tiếp hợp logic (logical adapter) cho đối tượng chatbot. Đúng như tên gọi, Logical Adapter điều phối logic phía sau chatterbot, tức là nó chọn phản hồi cho mọi đầu vào. Tham số này chứa danh sách các bộ tiếp hợp logic. Chatterbot cho phép dùng nhiều Logical Adapter. Khi có hơn một logical adapter được sử dụng, chatbot sẽ tính mức độ tin cậy và phản hồi có độ tin cậy cao nhất sẽ được trả về. Ở đây chúng ta dùng hai logical adapter: BestMatch và TimeLogicAdapter.
# Create object of ChatBot class with Logic Adapter
bot = ChatBot(
'Buddy',
logic_adapters=[
'chatterbot.logic.BestMatch',
'chatterbot.logic.TimeLogicAdapter'],
)
Huấn luyện chatbot
Bước cuối cùng để tạo chatbot là huấn luyện nó bằng các mô-đun có sẵn trong chatterbot. Huấn luyện chatbot với chatterbot đơn giản như đưa một cuộc hội thoại vào cơ sở dữ liệu của chatbot. Ngay khi chatbot nhận tập dữ liệu, nó sẽ tạo các mục cần thiết trong đồ thị tri thức của chatbot để biểu diễn đầu vào và đầu ra một cách đúng đắn. Trước tiên, hãy import ListTrainer, tạo đối tượng của nó bằng cách truyền đối tượng Chatbot, rồi gọi phương thức train() với một danh sách câu.
# Inport ListTrainer
from chatterbot.trainers import ListTrainer
trainer = ListTrainer(bot)
trainer.train([
'Hi',
'Hello',
'I need your assistance regarding my order',
'Please, Provide me with your order id',
'I have a complaint.',
'Please elaborate, your concern',
'How long it will take to receive an order ?',
'An order takes 3-5 Business days to get delivered.',
'Okay Thanks',
'No Problem! Have a Good Day!'
])
List Trainer: [####################] 100%
Kiểm thử Chatbot
Bước cuối của hướng dẫn này là kiểm thử khả năng hội thoại của chatterbot. Để kiểm thử phản hồi, chúng ta sẽ gọi phương thức get_responses() của thể hiện Chatbot.
# Get a response to the input text 'I would like to book a flight.'
response = bot.get_response('I have a complaint.')
print("Bot Response:", response)
Bot Response: Please elaborate, your concern
Chúng ta sẽ tạo một vòng lặp while để chatbot chạy. Khi các câu được đưa vào vòng lặp, chúng ta sẽ nhận được phản hồi phù hợp, vì dữ liệu đã được nhập vào cơ sở dữ liệu. Nếu nhận câu "Bye" hoặc "bye" từ người dùng, ta có thể kết thúc vòng lặp và dừng chương trình.
name=input("Enter Your Name: ")
print("Welcome to the Bot Service! Let me know how can I help you?")
while True:
request=input(name+':')
if request=='Bye' or request =='bye':
print('Bot: Bye')
break
else:
response=bot.get_response(request)
print('Bot:',response)
Enter Your Name: Avinash
Welcome to the Bot Service! Let me know how can I help you?
Avinash:I need your assistance regarding my order
Bot: Please, Provide me with your order id
Avinash:12345
Bot: No Problem! Have a Good Day!
Avinash:Bye
Bot: Bye
Kết luận
Chúc mừng bạn đã đi đến cuối bài hướng dẫn!
Bài viết này tập trung vào cách tạo chatbot bằng Python với thư viện ChatterBot. Xây dựng chatbot với ChatterBot không chỉ đơn giản mà kết quả còn chính xác. Với sự tiến bộ của Trí tuệ nhân tạo và Học máy, mọi thứ đều có thể đạt được, dù là tạo bot có kỹ năng hội thoại như con người hay bất cứ điều gì khác. Xem hướng dẫn của DataCamp về Triển khai Facebook Chatbots bằng Python.
