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

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng ứng dụng chatbot tư vấn khách hàng sử dụng các kỹ thuật học sâu (Trang 50)

B các câu h i m u cộ ỏ ẫ ủa người dùng s ẽ đượ ậc t p h p l i t các cu c h i thoợ ạ ừ ộ ộ ại của người dùng trao đổ ới v i nhân viên h ỗ trợ, giúp b d ộ ữ liệu chính xác nh t vấ ới thự ếc t ngư i dùng hờ ỏi. Kèm theo đó hỗ ợtr viên s cung c p nh ng m u câu h i ẽ ấ ữ ẫ ỏ mớ ểi đ đả m b o tả ập ý định phong phú và đầy đủ nh t. ấ

Chatbot Nhất Nam bao g m t ng c ng ồ ổ ộ 36 intent v i 1024 câu mớ ẫu, được khai báo trong file nlu.yml, dưới đây là ví dụ mẫu c a 2 intent ủ bao_tri_phan_mem (hỏi v b o trì ph n m m) và ề ả ầ ề hoa_don_dien_tu (hỏi về hóa đơn điệ ửn t )

Hình 3.5. Khai báo intent trong file nlu.yml

Có th ể thấy là trong ti ng Vi t khách hàng s d ng nhi u t ế ệ ử ụ ề ừ viế ắt như t t “không” viế ắt t t thành “k” “bao nhiêu”, viế ắt t t thành “bn”… do vậy vi c t n ệ ậ d ng nh ng cu c h i tho i trong th c t vào quá trình training s giúp Chatbot ụ ữ ộ ộ ạ ự ế ẽ hiểu ý định người dùng t t hơn. ố

3.3.2 Xây d ng th c th (entity) ự ự ể

Entity là các th c th ự ể thông tin đặc trưng quan trọng được trích xu t theo các ấ ý định của người dùng, các thông tin được trích ch n trong tin nh n cọ ắ ủa người dùng được h thệ ống lưu lạ ừ đó giúp hệ ối t th ng quyết định hành động ti p theo ế phụ thu c vào entity trích chọộ n và ng cữ ảnh đang diễn ra.

Trong Chatbot Nhất Nam s bao gẽ ồm các entity được khai báo trong domain.yml như trong hình dưới đây:

Hình 3.6. Khai báo entity trong file domain.yml

Entity s ẽ được trích ch n tr c ti p trong các ví d m u cọ ự ế ụ ẫ ủa intent theo định d ng, ví dạ ụ trong câu “Phần m m k toán doanh nghi p giá th nào nhề ế ệ ế ỉ?” có thực thể “kế toán doanh nghi p”ệ là mộ ảt s n phẩm, khi đó câu trên đổi thành “Phần mềm [kế toán doanh nghi p](san_pham)ệ giá th nào nhế ỉ”. Dưới đây là ví dụ entity trong chương trình:

Hình 3.7. Khai báo intent có ch a entity trong file nlu.yml ứ

3.3.3 Xây d ng câu tr l i cho Chatbot ự ả ờ

Khi người dùng đưa ra câu hỏi, Chatbot s x lý phân lo i câu h i và ph n ẽ ử ạ ỏ ả h i câu tr l i phù h p v i câu h i và yêu cồ ả ờ ợ ớ ỏ ầu đó. Rasa có th xây d ng ph n hể ự ả ồi cho Chatbot thông qua các hành động (action). Action này có th cung c p thông ể ấ tin mong muốn cho người dùng dựa vào các ý định, slot và d u lữ liệ ấ ừ cơ sởy t d ữ

liệu thông qua k t n i API. Có 2 loế ố ại hành động để ử x lý câu tr l i trong Chatbot ả ờ Nhất Nam, loại hành động mặc định (default actions) và hành động tùy bi n ế (custom actions).

3.3.3.1 Hành động mặc đ nhị

Là các hành động d ự đoán và đưa ra câu trả ờ ự l i d a vào ý định và th c th ự ể được trích ch n cọ ủa người dùng, được x lý thành ph n Dialog management ử ở ầ đã được Rasa cung c pấ . Hành động tiếp theo được quyết định b i ở các chính sách đó là chính sách d a vào quy t c (Rule policy), chính sách ghi nh (Memorization ự ắ ớ policy) và chính sách TED (TED policy).

- Khai báo chính sách d a vào các quy t c (Rule-based policy)ự ắ : Rule- based policies được khai báo trong file rules.yml. Ví d mụ ỗi khi người dùng nhập câu có ý định “chao_hoi” Chatbot luôn đưa ra câu trả ờ l i “Kính chào quý khách! Rất vui lòng được h ỗ trợ quý khách”.

Hình 3.8. Khai báo Rule policy trong file rules.yml

- Khai báo k ch b n cu c h i thoị ả ộ ộ ại: B ng cách thu th p các cu c h i thoằ ậ ộ ộ ại thực t c a h ế ủ ỗ trợ viên và người dùng, ta s dẽ ựng được nh ng k ch b n thông dữ ị ả ụng nhất. Ví d ụ trước khi h i giá s n phỏ ả ẩm, người dùng s chào h i hẽ ỏ ỗ ợ tr viên, h i v ỏ ề thông tin các s n ph m doanh nghi p cung cả ẩ ệ ấp, sau đó ới đếm n câu h i giá. Các ỏ k ch b n s ị ả ẽ được khai báo trong file stories.yml. K ch b n có th ị ả ể được vi t b ng ế ằ tay ho c thông qua hặ ọc tương tác (interactive learning) khi đó ta có thể đánh giá và dạy Chatbot cách tr lả ời các ý định của người dùng thông qua giao diệ ệnh n l CLI hoặc chương trình Rasa X. H ệ thống s so sánh h i thoẽ ộ ại đang diễn ra v i kớ ịch

b n có s n, n u trùng kh p s ả ẵ ế ớ ẽ đưa ra phản h i theo s ồ ự kiện ti p theo trong kế ịch b n.ả

Hình 3.9. Khai báo k ch b n trong file stories.ymlị ả 3.3.3.2 Hành động tùy bi n ế

Khi yêu cầu người dùng c n th c hi n truy xuầ ự ệ ất đến d u bên ngoài hoữ liệ ặc x lý tính toán ph c t p c n s d ng thuử ứ ạ ầ ử ụ ật toán mà các phương pháp Default action không th ể thực hiện được thì có th s dể ử ụng Custom action để tùy bi n hàế nh động. Mỗi khi hành động tùy biến được g i nó s ọ ẽ trỏ đế n m t hàm trong file actions.py. ộ Custom action vi t b ng ngôn ng python do v y có th d dàng x lý logic phế ằ ữ ậ ể ễ ử ức tạp như tính toán, truy xuất thông tin t h ừ ệ thống ngoài, ví d truy xu t giá sụ ấ ản phẩm, thời h n b o trì b o hành cạ ả ả ủa khách hàng, thông tin liên quan đến doanh

nghiệp…

Giả ử s sau khi người dùng nh p tên và s ậ ố điện tho i form liên h , h ạ ở ệ ệ thống s ẽ lưu lại thông tin vào Google Drive để nhân viên h ỗ trợ liên lạc và sau đó trả ại l người dùng ph n hả ồi. Để ả gi i quy t bài toán này không th s d ng Default action ế ể ử ụ

do đó ta sẽ ạ t o m t Custom action vộ ới tên hàm ActionSubmitSalesForm như hình

Hình 3. . Hàm x lý sau khi hoàn thành nh p Form liên h 10 ử ậ ệ

3.3.4 C u hình các thành ph n ấ ầ

Quá trình x lý ngôn ng t nhiên ử ữ ự là hành động d ữ liệu đầu vào được x lý ử qua m t lo t các thành ph n (component) theo th t g i là pipeline, ta có th thêm ộ ạ ầ ứ ự ọ ể hoặc b b t kì thành phỏ ấ ần nào trong pipeline đó. Ví dụ ệ ố h th ng không c n trích ầ chọn th c th ta có th lo i b thành ph n Entity extraction, ho c h th ng không ự ể ể ạ ỏ ầ ặ ệ ố

dùng thành phần mô hình được huấn luy n s n (pre-ệ ẵ trained model) như BERT,

spaCy ta có th không c n khai báo trong c u hình. ể ầ ấ

