Khái quát các bài toán xử lý ngôn ngữ tự nhiên trong phát triển hệ thống chatbot

1429

Hiện nay nhu cầu sử dụng chatbot đang ngày càng tăng lên, nhất là trong các hệ thống trực tuyến với số lượng lớn người dùng. Các hệ thống chatbot có thể được sử dụng để hỗ trợ hoặc thay thế cho nhân viên chăm sóc khách hàng trong một số tác vụ tự động hoá. Ví dụ, chatbot có thể tự động đưa ra câu trả lời cho khách hàng về các dịch vụ mà doanh nghiệp cung cấp. Sức nóng của chatbot hiện nay phần lớn là do những bước tiến vượt bậc trong ngành trí tuệ nhân tạo, nhất là trong những lĩnh vực học máy, xử lý tiếng nói, và xử lý ngôn ngữ tự nhiên.

Dưới đây là tóm tắt những chia sẻ của tiến sĩ Phạm Quang Nhật Minh – Chuyên gia xử lý ngôn ngữ tự nhiên trong buổi Hội thảo về “Học sâu trong xử lý ngôn ngữ tự nhiên: Tiếng nói và Chatbot”.

Kiến trúc cơ bản của một hệ thống giao tiếp tự động

Kiến trúc cơ bản của một hệ thống giao tiếp tự động

Trong mô hình chatbot kiểu truy xuất thông tin (retrieval-based), thành phần hiểu ngôn ngữ tự nhiên (NLU) sử dụng rất nhiều kỹ thuật xử lý ngôn ngữ tự nhiên (NLP) để phân tích câu hội thoại, xác định ý định (intent) của người dùng, trích xuất những thông tin của người dùng cung cấp. Sau đó những thông tin này được chuyển tới cho thành phần quản lý hội thoại (dialogue manager). Thành phần quản lý hội thoại sẽ xử lý thông tin và chuyển tới cho thành phần sinh ngôn ngữ để sinh ra câu hội thoại.

Bài toán xác định ý định (intent) người dùng

Việc xác định đúng ý định (intent) người dùng đóng vai trò quan trọng trong chatbot vì nó sẽ quyết định cấu trúc và kịch bản của đoạn hội thoại kế tiếp. Trong bài toán này, chúng ta phải xử lý những cách diễn đạt, dùng từ ngữ khác nhau cho cùng một intent. Chúng ta cũng cần giải quyết những hiện tượng ngôn ngữ đặc thù trong hội thoại như sai chính tả, dùng từ viết tắt, dùng teencode.

Trong miền ứng dụng đóng (closed domain), chúng ta có thể giới hạn số lượng intent. Khi đó bài toán xác định intent có thể được mô hình hoá thành bài toán phân lớp văn bản. Để xây dựng hệ thống phân lớp intent, chúng ta cần chuẩn bị một tập dữ liệu bao gồm các câu hội thoại và các intent tương ứng. Hệ phân lớp intent thường có những thành phần như hình minh hoạ dưới đây.

Những thành phần trong hệ phân lớp intent

Bài toán trích xuất thông tin

Một bài toán NLP quan trọng nữa trong chatbot là trích xuất thông tin từ câu hội thoại. Trong ví dụ ở hình vẽ dưới đây, chatbot hỗ trợ đặt vé máy bay cần xác định thông tin về điểm xuất phát, điểm cuối, thời gian xuất phát và thời gian quay lại trong những câu hội thoại của người dùng.

Chatbot hỗ trợ đặt vé máy bay

Bài toán trích xuất thông tin thường được mô hình hoá thành mô hình sequence labeling. Trong đó chúng ta học từ dữ liệu một mô hình gán nhãn cho một chuỗi các từ. Thuật toán thường dùng cho việc gán nhãn chuỗi là Conditional Random Fields với các công cụ phổ biến là CRFsuite, CRF++, hay Mallet.

Quản lý hội thoại

Hai mô hình phổ biến trong quản lý hội thoại là máy hữu hạn trạng thái (FSA) và mô hình dựa trên khung (frame-based hay slot-filling). Trong mô hình FSA, tại mỗi trạng thái, chatbot sẽ đưa ra một câu hỏi và chỉ nhận câu trả lời cho câu hỏi đó trong khi bỏ qua tất cả các thông tin không liên quan. Mô hình frame-based giải quyết nhược điểm đó bằng cách sử dụng các frame gồm các slot và các câu hỏi tương ứng cho slot đó. Chatbot sẽ hỏi cho đến khi các slot trong frame được điền hết thông tin.

Mô hình sinh hội thoại bằng Deep Learning

Mô hình sinh hội thoại bằng Deep Learning (hay còn gọi là neural chatbot) là một mô hình mới được phát triển gần đây. Ý tưởng của mô hình này là học một mô hình sinh hội thoại từ những dữ liệu hội thoại sẵn có. Mô hình này dựa trên một phương pháp trong Deep Learning gọi là sequence-to-sequence (seq2seq), được đề cập đến trong bài báo “Sequence to Sequence Learning with Neural Networks” (http://tinyurl.com/kr57pde) của nhóm tác giả đến từ công ty Google. Mô hình seq2seq bao gồm 2 mạng neural hồi quy (Reccurrent Neural Network). Mạng neural thứ nhất đóng vai trò mã hoá (encode) câu hội thoại thành một vector số thực và mạng neural thứ hai đóng vai trò giải mã  (decode) và dự đoán các từ trong câu phản hồi. Mô hình seq2seq được minh hoạ như trong hình vẽ dưới đây.

Mô hình seq2seq

Mô hình sinh hội thoại yêu cầu số lượng các đoạn hội thoại rất lớn (nhiều khi tới vài trăm nghìn đoạn hội thoại) để học được mô hình sinh tốt. Chất lượng của chatbot phát triển theo mô hình này phụ thuộc lớn vào dữ liệu hội thoại đầu vào. Một ví dụ nổi tiếng của chatbot được tạo ra theo mô hình này là chatbot Tay AI của Microsoft. Chatbot Tay AI đã gây ra một vụ scandal khi phản hồi người dùng bằng những câu phân biệt chủng tộc và giới tính. Nguyên nhân là do Tay AI đã bị một số người dùng chủ đích “huấn luyện” như vậy thông qua những đoạn hội thoại.

Link slide buổi chia sẻ: https://www.slideshare.net/minhpqn/cc-bi-ton-x-l-ngn-ng-t-nhin-trong-pht-trin-h-thng-chatbot

Thông tin tác giả: Phạm Quang Nhật Minh – Ban công nghệ FPT

Anh Phạm Quang Nhật Minh nhận bằng tiến sĩ về khoa học thông tin tại viện JAIST, Nhật Bản vào năm 2013. Anh đã xuất bản ba bài báo khoa học và sáu bài kỷ yếu hội nghị trong lĩnh vực xử lý ngôn ngữ tự nhiên. Lĩnh vực nghiên cứu của anh bao gồm: suy diễn trong văn bản (Textual Entailment Recognition), hỏi đáp tự động (Question Answering), và trích xuất quan hệ ngữ nghĩa trong văn bản (Semantic Relation Extraction). Hiện anh đang là nhà nghiên cứu về xử lý ngôn ngữ tự tại Viện nghiên cứu Công nghệ FPT (ĐH FPT).

Tin liên quan: