Giải quyết các vấn đề phát sinh trong xây dựng Chatbot

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

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

3.2 Lý thuyết xây dựng Chatbot

3.2.2 Giải quyết các vấn đề phát sinh trong xây dựng Chatbot

Trước hết lấy ví dụ sau

Người dùng: Bạn có khỏe khơng?

Ở đây rõ ràng người dùng có ý định hỏi giống như câu “Bạn khỏe không?” Tuy nhiên Chatbot sẽ không thể nhận ra được ý nghĩa của câu này nếu nó tiếp tục thực hiện so khớp với xâu “Bạn khỏe không?” (Kết quả so khớp sẽ là sai). Hướng giải quyết vấn đề này có thể bao gồm việc chỉ sử dụng từ khóa nhất định (Ví dụ như cụm từ “khỏe khơng”) và so khớp nó với bất kì chuỗi con nào trong câu hoặc sử dụng các thuật tốn tìm chuỗi mờ (Fuzzy String Search) bằng cách chia các từ trong câu ra một chuỗi các từ, chia các câu từ khóa ra thành một chuỗi các từ khác. Sau đó tính tốn khoảng cách Levenshtein để xác định khoảng cách nhỏ nhất hoặc khoảng cách nằm trong một giới hạn nhất định để thỏa mãn điều kiện so khớp với từ khóa. Trong thực tế ta có thể kết hợp cả 2 phương pháp này để tăng tỉ lệ Chatbot có thể xác định được từ khóa

51 Tiếp theo, ta xét ví dụ sau

Người dùng: Bạn khỏe không? Chatbot: Tôi khỏe

Người dùng: Bạn khỏe không? Chatbot: Tôi khỏe

Người dùng: Bạn khỏe không? Chatbot: Tôi khỏe

Ta dễ dàng thấy được vấn đề ở đây đó là: với đầu vào giống nhau, Chatbot sẽ trả về kết quả giống nhau. Điều này làm mất đi tính tự nhiên của một Chatbot và người dùng sẽ phàn nàn về việc phản hồi của nó là q thơ cứng (Canned response). Để giải quyết vấn đề này. Ta có thể tạo ra một tập hợp các phản hồi mà Chatbot có thể lựa chọn nếu từ khóa tương ứng được so khớp. Để tránh tình trạng lặp lại, ta có thể lưu phản hồi trước đó của Chatbot đối với từ khóa này và tránh phản hồi đó nếu gặp lại từ khóa đó lần tới Tiếp đến, ta xét trường hợp Chatbot được thiết kế như sau

Từ khóa: “Tên bạn là gì?”

Phản hồi: “Tên tơi là Chatbot A” Từ khóa: “Bạn là gì?”

Phản hồi: “Tơi là một Chatbot” Xét đoạn hội thoại sau

Người dùng: Tên của bạn là gì? Chatbot: Tên tơi là Chatbot A

Ở ví dụ trên, đầu vào của người dùng sẽ trùng với cả 2 từ khóa “Tên bạn là gì?” và “Bạn là gì?”. Phản hồi nào mà Chatbot nên lựa chọn? Rõ ràng phải là phản hồi của từ khóa “Tên bạn là gì?”. Vì vậy ta cần phải có cách để xếp hạng các từ khóa sao cho Chatbot

52

có thể chọn ra phản hồi phù hợp nhất. Cách đơn giản nhất ở đây sẽ là lựa chọn từ khóa có độ dài lớn nhất

Ta tiếp tục xét ví dụ sau Người dùng: 1+1 bằng mấy? Chatbot: Bằng 2

Người dùng: 2+1 bằng bao nhiêu? Chatbot: Bằng 3

Với ví dụ này, ta thấy từ khóa để u cầu tính tốn có thể là “Bằng mấy” hoặc “Bằng bao nhiêu”, “mấy” và “bao nhiêu” có thể được sử dụng thay thế cho nhau. Vì vậy ta gọi chúng là từ khóa tương đương và ta sẽ phải tìm cách để biểu diễn chúng trong chương trình Chatbot của chúng ta

Tiếp tục với ví dụ dưới đây

Người dùng: Bạn khơng hề có thật!

Chatbot: Vậy bạn nghĩ tơi khơng hề có thật? Người dùng: Bạn chẳng biết cái gì cả

Chatbot: Vậy bạn nghĩ tơi chẳng biết cái gì cả?

Ta thấy người dùng đưa ra 2 đầu vào rất khác nhau về mặt mục đích và khá chắc chắn rằng Chatbot của chúng ta không thể lường trước được những đầu vào này. Tuy nhiên với một vài kĩ thuật chuyển đổi ngơi từ và phản hồi theo khn mẫu, ta có thể giúp cho Chatbot đối phó được với những câu này một cách thuyết phục hơn. Một ví dụ về cách xử lý có thể như sau