Tokenizer là quá trình chia nh ỏ câu đầu vào thành các t ừ hoặc c m t . Rasa ụ ừ có h ỗ trợ WhitespaceTokenizer t o các t cách nhau b ng d u cách ví d ạ ừ ằ ấ ụ câu “Tôi

s cho ra m t m ng các t ẽ ộ ả ừ [“Tôi”, “là”, “sinh”, “viên”, “trường”, “đại”, “học”, “Bách”, “Khoa”]. Trong hầu hết trường h p thì vi c chia t ợ ệ ừ này là đúng nhưng ở tiếng Vi t không ch g m các t ệ ỉ ồ ừ đơn mà còn được c u thành t các t ghép, ví d ấ ừ ừ ụ t ừ ghép “sinh viên” ở câu trên.

Thành ph n tách t ầ ừ Tiếng Vi t trong Chatbot ệ Nhất Nam sẽ ử ụng thư việ s d n Underthesea [25] c a tác gi ủ ả Vũ Anh và thư viện spaCy h ỗ trợ Tiếng Vi [15] ệt c a tác gi ủ ả Trần Vi t Trungệ , thư viện này giúp tách các t ng Vi t m t cách ừ tiế ệ ộ chính xác nh t bao g m c t ấ ồ ả ừ đơn và từ ghép. Ví d trong câu trên sau quá trình ụ tách t ừ ta được m t chu i các t ộ ỗ ừ [“Tôi”, “là”, “sinh_viên”, “trường”, “đại_ ọc”, h “Bách_Khoa”], do số t ừ được gi m cho nên quá trình training s ả ẽ được rút ng n và ắ thu được k t qu tế ả ốt hơn. Rasa không hỗ ợ tr s n vẵ ới thư viện Underthesea cho nên c n t o m t action tùy biầ ạ ộ ến được vi t trong file ế vietnamese_tokenizer.py.

Ứng d ng s d ng pretrained-model spaCy h tr Ti ng Viụ ử ụ ỗ ợ ế ệt đã được hu n ấ luy n d a trên 18GB các bài báo Ti ng Vi t. Cệ ự ế ệ ấu hình được khai báo trong file config.yml.

Hình 3. . Khai báo c u hình trong file config.yml 11 ấ

3.4 Cài đặt chương trình

Chương trình Chatb ot thử nghi m trên máy Window 10 v i các thông s ệ ớ ố ứng

dụng và môi trường như sau:

- H ệ điều hành Windows 10, Intel i7-6700HQ, Ram 16GB

- Python 3.6

- Rasa version 2.1.3 - Rasa X version 0.34.0

Chatbot tiếp c n v i c 2 cách thao tác v i các nút b m (Menu/button based) ậ ớ ả ớ ấ và cho phép người dùng nh p n i dung yêu c u, v i vi c cung c p giao di n nút ậ ộ ầ ớ ệ ấ ệ b m s ấ ẽ giúp người dùng l a chự ọn chính xác và nhanh hơn. Thử nghiệm đượ thực c hiện trên b d ộ ữ liệu gồm 36 intent với 1024 câu mẫu và 4 entity. Chatbot xây dựng các kịch ả để b n có th ể giải quyết được nh ng bài toán c ữ ụ thể ủ c a doanh nghiệp cũng như giải quyết các trường hợp gián đoạn của người dùng, dưới đây là các ví d cụ ủa thử nghiệm.

K ch b n h i giá ị ả ỏ

H i giá là câu hỏ ỏi thường g p cặ ủa người dùng các trang web bán hàng, ở Chatbot Nhất Nam có kh ả năng chào hỏi cũng như trích xuất th c th liên quan ự ể đến s n ph m, gi s n u trong câu h i cả ẩ ả ử ế ỏ ủa người dùng không bao g m entity cồ ủa s n ph m thì Chatbot s ả ẩ ẽ đưa ra các lựa chọn v s n phề ả ẩm, người dùng có th bể ấm nút để ả ờ tr l i ho c nh p tin nh n. ặ ậ ắ

Hình 3.13. Người dùng có th bể ấm nút để trả ờ l i (hình bên trái) hoặc nhập tin nh n (hình bên phải) ắ

K ch b n form nh p liị ả ậ ệu

