2.2 Các hướng tiếp cận bài toán Chatbot
2.2.3 Hướng tiếp cận mạng nơron
Ở đây mạng nơron được nhắc đến là mạng nơron truyền thẳng – Feed-forward Neural Network). Nguyên lý cơ bản của mạng nơron truyền thẳng đó là hệ thống sẽ bao gồm một lớp dữ liệu đầu vào, một số lớp dữ liệu ẩn, và một lớp dữ liệu đầu ra. Mỗi lớp (layer) sẽ có một số nút là một hàm số (thường là các hàm số có đồ thị hình chữ S như hàm sigmoid, hàm tanh, …) và một trọng số. Mạng nơron sẽ được huấn luyện bằng cách đưa một tập dữ lieuj đầu vào, và kết quả mong đợi ở đầu ra. Nhiệm vụ của mạng nơron là điều chỉnh các trọng số trong mỗi nút ẩn để đưa ra được kết quả như mong đợi trong tập huấn luyện và sử dụng phương pháp truyền ngược sai số (Back Propagation)
10
Hình 2-8 Minh họa Mạng nơ ron
Có thể hiểu đơn giản đầu vào của mạng nơron là thể hiện của các từ ngữ và đầu ra là trọng số tương đương với hàm ý của người dùng. Để có thể thực hiện việc huấn luyện cho mạng nơron một cách có hiệu quả, nên thực hiện các bước tiền xử lý cho dữ liệu đầu vào:
- Chuẩn hóa (Normalization): Việc chuyển đổi các ký tự về chung một biểu diễn của ký tự đó (Ví dụ việc đổi tất cả chữ thành chữ thường, đổi kí tự từ bộ mã hóa này sang bộ mã hóa khác)
# Tiếng Anh
He has multiple candies -> he has multiple candies
# Tiếng Việt
Tuỳ trường hợp -> Tùy trường hợp
Câu tiếng việt (TCVN) -> Câu tiếng việt (Unicode)
Hình 2-9 Minh hoạ thuật tốn Chuẩn Hóa (Normalization)
- Phân tách từ (Tokenization): Phân tách xâu ký tự thành các token. Cần đảm bảo thuật tốn phân tách từ có thể xử lý được các dấu câu
11
He does have multiple candies -> [“He”, “does”, “have”, “multiple”, “candies”]
# Tiếng Việt
Tôi phải đi đây. Cho tôi mượn 3.000 đồng được không? -> [“Tôi”, “phải”, “đi”, “đây”, “.”, “Cho”, “tôi”, “mượn”, “3.000”, “đồng”, “được”, “không”, “?”]
Hình 2-10 Minh họa thuật toán Phân tách từ (Tokenization)
- Loại bỏ từ ngắt nghỉ (Stopword Removal): Loại bỏ đi các token của các từ không ảnh hưởng đến nghĩa của câu (Ví dụ trong tiếng Việt, những từ như “đây” hay “nhé” ít mang ngữ nghĩa và chỉ được thêm vào trong ngữ cảnh văn nói)
# Tiếng Anh
[“He”, “does”, “have”, “multiple”, “candies”] -> [“He”, “have”, “multiple”, “candies”]
# Tiếng Việt
[“Tôi”, “phải”, “đi”, “đây”, “.”, “Cho”, “tôi”, “mượn”, “3.000”, “đồng”, “được”, “không”, “?”] -> [“Tôi”, “đi”, “.”, “tôi”, “mượn”, “3.000”, “đồng”, “?”]
Hình 2-11 Minh họa thuật toán Loại bỏ từ ngắt nghỉ (Stopword Removal)
- Xác định từ gốc (Word Stemming): Xác định từ gốc của một từ ngữ. Chỉ sử dụng cho ngơn ngữ thuộc nhóm ngơn ngữ hịa kết như tiếng Anh
has -> have
Candies -> candy
Hình 2-12 Minh họa thuật toán Xác định từ gốc (Word Stemming)
- Ghép nối từ (Word Segmenting): Ghép nối các token lại với nhau thành một từ có nghĩa. Chỉ sử dụng cho ngơn ngữ thuộc nhóm ngơn ngữ đơn lập như tiếng Việt.
12 “những con người” -> “Những con_người” “quyền anh” -> “quyền_anh”
Hình 2-13 Minh họa thuật tốn Ghép nối từ (Word Segmenting)
Có thể thấy rằng với hướng tiếp cận này, việc phân tích dữ liệu đầu vào trở nên phức tạp hơn, nhờ đó đêm lại kết quả chính xác hơn so với các hướng tiếp cận trước. Việc quan tâm đến ngữ cảnh, các từ ngắt nghỉ, … giúp cho hệ thống có thể học sâu hơn về thông tin người dùng đưa vào.