+2

AI Conversation (I)

Mở đầu

Dạo này mình có hứng thú với những thứ ảo ảo kiểu như Cortana hay Siri, (Google now thì ko biết nói chuyện chém gió nên không hứng thú) nên có tìm hiểu về vấn đề này. Nó được gọi là những trợ lý ảo, 1 hình thức nâng cao hơn của những ứng dụng giao tiếp, trả lời tự động, hay botchat. Qua tìm hiểu thì nó có cả 1 chân trời ở phía sau. Phần mở đầu này mình viết theo đúng nghĩa mở đầu, chỉ toàn lý thuyết. Phần sau có lẽ đỡ hơn.

I. Các phương pháp tiếp cận khác nhau để xây dựng các ứng dụng giao tiếp

Các nhà phát triển và các nhà nghiên cứu đã xây dựng các ứng dụng giao tiếp, chẳng hạn như chatbot, trong nhiều thập kỷ. Qua nhiều năm, nhiều chiến lược khác nhau đã được xem xét.

1. Phương pháp Rule-Based

Trước sự tiến bộ học máy trong thập kỷ qua, các ứng dụng đàm thoại được xây dựng phổ biến nhất sử dụng phương pháp tiếp cận dựa trên luật lệ. Các nhà phát triển không quen thuộc với học máy thường bắt đầu triển khai của họ với logic dựa trên nguyên tắc. (đại loại là if đầu vào là gì then đầu ra là cái nào đấy, 1 đống như thế 😄). Với khuôn khổ dựa trên nguyên tắc, các nhà phát triển có trách nhiệm triển khai thực hiện logic lõi để phân tích các tin nhắn đến và trả về các phản hồi hữu ích. Logic này thường bao gồm một loạt các quy tắc xác định các kịch bản phản hồi cho một tin nhắn phù hợp với mẫu quy định. Vì phương pháp này khá thủ công, không dựa trên phân tích của AI nên các nhà phát triển phải viết mã xử lý tất cả các tin nhắn và tương tác logic cần thiết bằng tay. Ngay cả các ứng dụng đơn giản thường đòi hỏi hàng trăm quy tắc để xử lý các đoạn đối thoại khác nhau trong một giao diện giao tiếp thông thường. Phương pháp tiếp cận dựa trên luật lệ thường là cách nhanh nhất để xây dựng và chạy một bản demo cơ bản về trợ lý giao tiếp bằng văn bản hoặc giọng nói. Tuy nhiên chuyển từ demo sang sản phẩm dùng được thì lại khác. Xung đột và dư thừa giữa các quy tắc càng ngày phức tạp hơn. Ngay cả đối với các ứng dụng đơn giản, danh sách ngày càng tăng của quy tắc có thể nhanh chóng trở thành quá phức tạp.

2. Dịch vụ NLP Cloud-Based

Trong vài năm qua, một loạt các dịch vụ xử lý ngôn ngữ tự nhiên (NLP) dựa trên nền tảng đám mây đã nổi lên với mục đích làm giảm sự phức tạp liên quan đến việc hiểu được ngôn ngữ tự nhiên. Những dịch vụ này được dự định để cho phép các nhà phát triển mà không cần quan tâm tới học máy hoặc chuyên môn về NLP có thể tạo ra các sản phẩm hữu ích. Những dịch vụ này thường được cung cấp bởi các công ty Internet lớn để lôi kéo các nhà phát triển tải dữ liệu huấn luyện của họ lên và qua đó giúp các nhà cung cấp dịch vụ cải tiến AI giao tiếp riêng của họ. Trong số các dịch vụ NLP hiện có là Amazon Lex , api.ai của Google , wit.ai của Facebook , Microsoft LUIS , Viv của Samsung , và IBM Watson conversation.

3. Machine Learning Toolkits

