1. Trang chủ
  2. » Luận Văn - Báo Cáo

Hệ thống chatbot phục vụ đa lĩnh vực

94 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Ngày nay, các dịch vụ chăm sóc, hỗ trợ khách hàng ngày càng phát triển. Nếu như trước kia, chỉ cần một vài người ngồi trực và trả lời các thông tin, các câu hỏi từ phía khách hàng. Nhưng bước vào thời đại 4.0, các giao dịch cũng như các trao đổi thông tin diễn ra trên internet tăng mạnh, đòi hỏi phải cung cấp các thông tin nhanh hơn và nhiều hơn. Đòi hỏi một giải pháp mạnh mẽ hơn và tiết kiệm chi phí hơn. Chatbot ra đời giải quyết được vấn đề này.

Trang 1

Hệthống chatbot phục vụđa lĩnh vực

Trang 2

Ngày nay, các dịch vụ chăm sóc, hỗ trợ khách hàng ngày càng phát triển Nếu như trước kia, chỉ cần một vài người ngồi trực và trả lời các thông tin, các câu hỏi từ phía khách hàng Nhưng bước vào thời đại 4.0, các giao dịch cũng như các trao đổi thông tin diễn ra trên internet tăng mạnh, đòi hỏi phải cung cấp các thông tin nhanh hơn và nhiều hơn Đòi hỏi một giải pháp mạnh mẽ hơn và tiết kiệm chi phí hơn Chatbot ra đời giải quyết được vấn đề này

Các chatbot hiện nay thường đi theo hai hướng chính Hướng thứ nhất là trả lời dựa hoàn toàn theo kịch bản, với hướng này, người dùng sẽ phải chọn theo các tùy chọn đã được thiết lập sẵn một cách máy móc Hướng tiếp cận thứ hai là sử dụng các kĩ thuật của khoa học dữ liệu như học máy, giúp chatbot có thể hiểu được ý định người dùng, từ đó đưa ra các câu trả lời hợp lý Hướng tiếp cận này mang lại trải nghiệm tốt hơn cho người dùng, xong lại có nhược điểm là yêu cầu dữ liệu đào tạo lớn và khó phục vụ cho nhiều chủ đề khác nhau (Do mỗi chủ đề cần rất nhiều dữ liệu)

Dưới sự hướng dẫn của thầy và sự tìm tòi của bản thân, tôi đã đi xây dựng chatbot theo hướng thứ hai (Xử lý ngôn ngữ tự nhiên); Ngoài ra cũng kết hợp với một số kỹ thuật của hướng đi thứ nhất (Kịch bản) để loại bỏ đi nhược điểm cần quá nhiều dữ liệu cho máy học, mà nhờ đó cũng có thể phục vụ cho nhiều bài toán khác nhau; và cuối cùng sẽ đề ra giải pháp để chatbot hoạt động tốt hơn theo thời gian

Để có thể hoạt động theo hướng thứ hai, đồ án đã phải kết hợp với nhiều lý thuyết và công nghệ xử lý ngôn ngữ tự nhiên cũng như là các thuật toán học máy khác Và để tiện lợi cho quá trình tích hợp, đồ án đã sử dụng luôn ngôn ngữ python vừa để dựng web server, vừa để chạy các vấn đề liên quan đến khoa học dữ liệu (Python là một trong những ngôn ngữ mạnh mẽ nhất về khoản này) Qua đó, đã đưa ra được những kết quả tổng quan, phù hợp với mong đợi từ người dùng là giúp họ tạo ra được một chatbot theo ý của người dùng và hỗ trợ được các yêu cầu từ phía người dùng

Tóm tắt

Trang 3

Danh mục công thức xii

Danh mục các từ viết tắt xiii

Giới thiệu đề tài 1

1.5 Một số khái niệm các cơ sở lĩnh vực liên quan 5

Các thành phần cơ bản trong chatbot 5

Các bước cần làm để xây dựng một chatbot 7

Xử lý ngôn ngữ tự nhiên trong chatbot 8

Khảo sát và phân tích yêu cầu 11

Khảo sát hiện trạng 11

Mục lục

Trang 4

2.2 Tổng quan chức năng 12

Biểu đồ use case tổng quan 12

Phân rã use case “Quản lý dữ liệu NLP” 14

Biểu đồ use case phân rã “Quản lý kịch bản” 18

Biểu đồ use case phân rã “Quản lý lịch sử trò chuyện” 19

2.3 Đặc tả chức năng 19

Đặc tả use case “Quản lý dữ liệu NLP” 19

Đặc tả use case “Quản lý lịch sử trò chuyện” 29

Đặc tả use case “Quản lý kịch bản” 30

Đặc tả use case “Kiểm tra NLP” 32

2.4 Yêu cầu phi chức năng 33

Các ngôn ngữ và công nghệ sử dụng phía Frontend 52

Các ngôn ngữ và công nghệ sử dụng phía Backend 54

Phát triển và triển khai ứng dụng 57

Trang 5

Hoàn thành bài toán xử lý ý định 78

Hoàn thành bài toán xử lý thực thể 78

Bài toán xử lý kịch bản 79

Kết luận và hướng phát triển 80

6.1 Khó khăn 80

6.2 Kết luận và hướng phát triển 80

Tài liệu tham khảo 82

Trang 6

Hình 1-1 Facebook Messenger Platform 2

Hình 1-2 FPT.AI 3

Hình 1-3 Cây quyết định mua quần áo 7

Hình 2-1 Biểu đồ use case tổng quan 13

Hình 2-2 Biểu đồ phân rã use case “Quản lý dữ liệu NLP” 14

Hình 2-3 Biểu đồ phân rã use case “Quản lý câu mẫu” 15

Hình 2-4 Biểu đồ phân rã use case “Quản lý ý định” 15

Hình 2-5 Biểu đồ phân rã use case “Quản lý loại thực thể” 16

Hình 2-6 Biểu đồ phân rã use case “Quản lý từ khóa” 17

Hình 2-7 Biểu đồ phân rã use case “Quản lý kịch bản” 18

Hình 2-8 Biểu đồ phân rã use case “Quản lý lịch sử trò chuyện” 19

Hình 3-1 Pha huấn luyện 35

Hình 3-2 Pha dự báo 36

