Xây dựng chatbot trên nền tảng FPT.AI
4. Xử lý ngôn ngữ tự nhiên - NLP
Dạy Bot hiểu được các câu hỏi của Khách hàng
Xử lý ngôn ngữ tự nhiên - NLP (Natural Language Processing) là một tính năng AI cốt lõi của nền tảng FPT.AI Conversation. Để Bot có thể hiểu được các câu nói của người dùng, người thiết kế bot cần phải dạy bot một lượng kiến thức cụ thể.
Kiến thức này bao gồm:
Câu mẫu: Các câu mà khách hàng sử dụng để hỏi về những vấn đề mà họ có nhu cầu cần giải đáp.
Ý định: Mục đích, ý định của các câu hỏi đó.
Từ khóa: Các thông tin quan trọng và cần thiết trong câu, giúp bot hiểu vấn đề mà người dùng đang nói đến để đưa ra 1 câu trả lời phù hợp.
Loại thực thể: Biểu thị ý nghĩa của các Từ khóa trên.
Từ điển: Bổ sung thêm các từ thay thế, từ đồng nghĩa để Bot có thể nhận diện ý định được tốt hơn.
Ví dụ:
Câu mẫu: Tôi cần mua 2 chiếc điện thoại giao đến số 17 Duy Tân | ||
---|---|---|
Ý định | Từ khóa | Loại thực thể |
Mua hàng | 2 | Số lượng |
Điện thoại | Sản phẩm | |
17 Duy Tân | Địa chỉ |
Lưu ý:
Câu mẫu cực kì quan trong đối với chatbot. Do đó, bạn nên bổ sung càng nhiều câu mẫu càng tốt. Sự đa dạng của câu mẫu sẽ giúp chatbot có thể hiểu được nhiều câu nói khác nhau của người dùng.
Nên xác định các Ý định được nhiều người dùng quan tâm nhất dựa vào lịch sử trò chuyện của khách hàng. Sau đó, bổ sung thật nhiều và đa dạng câu mẫu cho các ý định đó.
4.1. Câu mẫu và Ý định
Câu mẫu là một câu nói bất kì của người dùng. Mỗi câu mẫu đều có một ý định cụ thể. Để dạy bot hiểu các câu nói đa dạng của người dùng, bạn phải tạo ra thật nhiều câu mẫu có chung 1 ý định.
Ý định là mục đích của câu người dùng nói. Một ý định sẽ bao gồm nhiều câu mẫu có chung 1 mục đích và ý nghĩa
Có 2 cách nhập câu mẫu và ý định lên hệ thống:
Cách 1: Tạo câu mẫu thủ công
Bước 1: Trong mục NLP, nhấn Câu mẫu (1) -> chọn Tạo Câu mẫu (2)
Bước 2: Nhập nội dung câu mẫu (3)
Bước 3: Tạo ý định phù hợp
Bước 4: Nhấn Lưu để hoàn tất tạo câu mẫu.
Cách 2: Nhập câu mẫu từ file excel
Bước 1: Trong mục NLP, nhấn Câu mẫu (1) -> chọn Nhập câu mẫu từ file excel
Bước 2: Nhấn Browse để tải file excel đã chuẩn bị
Bước 3: Nhấn Xác nhận để hoàn tất tải file lên
Lưu ý:
- File excel chứa Câu mẫu và Ý định phải trình bày theo đúng định dạng sau:
Sau khi tạo xong dữ liệu Câu mẫu và ý định cho bot, bạn phải nhấn Nút "Huấn luyện" để dạy bot hiểu các kiến thức mới đó.
Bạn có thể kiểm tra xem Bot đã hiểu câu nói đó chưa bằng cách nhấn vào nút "Kiểm tra NLP" trên giao diện màn hình, nhập Câu mẫu đó và xem kết quả trả về.
Bạn cũng có thể tạo trước các ý định tại trang Ý định:
Bước 1: Tại mục NLP, ấn Ý định -> nhập Tên ý định
Bước 2: Nhập nội dung mô tả Ý định đó. Nội dung này sẽ được hiển thị trong câu gợi ý của bot khi bot chưa chắc chắn câu trả lời.
Bước 3: Nhấn nút Thêm Ý định để hoàn tất.
Lưu ý: Khi tạo Ý định mới tại mục NLP với câu mẫu hoặc danh sách câu mẫu từ file excel, bản phải chỉnh sửa lại nội dung mô tả của Ý định thành các câu đại diện có ý nghĩa. Bot sẽ sử dụng mô tả của ý định để làm các câu hỏi gợi ý trong trường hợp Bot phân vân đưa ra câu trả lời.
4.2. Từ khóa và Loại thực thể
Từ khóa là các thông tin quan trọng trong câu mẫu, quyết định đến logic trả lời của Bot. Mỗi từ khóa đều thể hiện 1 ý nghĩa biểu trưng nào đó, được gọi là Loại thực thể.
Tùy vào nghiệp vụ của từng Chatbot, bạn cần tạo ra các loại thực thể khác nhau hoặc có thể sử dụng sẵn thực thể hệ thống - loại thực thể được xây dựng, thiết lập sẵn trên hệ thống của FPT.AI nếu phù hợp (địa chỉ $address, ngày giờ $datetime, email $email, số $number)
Chatbot FPT.AI Conversation đưa ra khái niệm về 2 loại thực thể được tùy chỉnh theo nghiệp vụ doanh nghiệp: Thực thể thông tin và thực thể đối tượng
4.2.1. Thực thể thông tin
Thực thể thông tin thường là thông tin của người dùng, gồm nhiều giá trị đa dạng, khó kiểm soát hết. Ví dụ: Tên người, số điện thoại, số chứng minh nhân dân,… Thực thể hệ thống $entity cũng được gọi là 1 loại thực thể thông tin. Với loại thực thể này, bạn nên chọn Phương pháp trích xuất theo tiên đoán và trích xuất chính xác để Bot có thể nhận diện nhiều giá trị hơn.
Ví dụ: Câu mẫu: ***Giao hàng cho tôi đến địa chỉ 17 Duy tân, số điện thoại 0123456789****
Ý định của câu mẫu trên là “giao hàng”
Câu mẫu trên có 2 thông tin quan trọng để quyết định nhân viên giao hàng sẽ giao hàng đúng người, đúng địa chỉ. Vì vậy, 17 Duy Tân là từ khóa biểu thị loại thực thể “địa chỉ”; 0123456789 là từ khóa biểu thị loại thực thể "Số điện thoại”.
Trong ví dụ này - Thực thể thông tin, ngoài việc trả lời khách hàng, Bot sẽ làm thêm nhiệm vụ là lưu trữ thông tin của khách hàng trên hệ thống quản trị Bot. Để thực hiện Bước này, người thiết kế bot phải dùng Thẻ JSON API để làm phương tiện truyền thông tin.
Thực thể hệ thống
Thực thể hệ thống là loại thực thể mà nền tảng FPT.AI Conversation đã xây dựng sẵn, cho phép người dùng có thể truy vấn các thông tin địa chỉ, email, ngày giờ, và các con số bất kỳ.
Bạn chỉ cần gán 1 thông tin trong Câu mẫu với các Thực thể kể trên, thì mặc định, khi khách hàng của bạn cung cấp 1 thông tin liên quan, Bot sẽ nhận diện được mà bạn không cần phải dạy nhiều dữ liệu thực thể cho bot.
- $address: Thực thể địa chỉ
Bot có thể nhận diện các địa chỉ cụ thể của Việt Nam từ cấp thấp nhất (số nhà, số ngõ…).
Ví dụ: “số 17 Duy tân, Cầu giấy, Hà nội “. Kết quả giá trị thực sẽ được chuẩn hóa qua API (Sử dụng thẻ JSON API)
- $datetime: Thực thể ngày giờ
Bot có thể nhận diện được giờ phút, ngày tháng năm.
Ví dụ:
- $email: Thực thể email
Bot có thể nhận diện email bất kì.
Ví dụ:
- $number: Thực thể là các số
Bot nhận diện được các số bất kì như số chỉ số lượng...
4.2.2. Thực thể đối tượng
Thực thể đối tượng thường là các sản phẩm hoặc nghiệp vụ nào đó cố định trong 1 doanh nghiệp. Loại thực thể này có giới hạn, và người dùng có thể bổ sung đầy đủ dữ liệu đào tạo cho Bot để Bot nhận diện được. Thực thể đối tượng chính là loại thực thể quyết định đến logic trả lời của Chatbot (Cùng 1 ý định nhưng hướng tới nhiều đối tượng khác nhau)
Câu mẫu: “Giá của iphone X là bao nhiêu”, “Giá của Samsung s9 là bao nhiêu”
Hai câu mẫu trên đều chung mục đích là hỏi giá. Vì vậy, chúng có chung Ý định là “hỏi giá”
Tuy nhiên, giá cả của 2 loại sản phẩm này là khác nhau. Vì vậy, để đưa ra câu trả lời chính xác, Bot phải đưa ra 2 câu trả lời khác nhau
Kết luận: iphone X và Samsung s9 được gọi là Từ khóa. Đây là 2 loại sản phẩm. Vì thế, loại thực thể ở đây là “sản phẩm”.
Trong ví dụ này - Thực thể đối tượng, Bot cần đưa ra 2 câu trả lời khác nhau. (Xem cách thiết lập câu trả lời theo thực thể đối tượng)
Lưu ý:
- Khi xây dựng chatbot, tùy vào nghiệp vụ, nhu cầu cụ thể, bạn cần tạo mới các loại thực thể thông tin và thực thể đối tượng hoặc có thể tận dụng 1 số thực thể hệ thống có sẵn nếu cần thiết.
- Việc xác định loại thực thể là tiền đề thiết lập câu trả lời của Bot.
4.3. Các phương pháp trích xuất thực thể
Tùy vào từng bài toán, nền tảng FPT.AI Conversation cho phép người tạo Bot có thể dạy Bot hiểu chính xác các Từ khóa, ứng với từng loại thực thể đã dạy; hoặc có thể nhận diện được thêm các từ khóa tương tự khác (áp dụng kỹ thuật học máy). Đó là 2 phương pháp trích xuất thông tin: Trích xuất chính xác và Trích xuất theo tiên đoán
4.3.1. Trích xuất chính xác:
Với phương pháp trích xuất chính xác, Bot sẽ tìm kiếm từ khóa và loại thực thể trong danh sách Từ khoá.
Phương pháp này thường được áp dụng đối với các kịch bản có từ khóa cố định và có thể được xác định trước.
Ví dụ 1: “Giá của iphone X là bao nhiêu”, “Giá của Samsung s9 là bao nhiêu”
Loại thực thể “sản phẩm" trong 2 câu trên là “iphone X” và “Samsung s9”, chatbot đã sử dụng phương pháp trích xuất chính xác.
Ví dụ 2: Một công ty cung cấp bảo hiểm có nhiều loại sản phẩm bảo hiểm khác nhau thì:
“Bảo hiểm sức khỏe”, “Bảo hiểm tai nạn”, “Bảo hiểm xe cơ giới”… là các Từ khoá
“sản phẩm bảo hiểm” là Loại thực thể.
Bạn phải đánh dấu Từ khoá với Loại thực thể trên theo phương pháp trích xuất chính xác để bot có thể trích xuất thông tin trong câu mẫu.
Bước 1: Trong mục NLP, nhấn Câu mẫu -> Đánh dấu Từ khoá với loại thực thể.
Bước 2: Vào mục NLP -> Nhấn Loại thực thể -> Sửa phương pháp trích xuất loại thực thể đối tượng thành Trích xuất chính xác.
Bước 3: Trong mục Từ khóa, hệ thống đã lưu các từ khóa được tag (bôi đen) tại trang Câu mẫu. Tại đây, bạn có thể bổ sung thêm từ đồng nghĩa (các từ có nghĩa tương đương, hoặc từ viết tắt...) cho các từ khóa này, để Bot có thể nhận diện được đúng Ý định của người dùng.
Bước 4: Nhấn "Huấn luyện" để đào tạo các dữ liệu mới cho Bot.
Bước 5: Sau khi huấn luyện thành công, bạn có thể kiểm tra khả năng nhận diện các loại thực thể của Bot bằng cách ấn vào nút "Kiểm tra NLP".
Sau khi được đào tạo, Bot sẽ nhận diện được “ip X" là “iphone X", bởi bot đã có dữ liệu về sản phẩm. Nếu kiểm tra các câu khác với các sản phẩm khác ngoài danh sách các từ đồng nghĩa và từ khoá đã dạy, thì Bot sẽ không nhận diện được.
Giá trị thực là giá trị cố định trong danh sách từ khoá. Đây là giá trị được sử dụng để thiết kế câu trả lời của Bot theo từng Từ khoá. (Chi tiết xem tại kiểm tra điều kiện biến).
4.3.2. Trích xuất theo tiên đoán
Bởi Bot tìm kiếm thông tin thực thể bằng học máy, do đó bạn cần tag càng nhiều Từ khóa với Loại thực thể tương ứng càng tốt. Bot sẽ sử dụng các Câu mẫu được tag Từ khóa để tiên đoán thêm các thông tin khác (nhưng không tra cứu trong danh sách từ khóa cố định như với trích xuất chính xác).
Phương pháp này thường được áp dụng với các thông tin không thể xác định trước, ví dụ như tên người, số điện thoại, địa chỉ…
Ví dụ: Giao hàng cho tôi đến địa chỉ 17 Duy tân, số điện thoại 0123456789.
Thực thể thông tin “17 Duy Tân" và “0123456789” là một ví dụ sử dụng phương pháp trích xuất theo tiên đoán.
Bước 1: Nhập Câu mẫu (1) có chứa thông tin thực thể quan trọng. Chọn Ý định (2) và bôi đen các Từ khoá (3) rồi chọn Loại thực thể (4) tương ứng.
Nền tảng hội thoại đã cung cấp sẵn 4 loại Thực thể hệ thống là $address (địa chỉ), $datetime (ngày giờ), $email (email) và $number (số đếm), giúp bạn tiện lợi hơn trong việc tạo Chatbot.
Với những thông tin khác, bạn nhập Loại thực thể mới rồi nhấn Lưu (6).
Bước 2: Vào NLP -> Loại thực thể -> Sửa loại thực thể để sửa thực thể “so_dien_thoai” thành “trích xuất theo tiên đoán” hoặc giữ nguyên mặc định là “Cả hai”.
Bước 3: Khác với phương pháp trích xuất chính xác – Bổ sung từ đồng nghĩa với các từ khóa, phương pháp trích xuất theo tiên đoán sử dụng học máy để nhận diện thực thể. Do đó, bạn cần phải tag thêm nhiều các từ khoá khác có hình thức giống nhau để dạy bot hiểu và nhận diện được đó là loại thực thể nào.
Bước 4: Nhấn Huấn luyện để dạy Bot các thông tin thực thể mới được cập nhật.
Bước 5: Kiểm tra kết quả bằng cách nhấn vào nút Kiểm tra NLP trên giao diện. Sau đó nhập câu có chứa số điện thoại bất kì không giống với các số điện thoại đã dạy cho Bot. Bot sẽ vẫn nhận diện được đó là thực thể “so_dien_thoai".
4.4. Từ điển
Thay vì bổ sung sự đa dạng của các câu mẫu bằng phương pháp thủ công, bạn có thể thêm vào Từ điển các từ thay thế, từ đồng nghĩa với từ hoặc cụm từ đã có sẵn trong Câu mẫu, giúp khả năng nhận diện Ý định của bot chính xác hơn.
Lưu ý: Chỉ nên sử dụng từ điển cho các trường hợp cần thiết, mang tính đặc trưng trong riêng Chatbot đó. Ví dụ: CMND có từ thay thế là Căn cước công dân, chứng minh thư, CMT… Hạn chế sử dụng từ điển vì khó kiểm soát hết được các trường hợp gây nhiễu cho NLP Chatbot.
Ví dụ:
Ta có danh sách các câu mẫu trong ý định “khuyen_mai”:
Khi xử lí 1 câu mới của người dùng có cùng Ý định , Bot nhận diện đúng ý định nhưng độ tin cậy thấp. Để cải thiện độ hiểu của Bot, bạn phải bổ sung thêm nhiều Câu mẫu có cùng ý định "khuyen_mai" như: “có km k”, “có km gì ko”... Hoặc, bạn cũng có thể thêm từ km là từ thay thế cho từ “khuyến mãi". Khi khách hàng sử dụng câu có từ viết tắt “km", Bot có thể hiểu được khách hàng đang muốn hỏi về chương trình khuyến mãi.
Sau khi đã nhập xong các từ đồng nghĩa, từ thay thế trong Từ điển, bạn ấn Huấn luyện để dạy bot.
Kiểm tra NLP để đánh giá lại kết quả học tập của bot: Bot đã nhận diện đúng với độ tin cậy cao hơn.