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

Một phần của tài liệu Tìm hiểu chatbot và xây dựng ứng dụng hỗ trợ theo dõi xu hướng mạng xã hội (báo cáo cuối kì đồ án 1) (Trang 27 - 29)

2.2 Các hướng tiếp cận bài toán Chatbot

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

Để hiểu về hướng tiếp cận này, xét bài toán sửa lỗi chính tả. Một trong những phương pháp để xác định lỗi chính tả đó là tính tốn khoảng cách chỉnh sửa. Với hai xâu ký tự nguồn và xâu ký tự đích, khoảng cách chỉnh sửa để biến xâu nguồn thành xâu đích được tính như sau

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

Hình 2-4 Cơng thức tính khoảng cách bài tốn tiếp cận tìm kiếm mờ

Với a là số tác vụ thêm vào xâu ký tự nguồn, d là số tác vụ xóa khỏi xâu ký tự nguồn, s là số tác vụ thay thế một ký tự trong xâu ký tự nguồn bằng một ký tự khác, w_a, w_d, 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ỏ (khác 0) thể hiện hai xâu nguồn và đích càng giống nhau 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 tốn khoảng cách chỉnh sửa nhỏ nhất, một trong những thuật tốn thơng dụng nhất là Levenshtein

Hình 2-5 Công thức Levenshtein

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

- Từ xâu rỗng, thêm từng kí tự cho đến khi đạt được xâu đích

8

- Từ trên xuống (j), từ trái qua phải (i), thực hiện các bước sau: • Nếu source[i-1] = target[j-1] thì sub_cost = 0

• Nếu ngược lại sub_cost = 1

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

- Giá trị m[m,n] chính là khoảng cách chỉnh sửa.

Hình 2-6 Minh họa ma trận thuật tốn Levenshtein

Có thể thấy rằng thuật tốn này khơng chỉ làm việc với những chữ cái trong từ mà cịn có thể hoạt động với bất kì đối tượng nào có thể phân chia thành các phần tử nhỏ hơn. Thay chữ cái bằng từ 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ơ.

9

Hình 2-7 Cấu trúc dữ liệu Trie để lưu trữ từ điển cho phép so sánh mờ.

Qua bài toán này, việc so sánh giữa những thông tin do người dùng nhập và các thông tin được cung cấp sẵn cho hệ thống trở nên “thông minh” hơn so với việc hệ thống so sánh các đoạn văn bản chính xác đến từng chữ một. Nhờ vậy, người dùng có thể tương tác với hệ thống một cách linh hoạt hơn.

Một phần của tài liệu Tìm hiểu chatbot và xây dựng ứng dụng hỗ trợ theo dõi xu hướng mạng xã hội (báo cáo cuối kì đồ án 1) (Trang 27 - 29)