Hình 3-3 Các bước tiền xử lý dữ liệu 37

Hình 3-4 Dữ liệu huấn luyện 43

Hình 3-5 Dữ liệu kiểm thử 43

Hình 3-6 Hướng tiếp cận dựa trên tri thức 45

Hình 3-7 Hướng tiếp cận dựa trên học máy 46

Hình 4-1 Kiến trúc chung phần mềm 57

Danh mục hình vẽ

Trang 7

Hình 4-4 Thiết kế chi tiết gói module 60

Hình 4-5 Giao diện chung 61

Hình 4-6 Sơ đồ thực thể - liên kết 64

Hình 4-7 Chức năng kiểm tra NLP (Bắt đầu) 73

Hình 4-8 Chức tra kiểm tra NLP (Thực hiện) 73

Hình 4-9 Chatbot không nhận diện được ý định câu hỏi 74

Hình 4-10 Kịch bản chuyển khoản (1) 75

Hình 4-11 Kịch bản chuyển khoản (2) 76

Trang 8

Bảng 2-1 Đặc tả use case “Quản lý câu mẫu” 19

Bảng 2-2 Đặc tả use case “Quản lý ý định” 23

Bảng 2-3 Đặc tả use casse “Quản lý thực thể” 24

Bảng 2-4 Đặc tả use case “Quản lý từ khóa” 26

Bảng 2-5 Đặc tả use case “Quản lý lịch sử trò chuyện” 29

Bảng 2-6 Đặc tả use case “Quản lý kịch bản” 30

Bảng 2-7 Đặc tả use case “Kiểm tra NLP” 32

Bảng 3-1 Các bước tiền xử lý dữ liệu 38

Bảng 3-2 So sánh các phương pháp trích xuất thông tin 42

Bảng 3-3 Kết quả các mô hình 44

Bảng 4-1 Các phương thức lớp preprocessor 61

Bảng 4-2 Các phương thức lớp feature_extractor 62

Bảng 4-3 Các phương thức lớp module_qa 63

Bảng 4-4 Thông tin thực thể User 64

Bảng 4-5 Thông tin thực thể Bot 65

Bảng 4-6 Thông tin thực thể Intent 65

Bảng 4-7 Thông tin thực thể Sentence 66

Bảng 4-8 Thông tin thực thể Entity 66

Bảng 4-9 Thông tin thực thể Keyword 66

Danh mục bảng

Trang 9

Bảng 4-12 Thông tin thực thể Scenario 68

Bảng 4-13 Thông tin thực thể Step 68

Bảng 4-14 Thông tin thực thể Card 69

Bảng 4-15 Thông tin thực thể Variable 69

Bảng 4-16 Thông tin thực thể HistoryUsedIntent 69

Bảng 4-17 Thông tin thực thể RequireVariables 70

Bảng 4-18 Thông tin thực thể HistoryChat 70

Bảng 4-19 Các thư viện và công cụ sử dụng 71

Bảng 4-20 Các thông số của dự án 72

Trang 11

AI

Artificial Intelligence Trí tuệ nhân tạo

Danh mục các từ viết tắt

Trang 13

1.1 Đặt vấn đề

Chatbot hay hộp thoại trả lời tự động là một chương trình máy tính cung cấp cuộc trò chuyện

với người dùng thông qua văn bản hoặc âm thanh, thay cho sự hỗ trợ trực tiếp từ con người như trước đây Nói một cách dễ hiểu hơn, thay vì bạn nói chuyện với một nhân viên hỗ trợ, sẽ có một chatbot, thay thế công việc của nhân viên hỗ trợ kia, trả lời các câu hỏi cho bạn Chatbot thường được nhúng vào các ứng dụng khác dưới tính năng nhắn tin

Thông thường, những người phát triển ứng dụng sẽ đồng thời là người xây dựng chatbot cho ứng dụng đó Những chatbot này thường ở dạng thuần kịch bản Khi người dùng trò chuyện với nó, người dùng thường sẽ bị yêu cầu chọn các nút bấm được cài đặt từ trước Ví dụ: Khi bạn bắt đầu trò chuyện, chatbot hiển thị cho bạn một loạt các dịch vụ mà nó đang có dưới dạng các nút bấm và công việc của bạn là chọn các nút có sẵn đó thay vì trò chuyện Điều này mang lại trải nghiệm không được tốt cho người dùng Ngoài ra, mỗi khi điều chỉnh thông tin hiển thị (ở đây thường là các nút bấm) cho người dùng cuối, người phát triển sẽ phải điều chỉnh mã nguồn cho chatbot Điều này cũng mang lại trải nghiệm không mấy vui vẻ cho những người phát triển Câu hỏi đặt ra là liệu có một công cụ hay nền tảng tích hợp nào đó thông minh hơn, linh động hơn, để vừa tiện lợi cho người phát triển, vừa mang lại trải nghiệm tốt cho người dùng cuối hay không?

Chắc hẳn bạn không còn xa lạ với Siri, IBM Waston, Cortana Những điều tuyệt vời mà những chatbot này mang lại là khả năng đáp ứng thông tin từ những yêu cầu từ người dùng một cách nhanh và chính xác Đa số người dùng cuối hài lòng với trải nghiệm từ những chatbot “thông minh” này Câu hỏi thứ hai cần đặt ra là chúng có gì khác biệt so với chatbot thông thường, và cần làm gì để chatbot mà các nhà phát triển xây dựng nên thông minh được như thế?

Nhu cầu về chatbot ngày càng tăng liên tục Tuy nhiên, chưa có nhiều hệ thống hay nền tảng cho phép người phát triển tạo dựng chatbot mà ở đó đáp ứng được hai câu hỏi phía trên Đặc biệt là chatbot cho tiếng Việt Đây cũng vấn đề của các doanh nghiệp, người kinh doanh qua các ứng dụng, trang web Họ chưa có đủ niềm tin rằng chatbot sẽ thay thế được những nhân viên bán hàng của họ Dù họ biết rằng nếu áp dụng thành công chatbot, họ sẽ tiết kiệm được rất nhiều chi phí, có được khả năng phục vụ khách hàng mọi lúc mọi nơi, v.v

Giới thiệu đề tài

Trang 14

1.2 Mục tiêu và phạm vi đề tài

