Các hướng tiếp cận 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 44 - 50)

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.1 Các hướng tiếp cận xây dựng Chatbot

3.2.1.1 Hướng tiếp cận ngây thơ

Một Chatbot cơ bản sẽ gồm 2 thành phần chính

• Một hệ thống xử lý đầu vào

• Một hệ thống biên soạn đầu ra (phản hồi) của Chatbot

Ví dụ cơ bản nhất có thể được mơ tả như sau: Người dùng: Bạn khỏe không?

Chatbot: Tôi khỏe

Ở đây đầu vào của người dùng là “Bạn khỏe không?” và phản hồi của Chatbot là “Tơi khỏe”. Ta có thể lập trình cho hệ thống xử lý đầu vào của Chatbot so khớp dữ liệu đầu vào với chuỗi “Bạn khỏe không?” và nếu kết quả so khớp là đúng, trả về xâu ký tự “Tôi khỏe”. Rõ ràng cách làm này bộc lộ nhiều vấn đề sẽ được nói đến trong phần 3.2.2

3.2.1.2 Hướng tiếp cận tìm kiếm mờ

Để hiểu về hướng tiếp cận tìm kiếm mờ. Ta xét bài tốn sửa lỗi chính tả. Một trong những cách thức để xác định lỗi chính tả đó là tính tốn khoảng cách chỉnh sửa (Edit

45

distance). Với hai xâu ký tự nguồn source và xâu ký tự đích target, khoảng cách chỉnh sửa để biến xâu source thành xâu target được tính như sau

Khoảng cách chỉnh sửa(source, target) = w_a * a + w_d * d + w_s * s

Với a là số tác vụ thêm ký tự vào source, d là số tác vụ xóa ký tự khỏi source, s là số tác vụ thay thế một ký tự trong source bằng một ký tự khác, w_a, w_d và w_s lần lượt là trọng số cho các tác vụ này (thông thường đều bằng 1). Khoảng cách chỉnh sửa càng nhỏ (nhưng khác 0) biểu thị 2 xâu này càng gần giống nhau hơn (và xâu nguồn có thể là xâu đích bị viết sai chính tả). Có khá nhiều cách để tính khoảng cách chỉnh sửa nhỏ nhất. Nhưng một trong những thuật tốn thơng dụng là giải thuật Levenshtein. Được biểu diễn với cơng thức sau đây

Hình 3.4 Mơ tả thuật giải Levenshtein

Sử dụng hướng tiếp cận quy hoạch động của Wagner–Fischer, ta có thể lập một ma trận m với kích thước (m + 1) × (n + 1) (với m là số từ của source và n là số từ của target). Sau đó ta lần lượt thực hiện các bước sau:

• Từ xâu rỗng, ta có thể thêm từng ký tự vào cho đến khi đạt đến xâu mục tiêu

• Từ xâu gốc, ta có thể xóa từng ký tự đi cho đến khi xâu rỗng

• Từ trên xuống (j), trái qua phải (i), thực hiện các bước sau

o Nếu source[i - 1] = target[j - 1] sub_cost = 0,

o Nếu không sub_cost = 1

o Lấy m[i, j] min (m[i – 1, j] + 1, m[i, j - 1] + 1, m[i - 1, j - 1] + sub_cost)

46

Hình 3.5 Bảng minh họa phương pháp quy hoạch động của Wagner-Fischer (So sánh xâu Integration và Intelligent)

Theo như ta đã thấy. Thuật tốn này khơng chỉ hoạt động với chữ cái trong từ mà nó có thẻ hoạt động với bất kỳ thực thể nào có thể phân chia được thành các phần tử nhỏ hơn (các token). Thay chữ cái bằng từ và thay từ bằng câu, với một tập hợp câu và phản hồi đủ lớn, kết hợp với việc sử dụng cấu trúc dữ liệu như Trie để tối ưu hóa việc tìm kiếm, ta có thể khắc phục được điềm tồn tại lớn nhất của hướng tiếp cận ngây thơ

47

3.2.1.3 Hướng tiếp cận mạng nơron

