Các khái niệm cơ bản trong NLP.js

Một phần của tài liệu Xây dựng chatbot trợ lý ảo trên nền web (Trang 61 - 114)

3 CHATBOT – BÀI TỐN XỬ LÝ NGƠN NGỮ TỰ NHIÊN

3.4 Sơ lược về thư viện NLP.js

3.4.3 Các khái niệm cơ bản trong NLP.js

Entity: Entity là tất cả mọi thứ trong mơ hình xử lý ngôn ngữ của NLP.js. Cấu tạo của một entity cơ bản như sau

Bảng 3.2 Bảng danh sách thuộc tính trong một Entity

STT Tên thuộc tính Mơ tả Ví dụ

1 id Dãy số định danh một entity 71739421371429103

2 name Tên của entity temprature

3 confidence Độ tự tin của chương trình về

entity này phạm vi từ 0-1

0.7655

Intent: Intent, ở đây có thể dịch là ý định, là một loại entity đặc biệt để xác định ý định chung của toàn bộ câu đã cho. Ta lấy ví dụ sau

“Thời tiết ở Hà Nội như thế nào?”

Thì intent ở đây có thể gọi là “get_weather” vì ý định của người dùng là hỏi về thời tiết (tại Hà Nội, ta sẽ đề cập đến trong phần sau). Cấu tạo của một intent như sau

Bảng 3.3 Bảng danh sách thuộc tính trong một Intent

STT Tên thuộc tính Mơ tả Ví dụ

1 id Dãy số định danh một entity 71739421371429103

2 name Tên của entity get_weather

3 confidence Độ tự tin của chương trình về

entity này phạm vi từ 0-1

0.7655

Ngoài việc cho phép nhà phát triển tự tạo các intent thì Wit.ai cũng cung cấp một số intent có sẵn để nhà phát triển dễ dàng áp dụng vào chatbot của mình mà khơng cần phải trải qua quá trình huấn luyện chatbot. Bảng dưới đây mơ tả sơ lược các intent có sẵn tính đến ngày 1/5/2021

62

Entity parameter: Là một loại entity để xác định tham số trong một câu đã cho. Ta trở lại với ví dụ ta đã lấy intent

“Thời tiết ở Hà Nội như thế nào?”

Ở đây Hà Nội chính là một entity parameter, chỉ địa điểm người dùng muốn xem thời tiết. Ta thấy ở đây thì chuỗi con cũng chính là giá trị của parameter. Tuy nhiên ta có trường hợp khác như sau

“Thời tiết ở Đồng Hới ngày mai như thế nào?”

Ta đã biết Đồng Hới là một parameter cho địa điểm. Tuy nhiên parameter còn lại là chuỗi con “ngày mai”. Giả sử hôm nay là ngày 15/4/2021, cái ta cần là khả năng có thể phân giải xâu “ngày mai” thành giá trị “16/4/2021”. NLP.js cung cấp cho nhà phát triển công cụ để thiết lập và huấn luyện cho Chatbot nhận ra các tham số này. Cấu tạo của một entity parameter cơ bản như sau (có thể có các thuộc tính khác tùy vào loại parameter)

Bảng 3.4 Bảng danh sách thuộc tính của một Entity Parameter

STT Tên thuộc tính Mơ tả Ví dụ

1 id Dãy số định danh một entity 71739421371429103

2 name Tên của entity movie

3 role Vai trò của parameter trong câu seen

4 start Vị trị bắt đầu của chuỗi con đang

trích xuất

4

5 end Vị trí kết thúc của chuỗi con đang

trích xuất

10

63

7 confidence Độ tự tin của chương trình về

entity này phạm vi từ 0-1

0.7655

8 entities Danh sách entity trong entity đó Danh sách entity

9 value Giá trị trích xuất được từ

parameter

15/5/2021

10 type Loại giá trị trích xuất được từ

parameter

interval

NLP.js hỗ trợ 3 loại Entity chính

• Enum Named Entity: NLP.js sẽ lưu trữ Entity dưới dạng một từ điển và một giá