Sau khi cung c p thông tin v giá s n phấ ề ả ẩm đến khách hàng, Chatbot sẽ thực hiện yêu cầu người dùng nh p form bao g m h tên và s đi n tho i đ nhân viên ậ ồ ọ ố ệ ạ ể h ỗ trợ liên h ệ trực tiếp tư vấn. Form được s d ng nhi u trong Chatbot ử ụ ề như hỏi người dùng v Ultraview n u gề ế ặp các trường h p c n truy c p tr c ti p máy khách ợ ầ ậ ự ế hàng ho c form nh p thông tin doanh nghiặ ậ ệp để tra cứu hóa đơn hoặc th i h n bờ ạ ảo trì, b o hành. ả

D ữ liệu người dùng nh p s ậ ẽ được trích xuất các entity để ưu vào các slot, l các slot s ẽ được action server x lý và gử ửi đến h ỗ trợ viên thông qua mail, socket hoặc Google Drive.

Hình 3. 14 Trường h p nhợ ập form liên h ệ

Trường h p form nh p li u b ợ ậ ệ ị gián đoạn do người dùng h i câu h i khác thì ỏ ỏ Chatbot s v n tr lẽ ẫ ả ời người dùng sau đó tiế ụp t c yêu cầu người dùng hoàn thành form. Hoặc nếu người dùng không muốn điền form liên h bệ ằng ý định t ừ chối thì Chatbot s không yêu cẽ ầu người dùng nh p nậ ữa.

Hình 3.15. Trường hợp form b ị gián đoạn (hình bên trái) Trường hợp t ừ chối nh p form (hình bên ph ậ ải)

K ch b n không hi u câu hị ả ể ỏi của người dùng

Trong th c t Chatbot s g p tình hu ng không th ự ế ẽ ặ ố ể giải quyết được nh ng ữ câu h i m p m ỏ ậ ờ hoặc câu h i khóỏ , để ả gi i quy t bài toán này ta s dế ẽ ựa vào ngưỡng d ự đoán ụ thể ở đây là dướ, c i 0.6, nguyên nhân của ngưỡng th p có th ấ ể do ý định của người dùng không rõ ràng ho c câu hặ ỏi đó chưa có trong tập d u huữ liệ ấn luyện, Chatbot s lẽ trả ời lại người dùng như sau.

Hình 3.16. Trường hợp Chatbot không hiểu ý người dùng

3.5 Thử nghi m và ệ đánh giá chương trình

Thử nghiệm được ti n hành trên chính t p d ế ậ ữ liệu training bao gồm 36 intent v i 1024 câu m u và 4 entity, viớ ẫ ệc đánh giá chất lượng Chatbot dựa trên độ chính xác c a ủ câu trả ờ l i khi hỏi các câu đơn lẻ trong t p d uậ ữ liệ . Để thực hi n quá trình ệ kiểm th tôi chia ng u nhiên d li u hu n luyử ẫ ữ ệ ấ ện ban đầu thành 768 câu mẫu dùng để hu n luy n và ấ ệ 256 câu mẫ dùng để ểu ki m th và 4 entity, hu n luy n d a theo ử ấ ệ ự c u hình ấ được trình bày trong 3.3.4 C u hình các thành ph nấ ầ . ếK t qu ả được đánh giá d a vào 3 thông s lự ố ần lượt là Precision, Recall và F1-score.

- Precision: là t l s ỉ ệ ố câu đúng (TP) trong số những câu được phân lo i là ạ đúng (TP + FP). ớ V i TP là true positive là nh ng câu d ữ ự đoán là đúng và kết qu ả là đúng, FP là false positive là những câu d ự đoán là sai nhưng kết qu ả là đúng. Precision càng cao thì chính xác các câu d độ ự đoán đúng càng cao.

- Recall: là t l s ỉ ệ ố câu đúng (TP) trong tổng s ố những câu th c s ự ự là đúng (TP + FN). V i FN là false negative là nh ng câu d ớ ữ ự đoán sai nhưng kết qu ả là đúng. Recall càng cao thì t lệ ỏỉ b sót các câu th c s ự ự đúng càng thấp.