Để có thể hiểu được hướng tiếp cận này, ta cần phải hiểu về mạng nơ-ron (Ở đây ta sẽ nhắc đến mạng nơ-ron truyền thằng – Feed-forward Neural Network). Nguyên lý cơ bản của một 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 sẽ có một số nút (hay cịn gọi là nút nơ-ron) là một hàm số (thường là các hàm 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ữ liệu đầ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 sử dụng truyền ngược sai số (Backpropagation)

Hình 3.7 Hình minh họa cho mạng nơ-ron truyển thẳng

Nếu ta có thể để đầ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 ý niệ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ả, lập trình viên nên thực hiện các bước tiền xử lý cho dữ liệu đầu vào như sau

• 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 ký tự hoa về 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

48 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)

• 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 dấu câu # Tiếng Anh

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”, “?”]

• Loại bỏ 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é” không mang 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”, “?”]

• Xác định từ gốc (Word Stemming): Xác định từ gốc của một từ ngữ. Chỉ sử

49 has -> have

Candies -> candy

• 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

“những con người” -> “Những con_người” “quyền anh” -> “quyền_anh”

3.2.1.4 Hướng tiếp cận sử dụng mơ hình đơn ngữ đa dụng

Hướng tiếp cận sử dụng mơ hình ngơn ngữ đa dụng hiện nay đang là hướng tiếp cận hiện đại nhất. Các mơ hình ngơn ngữ này đa số sử dụng mơ hình Transformer làm nên tảng. Mơ hình Transformer là cải tiến của mơ hình mạng nơ-ron hồi quy (Recurrent Neural Network). Điểm nổi trội của mơ hình Transformer so với các mơ hình mạng nơ-ron truyền thống đó là việc giới thiệu khái niệm self-attention (tự tập trung). Ý niệm tập trung đem lại lợi thế lớn cho mơ hình máy học khi nó có thể tập trung vào một số thành phần chính của một tập dữ liệu đầu vào lớn mà không bị mất đi độ chính xác như khi sử dụng các mơ hình máy học khác. Hiện nay tồn tại khá nhiều các mơ hình đã được huấn luyện từ trước sử dụng mơ hình Transformer. Chúng có thể được phân loại vào 2 nhóm chính như sau:

• Nhóm mơ hình chỉ có encoder: Nhóm mơ hình này có thể lấy dữ liệu đầu vào

và xuất ra một tập hợp các tham số gọi là các đặc trưng. Lập trình viên sau đó có thể chọn ra các tham số phù hợp dựa theo các phương pháp như Grid Search hay Random Search để xác định được tập giá trị đặc trưng nào có thể được sử dụng cho tác vụ đang thực hiện

• Nhóm mơ hình có encoder và decoder: Nhóm mơ hình này ngồi khả năng

50

giá trị đặc trưng về lại các từ ngữ, về cơ bản tạo ra được một mơ hình có thể tái tạo xâu ký tự từ những xâu kí tự đầu vào

Các mơ hình huấn luyện sẵn theo mơ hình Transformer có thể kể đến như XLNet, T5, MT5. Nhưng mơ hình có ảnh hưởng nhất có lẽ sẽ là học mơ hình BERT (cũng như họ mơ hình BART) và mơ hình GPT-n. Mơ hình BERT (Bi-Directional Encoder

Representation from Transformer) là một mơ hình encoder đã được áp dụng rộng rãi với nhiều ngôn ngữ, một số mơ hình phát sinh từ BERT cho một số ngơn ngữ nhất định (Ví dụ như PhoBERT cho tiếng Việt). Mơ hình GPT-n là mơ hình decoder chuyên biệt cho tiếng Anh sử dụng tập dữ liệu rất lớn để huấn luyện mơ hình sản sinh ra các đoạn văn bản mới từ đoạn văn bản trước đó. Hiện tại phiên bản mới nhất của mơ hình là GPT-3 đã đạt được những tiến bộ vượt bậc về việc mơ phỏng lại phong cách nói và viết của con người

Để tổng kết lại phần này. Có nhiều cách tiếp cận để xây dựng một Chatbot. Mỗi cách có một số ưu điểm và nhược điểm nhất định. Để cân bằng mức độ kiến thức vận dụng yêu cầu của đồ án và mức độ hiểu biết của bản thân, nhóm phát triển quyết định sẽ sử dụng hướng tiếp cận sử dụng mạng nơ-ron truyền thằng để huấn luyện 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 44 - 50)

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

(186 trang)