trị trả về. Nếu có một xâu con trong câu đầu vào so gần khớp với 1 từ trong enum sử dụng Edit Distance thì NLP.js sẽ trả về vị trị của từ đó cũng như giá trị của nó

• Regular Expression Named Entity: NLP.js hỗ trợ sử dụng biểu thức thường quy

(Regular Expression) để bắt các thực thể có cú pháp xác định được bởi biểu thức thường quy

• Trim Named Entity: NLP.js hỗ trợ sử dụng các từ ngữ như là một Delimiter để

xác định Entity, nó sẽ trim delimiter đi và hiển thị giá trị thỏa mãn luật của trim entity. NLP.js đang hỗ trợ những luật sau

o Between: Giữa một xâu <a> và <b>

o After: Sau một xâu <a>

o After First: Sau xâu <a> đầu tiên xuất hiện trong câu

o After Last: Sau xâu <a> cuối cùng xuất hiện trong câu.

o Before: Trước một xâu <a>

o Before First: Trước xâu <a> đầu tiên xuất hiện trong câu

o Before Last: Trước xâu <a> cuối cùng xuất hiện trong câu.

Ngoài việc hỗ trợ người dùng cài đặt các Entity. NLP.js được tích hợp sẵn một số built- in Entity (được hỗ trợ bởi Duckling), Một số built-in Entity được hỗ trợ sẽ được liệt kê tại bảng dưới đây

64

Bảng 3.5 Bảng các Entity được hỗ trợ bởi Duckling

STT Tên thuộc tính Mơ tả Ví dụ

1 Email Xác định một xâu con là

Email My email is something@somehost.com please write me 2 Phone Number Xác định một xâu con là số điện thoại (hỗ trợ mã vùng) So here is my number +1 541- 754-3010 callme maybe

3 URL Xác định một xâu con là

một đường dẫn

The url is

https://something.com

4 Number Xác định một xâu con là

một số (hỗ trợ số biểu diễn bằng chữ nhưng chỉ với một số ngôn ngữ)

This is 12 This is twelve

5 Ordinal Xác định một xâu con là

một số thứ tự (chỉ với một số ngôn ngữ)

He was 2nd

6 Dimenstion Xác định một xâu con là

một thước đo trong không gian (độ dài, diện tích, thời tiết, …)

120km

7 Quantity Xác định một xâu con là

định lượng của một vật thể

three cups of sugar

8 Amount of

money

Xác định một xâu con là một số tiền

65

9 Date Xác định một xâu con là

một điểm thời gian

12/12/2019 at 9am

Sentiment: Sentiment, hay cịn gọi là tính chất, là một dạng entity đặc biệt để diễn tả tính chất của một câu nói ví dụ như sau

Thời tiết ngày mai thế nào?

Ta có thể thấy Chatbot sẽ khơng thể hiểu được người dùng muốn hỏi thời tiết ở đâu (ít nhất là nếu khơng có ngữ cảnh cho trước). Vì vậy ta có thể gắn tính chất của câu này là “missing_location” Chatbot nếu nhận thấy có trait này có thể dị về các câu trước đó hoặc tìm trong ngữ cảnh của nó xem có địa điểm nào được nhắc đến hay khơng và thực hiện việc tra cứu dựa trên thơng tin đã thu thập được. Cho một ví dụ khác

Người dùng: Cho mình hỏi thời tiết ở Hà Nội thế nào được không? Chatbot: Thời tiết ở Hà Nội hiện tại đang là nhiều mây nhé bạn Người dùng: M** cho t** biết thời tiết ở Hà Nội như nào nhanh. Chatbot: Bạn ơi đừng nóng, thời tiết ở Hà Nội đang nhiều mây nhé

Cùng có một ý định là hỏi thời tiết ở Hà Nội nhưng ta dễ thấy 2 câu này có 2 giọng điệu rất khác nhau. Hệ thống trait có thể giúp nhà phát triển nhận định được những tính chất này và có biện pháp hành động hiệu quả nhất để tối ưu hóa trải nghiệm người dùng. Cấu tạo của một sentiment như sau:

Bảng 3.6 Bảng danh sách thuộc tính của Sentiment

STT Tên thuộc tính Mơ tả Ví dụ

1 id Chuỗi định danh của trait

theo quy chuẩn UUID/GUID

7cab9b55-875f-4c19- 8bbc-df4930b9eb34

66

3 confidence Độ tự tin của chương trình về

entity này phạm vi từ 0-1

0.7655

Utterance: Utterance, một câu nói, chính là thành phần xử lý trung tâm của NLP.js. Một Utterance sẽ có thể có một hoặc nhiều intent, một hoặc nhiều entity parameter và một hoặc nhiều trait. Nhà phát triển cần phải cung cấp utterance đã được gán nhãn để Chatbot có thể học các tính chất này cũng như việc phân tích các utterance mà khách hàng cung cấp chính là nhiệm vụ của Chatbot. Lấy ví dụ sau đây

Cho mình hỏi thời tiết Hà Nội ngày mai như thế nào khơng? Mình cảm ơn

Ta có intent của đoạn này là “get_weather”, parameter là “Hà Nội” – một địa điểm và “Ngày mai” – một mốc thời gian, Sentiment của đoạn này là người dùng muốn cảm ơn. Với những thông tin này ta có thể tạo ra một phản hồi thuyết phục cho Chatbot như sau

Thời tiết ở Hà Nội ngày mai là khơng mưa nhé, khơng có gì đâu bạn.

Như vậy các thành phần chính của NLP.js là một cách đơn giản mà hiệu quả để xử lý đầu vào của người dùng, tránh được đa số các khuyết điểm đã được nêu trong phần thiết kế Chatbot.

67

4 THIẾT KẾ HỆ THỐNG

4.1 Xác định yêu cầu

4.1.1 Sơ đồ ca sử dụng

Sơ đồ ca sử dụng cấp cao được biểu hiện như hình dưới đây. Các ca sử dụng trong sơ đồ được tổng qt hóa để phù họp với quy mơ của báo cáo

Hình 4.1 Sơ đồ ca sử dụng

4.1.2 Đặc tả ca sử dụng

Module 1: Hệ thống xác thực người dùng

UC1-1 Đăng nhập

Người tạo Nguyễn Ngọc

Đăng

Ngày tạo 14/3/2021

Tác nhân chính Người dùng Tác nhân phụ Khơng có

68

Xảy ra khi Người dùng có thơng tin tài khoản để đăng nhập

Điều kiện trước UC Khơng có

Điều kiện sau UC POST-1: Nếu người dùng đăng nhập vào hệ thống. Hệ thống

tạo ra một session đăng nhập mới cho người dùng Dòng sự kiện cơ

bản

1-1.0. Đăng nhập

1. Từ màn hình chính, người dùng chọn màn hình đăng nhập 2. Người dùng nhập thông tin đăng nhập vào biểu mẫu đăng nhập (Bao gồm tên đăng nhập và mật khẩu)

3. Người dùng chọn Đăng nhập để xác nhận gửi thông tin đăng nhập cho hệ thống

4. Hệ thống gửi thông báo đăng nhập thành công và điều hướng người dùng trở về màn hình chính

Dịng sự kiện thay thế

1-1.1. Người dùng chưa có tài khoản

1. Nếu người dùng chưa có tài khoản, hệ thống gợi ý người dùng đăng ký

2. Người dùng chọn đăng ký

3. Thực hiện ca sử dụng Đăng kí (Tham khảo UC1-2) Dịng sự kiện ngoại

lệ

1-1.0E1. Thông tin đăng nhập bị thiếu

1. Hệ thống thông báo trường nhập liệu bị thiếu

2a. Nếu người dùng chọn chỉnh sửa, trở lại bước 2 của 1-1.0 2b. Nếu không, kết thúc ca sử dụng

1-1.0E2. Thông tin đăng nhập không hợp lệ

1. Hệ thống thông báo thông tin đăng nhập không hợp lệ 2a. Nếu người dùng chọn chỉnh sửa, trở lại bước 2 của 1-1.0