Ở phần trước, chúng ta đã được nghe về những chatbot kiểu tự phát triển cho các ứng dụng thông thường và một số hạn chế của chúng Sau đây, chúng ta sẽ đi nhanh tìm hiểu một số công cụ, nền tảng có sẵn trên thị trường, đánh giá ưu, nhược điểm của từng loại rồi sau đó sẽ nêu mục tiêu, phạm vi cho đề tài

Một số sản phẩm có sẵn nổi bật trên thị trường

Facebook Messenger Platform

Đây là sản phẩm nổi tiếng và phổ biến với nhiều người dùng nhất cả ở Việt Nam và trên thế giới Hệ thống này giúp hỗ trợ doanh nghiệp, người bán hàng, v.v tạo chatbot nhanh chóng qua nền tảng chat trực tuyến của facebook thông qua mô hình tạo các kịch bản

Hình 1-1 Facebook Messenger Platform

Theo đánh giá thì đây là một công cụ đáp ứng được khả năng linh động trong tạo kịch bản Người tạo ra chatbot có thể không cần là lập trình viên cũng có thể tạo ra các chatbot theo ý tưởng của mình Ngoài ra, với số lượng người dùng khổng lồ trên facebook, thì đây là một môi trường tuyệt vời để tiến hành đặt chatbot (bên cạnh trang web hay ứng dụng di động của doanh nghiệp) Tuy nhiên, chatbot được xây dựng trên nền tảng này thường chưa được thực sự “thông minh”, nó chỉ trả lời chính xác khi người dùng nhập đúng những câu mà chatbot đã được cài đặt từ trước đó Hiện tại với lượng người dùng nhiều và mới thì đây chưa phải vấn đề, song sẽ gặp thách thức ở tương lai do sự phát triển của công nghệ

FPT AI Platform

Dòng sản phẩm chatbot của FPT AI Theo ý kiến đánh giá cá nhân tôi thì là một sản phẩm tương đối hoàn thiện, mạnh mẽ Ngoài hỗ trợ người dùng tạo các kịch bản xử lý như

Trang 15

Hình 1-2 FPT.AI

Đồ án sẽ tham khảo nhiều chức năng từ sản phẩm này, lược bỏ một số phần phức tạp như yêu cầu người dùng phải phải nhập tay toàn bộ dữ liệu cho phần xử lý thực thể, cùng với đó, sẽ bổ sung một số chức năng Những phần phức tạp và những phần được bổ sung sẽ được nói rõ hơn ở chương 3

Đối tượng hướng đến của đồ án là một hệ thống chatbot phục vụ được cho hầu hết các lĩnh vực, song với khoảng thời gian không nhiều trong một kỳ, đồ án sẽ phục vụ tốt nhất cho các dịch vụ như mua bán, hỏi đáp, giao dịch, v.v

Trang 16

Nhìn từ ngoài vào thì hệ thống sẽ bao gồm 2 phần chính Phần thứ nhất là trang web dùng để quản lý các loại dữ liệu cho chatbot cũng như trực quan hóa quá trình tạo chatbot Phần thứ hai sẽ là các api để các hệ thống bên ngoài có thể gọi và sử dụng dịch vụ của chatbot Nhìn từ bên trong hệ thống, hệ thống sẽ bao gồm 3 bài toán lớn: (i) bài toán xử lý ý định; (ii) bài toán trích xuất thực thể trong câu; (iii) bài toán kịch bản cho đoạn hội thoại Cả 3 bài toán này sẽ được trình bày kỹ hơn ở các chương sau Trong đó bài toán (i) và (ii) là 2 bài toán sẽ ứng dụng học máy để xử lý, còn bài toán số (iii) bên cạnh mục đích ban đầu theo như tên của nó là kịch bản cho đoạn hội thoại, sẽ áp dụng một số giải pháp để khắc phục các vấn đề còn đọng lại của bài toán số (i) và bài toán số (ii)

Chương 3 sẽ đưa ra các các lý thuyết công nghệ mà hệ thống sử dụng ở cả quá trình tạo dựng trang web cũng như áp dụng cho các bài toán học máy Đối với một số lý thuyết và công nghệ đặc biệt, tôi cũng sẽ giải thích lý do chọn nó thay vì các công nghệ khác

Chương 4 sẽ phân tích chỉ ra kiến trúc được sử dụng trong hệ thống Chương này cũng sẽ nêu thiết kế chi tiết cho một số thành phần quan trọng trong hệ thống Ngoài ra, chương này cũng sẽ nêu thiết kế cơ sở dữ liệu, dữ liệu được triển khai ra sao Cuối cùng sẽ đưa ra phần kiểm thử và triển khai cho hệ thống

Chương 5, tôi sẽ nêu đóng góp nổi bật của đồ án trong việc giải quyết các vấn đề liên quan đến nhu cầu sử dụng hệ thống của người dùng

Chương 6 cũng là chương cuối, tôi sẽ sẽ tổng kết lại toàn bộ nội dung , khó khăn gặp phải, những mong đợi mà người dùng hi vọng, cũng như định hướng để hoàn thiện, phát triển sản

Trang 17

1.5 Một số khái niệm các cơ sở lĩnh vực liên quan

Phần này sẽ lần lượt nêu tổng quan về chatbot, các thành phần của chatbot rồi từ đó ta sẽ có cái nhìn tổng quan về chatbot Tiếp theo ta sẽ tìm hiểu một chút về xử lý ngôn ngữ tự nhiên và cách áp dụng xử lý ngôn ngữ tự nhiên vào bài toán chatbot

Các thành phần cơ bản trong chatbot

Các thành phần của một hệ thống chatbot là không nhiều Trong phần này, chúng ta sẽ thảo luận ngắn gọn về các thành phần chính của một chatbot

Ý định (intent)

Khi một người dùng tương tác với một chatbot, mục đích sử dụng chatbot của anh ta là gì/

anh ta yêu cầu điều gì? Đó chính là ý định

Ví dụ: khi người dùng nói, “Đặt vé xem phim” với một chatbot, chúng ta có thể hiểu rằng người dùng muốn đặt vé xem phim Đây là ý định dành người dùng muốn chatbot thực hiện Nó có thể được đặt tên là ý định “book_movie”