- F1-score: là điểm trung bình điều hòa (harmonic mean) c a Precision và ủ Recall. Điểm F1-score càng cao thì mô hình d ự đoán càng chính xác và tin cậy.

Dưới đây là bảng k t qu ế ả thử nghi m cho intent và entity: ệ B ng 3.1. Thông s ả ố đo intent

Ý định (Intents) S câu test ố Thông s ố đo

Precision Recall F1-score

chao_hoi 6 1.00 0.83 0.91 bao_gia 7 1.00 1.00 1.00 loi_font_chu 7 1.00 0.86 0.92 bao_cao_ton_kho 8 0.90 1.00 0.95 nhap_tu_dien 5 0.80 0.80 0.80 tao_lai_so_phieu 8 1.00 1.00 1.00 cai_dat_phan_mem 14 0.82 1.00 0.90 doi_mat_khau 7 1.00 0.86 0.92 tao_du_lieu_moi 17 0.93 0.82 0.87 hoa_don_dien_tu 8 1.00 1.00 1.00 in_nhieu_phieu 7 0.88 1.00 0.93 copy_du_lieu 8 0.89 1.00 0.93 … … … … … Trọng s trung bình ố 256 0.92 0.91 0.91

B ng 3.2. Thông s ả ố đo entity

Thực thể (Entities) S câu ố

test

Thông s ố đo

Precision Recall F1-

score

tu dien tai khoan 23 0.85 1.00 0.92

so_dien_thoai 4 1.00 1.00 1.00

san_pham 4 1.00 1.00 1.00

ten_khach_hang 13 1.00 0.62 0.76

Hình 3. . Bi19 ểu đồ ma tr n nh m l n (Confusion matrix) gi a các ậ ầ ẫ ữ nhãn d ự đoán và nhãn đúng trong tác vụ phân lo i ý đ nh ạ ị

N hã n đú ng Nhãn d ự đoán

Hình 3. . Bi20 ểu đồ ma tr n nh m l n (Confusion matrix) gi a các ậ ầ ẫ ữ nhãn d ự đoán và nhãn đúng trong tác vụ trích xu t th c th ấ ự ể

K t qu ế ả chỉ ra rằng Chatbot d ự đoán chính xác khoảng 90%. Để lưa chọn được c u hình t t nh t và ấ ố ấ ổn định nhất tôi đã so sánh các biến th c u hình khác ể ấ nhau, v i c u hình u ti là c u hình mớ ấ đầ ên ấ ặc định được cung c p b i Rasa t tên ấ ở đặ là default-config, c u hình thấ ứ hai s d ng mô hình DIET v i thành phử ụ ớ ần tokenizer được tùy bi n s d ng ế ử ụ thư viện Underthesea [25] c a tác gi ủ ả Vũ Anh, và c u hình ấ thứ 3 cũng chính là c u hình ấ được s d ng cho ng d ng dùng ử ụ ứ ụ pretrained-model spaCy h ỗ trợ Tiếng Vi t [15] c a tác gi ệ ủ ả Trần Việt Trung đã được hu n luy n d a trên 18GB các bài báo Ti ng Viấ ệ ự ế ệt và được đặt tên là spaCy- config. K t qu ế ả thu được như sau:

Hình 3.21. Thang đo so sánh điểm intent c a 3 c u hình ủ ấ B ng 3.3ả . Kết qu ả so sánh điểm intent của 3 c u hình ấ

C u hình ấ Precision Recall F1-score

spaCy-config 0.9191 0.9102 0.9086

custom-tokenizer 0.8945 0.8867 0.8843

default-config 0.8657 0.8555 0.8520

Hình 3.22. Thang đo so sánh điểm entity c a 3 c u hình ủ ấ

B ng 3.4ả . Kết qu ả so sánh điểm entity của 3 c u hình ấ

C u hình ấ Precision Recall F1-score

spaCy-config 0.9226 0.8864 0.8878

custom-

tokenizer 0.8328 0.8333 0.8208

default-config 0.8028 0.8103 0.8028

Ở ấ c u hình mặc định c a Rasa default-config ủ đạt điểm th p nh t c nhi m ấ ấ ở ả ệ

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng ứng dụng chatbot tư vấn khách hàng sử dụng các kỹ thuật học sâu (Trang 50)

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

(72 trang)