69

2b. Nếu không, kết thúc ca sử dụng

Độ ưu tiên Cao

Tần suất sử dụng Ít nhất 10 lần trong 1 ngày

Thơng tin bổ sung Khơng có

Ngầm định Khơng có

UC1-2 Đăng ký

Người tạo Nguyễn Ngọc

Đăng

Ngày tạo 14/3/2021

Tác nhân chính Người dùng Tác nhân phụ Khơng có

Mơ tả Là người dùng, tôi muốn đăng ký một tài khoản mới cho hệ

thống

Xảy ra khi Người dùng chưa có tài khoản hoặc có nhu cầu đăng ký một tài

khoản mới

Điều kiện trước UC PRE-1: Người dùng đang ở màn hình đăng ký

Điều kiện sau UC POST-1: Hệ thống tạo ra một tài khoản mới trong hệ thống

Dòng sự kiện cơ bản

1-2.0. Đăng ký

1. Từ màn hình đăng nhập, người dùng chọn màn hình đăng ký 2. Người dùng nhập thông tin đăng ký vào biểu mẫu đăng nhập (Bao gồm tên đăng nhập, mật khẩu, xác nhận và email)

3. Người dùng chọn Đăng ký để xác nhận gửi thông tin đăng ký cho hệ thống

70

4. Hệ thống gửi thông báo đăng ký thành công và điều hướng người dùng trở về màn hình đăng nhập Dịng sự kiện thay thế Khơng có Dịng sự kiện ngoại lệ

1-2.0E1. Thông tin đăng nhập bị thiếu

1. Hệ thống thông báo trường nhập liệu bị thiếu

2a. Nếu người dùng chọn chỉnh sửa, trở lại bước 2 của 1-1.0 2b. Nếu không, kết thúc ca sử dụng

1-2.0E2. Tên tài khoản trùng với tài khoản có sẵn

1. Hệ thống thông báo tên tài khoản trùng đăng ký với tài khoản có sẵn

2a. Nếu người dùng chọn chỉnh sửa, trở lại bước 2 của 1-2.0 2b. Nếu không, kết thúc ca sử dụng

1-2.0E2. Mật khẩu xác nhận không trùng với mật khẩu đã nhập 1. Hệ thống thông báo mật khẩu xác nhận không trùng với mật khẩu đã nhập

2a. Nếu người dùng chọn chỉnh sửa, trở lại bước 2 của 1-2.0 2b. Nếu không, kết thúc ca sử dụng

Độ ưu tiên Cao

Tần suất sử dụng Tùy người dùng

Thông tin bổ sung Khơng có

71

UC1-3 Đổi mật khẩu

Người tạo Nguyễn Ngọc

Đăng

Ngày tạo 14/3/2021

Tác nhân chính Người dùng Tác nhân phụ Khơng có

Mơ tả Là người dùng, tôi muốn đổi mật khẩu tài khoản

Xảy ra khi Người dùng có nhu cầu đổi tài khoản

Điều kiện trước UC PRE-1: Người dùng đã đăng nhập vào hệ thống

PRE-2: Người dùng đã định hướng đến màn hình chỉnh sửa thông tin tài khoản

Điều kiện sau UC POST-1: Hệ thống đổi mật khẩu cho người dùng

Dòng sự kiện cơ bản

1-3.0. Đổi mật khẩu

1. Từ màn hình sửa đổi thơng tin người dùng. Người dùng chọn mục bảo mật

2. Người dùng nhập thông tin mật khẩu vào biểu mẫu đổi mật khẩu (Bao gồm mật khẩu cũ, mật khẩu mới, xác nhận mật khẩu mới)

3. Người dùng chọn Lưu mật khẩu để xác nhận gửi thông tin đăng đổi mật khẩu cho hệ thống

4. Hệ thống gửi thông báo đổi mật khẩu thành công và điều hướng người dùng trở về màn hình đăng nhập

Dòng sự kiện thay thế

72 Dịng sự kiện ngoại