Một ví dụ khác có thể là khi người dùng nói, "Tôi muốn đặt đồ ăn" hoặc "Bạn có thể giúp tôi đặt đồ ăn không?" Chúng có thể được đặt tên là ý định “order_food” Tương tự như vậy, mỗi chatbot có thể có nhiều ý định khác nhau, do cách mà người tạo bot định nghĩa chúng

Các loại thực thể như tên phim thì thường chỉ xuất hiện trong các chatbot liên quan đến phim

như đặt vé xem phim, review phim, v.v Tuy nhiên, cũng có một số thực thể có thể được sử dụng ở nhiều loại chatbot khác nhau, ví dụ như số lượng, khối lượng, ngày tháng, v.v Ví dụ: khi người dùng nói: “Đặt 2 vé xem phim Bố già” thì chatbot sẽ phải thêm thực thể số lượng vé muốn đặt là 2

Trang 18

Cách nói (Utterance)

Cách nói là các dạng khác nhau của lời nói, âm thanh nhưng mang cùng ý định khi sử dụng

chatbot Ví dụ: (i) Siri, Tắt đèn (ii) Siri, bạn vui lòng tắt đèn được không? (iii) Bạn có thể vui lòng tắt đèn được không?

Cả 3 ví dụ trên đều mang ý định là tắt đèn, người dùng có thể có nhiều cách nói hơn nữa cho cùng 1 ý định, và chatbot cần nhận diện được chúng Nên có tối đa 10 cách nói cho mỗi ý định và tối thiểu là 5, nhưng điều này không bị hạn chế [1]

Kịch bản

Để hiểu hơn về kịch bản trong chatbot, ta nên biết một chút về cây quyết định Cây quyết

định (decision tree) là một đồ thị của các quyết định và các hậu quả có thể có của nó Sau

đây, ta sẽ điểm qua một vài lợi ích khi sử dụng cây quyết định: (i) Giúp đỡ trong việc tạo ra một bức tranh đầy đủ về vấn đề Nhìn vào cây quyết định, chúng ta có thể dễ dàng hiểu được điều gì còn thiếu hoặc điều gì cần sửa đổi (ii) Giúp các nhà phát triển gỡ lỗi nhanh hơn, cũng có thể giúp các nhà phát triển, lãnh đạo giới thiệu hành vi dự kiến hoặc giải thích việc thay đổi nào trong kịch bản nếu cầu (iii) AI vẫn chưa ở giai đoạn đó mà nó có thể được đào tạo với nhiều dữ liệu và thực hiện với độ chính xác 100% Nó vẫn đòi hỏi rất nhiều thủ tục bằng cách viết logic và quy tắc kinh doanh Cây quyết định giúp ích cho bất cứ đâu khi quá trình học máy gặp vấn đề và thực hiện chúng

Bây giờ, chúng ta sẽ đi vào một ví dụ và sau đó liên hệ xem nó có thể giúp ích gì cho chatbot Hãy xem sơ đồ ví dụ cho một chatbot bắt đầu bằng câu hỏi liệu người dùng đang tìm kiếm áo thun hay quần jean và dựa trên đầu vào, luồng sơ đồ sẽ đi xa hơn để đưa ra các tùy chọn liên quan đến sản phẩm bằng cách đặt thêm câu hỏi

Trang 19

Hình 1-3 Cây quyết định mua quần áo

Ở đây, cây quyết định giúp giữ cho người dùng tập trung vào luồng trò chuyện Các luồng

trò chuyện này chính là kịch bản Kịch bản giúp định hướng câu trả lời của chatbot khi gặp

câu hỏi của người dùng, cũng như định hướng cách người dùng sẽ nói chuyện với chatbot Như ở ví dụ trên, kịch bản giúp định hướng chính xác để lấy các thông tin về sản phẩm mà người dùng muốn mua

Các bước cần làm để xây dựng một chatbot

Xây dựng chatbot gồm khá nhiều bước, nhưng có 3 bước cơ bản mà ta cần nắm ở đây Bước thứ nhất là thu thập tất cả các tình huống, nhiệm vụ mà bạn muốn chatbot thực hiện, cùng với đó là thu thập tất cả các câu hỏi liên quan mà người dùng có thể sẽ hỏi hay yêu cầu (câu mẫu) Mỗi câu hỏi hay yêu cầu đó sẽ xác định một ý định Bước này có thể đặt tên là bước thu thập dữ liệu

Trang 20

Bước thứ hai là sắp xếp các câu mẫu đó vào các ý định, sao cho mỗi câu chỉ có một ý định Ngoài ra, việc sắp xếp này cũng nên đảm bảo tiêu chí bên trên: Mỗi ý định sẽ chỉ có từ 5 đến 10 cách nói khác nhau Bước này có thể gọi là bước gán nhãn

Bước thứ ba là huấn luyện chatbot dựa trên tập dữ liệu thu được đã được gán nhãn kia Ở bước này có nhiều tùy chọn, có thể sử dụng các phương pháp từ chuyên gia hoặc phương pháp học máy

Bước thứ tư là sử dụng kịch bản để giữ cho người dùng đi đúng luồng hồi thoại mà bạn đã cài đặt sau khi phát hiện ra ý định của người dùng

Ngoài 3 bước chính trên, ta cũng có thể kể thêm một vài bước quan trọng khác như: Thêm từ điển về từ đồng nghĩa, thực thể, từ viết sai, v.v Qua những từ điển này, chatbot có thể nhận diện thông minh hơn và đưa ra câu trả lời chính xác hơn

Xử lý ngôn ngữ tự nhiên trong chatbot

Tại sao cần xử lý ngôn ngữ tự nhiên cho chatbot? Để tìm hiểu câu trả lời cho câu hỏi này,

trước tiên chúng ta hãy tìm hiểu Xử lý ngôn ngữ tự nhiên (NLP) NLP là một lĩnh vực của

Trí tuệ nhân tạo cho phép máy tính phân tích và hiểu ngôn ngữ của con người [1]

Hiểu ngôn ngữ tự nhiên (NLU) diễn tả khả năng hiểu ngôn ngữ tự nhiên của máy tính dưới

thông tin ở dạng do con người cung cấp (ngôn ngữ tự nhiên)

