Hi, I am

Ngô Tôn

I am a programmer.

Home / AI/ML/DL/DS / Hướng dẫn xây dựng Chatbot bằng NLTK và Keras

Hướng dẫn xây dựng Chatbot bằng NLTK và Keras

Trong những năm gần đây, từ khóa Chatbot không còn xa lạ gì với mọi người như trợ lý ảo Siri của Apple, Chatbot của Facebook… Các bạn có thể xem lại bài viết Hướng dẫn tạo Chat Bot tự động trả lời tin nhắn Facebook mà trước đây mình có viết. Hôm nay, mình sẽ hướng dẫn các bạn xây dựng Chatbot bằng NLTK và Keras.

Chatbot là gì?

Chatbot là một phần mềm thông minh có khả năng giao tiếp và thực hiện các hành động tương tự như con người. Chatbot được sử dụng rất nhiều trong tương tác với khách hàng, tiếp thị trên các trang mạng xã hội và nhắn tin tức thời cho khách hàng.

Có 2 loại mô hình chatbot cơ bản:

  • Retrieval based: sử dụng các mẫu đầu vào và phản hồi được xác định trước.
  • Generative based: không dựa trên một số phản hồi được xác định trước.

Xây dựng Chatbot bằng NLTK và Keras

Trong bài này, chúng ta sẽ xây dựng Chatbot bằng Deep Learning sử dụng thư viện NLTK (là thư viện phổ biến nhất để xử lý ngôn ngữ tự nhiên – NLP) và Keras. Chatbot sẽ được huấn luyện bởi tập dữ liệu chứa các danh mục (intents), mẫu (pattern) và phản hồi (response). Chúng ta sẽ sử dụng mạng nơ-ron LSTM để phân loại thông điệp của người dùng thuộc danh mục nào và sau đó sẽ đưa ra phản hồi ngẫu nhiên từ danh sách phản hồi.

Dataset

Tập dữ liệu mà chúng ta sẽ sử dụng là “intents.json”. Đây là một tệp JSON chứa các pattern chúng ta cần tìm và các phản hồi mà chúng ta muốn trả lại cho người dùng.

Train the model

1. Import và load data file

2. Preprocess data

Khi làm việc với dữ liệu văn bản, chúng ta cần thực hiện nhiều quá trình tiền xử lý dữ liệu trước khi tạo ra một mô hình học máy (Machine Learning) hoặc học sâu (Deep Learning). Dựa trên các yêu cầu, chúng ta cần áp dụng các thao tác khác nhau để xử lý trước dữ liệu.

Tokenizing là quá trình chia toàn bộ văn bản thành các phần nhỏ.

Ở đây chúng ta lặp lại qua các mẫu và mã hóa câu bằng cách sử dụng hàm nltk.word_tokenize() và nối từng từ trong danh sách từ. Chúng ta cũng tạo một danh sách các lớp cho các thẻ (tag).

Kế tiếp, chúng ta sẽ bổ sung từng từ và loại bỏ các từ trùng lặp khỏi danh sách. Lemmatizing là quá trình chuyển đổi một từ thành dạng bổ đề (lemma) của nó và sau đó tạo một tệp nhỏ để lưu trữ các đối tượng Python mà chúng ta sẽ sử dụng trong khi dự đoán (predict).

Sau đó, chúng ta lưu lại 2 file pickle là “words.pkl”“classes.pkl”.

3. Tạo training và testing data

Input sẽ là mẫu (pattern) và output sẽ là lớp (class) tương ứng với mẫu đầu vào.

4. Build the model

Bây giờ, chúng ta sẽ xây dựng một mạng nơ-ron có 3 layer sử dụng Keras. Sau khi huấn luyện mô hình trong 200 epochs, chúng ta lưu lại model với tên “chatbot_model.h5”.

Xây dựng giao diện chương trình Chatbot

Chúng ta sẽ load model đã được đào tạo và sau đó sử dụng giao diện dự đoán phản hồi từ bot. Mô hình sẽ chỉ cho chúng ta biết lớp mà nó thuộc về, vì vậy chúng ta sẽ triển khai một số hàm sẽ xác định lớp và sau đó lấy cho chúng ta một phản hồi ngẫu nhiên từ danh sách các phản hồi.

Xây dựng giao diện sử dụng Tkinter

Chạy thôi

chatbot

 

About ngoton

Ngô Tôn is a programmer with passion for tailored software solutions. Comes with 7+ years of IT experience, to execute beautiful front-end experiences with secure and robust back-end solutions.

Check Also

Phân tích dữ liệu kết quả bóng đá Ngoại hạng Anh

Mục lục DatasetData Preparation and CleaningExploratory Analysis and VisualizationPhân tích theo mùa giảiSố bàn thắng mỗi …

Leave a Reply

avatar
  Subscribe  
Notify of