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

37
Các bài toán xử lý ngôn ngữ tự nhiên trong phát triển hệ thống chatbot Phạm Quang Nhật Minh Viện nghiên cứu công nghệ FPT (FTRI) [email protected] Ngày 30 tháng 3 năm 2017

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

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

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

Phạm Quang Nhật Minh

Viện nghiên cứu công nghệ FPT (FTRI)[email protected]

Ngày 30 tháng 3 năm 2017

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

Một số hệ thống giao tiếp tự động

Hình: Chatbot Symptomate1 cho chẩn đoán bệnh và trợ lý ảo Cortana

1https://www.facebook.com/SymptomatePhạm Quang Nhật Minh Các vấn đề NLP trong chatbot 2/37

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

Vì sao nhu cầu sử dụng chatbot ngày càng tăng?

Chatbot hữu ích trong các hệ thống trực tuyến với số lượnglớn người dùng:

Hỗ trợ hoặc thay thế người trong một số tác vụ: chăm sóckhách hàng, hỗ trợ đặt hàng, trả lời câu hỏi, giáo dục,. . .

Rất nhiều các nền tảng hỗ trợ trò chuyện trực tuyến:Facebook messenger, Slack, Skype, Telegram,...

Số lượng người dùng điện thoại thông minh ngày càng nhiềuNhững bước tiến mới trong ngành AI:

Xử lý ngôn ngữ tự nhiênXử lý tiếng nóiHọc máy

Ngày càng nhiều platform hỗ trợ tạo chatbot

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 3/37

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

Nền tảng hỗ trợ phát triển chatbot

Một số nền tảng hỗ trợ phát triển chatbot:Watson Conversation ServiceMicrosoft’s LUISGoogle Natural Language APIWit.aiApi.aiAmazon Lex

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 4/37

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

Kiến trúc cơ bản của một hệ thống trả lời tự động

Hình: Kiến trúc cơ bản của một hệ thống trả lời tự động2

2Ảnh lấy từ cuốn sách của Daniel Jurafsky và James MartinPhạm Quang Nhật Minh Các vấn đề NLP trong chatbot 5/37

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