• Thiết lập một khn mẫu phản hồi, ví dụ như “Vậy bạn nghĩ *” với dấu * tương

ứng với một chuỗi bất kì (wildcard), ta có thể đưa ngun câu nói của người dùng vào chuỗi wildcard này

• Ta lập một công thức chuyển đổi ngôn từ khi thiết lập câu từ khn mẫu trên. Ví

53

thứ hai) biến đổi các từ đó thành các đại từ nhân xưng ngơi thứ nhất (“Tơi”, “mình”) hoặc ngược lại, nếu tìm thấy đại từ nhân xưng ngơi thứ nhất, biến đổi nó thành đại từ nhân xưng ngôi thứ hai

Cần phải lưu ý rằng ta khơng nên lạm dụng cách làm này bởi vì những phản hồi như thế này thường ít khi tạo ra được giá trị trong cuộc trò chuyện giữa người và Chatbot. Nếu sử dụng nhiều người dùng sẽ dễ dàng nhận ra khuôn mẫu của Chatbot và ta lại rơi vào trường hợp trả lời rập khuôn, thô cứng

Ta lại tiếp tục với ví dụ sau đây Từ khóa: “Bạn là ai”

Phản hồi: “Tôi là Chatbot A” Xét đoạn hội thoại sau

Người dùng: Bạn là ai? Chatbot: Tôi là Chatbot A

Người dùng: Bạn là ai mà dám lên mặt với tôi? Chatbot: Tôi là Chatbot A

Người dùng: Ca sĩ yêu thích của bạn là ai? Chatbot: Tôi là Chatbot A

Người dùng: Tôi biết bạn là ai. Rất vui được gặp bạn Chatbot: Tôi là Chatbot A

Vấn đề xảy ra ở đây chính là việc Chatbot khơng xác định được vị trí của từ khóa có thể làm ảnh hưởng đến ý nghĩa của đầu vào. Cách giải quyết ở đây sẽ là thêm vào kí hiệu để Chatbot biết được từ khóa đó nằm ở đâu trong câu thì sẽ dùng phản hồi đó. Với chuỗi ví dụ trên, ta có thể kí hiệu rằng nếu chuỗi “Bạn là ai” được tìm thấy ở đầu câu thì phản hồi “Tơi là Chatbot A” sẽ là phù hợp

54 Người dùng: Ca sĩ yêu thích của bạn là ai? Chatbot: Tơi thích Lady Gaga

Người dùng: Tại sao?

Chatbot: Vì bộ đồ cơ ấy mặc rất thú vị với tôi Và đoạn hội thoại sau

Người dùng: Tại sao?

Chatbot: Tơi khơng hiểu bạn đang hỏi gì

Cùng là câu “Tại sao?” nhưng ta đang mong đợi Chatbot trả lời theo 2 hướng khác nhau. Tất cả dựa vào ngữ cảnh của cuộc trò chuyện. Để giữ cho ứng dụng đơn giản, ta sẽ chỉ xét ngữ cảnh là tập hợp tất cả các câu hội thoại giữa Chatbot và người dùng trong một ca giao tiếp. Ngữ cảnh ở đoạn hội thoại đầu tiên trước câu hỏi “Tại sao?” bao gồm việc người dùng đã hỏi Chatbot ai là ca sĩ mà chatbot yêu thích với câu trả lời nhận về là Lady Gaga. Vì vậy mà Chatbot có thể hiểu được câu hỏi sẽ là “Tại sao bạn thích ca sĩ Lady Gaga?” và có phản hồi tương ứng. Chính vì vậy lưu trữ ngữ cảnh cũng là một công việc quan trọng để tạo nên một Chatbot có thể giao tiếp ở mức thuyết phục

Tiếp tục xét đoạn hội thoại sau Người dùng: Chào bạn

Chatbot: Chào bạn, bạn tên gì? Người dùng: Mình tên A

Chatbot: Mình có thể giúp gì cho A?

Ở đây Chatbot đã chủ động hỏi người dùng họ tên gì, nếu người dùng trả lời đúng theo từ khóa mà Chatbot đã dự đốn (Ví dụ như “Tên tơi là *”, “Tên mình là *”, “Mình tên *”, …) Chatbot sẽ có thể lưu lại thơng tin đó để tăng tính cá nhân của cuộc hội thoại

55

Chatbot: Chào bạn, mình có thể giúp gì được cho bạn?

Người dùng: Cho mình hỏi thời tiết ở thành phố X như thế nào Chatbot: Thời tiết nhiều mây, nhiệt độ 23.4 độ C nhé bạn

Ta thấy rằng, để xây dựng một chatbot cung cấp thơng tin, ta sẽ phải có một tầng tìm kiếm thơng tin từ các API khác để có thể soạn ra phản hồi cho người dùng.

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

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

(186 trang)