Người ta nên biết rằng không có gì nhân tạo trong AI; đó thực sự là các thuật toán học máy và học sâu được viết bởi những người giỏi, đang hoạt động hiệu quả Máy móc chưa đạt đến giai đoạn mà chúng có thể suy nghĩ tương tự như con người để có trí thông minh của riêng mình Hệ thống AI ngày nay - những gì chúng làm và cách chúng hoạt động - là kết quả của cách chúng ta đã đào tạo chúng

Vì vậy, để hiểu ngôn ngữ tự nhiên của người dùng bằng bất kỳ ngôn ngữ nào, hoặc bất kỳ hình thức đầu vào nào (văn bản, giọng nói, hình ảnh, v.v.), chúng ta phải viết các thuật toán và sử dụng các kỹ thuật của NLP NLP được coi là bộ não của các chatbot khi xử lý dữ liệu thô, làm sạch dữ liệu, trích xuất thông tin và từ đó trả đầu ra cho người dùng

Bản thân NLP là một chủ đề lớn và đòi hỏi thời gian và sự kiên trì, nhưng có một vài phương pháp cần thiết cho một nhà phát triển chatbot mà chúng ta sẽ tìm hiểu trong các phần dưới đây

Trang 21

Tại sao không thể sử dụng phương pháp phân tách qua dấu phân tách Nó không có bất kỳ ý nghĩa nào, trong khi token hóa cũng cố gắng duy trì ý nghĩa

Ví dụ: Khi người dùng nói: “Cho tôi đặt một bàn ăn tối nay lúc 9h” Các từ phải được tách thành như sau mới đem lại hiệu quả: {“Cho”, “tôi”, “một”, “bàn ăn”, “tối nay”, “lúc”, “9h”}

POS tagging

Part-of-speech (POS) tagging (gắn thẻ) là một quá trình đọc một số văn bản và giọng nói,

gán các phần cho mỗi từ một nhãn, chẳng hạn như danh từ, động từ, tính từ, v.v

Việc gắn thẻ POS trở nên cực kỳ quan trọng khi bạn muốn xác định một số thực thể trong một câu nhất định (NER, sẽ được trình bày ở phần sau) Bước đầu tiên là thực hiện gắn thẻ POS và xem văn bản của chúng ta chứa những gì

Vậy tại sao cần gắn thẻ POS cho chatbot? Trả lời: để giảm độ phức tạp của việc hiểu một văn bản Bằng cách sử dụng gắn thẻ POS, chúng ta có thể xác định các phần của đầu vào văn bản và chỉ thực hiện đối sánh chuỗi cho các phần đó

Ví dụ: nếu bạn muốn tìm xem một “vị trí” có tồn tại trong một câu hay không, thì gắn thẻ POS sẽ gắn thẻ “vị trí” là danh từ, vì vậy bạn có thể lấy tất cả các danh từ từ danh sách được gắn thẻ và xem đó có phải là danh từ nào là vị trí từ từ điển vị trí trước đó bạn đã tạo

NER

NER hay Named-Entity Recognition hay nhận dạng thực thể được đặt tên còn được biết đến

với các tên gọi khác như entity identification (Nhận dạng thực thể) hay entity extraction

(trích xuất thực thể) là một quá trình tìm kiếm và phân loại các thực thể có tên tồn tại trong

văn bản đã cho thành các danh mục được xác định trước

NER phụ thuộc nhiều vào cơ sở kiến thức được sử dụng để đào tạo thuật toán NER, do đó, nó có thể hoạt động hoặc có thể không hoạt động tùy thuộc vào tập dữ liệu được cung cấp mà nó được đào tạo

Lấy lại ví dụ cũ: Đặt 2 vé xem phim Bố già Thực thể: (i) tên phim:Bố già, (ii) Số lượng: 2

Từ dừng (stopword)

Stop word là các từ thường xuất hiện trong câu như: thì, là, v.v nhưng thường không mang

ý nghĩa trong câu đó, chúng ta thường muốn lọc những từ này ra để kết quả xử lý được chính xác hơn

Trang 22

Ví dụ: Khi người dùng nói: “Xin chào, tôi muốn đặt 2 vé xem phim Bố Già vào lúc 9h tối nay” Câu này sau khi loại bỏ các từ dừng sẽ còn lại là: “Đặt 2 vé xem phim Bố già 9h tối nay” Việc loại bỏ này làm câu văn trở nên thô hơn nhưng vẫn giữ nguyên được ý nghĩa, chatbot nhờ đó sẽ xử lý hiệu quả hơn

Biểu thức chính quy (Regular Expressions)

Bản thân việc phân tích và xử lý văn bản là một chủ đề lớn Đôi khi việc chơi chữ khiến chatbot không hiểu được ý định từ người dùng và làm cho quá trình huấn luyện trở nên khó khăn

Biểu thức chính quy có thể hữu ích cho một số dự phòng cho mô hình học máy, nó có sức

mạnh so khớp mẫu, có thể đảm bảo rằng dữ liệu chúng ta đang xử lý là chính xác hoặc không chính xác

Ví dụ: Khi người dùng nói: “Cho tôi một vé xe từ Nam Định tới Hà Nội” và “Cho tôi một vé xe từ Thái Bình tới Hải Dương” Nhìn vào 2 câu này, ta có thể thấy được một định dạng chung: “Cho tôi một vé xe từ … đến …” Trong tình huống này, dựa vào biểu thức chính quy, ta có thể xác định được ý định từ người dùng là đặt vé xe, cũng như xác định được 2 thực thể là điểm đầu và điểm cuối

Trang 23

Ở cuối chương trước, chúng ta đã có cái nhìn tổng quan về bài toán cũng như các thành phần về chatbot và ứng dụng xử lý ngôn ngữ tự nhiên trong chatbot Ở chương này, chúng ta sẽ đi khảo sát hiện trạng, yêu cầu từ thực tế Từ những yêu cầu này, kết hợp với mục tiêu và phạm vi ở chương trước, chúng ta sẽ vạch ra các chức năng cần có trong hệ thống Cuối cùng, chúng ta cũng sẽ đề ra luôn các yêu cầu phi chức năng của hệ thống

2.1 Khảo sát hiện trạng

Chatbots đã được chứng minh là thành công trong việc mang lại nhiều doanh thu hơn cho các doanh nghiệp Các doanh nghiệp bắt đầu với hỗ trợ chatbot hoặc tạo một chatbot mới để hỗ trợ các truy vấn của khách hàng đang hoạt động tốt trên thị trường so với các đối thủ cạnh tranh của họ [1]