lệ

1-3.0E1. Thơng tin đổi mật khẩu bị thiếu 1. Hệ thống thông báo trường nhập liệu bị thiếu

2a. Nếu người dùng chọn chỉnh sửa, trở lại bước 2 của 1-3.0 2b. Nếu không, kết thúc ca sử dụng

1-3.0E2. Sai mật khẩu cũ

1. Hệ thống thông báo mật khẩu cũ nhập sai

2a. Nếu người dùng chọn chỉnh sửa, trở lại bước 2 của 1-3.0 2b. Nếu không, kết thúc ca sử dụng

1-3.0E2. Mật khẩu xác nhận không trùng với mật khẩu đã nhập 1. Hệ thống thông báo mật khẩu xác nhận không trùng với mật khẩu đã nhập

2a. Nếu người dùng chọn chỉnh sửa, trở lại bước 2 của 1-3.0 2b. Nếu không, kết thúc ca sử dụng

Độ ưu tiên Cao

Tần suất sử dụng Tùy người dùng

Thông tin bổ sung Khơng có

Ngầm định Khơng có

Module 2: Hệ thống Chatbot

UC2-1 Gửi tin nhắn

Người tạo Nguyễn Ngọc

Đăng

73

Tác nhân chính Người dùng Tác nhân phụ Chatbot

Mô tả Là người dùng, tơi muốn gửi tin nhắn để Chatbot có thể trả lời

Xảy ra khi Người dùng muốn hỏi Chatbot

Điều kiện trước UC PRE-1: Người dùng đang ở màn hình trị chuyện với Chatbot

Điều kiện sau UC POST-1: Chatbot nhận được tin nhắn của người dùng

Dòng sự kiện cơ bản

2-1.0. Gửi tin nhắn

1. Người dùng ở màn hình trị chuyện với Chatbot

2a. Nếu người dùng chọn nhập tin nhắn vào ô nhập liệu, chuyển đây là ca sử dụng gửi tin nhắn chữ (Tham khảo UC2-2)

2b. Nếu người sử dụng chọn nút thu âm, đây là ca sử dụng gửi tin nhắn âm thanh (Tham khảo UC2-3)

3. Sau khi có kết quả là tin nhắn người dùng muốn gửi. Gửi tin nhắn đi tới hệ thống và đợi phản hồi của Chatbot

4. Hiển thị phản hồi của Chatbot ra giao diện Dòng sự kiện thay

thế

2-1.1. Gửi tin nhắn khác

1. Sau khi nhận được phản hồi từ Chatbot, người dùng có thể gửi tin nhắn khác

2. Trở về bước 1 UC2-1.0 Dòng sự kiện ngoại

lệ

2-1.0E1. Chatbot không hiểu được tin nhắn của người dùng 1. Hệ thống trả về phản hồi Chatbot không thể hiểu được yêu cầu người dùng

2. Hiển thị phản hồi đó ra giao diện, kết thúc use case

74

1. Hệ thống trả về phản hồi Chatbot không thể hiểu rõ được yêu cầu người dùng

2. Hiển thị phản hồi đó ra giao diện, kết thúc use case

Độ ưu tiên Cao

Tần suất sử dụng Tùy người dùng

Thơng tin bổ sung Khơng có

Ngầm định Khơng có

UC2-2 Gửi tin nhắn chữ

Người tạo Nguyễn Ngọc

Đăng

Ngày tạo 14/3/2021

Tác nhân chính Người dùng Tác nhân phụ Khơng có

Mơ tả Là người dùng, tơi muốn gửi tin nhắn văn bản để Chatbot có

thể trả lời

Xảy ra khi Người dùng muốn hỏi Chatbot dưới dạng văn bản

Điều kiện trước UC PRE-1: Người dùng đang ở màn hình trị chuyện với Chatbot PRE-2: Người dùng đang nhập tin nhắn vào ô nhập liệu

Một phần của tài liệu Xây dựng chatbot trợ lý ảo trên nền web (Trang 61 - 114)

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

(186 trang)