Sơ đồ phát triển bài toán

Một phần của tài liệu Xây dựng hệ thống chatbot hỗ trợ quản lý bán hàng nền tảng mã nguồn mở rasa,khóa luận tốt nghiệp (Trang 47)

Hệ thống Chatbot này hoạt động giúp cho doanh nghiệp cải thiện dịch vụ khách hàng, chăm sóc khách hàng, bán được sản phẩm và tăng lợi nhuận. Bên cạnh đó, hệ thống sẽ giúp cho các doanh nghiệp xây dựng các cuộc hội thoại theo lớp, theo ngữ cảnh và nhiều tương tác qua lại.

Phát biểu bài toán:

- Input: truy vấn của người dùng

- Output: phản hồi của bot Khi đó:

+ Thành phần NLU sẽ đảm nhiệm vai trò vecto hoá ngôn ngữ, xác định intent và trích xuất thông tin của người dùng.

Hình 23: Các bước xử lý trong NLU [5]

Để giải quyết câu hỏi trên, bộ phận NLU sẽ xử lý ngôn ngữ, sử dụng các thuât toán như tách từ Tokenizer, phân tích cú pháp, gán nhãn từ loại, nhận dạnh tên thực thể sau đó đối chiếu với tập dữ liệu đã được gán nhãn trước đó và đưa ra ý định của người dùng intent là “ask_gia_san_pham” và trích xuất thông tin entity với tên sản phẩm là “điện thoại S20” và giathanh là “giá sản phẩm”

+ Thành phần DM sẽ tiếp nhận thông tin về intent và entity ở trên để đưa ra xác định action xử lý cho câu đầu vào trên. Trong ví dụ này DM sẽ đưa ra action là “Action_utter_ask_gia_san_pham”.

# Configuration for Rasq NLU.

# https ://rasa. com/docs/rasa/nlu/components/

language: vi∣

+ Cuối cùng, thành phần NLG sẽ sinh ra câu trả lời dựa vào dữ liệu các mẫu câu template đã được xây dựng trước đó.

3.3. Ứng dụng rasa xây dựng chatbot

3.3.1. Các bước xây dựng Chatbot trên nền tảng ứng dụng Rasa

về cơ bản, Rasa có 2 thành phần chính quan trọng cấu thành là :

- Rasa NLU: có tác dụng xử lý thông tin, xác định intent và trích xuất thông tin của người dùng.

- Rasa Core: dự đoán hành động chatbot cần làm để trả lời người dùng. Ngoài ra, còn có Rasa X. Hiểu một cách đơn giản thì đây chính là giao diện

của toàn Rasa.

Các bước thực hiện khi xây dựng Chatbot trên nền tảng rasa:

Hình 24: Các bước xây dựng Chatbot trên rasa

- 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

Hình 25: Cấu hình cài đặt cho Rasa NLU

- Ngôn ngữ xử lý: tiếng việt

- Tokenize: WhitespaceTokenize - sử dụng khoảng trắng làm dấu phân cách

- Featurizer:

+ RegexFeaturize - tạo một đại diện vecto của thông điệp người dùng bằng cách sử dụng biểu thức thông thường.

+ CountVectorsFeaturizer - tạo đại diện cho các thông điệp, ý định và phản hồi người dùng

+ LexicalSyntacticFreaturize - tạo các tính năng từ vựng và cú pháp cho thông điệp người dùng để hỗ trợ trích xuất thực thể.

- Entity Extractors: EntitySynonymMapper - dữ liệu huấn luyện chứa các từ đồng nghĩa, các giá trị thực thể được phát hiện sẽ ánh xạ tới cùng một giá

trị.

- Selectors: ResponseSelector - sử dụng để xây dựng mô hình truy xuất phản hồi để dự đoán trực tiếp phản hồi bot từ một bộ phận phản hồi ứng viên.

- Kết hợp trích xuất thực thể và phân loại intent: DIETClassifier - biến thể thực thể kép (DIET: một kiến trúc để phân loại ý định và nhận dạng thực thể) được sử dụng để phân loại ý định và trích xuất thực thể.

Tuy nhiên, có thể thay thế các lựa chọn trên thành các lựa chọn khác trong pipeline nếu thấy nó đạt được hiệu quả hơn.

Hình 26: Cấu hình cài đặt cho Rasa Core

Các chính sách được cài đặt trong rasa core bao gồm:

- MemoizationPolicy: ghi nhớ các cuộc hội thoại được đào tạo rối dự đoán hành động tiếp theo.

- TEDPolicy: chính sách đối thoại máy biến áp (TED) có thể có được các đoạn đối thoại cho các bước tiếp theo.

## intent;ask_d_anh_sgch^cua_hang

^ danh sách nhũng của hàng cùa công ty

^ QPh9 ty có những cừa hàng nào

- cửa hàng của PPng ty ờ nhũng đâu

- sàn phẩm cùa Cpng ty bán tại những đâu

- đâu là nơi bán sàn phẩm của cộng ty

- Hà Nội có nhũng của hàng nào của CPnq ty

- các chỉ nhánh bán hàng cùa QPnq ty ờ ΓHà NoiHựjp.,,,⅛⅞e.ff>)

- các cửa hàng trên địa phân Γ H à n ộ1](dig diem ì

: entities: - dĩa dierr∣ - tên sản phẩm - tên event ÷slots: tên sản phẩm: type: text ten event: type: text > time: type: text , date: type: text y list-product: type: text giasp: type: text -, tensp:

- MappingPolicy: có thể sử dụng để trực tiếp ánh xạ ý định hành động tiếp theo.

Các bước thực hiện sau khi cài khi cài đặt cấu hình cho rasa là

Xây dựng ý định (intent)

_________i____________

Xây dựng entity (slot)

Xây dựng câu trá lời cho bot

____________i_____________

Xây dựng khung kịch bàn

Đào tạo cho bot

Test, phân tích cài tiến

Hình 27: Các bước xây dựng chatbot

a. Xây dựng ý định

Mỗi intent nên xây dựng nhiều cách nói khác nhau vì hệ thống bot sẽ tiếp cận với nhiều đối tượng khách hàng khác nhau. Tuỳ vào độ tuổi, ngành nghề, công việc mà các đối tượng khách hàng sẽ có những suy nghĩ và lời nói khác nhau.

Ví dụ bạn có ý định hỏi về chi nhánh của cửa hàng:

Hình 28: Xây dựng ý định người dùng

b. Xây dựng entity (slot)

Các thông tin được trích xuất từ ý định người dùng được gọi là các entity.

Hình 29: Danh sách các entity

Các thông tin được trích lọc trong các câu nói của người dùng được bot lưu lại trong bộ nhớ để sử dụng trong các action hay người dùng tránh việc hỏi lại thông tin từ phía người dùng được gọi là slot. Slot được sử dụng trong Rasa để giữ giá trị của một thực thể. Tương tự như một biến trong ngôn ngữ kịch bản.

yresponses:

>utter_btean:

P - text: "Rất xin lỗi bạn :(" P utter_greet:

- text: "Xin Chao. Chuc bạn một ngậy tốt Lanh. Tòi có thể giúp, gì cho bạn?"

P utter_ask_name:

- text: "Tôi là ChetbQt rasa"

P utter_bye:

- text: "Tạm bi⅞t bạn. Chuc bạn một ngày làm yir⅛c vui vẻ."

P utter_func_tist:

- text: llNhifein Vụ Chinh của tôi tà giải đáp những thắc mắc của bạn vè CQnq ty"

>utter_thank:

- text: "Khonq có gì. Đây tà n hi fem vụ của tồi"

P utter_ask_work_tỉme:

- text: "Sang bắt đẩu làm Vlfec từ 8h tói llh3θ, ChieU bắt đẩu từ 13h tói 17h3Θ "

>utter_ask_diagram:

- text: "link ảnh" P utter_ask_addres:

- text: "Sổ 1, Pham Văn BaCh, Yên Hòa, cầu Giấy"

>utter_ask_meal_time:

- text: "Từ llh3Θ tới 13h"

P utter_ask_danh_sach_cua_hang:

- text: "Chỉ nhánh 1 sổ 1, Cầu giấy; chí nhánh 2 số 2 Ianq; chi nhánh 3 số 3 .nguyễn Trãi1'

>utter_ask_tỉme:

- text: "Bây giò là {time}"

⅛ utter_ask_day:

- text: "Hôm nay tà {date}"

P utter_ask_danh_sach_san_pham:

Hình 30: Danh sách các slot

c. Xây dựng câu trả lời cho bot

Phải xây dựng cho bot một hệ thống các câu trả lời mẫu (template) cho các câu hỏi của người dùng.

utter.blean:

- text: "Rất xin lỗi bạn :("

utter_greet:

- text: "Xin Chao■ Chuc bạn một ngày tốt Ianh■ Tôi có thể giúp gì cho bạn?"

utter_ask_name:

- text: "Tôi là chatbot rasa"

utter-bye:

- text: "Tạm biêt bạn. Chúc bạn một ngày làm viêc vui vè."

utter_funC-list:

- text: "Nhiêm Vụ chính cùa tôi là qíạị đáp những thác mắc cùa bạn về còng ty"

utter_thank:

- text: "Không có gi. Đây là nhiêm Vụ của tôi"

class ActionGetListProduct(Action):

def name(self) -> Text:

return "action_utter_ask_danh_sach_san_pham" def run(

self, dispatcher, tracker: Tracker, domain: Dict[Text, Any]

) -> List[Dict[Text, Any]]:

sql = qet,sql("sanpham". "")

list_product = service.get_list(sql)

return [SLotSet("list_product", get_list(list_product, "tensp,))1

class ActionGetpriceProduct(Action):

def name(self) -> Text:

return "action_utter_ask_qia_san_pham"

def run(

self, dispatcher, tracker: Tracker, domain: Dict[Te×t, Any]

Hình 31:Các mẫu câu trả lời (template) cho bot

Tuy nhiên, ta cũng có thể xây dựng câu trả lời cho bot thông qua action. Hành động là những thứ bot chạy để đáp ứng yêu cầu của người dùng. Đây là thành phần cung cấp thông tin trả lời người dùng dựa vào các intent, entity, slot và các dữ liệu lấy từ hệ thống khác qua API.

Có 3 loại hành động trong rasa core:

- Defaul actions: các hành động như lắng nghe người dùng, restart lại hội thoại hoặc trả lời mặc định khi không phân loại được ý định của người dùng.

utter_default:

Hình 32: Mẫu câu trả lời mặc định khi bot không hiểu intent người dùng

- Utter actions: tập các template mẫu xây dựng cho bot

Hình 33: Mau câu trả lời xây dựng cho bot

- Custom actions: Khi tập các câu trả lời mẫu không đáp ứng được câu hỏi của người dùng cần kết quả từ nguồn dữ liệu khác thì action tuỳ biến được sử dụng, nó sẽ chỉ đến một hàm trong lớp action (python).

## cháo - hói danh sách sán Pham - cháo * greet - utter.greet * ask_danh_sach_san_pham - action_utter_ask_danh_sach_san_pham - utter_ask_danh_sach_san_pham * bye - utter_bye

## C⅛⅛O ^ hỏi giá sản pham - chào

* greet - utter_greet * ask_gia_san_pjjara - action_utter_ask_gia_san_pham - utter_ask_qia_san_phaiỊỊ * bye - utter_bye

Hit chào - hói giói thiệu sẩn phẩm - chào

* greet - utter.greet * 3sk_gj.oi_thieu_san_ph_am - action_utter_ask_gjpj_thieu_san_phanj - utter_ask_qioi_thieu_san_phạm * bye

Hình 34: Custom action xử lý slot tên sản phẩm

d. Xây dựng khung kịch bản

Việc xây dựng khung kịch bản sẽ huấn luyện và dạy cho bot đưa ra câu trả lời chính xác với mong muốn người dùng.

Hình 35: Khung kịch bản hỏi về sản phẩm

Tuy nhiên, chúng ta không thể xây dựng được hết các kịch bản cho hệ thống. Vì vậy hệ thống chatbot hiện nay ngày càng hoàn thiện, có khả năng tự học, tự phán đoán và đưa ra câu trả lời.

3.4. Kết quả thực nghiệm

Hệ thống chatbot với dữ liệu huấn luyện kịch bản hội thoại, xây dựng các slot, thực thể giúp cho chatbot lấy được thông tin từ phía người dùng. Chatbot xác định ý định người dùng để thông qua các actions đã lập trình thực hiện các hành động như tìm kiếm thông tin sản phẩm, giá sản phẩm, danh sách sản phẩm, chương trình khuyến mại...

thắc mác cùa ban vè

Ai đó cỏ thể hỗ trơ cho tôi

khủng? nhieu? note ' 0 te HGteB `, O ` e Nhiein VU chính của tói là giải đáp những còng ty galaxy Z Iip

galaxy watch active

điện thoại Samsung

Ivi Led Samsung

Giá sản phẩm lá

When you reply, H&T Shop will see your

public info.

Có sản phẩm/dịch vụ nâo hợp

vơi toi khàng?

Giá sản phẩm của bạn là bao

Hình 36: Kết quả kiểm nghiệm

Trên đây là kết quả kiểm nghiệm khi thiết kế một chatbot hỗ trợ bán hàng trên ứng dụng message của Facebook.

3.5. Phân tích và đánh giá

Dữ liệu đào tạo cho bot và các kịch bản xây dựng cho bot là yếu tố quan trọng nhất khi xây dựng chatbot. Đây là hai yếu tố quyết định đến sự thông minh của bot. Việc xây dựng các intent cũng rất quan trọng.

Khi xây dựng các intent nên tránh các trường hợp nhập nhằng và gần nhau về nghĩa bởi điều này sẽ làm giảm độ chính xác của bot.

Hệ thống mới được xây dựng đã phần nào giải quyết được các yêu cầu của bài toán tư vấn bán hàng. Đối với những cuộc hội thoại nằm trong kịch bản dựng sẵn thì bot đáp ứng rất tốt. Vậy nên, vấn đề xây dựng các kịch bản cho bot cũng rất khó khăn vì nó có nhiều trường hợp xảy ra.

Tuy nhiên hệ thống bot cũng còn nhiều mặt hạn chế.

- Hệ thống chỉ thực hiện hỗ trợ giao tiếp bằng văn bản chứ chưa đáp ứng được giao tiếp hội thoại bằng âm thanh.

- Cơ sở trí thức thu được còn hạn chế nên quá trình hội thoại chưa thông suốt, nhiều khi bot đã hiểu sai thông điệp nhận được của người dùng và đưa ra phản hồi trái với mong muốn đó.

Bài khoá luận đã ứng dụng nền tảng mã nguồn mở Rasa, kết hợp với các thuật toán giải quyết các vấn đề trong xây dựng chatbot như phân loại ý định người dùng, trích xuất thông tin, quản lý hội thoạị. Bằng cách sử dụng các hội thoại và giao diện đơn giản, hệ thống đã có thể giao tiếp với người dùng, trả lời những truy vấn của người dùng.

KẾT LUẬN

Bài khoá luận này đã làm rõ một số vấn đề về chatbot cũng như vai trò của chattbot trong quản lý bán hàng. Nội dung của bài khoá luận đã tìm hiểu về một số kiến thức bao gồm cấu trúc và nhiệm vụ của các thành phần trong chatbot, một số thuật toán cơ bản áp dụng vào việc xây dựng chatbot. Dựa vào đó có thể xây dựng một hệ thống chatbot giải quyết các bài toán hỗ trợ người dùng trong nhiều lĩnh vực khác nhau. Quá trình tìm hiểu và xây dựng một hệ thống hỗ trợ quản lý bán hàng đạt được một số kết quả sau:

Thứ nhất, nắm được mô hình, các thành phần cũng như cách thức hoạt động, các bước xử lý của một hệ thống chatbot, một số thuật toán và các phương pháp xử lý

dữ liệu trong chatbot. Từ những kiến thức đó, có thể xây dựng một bot theo bât cứ mô hình nào, phương pháp nào phù hợp tuỳ vào từng yêu cầu của bài toán cụ thể.

Thứ hai là tìm hiểu về vai trò của chatbot trong trải nghiệm khách hàng và hành trình khách hàng. Có thể nói, trải nghiệm khách hàng chính là yếu tố quyết định đến doanh nghiệp bạn có lợi thế cạnh tranh so với đối thủ hay không còn hành trình khách hàng là một trong những yếu tố quan trọng giúp doanh nghiệp theo dõi và chăm sóc khách hàng tốt hơn. Vì vậy, nếu một doanh nghiệp muốn phát triển được thì họ phải đầu tư và xây dựng dịch vụ chăm sóc khách hàng cũng như một hệ thống chatbot hỗ trợ hành trình trải nghiệm khách hàng.

Thứ 3 là khi xây dựng bộ dữ liệu đào tạo, huấn luyện cho chatbot sẽ có những kinh nghiệm trong xử lý và gán nhãn dữ liệu để tránh nhập nhằng từ ngữ. Từ đó, có thể 1xây dựng bộ dữ liệu mang lại độ chính xác cao hơn cho hệ thống.

Một phần của tài liệu Xây dựng hệ thống chatbot hỗ trợ quản lý bán hàng nền tảng mã nguồn mở rasa,khóa luận tốt nghiệp (Trang 47)

Tải bản đầy đủ (DOCX)

(61 trang)
w