Theo một trong những bài đăng trên blog trên stanfy.com, trong 2 tháng đầu tiên sau khi giới thiệu chatbot Facebook, 1-800-Flowers.com đã báo cáo rằng hơn 70% đơn đặt hàng Messenger của họ là từ khách hàng mới [1] Những khách hàng mới này nhìn chung cũng trẻ hơn những người mua sắm thông thường của công ty, vì họ đã quen thuộc với ứng dụng Facebook Messenger Điều này làm tăng đáng kể doanh thu hàng năm của họ Qua đó, ta có thể thấy được đối tượng chính mà chatbot phục vụ sẽ là những khách hàng trẻ tuổi, sử dụng nhiều mạng xã hội như facebook, zalo, v.v

Hiện nay, bên cạnh các công cụ đã kể ra ở mục 1.2, có một số công cụ chatbot phục vụ khá tốt trên nền mạng xã hội như facebook, có thể kể đến như: Hana chatbot, Botbanhang, Chatfuel, v.v

Hana Chatbot là một nền tảng giúp bạn tạo Chatbot Facebook một cách dễ dàng Không chỉ vậy, đây là còn phần mềm quản lý khách hàng trên mạng xã hội Bằng cách liên kết với Fanpage, Hana có thể giúp bạn quản lý mọi thông tin về vòng đời của khách hàng đã tương tác hoặc mua hàng ở shop bạn Nhờ đó, kết hợp với Chatbot, bạn có thể tiếp tục bán lại hàng cho khách hàng này mà không hề tốn thêm chi phí nào hết

Botbanhang là một giải pháp giúp bạn xây dựng Chatbot bán hàng, mang lại cho khách hàng của bạn một trải nghiệm tuyệt vời khi mua hàng/dịch vụ hay tìm kiếm thông tin từ Fanpage của bạn

Khảo sát và phân tích yêu cầu

Trang 24

Chatfuel được giới thiệu là nền tảng chatbot hàng đầu thế giới dành cho Facebook Messenger Nếu bạn bán hàng ở thị trường quốc tế thì Chatfuel là sự lựa chọn tốt

Những chatbot kể trên đã và đang đáp ứng một lượng khách hàng lớn không chỉ ở Việt Nam mà còn trên thế giới Nhưng mà đặc điểm của tất cả chatbot kể trên vẫn là xây dựng cuộc đối thoại với khách hàng dựa hoàn toàn trên kịch bản, chưa có áp dụng được những công nghệ mới từ lĩnh vực trí tuệ nhân tạo, cụ thể hơn ở đây là xử lý ngôn ngữ tự nhiên

Một công cụ chatbot ngoài tính năng sử dụng kịch bản, nếu kết hợp thêm được với khả năng xử lý ngôn ngữ tự nhiên sẽ là bước phát triển cho các công cụ chatbot

2.2 Tổng quan chức năng

Biểu đồ use case tổng quan

Dựa vào phần 1 5 đã trình bày trước đó, hệ thống sẽ phải quản lý những thành phần giúp

định nghĩa lên chatbot như ý định, thực thể, cách nói, kịch bản ,v.v Riêng phần kịch bản

không dùng đến học máy, ta sẽ tách nó ra thành chức năng khác Những phần còn lại liên quan đến học máy, ta sẽ có 2 nhóm chức năng là quản lý dữ liệu cho các phần đó và kiểm tra độ chính xác Cụ thể hơn, ta quan sát hình dưới đây:

Trang 25

Hình 2-1 Biểu đồ use case tổng quan

Hình trên là use case tổng quan của hệ thống Theo đó, ta có thể thấy được, hệ thống sẽ bao gồm 3 tác nhân tham gia vào

Đầu tiên, Người sử dụng bot, chính là đối tượng khách hàng, trò chuyện với chatbot và sẽ

nhận được câu trả lời từ chatbot Thực hiện trò chuyện theo 1 số cách như đặt câu hỏi hay nhấn nút, v.v

Tiếp theo, Người tạo bot, đây mới là đối tượng chính mà đồ án hướng đến Hệ thống sẽ cung

cấp chức năng để đối tượng này có thể tạo ra chatbot Công việc của đối tượng này sẽ bao gồm: (i) Cung cấp dữ liệu để huấn luyện chatbot và có thể bổ sung, chỉnh sửa dữ liệu theo thời gian (ii) Cập nhật các kịch bản cũ và thêm mới các kịch bản để đáp ứng được yêu cầu đa dạng từ những người sử dụng bot (iii) Theo dõi lịch sử bot và điều chỉnh bot học tập thông qua trò chuyện trực tiếp với người dùng (iv) Kiểm tra NLP

Trang 26

Cuối cùng là Quản trị viên có đầy đủ các quyền của Người tạo bot, ngoài ra, họ có thể có

quyền kiểm soát những người tạo bot Tác nhân này dùng để quản trị chung cho một hệ thống về sau có thể bao gồm nhiều chatbot, nhiều người dùng

Phân rã use case “Quản lý dữ liệu NLP”

Hình 2-2 Biểu đồ phân rã use case “Quản lý dữ liệu NLP”

Use case này như tên gọi, dùng để quản lý các dữ liệu phục vụ cho phần NLP Ta có use case con “Quản lý câu mẫu” và “Quản lý ý định” sẽ phục vụ cho bài toán lấy ý định trong câu Use case “Quản lý câu mẫu”, “Quản lý loại thực thể”, “Quản lý từ khóa” sẽ phục vụ cho bài toán trích xuất thực thể trong câu

Các use case con kể trên bên trong lại gồm các chức năng như thêm, sửa, xóa các loại dữ liệu tương ứng, chi tiết quan sát các hình ở bên dưới

Trang 27

Hình 2-3 Biểu đồ phân rã use case “Quản lý câu mẫu”

Như đã được trình bày ở mục 1.5 thì cách nói là một dữ liệu cần quản lý Ở hệ thống, để dễ hiểu hơn, ta thay thuật ngữ cách nói thành câu mẫu

Hình 2-4 Biểu đồ phân rã use case “Quản lý ý định”