Các bộ công cụ phổ biến bao gồm Google’s TensorFlow, Microsoft Cognitive Toolkit, and Apple’s GraphLab Create. Những bộ công cụ này hỗ trợ xử lý NLP ở mức chuyên sâu hơn. Người ta bảo sâu quá đến mức ngay cả những kỹ sư học máy giỏi nhất hiếm khi thành công trong việc xây dựng các ứng dụng đàm thoại chất lượng sản xuất sử dụng bộ công cụ học máy hiện nay. (As a result, even the most skilled machine learning engineers rarely succeed in building production-quality conversational applications using today's machine learning toolkits.).

4. AI Conversational platform

Ví dụ ta có Mindmeld, các bạn có thể tìm hiểu thêm ở đó.

II. Các bước tương tác của một ứng dụng Conversational AI

1. Wake-up word detection:

Hay còn gọi là keyword spotting. Khi ứng dụng ở trạng thái chờ, nó hoạt động rất ít để không tiêu tốn năng lượng của thiết bị, chỉ có phần lắng nghe hành động từ người dùng là đang chạy. Phần này có chức năng phát hiện ra các từ ví dụ như “Hey siri” “Hey Cortana” “Ok Google”,... sau đó các thành phần còn lại của ứng dụng bắt đầu được kích hoạt.

2. Speech recognition: (speed-to-text, ARS)

Chuyển đổi tiếng nói thành văn bản.

3. Domain classification:

Phân loại miền (domain), đây là bước đầu tiên của xử lý ngôn ngữ tự nhiên (NLP), nó sẽ phân tích văn bản từ ARS và xếp loại mỗi yêu cầu thành 1 tập các miền được định nghĩa trước. Ví dụ đầu vào là “will it rain tomorrow?” thì nó có domain là “weather”, “Play my sad songs list” thì có domain là “music”.

4. Intent classification:

Đây là bước thứ 2 của NLP, có nhiệm vụ xếp loại mỗi đầu vào thành 1 tập các mục tiêu (intent) được định nghĩa sẵn. Mỗi intent phản ánh những gì người dùng đang cố gắng thực hiện, nó quy định 1 hành động được mô tả rõ ràng, hoặc 1 loại phản hồi mà được định nghĩa sẵn để trả lời cho mỗi yêu cầu. Ví dụ “wake me up at 7am” thì itent là “set-alarm”, “who sing that song?” thì itent là “get-artist”,...

5. Entity recognition:

Đây là bước thứ 3 của NLP, nhận dạng thực thể (entity). Thành phần này được giao trách nhiệm phát hiện các từ và cụm từ quan trọng đối với mỗi yêu cầu. Ví dụ có 1 yêu cầu là “Play Vogue by Madona”, thì “Vogue” là entity xác định tên bài hát, “Madona” là entity xác định ca sỹ.

6. Role classification:

Bước thứ 4 của NLP, có nhiệm vụ phân loại / gán nhãn vai trò (role). Ví dụ có yêu cầu là “Book a flights from A to B”, entity A sẽ có nhãn là “origin”, còn entity B có nhãn là “destination”.

7. Entity resolution:

Bước thứ 5 của NLP, bước này sẽ match mỗi thực thể đã được xác định với 1 từ thực tế, loại bỏ sự không chắc chắn từ khái niệm hoặc đối tượng. Ví dụ, entity “Trump” có thể được xử lý thành “President Donal Trump”.

8. Language parsing:

Bước cuối cùng của NLP. Bước này có thể bao gồm cả phân tích cú pháp phụ thuộc và phân tích ngữ nghĩa. Nó có trách nhiệm xác định các mối quan hệ giữa các cá nhân thực thể đã được xác định trong mỗi yêu cầu.

9. Question answering:

Bước này xác định câu trả lời tốt nhất dành cho mỗi yêu cầu. Để làm được việc này thì nó cần dựa trên nền tảng kiến thức, ví dụ như danh sách catalog hay dữ liệu sản phẩm (đối với ứng dụng trả lời tự động cho 1 cửa hàng nào đó), nó sẽ kiểm tra tính hợp lệ của mỗi câu trả lời đưa ra và cung cấp các khuyến nghị và đề xuất.

10. Language generation:

Diễn giải đầu ra của các thành phần NLP và các câu trả lời thành 1 phản hồi bằng ngôn ngữ của con người cho mỗi yêu cầu. Phản ứng này được thiết kế để trông giống như một sự tương tác ngôn ngữ tự nhiên trong thế giới thực.

11. Dialogue management:

Quản lý đối thoại theo dõi bối cảnh của cuộc hội thoại trên nhiều tương tác và đưa ra các phản hồi thích hợp trở lại cho người sử dụng ở từng giai đoạn của cuộc đàm thoại. phản ứng bao gồm việc trả lời bằng ngôn ngữ tự nhiên cũng như các yếu tố tương tác khác.

12. Speech synthesis:

Tổng hợp giọng nói chuyển đổi từ phản hồi bằng ngôn ngữ tự nhiên dựa trên văn bản thành âm thanh nói có thể được đọc to cho người sử dụng nghe thấy.

Cần những bước nào

  • Ví dụ, khi bạn xây dựng một trợ lý trò chuyện cho một nền tảng tin nhắn như Facebook Messenger, đầu vào và đầu ra là văn bản chứ không phải là giọng nói. Trong trường hợp này, các bước 1, 2, và 12 là không cần thiết.
  • Khi xây dựng một ứng dụng mà chỉ thực hiện những hành động đơn giản và không cần trả lời những câu hỏi phức tạp, thì Bước 9 có thể không cần thiết.
  • Nếu bạn muốn xây dựng một trợ lý giọng nói mà có cùng một mức độ chính xác và tính linh hoạt như các sản phẩm như Siri, Alexa (trợ lý ảo của Amazon) và Cortana, cần yêu cầu tất cả 12 bước xác định ở trên.

Kết luận

  • Bài này quá nhiều chữ.
  • Phần tiếp theo mình sẽ trình bày về cách sử dụng 1 NLP service, đó là api.ai của google.

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí