- Khi tin nhắn của khách hàng được gửi đến, thông điệp được nhận và sẽ chuyển đến một Interpreter. Trong đó, bộ phận NLU sẽ xử lý thông điệp nhận được và chuyển đổi thông điệp đó thành một từ điển bao gồm : văn bản gốc,ý định và các thực thể.
- Tracker là đối tượng theo dõi trạng thái hội thoại. Nó nhận được thông báo rằng một tin nhắn mới đã đến.
- Policy sẽ nhận được trạng thái hiện tại của Tracker và ra quyết định chọn Action tiếp theo.
- Action được chọn sẽ được ghi lại bởi Tracker.
- Một tin nhắn phản hồi sẽ được gửi lại đến khách hàng.
Trên đây là toàn bộ quá trình xử lý của rasa, Rasa NLU sẽ lo phần 1, 2. Còn lại các phần 3, 4, 5, 6 sẽ do Rasa Core đảm nhiệm.
3.3.2. Xây dựng dữ liệu cho chatbot
Rasa đưa ra 2 phương pháp chính xây dựng dữ liệu trainning cho bot:
- Pretrained Embeddings (Intent_classifier_sklearn) : Việc phân loại ý định người dùng sẽ dựa trên các tập dữ liệu được lọc trước, sau đó được sử dụng để thể hiện từng từ trong thông điệp người dùng dưới dạng từ nhúng (word embedding) hay biểu diễn ngôn ngữ dưới dạng vector(word2vec). Các tập dữ liệu này có thể được cung cấp từ Spacy hoặc MITIE ...
- Supervised Embeddings (Intent_classifier_tensorflow_embedding): Nhúng được giám sát. Với phương pháp này thì người dùng sẽ phải tự xây dựng dữ liệu từ đầu do ko có dữ liệu đào tạo sẵn có. Nhưng với các bài toán trong một lĩnh vực nhỏ thì nó sẽ đảm bảo tính chính xác hơn nhiều và tránh dư thừa dữ liệu so với phương pháp ở trên.
Một số cấu hình trong Rasa mà tôi lựa chọn để training cho bot bao gồm từ việc phân tích câu, phân loại ý định(intent) đến trích chọn thông tin người dùng. như sau:
- name: CountVectorsFeaturizer - name: CountVectorsFeaturizer analyzer: "char.wb" min_ngram: 1 max_ngram: 4 - name: DIETClassifier epochs: 100 - name: EntitySynonymMapper - name: ResponseSeLector epochs: 100
# Configuration for Rasa Core. # https://rasa. com/docs/rasa/core/policies/ ^policies: - name: MemoizationPolicy - name: TEDPolicy max_history: 5 epochs: 10θ - name: MappingPolicy