Use case này giúp quản lý các ý định có trong hệ thống (ý định là một trong các thành phần

của chatbot đã được đề cập đến ở mục 1.5)

Trang 28

Hình 2-5 Biểu đồ phân rã use case “Quản lý loại thực thể”

Ở mục 1.5, ta đã đề cập đến thực thể bao gồm 1 cặp ví dụ như: Hà Nội – địa điểm Để dễ quản lý hơn, ta chia thực thể thành cặp khái niệm loại thực thể và từ khóa Như ở ví dụ trên,

loại thực thể ứng với “địa điểm”, còn từ khóa ứng với “Hà Nội”

Trang 29

Hình 2-6 Biểu đồ phân rã use case “Quản lý từ khóa”

Trang 30

Biểu đồ use case phân rã “Quản lý kịch bản”

Hình 2-7 Biểu đồ phân rã use case “Quản lý kịch bản”

Ở đây có các khái niệm cần phải nắm được đó là: Nhóm bước, bước và thẻ

Đầu tiên thì một nhóm bước sẽ bao gồm nhiều bước, nhóm bước chỉ mang yếu tố gom nhóm để người dùng dễ hình dung hơn Ví dụ nhóm bước “nhóm chuyển khoản” sẽ bao gồm các bước “chuyển khoản – thực hiện”, “chuyển khoản – hủy”, v.v

Các bước thì sẽ bao gồm nhiều thẻ, các bước thì có ý nghĩa đánh dấu xem cuộc hội thoại đang ở bước nào Ví dụ, sau khi chào hỏi xong, chatbot phát hiện người dùng có ý định “chuyển khoản”, ngay lập tức, chatbot sẽ chuyển trạng thái đến bước “chuyển khoản”, tại đây, chatbot sẽ được thực hiện một loạt các thao tác, các thao tác đó gọi chung là các thẻ xử lý (gọi tắt là thẻ)

Các hành động trong bước được gọi chung là các thẻ Ví dụ: Khi người dùng muốn hỏi giá vàng Hệ thống sẽ kích hoạt bước “Hỏi giá vàng” từ nhóm bước “Hỏi đáp” Trong bước này, hệ thống sẽ thực hiện gọi 1 api lấy thông tin giá vàng và 1 bước trả ra kết quả cho người dùng Từng hành động trên sẽ được định nghĩa trong “thẻ”

Trang 31

Biểu đồ use case phân rã “Quản lý lịch sử trò chuyện”

Hình 2-8 Biểu đồ phân rã use case “Quản lý lịch sử trò chuyện”

Use case này giúp người tạo bot có thể xem lại lịch sử trò chuyện của người dùng cuối với chatbot Thông tin hiển thị sẽ bao gồm không chỉ nội dung cuộc trò chuyện mà còn cả các thông số như ý định mà chatbot đã đoán, độ chính xác khi đưa ra dự đoán đó Cuối cùng, người tạo bot có thể đánh giá các câu trả lời của chatbot Các dữ liệu được đánh giá sẽ được thêm vào kho dữ liệu dùng để huấn luyện cho chatbot

2.3 Đặc tả chức năng

Đặc tả use case “Quản lý dữ liệu NLP”

Đây là một use case lớn, chi tiết về đặc tả sẽ được mô tả thông qua đặc tả các use case con

Đặc tả use case “Quản lý câu mẫu”

Bảng 2-1 Đặc tả use case “Quản lý câu mẫu”

Mã Use case UC0101 Tên Use case Quản lý câu mẫu

Tác nhân Người tạo bot, quản trị viên

Tiền điều kiện Người dùng đăng nhập thành công với vai trò người tạo bot hoặc quản trị

Trang 32

viên

Luồng sự kiện chính (Thành công)

Xem câu mẫu

STT Thực hiện bởi Hành động

1 Người tạo bot Chọn chức năng câu mẫu ở menu

2 Hệ thống Hiển thị màn hình xem câu mẫu với dữ liệu sắp xếp từ mới nhất đến cũ nhất

3 Người tạo bot Nhập vào ô tìm kiếm các từ khóa của câu mẫu cần tìm

4 Hệ thống Trả về kết quả tìm kiếm tương ứng ở bảng 5 Người tạo bot Lọc câu mẫu theo ý định

6 Hệ thống Trả về câu mẫu theo ý định đó kết hợp với kết quả tìm kiếm từ khóa trước đó

Thêm câu mẫu

5 Hệ thống Hiển thị các ý định đang có trong hệ thống để người dùng lựa chọn

6 Hệ thống Trả về câu mẫu theo ý định đó kết hợp với kết quả tìm kiếm từ khóa trước đó

7 Người tạo bot Chọn nút thêm để thêm câu mẫu

8 Hệ thống Hiểu thị thông báo thành công nếu thêm thành công 9 Hệ thống Trở về giao diện trang mẫu

Thêm từ file excel

STT Thực hiện bởi Hành động

Trang 33

2 Hệ thống Hiển thị màn hình chọn file excel 3 Người tạo bot Chọn file excel

4 Hệ thống Hiển thị thông tin các câu mẫu sẽ thêm 5 Người tạo bot Xác nhận thêm

6 Hệ thống Thêm các câu mẫu và hiện màn hình chờ 7 Hệ thống Trả về thông báo thành công khi thực hiện xong Sửa câu mẫu

9 Hệ thống Kiểm tra tính hợp lệ thông tin

10 Hệ thống Trả về kết quả thành công và quay trở về màn hình câu mẫu

Xóa câu mẫu

STT Thực hiện bởi Hành động

1 Người tạo bot Tại câu mẫu muốn xóa, chọn vào biểu tượng xóa 2 Hệ thống Hỏi lại người dùng có thực sự muốn xóa thông tin

này

3 Người tạo bot Xác nhận xóa

4 Hệ thống Xóa thông tin câu mẫu đó khỏi hệ thống

Trang 34

3a Người tạo bot Lọc câu mẫu theo ý định

4a Hệ thống Trả về kết quả tìm kiếm tương ứng hiển thị trong bảng

5a Người tạo bot Nhập vào ô tìm kiếm nội dung câu mẫu cần tìm kiếm

6a Hệ thống Trả về câu mẫu theo từ khóa cần tìm kiếm kết hợp với kết quả lọc từ ý định trước đó

