+2

AI project

Lời Nói Đầu

Chatbot là một chương trình phần mềm được thiết kế để tương tác với người dùng thông qua giao diện trò chuyện. Chatbot có thể giúp giải quyết nhiều vấn đề khác nhau, bao gồm hỗ trợ khách hàng, giải đáp câu hỏi, thực hiện giao dịch và cung cấp thông tin. Chatbot có thể được sử dụng trên nhiều nền tảng khác nhau, bao gồm trang web, ứng dụng di động, ứng dụng tin nhắn và các kênh truyền thông xã hội. Trong bài viết này, mình sẽ làm 1 con chat bot demo cho các bạn đọc hiểu cách hoạt động của chat bot như thế nào. Trong đó chúng ta sẽ sử dụng chủ yếu các thư viện để tiền xử lí dữ liệu như NLP và để training model của chat bot chúng ta sẽ sử dụng model của TFLearn.

Sau đây chúng ta sẽ đến với bước đầu tiên của việc tạo ra một con chat bot.

Đoạn code trên sẽ bao gồm các thư viện sẽ sử dụng trong chatbot. Trước tiên chatbot sẽ thử mở tệp đã được đào tạo sẵn từ những lần trước đó để tiết kiệm thời gian.

Nếu tệp đó không tồn tại nó sẽ tạo một tệp mới bằng cách bằng cách lặp qua tập dữ liệu gồm các "intents" được xác định trước. Mã này cũng tạo danh sách "tài liệu" đầu vào và "nhãn" đầu ra bằng cách liên kết từng mẫu với thẻ mục đích tương ứng của nó.

Tiếp theo đó, chat bot sẽ áp dụng các thuật toán của thư viện nltk như là word_tokenize. Đây là quá trình tách một cụm từ, câu, đoạn văn, một hoặc nhiều tài liệu văn bản thành các đơn vị nhỏ hơn. Mỗi đơn vị nhỏ hơn này được gọi là Tokens, danh sách các từ kết quả được sắp xếp và các từ trùng lặp được loại bỏ. Danh sách các nhãn cũng được sắp xếp.

Ở bước này ta sẽ xử lí dữ liệu để đào tạo cho model chatbot. Chúng ta sẽ tạo ra 2 danh sách trống và một out_empty rỗng là danh sách các số 0 có độ dài bằng với số nhãn duy nhất trong tập dữ liệu.

Sau đó, mình lặp qua từng mẫu trong dữ liệu của mình và mã hóa nó bằng thư viện nltk. Mình cũng bắt đầu từng từ trong mẫu bằng cách sử dụng bộ bắt đầu từ LancasterStemmer. Mình tạo một túi từ cho mỗi mẫu bằng cách kiểm tra xem mỗi từ trong từ vựng của mình có trong mẫu hay không. Nếu có một từ, mình sẽ thêm 1 vào danh sách túi, nếu không sẽ thêm 0. Sau đó sẽ đưa các dữ liệu vào list trống training và output và dùng thư viện np để xử lí dữ liệu cho chúng và lưu chúng vào 1 tệp có tên là data.pkl.

Còn đây là model mạng thần kinh neural network sử dụng thư viện tflearn.

Hàm mã hóa đầu vào của người dùng thành các từ riêng lẻ, áp dụng bắt đầu cho từng từ (rút gọn từ đó về dạng gốc) và tạo một túi vectơ từ đại diện cho những từ nào trong danh sách tính năng xuất hiện trong đầu vào của người dùng. Đối với mỗi từ trong danh sách tính năng, hàm đặt phần tử tương ứng trong túi vectơ từ thành 1 nếu từ đó xuất hiện trong đầu vào của người dùng và đặt đó là 0 nếu không. Sau đó hàm trả về với kiểu dữ liệu là mảng bằng cách sử dụng thư viện numpy.

Còn đây chính là hàm chạy chính trong chương trình chat bot của chúng ta. Results sẽ sử dụng hàm predict và function bag_of_words ở phía trên để xử lí làm sạch dữ liệu và sau đó đưa vào neural network model để dự đoán và sau đó sử dụng np.argmax để tính toán dự đoán xem thử dữ liệu nào có xác xuất đúng nhất, sau đó sẽ tìm tới các tag tương ứng trong data base và sẽ lấy câu trả lời tương ứng với câu hỏi và trả về cho chúng ta.

Trên đây là toàn bộ những gì trong thời gian qua mình đã làm thử dựa trên việc tìm kiếm và phát triển dựa trên internet để làm 1 con chat bot đơn giản. Nếu bài viết còn nhiều lỗi vì lần đầu mình viết thì mong các bạn bỏ qua và comment lại phía bên dưới để mình biết và sửa đổi.

Cảm ơn mọi người đã đọc.


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.