Hình: Ví dụ về cấu trúc hội thoại của chatbot. (Nguồn: stanfy.com:http://tinyurl.com/mdfsa6h)

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 6/37

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

Nội dung trình bày

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

2 Bài toán trích xuất thông tin (named entity extraction)

3 Quản lý hội thoại (dialogue management)

4 Mô hình sinh hội thoại cho chatbot

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 7/37

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

Nội dung trình bày

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

2 Bài toán trích xuất thông tin (named entity extraction)

3 Quản lý hội thoại (dialogue management)

4 Mô hình sinh hội thoại cho chatbot

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 8/37

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

Ý định (intent) là gì?

Intent: Điều người dùng mong muốn chatbot thực hiện (hỗtrợ) khi đưa ra câu hội thoạiVí dụ, khi người dùng muốn chatbot đưa ra thông tin về thờitiết hôm nay

Thời tiết hôm nay thế nào ad?Hà Nội hôm nay có mưa không vậy?Trời hôm nay thế nào bạn?

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 9/37

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

Tại sao xác định intent quan trọng?

Intent được xác định sẽ quyết định cấu trúc (frame) và kịchbản (script) của đoạn hội thoại tiếp theo.Nếu chatbot xác định sai intent:

Phản hồi không thích hợp → Người dùng không hài lòng →Rời bỏ hệ thống

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 10/37

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

Các vấn đề trong bài toán xác định intent (1)

Làm sao để nhận biết những cách diễn đạt khác nhau cho cùngmột intent?

Ví dụ, từ “lag“ và “chậm“ trong 2 câu sau mang cùng ngữnghĩa

Ad ơi, sao mạng nhà em dạo này chậm thế?Mạng lag lắm, dùng rất ức chế.

Người dùng có thể dùng câu hỏi, câu cầu khiến hay câu thanphiền khi đưa ra yêu cầu hỗ trợ

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 11/37

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

Các vấn đề trong bài toán xác định intent (2)

Xử lý vấn đề sai chính tảVí dụ: “Ad ơi, mạng chaamj lắm“

Trong tiếng Việt, chúng ta có thể phải xử lý vấn đề tiếng Việtkhông dấu và mix giữa có dấu và không dấu.Xử lý các từ viết tắt, ngôn ngữ chat

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 12/37

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

Cách tiếp cận học máy cho bài toán xác định intent

Trong những những miền ứng dụng đóng (closed domain)Số lượng intent là hữu hạn

Mô hình phân lớp văn bản (text classification)Huấn luyện mô hình phân lớp intent từ một tập dữ liệu huấnluyện

intent textorder.pizza i want a small pizza with tomatosorder.pizza i want a pizza with bbq souceorder.pizza pizza deliverygreeting Higreeting Hello...

Bảng: Ví dụ về dữ liệu huấn luyện cho chatbot phục vụ order pizza(Api.ai)

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 13/37

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

Mô hình phân lớp intent

Hình: Kiến trúc hệ thống phân lớp intent

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 14/37

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

Tiền xử lý dữ liệu

Tách từ (word segmentation)Xử lý từ gõ sai chính tả (ví dụ mạng chaamj)Xử lý từ viết tắt (ví dụ: gõ ip thay vì iphone)POS Tagging

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 15/37

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

Trích xuất đặc trưng

Bag-of-wordsHiện tại intent detection tại FPT.AI đang sử dụng bag-of-wordfeatures

tf-idf features...

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 16/37

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

Thuật toán huấn luyện mô hình phân lớp

Thuật toán phân lớp phổ biến:Support Vector Machines (SVM)Random Forest

Quora đang sử dụng để phát hiện câu hỏi trùng lặpNeural Networks

FPT.AI sử dụng mô hình mạng Neural Feed Forward với mộttầng ẩn

Sử dụng thư viện keras với Theano backed end.

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 17/37

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

Đánh giá độ chính xác của hệ thống phân lớp intent

Mô hình đánh giá 5-fold cross validationPhân chia tập dữ liệu thành 5 tập conMỗi lần sử dụng 4 tập con cho huấn luyện mô hình và testtrên tập còn lại

Độ đo: accuracy trên tập testTính trung bình cho 5 lần chạy

Engine Độ chính xácFpt.ai 0.85424Wit.ai 0.83419

Bảng: Độ chính xác trên tập dữ liệu FTel

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 18/37

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

Nội dung trình bày

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

2 Bài toán trích xuất thông tin (named entity extraction)

3 Quản lý hội thoại (dialogue management)

4 Mô hình sinh hội thoại cho chatbot

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 19/37

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

Hình: Ví dụ về cấu trúc hội thoại của chatbot. (Nguồn: stanfy.com:http://tinyurl.com/mdfsa6h)

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 20/37

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

Các loại thực thể mà NLU thường hỗ trợ

Vị trí (Location)Thời gian (Datetime)Số (Number)Địa chỉ liên lạc (Contact)Khoảng cách (Distance)Khoảng thời gian (Duration)

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 21/37

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

Ví dụ đầu vào & đầu ra của module trích xuất thông tin

Tôi muốn đặt vé máy bay đi Phú Quốc từ sân bay Nội Bài lúc 8giờ tối ngày mai.Tôi muốn đặt vé máy bay đi <ENTITY TYPE="LOCATION">Phú Quốc </ENTITY> từ sân bay <ENTITYTYPE="LOCATION"> Nội Bài </ENTITY> lúc <ENTITYTYPE="TIME"> 8 giờ tối ngày mai </ENTITY>.

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 22/37

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

Mô hình gán nhãn chuỗi - sequence labeling

Sequence labeling là mô hình hay được sử dụng cho bài toántrích xuất thông tin.Chúng ta có một tập dữ liệu bao gồm các câu được gán nhãncho từng từ trong câu

Tôi/O muốn/O đặt/O vé/O máy/O bay/O đi/OPhú_Quốc/B-LOCATION từ/NA sân/NA bay/NANội_Bài/B-LOCATION lúc/NA 8/B-TIME giờ/I-TIMEtối/I-TIME ngày/I-TIME mai/I-TIME.Mô hình gán nhãn B-I-O

B: Beginning, I: Inside, O: Outside

Bài toán: Huấn luyện một mô hình gán nhãn cho một câu mới

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 23/37

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

Mô hình Conditional Random Fields (CRF)

Ý tưởng chính: Mô hình hoá xác suất điều kiện của một chuỗi cácnhãn với một dãy các từ cho trước.

Mô hình hoá P(Y |X ) từ dữ liệu.Với một câu X cho trước, dãy các nhãn được chọn sao cho giá trịP(Y |X ) đạt giá trị cực đại.Công cụ: CRFsuite3, CRF++4, Mallet5,etc

3http://www.chokkan.org/software/crfsuite/4https://taku910.github.io/crfpp/5http://mallet.cs.umass.edu/

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 24/37

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

Nội dung trình bày

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

2 Bài toán trích xuất thông tin (named entity extraction)

3 Quản lý hội thoại (dialogue management)

4 Mô hình sinh hội thoại cho chatbot

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 25/37

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

Vai trò của quản lý hội thoại (Dialogue Manager)

Nhận đầu vào từ thành phần NLUQuản lý các trạng thái hội thoại (dialogue state)Quản lý ngữ cảnh hội thoại (dialogue context)Truyền đầu ra cho thành phần sinh ngôn ngữ

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 26/37

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

Các mô hình quản lý hội thoại phổ biến

Mô hình dựa trên máy trạng thái hữu hạn (Finite StateAutomata - FSA)Mô hình dựa trên frame (frame-based hay form-based)Kết hợp giữa hai mô hình trên

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 27/37

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

Mô hình FSA

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 28/37

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

Mô hình quản lý dialogue dựa trên Frame

Giải quyết nhược điểm của FSA khi người dùng đưa cùng lúcnhiều thông tin

Tại mỗi trạng thái, FSA chỉ nhận 1 câu trả lời cho 1 câu hỏiDựa trên các frame định sẵn để định hướng cuộc hội thoạiMỗi Frame sẽ bao gồm các thông tin (slot) cần điền và cáccâu hỏi tương ứngDialogue Manager sẽ hỏi cho đến khi các slot được điền hết

Slot Câu hỏiHọ tên Xin quý khách cho biết họ tênSố điện thoại Số điện thoại của quý khách là gì ạ?Tên gói Internet Gói Internet mà quý khách đang dùng là

gì ạ?Tốc độ Internet thực tế Tốc độ vào Internet của quý khách

hiện thời là bao nhiêu ạ?

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 29/37

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

Mô hình quản lý dialogue dựa trên Frame

Trong một hội thoại có thể có nhiều hơn 1 frameVí dụ: khách hàng có thể vừa hỏi về vấn đề mạng chậm, vừamuốn đổi gói Internet

Dialogue manager cần biết khi nào thì cần chuyển sang framekhác

Định nghĩa các luật (production rule) để chuyển giữa các frame

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 30/37

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

Nội dung trình bày

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

2 Bài toán trích xuất thông tin (named entity extraction)

3 Quản lý hội thoại (dialogue management)

4 Mô hình sinh hội thoại cho chatbot

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 31/37

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

Ý tưởng chính của mô hình sinh hội thoại (1)

Nhược điểm của mô hình truy xuất thông tin (phát hiệnintent và trả lời dựa trên các mẫu có sẵn)

Tốn công xây dựng dữ liệu huấn luyện và các mẫu trả lờiKhông tận dụng được các hội thoại đã có

Ví dụ: giữa các nhân viên chăm sóc khách hàng và người dùngÝ tưởng: Tận dụng các hội thoại đã có để tự động sinh hộithoại

Chatbot học theo cách trả lời của con người trong các đoạnhội thoại trong quá khứ

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 32/37

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

Ý tưởng chính của mô hình sinh hội thoại (2)

Ví dụ về đoạn hội thoại trong dữ liệu IT Helpdesk [Vinyalsand Le 2015]6

Describe your problem: i am having issues accessing vpnMachine: could you please let me know what are the operatingsystems you are using ?Human: i am using linuxMachine: ok it was in the ssl vpn on which you stated it wasbrokenMachine: please check if you are logged in to corp networkMachine: what is the error that you are running pleaseHuman: i am seeing an error related to vpnMachine: what is the error message that you are getting whenconnecting to vpn using network connect ?Human: connection refused or something like thatMachine: may i know the version of network connect youconnect ?

6https://arxiv.org/abs/1506.05869Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 33/37

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

Ý tưởng chính của mô hình sinh hội thoại (3)

Chatbot theo mô hình sinh bắt chước các từ ngữ trong câuhội thoại của nhân viên hỗ trợ

....Machine: try thisMachine: goto <URL> page and enter your name andpasswordHuman: doneMachine: try logging in with <NAME> and check if itsworking fine nowHuman: yes , now it works !Machine: great(The <URL> indeed contains information about vpn access.)

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 34/37

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

Mô hình sinh hội thoại sử dụng Deep Learning

Mô hình "sequence to sequence"Giới thiệu trong bài báo "Sequence to Sequence Learning withNeural Networks"7

Hình: Minh hoạ mô hình sequence-to-sequence8

7http://tinyurl.com/kr57pde8https://github.com/farizrahman4u/seq2seq

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 35/37

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

Đặc điểm của mô hình sinh hội thoại (neural chatbot)

Không cần dữ liệu gán nhãn hoặc cần lượng dữ liệu gán nhãnít hơn rất nhiều so với mô hình chatbot truyền thốngMột mô hình duy nhất học trực tiếp từ dữ liệu hội thoạiCần dữ liệu hội thoại lớnMô hình không thực sự phản ảnh bản chất của hội thoại giữangười với ngườiChất lượng hội thoại sinh ra phụ thuộc lớn vào dữ liệu hộithoại

Chatbot Tay AI của Microsoft phân biệt chủng tộc do bị ngườidùng "huấn luyện"

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 36/37

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

Tóm tắt nội dung đã trình bày

Các bài toán NLP cơ bản trong cách tiếp cận truyền thốngtrong phát triển chatbot

Xác định intentTrích xuất thông tinQuản lý hội thoại

Cách tiếp cận truyền thốngLà mô hình chatbot phổ biến trong các sản phẩm chatbotthực tếTheo mô hình truy xuất thông tinCần nhiều dữ liệu huấn luyện và luật chuẩn bị bằng tayThích hợp cho miền ứng dụng đóng

Neural chatbot: cách tiếp cận mới trong phát triển chatbotHọc từ dữ liệu hội thoại theo mô hình “sequence to sequence“trong Deep learning.

Phạm Quang Nhật Minh Các vấn đề NLP trong chatbot 37/37