Thêm câu mẫu

3a Người tạo bot Xác nhận không xóa

4a Hệ thống Trả về thông báo xóa không thành công

Hậu điều kiện Không

Trang 35

Đặc tả use case “Quản lý ý định”

Bảng 2-2 Đặc tả use case “Quản lý ý định”

Mã Use case UC0102 Tên Use case Quản lý ý định

Tác nhân Người tạo bot, quản trị viên

Tiền điều kiện Người dùng đăng nhập thành công với vai trò người tạo bot hoặc quản trị viên

Luồng sự kiện chính (Thành công)

Xem ý định

STT Thực hiện bởi Hành động

1 Người tạo bot Chọn chức năng ý định ở menu

2 Hệ thống Hiển thị màn hình xem danh sách với dữ liệu sắp xếp từ mới nhất đến cũ nhất

3 Người tạo bot Nhập vào ô tìm kiếm các từ khóa cần tìm 4 Hệ thống Trả về kết quả tìm kiếm tương ứng ở bảng Thêm ý định

yêu cầu hay không

5 Hệ thống Thêm ý định vào cơ sở dữ liệu 6 Hệ thống Thông báo thành công

Trang 36

5 Người tạo bot Chọn lưu

6 Hệ thống Kiểm tra tính hợp lệ thông tin 7 Hệ thống Trả về kết quả thành công Xóa ý định

STT Thực hiện bởi Hành động

1 Người tạo bot Tại ý định muốn xóa, chọn vào biểu tượng xóa 2 Hệ thống Hỏi lại người dùng có thực sự muốn xóa thông tin

này

3 Người tạo bot Xác nhận xóa

4 Hệ thống Xóa thông tin câu mẫu đó khỏi hệ thống 5 Hệ thống Trả về kết quả thành công

Luồng sự kiện thay thế

3a Người tạo bot Xác nhận không xóa

4a Hệ thống Trả về thông báo xóa không thành công

Hậu điều kiện Không

Đặc tả use case “Quản lý loại thực thể”

Trang 37

Tác nhân Người tạo bot, quản trị viên

Tiền điều kiện Người dùng đăng nhập thành công với vai trò người tạo bot hoặc quản trị viên

Luồng sự kiện chính (Thành công)

Xem loại thực thể

STT Thực hiện bởi Hành động

1 Người tạo bot Chọn chức năng Loại thực thể ở menu

2 Hệ thống Hiển thị màn hình xem danh sách với dữ liệu sắp xếp từ mới nhất đến cũ nhất

3 Người tạo bot Nhập vào ô tìm kiếm các từ khóa cần tìm 4 Hệ thống Trả về kết quả tìm kiếm tương ứng ở bảng Thêm loại thực thể

STT Thực hiện bởi Hành động

1 Người tạo bot Tại màn hình xem loại thực thể, chọn nút “Thêm loại thực thể”

2 Hệ thống Hiển thị màn hình thêm loại thực thể

3 Người tạo bot Nhập thông tin loại thực thể bao gồm tên, mô tả 4 Hệ thống Kiểm tra trùng lặp ý định qua tên, tên có đạt chuẩn

yêu cầu hay không

5 Hệ thống Thêm loại thực thể vào cơ sở dữ liệu 6 Hệ thống Thông báo thành công

Sửa loại thực thể

STT Thực hiện bởi Hành động

1 Người tạo bot Tại loại thực thể muốn sửa, chọn vào biểu tượng sửa

2 Hệ thống Lấy thông tin loại thực thể

3 Hệ thống Hiển thị lên màn hình sửa loại thực thể với những thông tin đó

4 Người tạo bot Sửa thông tin các trường của loại thực thể đó 5 Người tạo bot Chọn lưu

6 Hệ thống Kiểm tra tính hợp lệ thông tin

Trang 38

7 Hệ thống Trả về kết quả thành công Xóa loại thực thể

3 Người tạo bot Xác nhận xóa

4 Hệ thống Xóa thông tin về loại thực thể đó khỏi hệ thống 5 Hệ thống Trả về kết quả thành công

Luồng sự kiện thay thế

3a Người tạo bot Xác nhận không xóa

4a Hệ thống Trả về thông báo xóa không thành công

Hậu điều kiện Không

Đặc tả use case “Quản lý từ khóa”

Bảng 2-4 Đặc tả use case “Quản lý từ khóa”

Mã Use case UC0104 Tên Use case Quản lý từ khóa

Trang 39

Luồng sự kiện chính (Thành công)

Xem từ khóa

STT Thực hiện bởi Hành động

1 Người tạo bot Chọn chức năng Từ khóa ở menu

2 Hệ thống Hiển thị màn hình xem danh sách với dữ liệu sắp xếp từ mới nhất đến cũ nhất

3 Người tạo bot Nhập vào ô tìm kiếm các từ khóa cần tìm 4 Hệ thống Trả về kết quả tìm kiếm tương ứng ở bảng 5 Người tạo bot Chọn thanh lọc theo loại thực thể

6 Hệ thống Hiển thị kết quả lọc được theo loại thực thể và từ khóa tìm kiếm trước đó

Thêm từ khóa

STT Thực hiện bởi Hành động

1 Người tạo bot Tại màn hình xem từ khóa, chọn nút “Thêm từ khóa”

2 Hệ thống Hiển thị màn hình thêm từ khóa

3 Người tạo bot Nhập thông tin từ khóa bao gồm từ khóa, các từ đồng nghĩa

4 Người tạo bot Chọn thông tin loại thực thể dành cho từ khóa 5 Hệ thống Kiểm tra tính hợp lệ của các thông tin 6 Hệ thống Thông báo thành công

Trang 40

7 Hệ thống Trả về kết quả thành công Xóa từ khóa

STT Thực hiện bởi Hành động

1 Người tạo bot Tại từ khóa muốn xóa, chọn vào biểu tượng xóa 2 Hệ thống Hỏi lại người dùng có thực sự muốn xóa thông tin

này

3 Người tạo bot Xác nhận xóa

4 Hệ thống Xóa thông tin từ khóa đó khỏi hệ thống 5 Hệ thống Trả về kết quả thành công

Luồng sự kiện thay thế

kiếm Thêm từ khóa

Ngày đăng: 25/06/2024, 17:37

Xem thêm:

w