CRFs được giới thiệu lần đầu vào năm 2001 bởi Lafferty và các cộng sự. CRFs là một mô hình đồ thị vô hướng sử dụng tính toán xác suất điều kiện, một loại của mô hình xác suất phân biệt được sử dụng cho bài toán gán nhãn dữ liệu chuỗi.
Cho tập là dữ liệu chuỗi được quan sát và một tập hữu hạn các trạng thái . Lafferty đã định nghĩa xác suất của một trạng thái chuỗi được tính theo công thức như sau:
(2.4)
Trong đó là hàm số chuẩn hóa tổng
hợp trên tất cả các chuỗi nhãn, là trọng số được học thông qua huấn luyện đi kèm với thuộc tính , là một thuộc tính per-state hoặc thuộc tính chuyển tiếp
(2.5)
(2.6) Trong đó biểu thị Kronecker - . Thuộc tính per-state kết hợp với nhãn của trạng thái hiện tại và mẫu ngữ cảnh như trong hàm nhị phân để bắt các
thuộc tính cụ thể của chuỗi quan sát o tại thời điểm t. Ví dụ nhãn hiện tại là b-datetime và từ hiện tại là “ngày”. Thuộc tính chuyển tiếp biểu diễn sự phụ thuộc tuần tự bằng cách kết hợp nhãn của trạng thái trước và nhãn hiện của trạng thái hiện tại
như là nhãn và nhãn hiện tại là .
Huấn luyện và suy diễn trong CRFs: CRFs được huấn luyện bởi một tập trọng số để cực đại hóa hàm log-likelihood L, cho bởi tập dữ liệu huấn
luyện :
(2.7) Trong đó tổng thứ 2 là một hàm Gaussian trên tham số phương sai để đáp ứng với những dạng dữ liệu thưa.
Suy diễn trong CRFs là tìm một chuỗi trạng thái giống nhất với s* được cho bởi chuỗi quan sát o.
(2.8) Để tìm s* người có thể áp dụng kỹ thuật lập trình động với một chút thay đổi của phiên bản thuật toán gốc ho HMMs, bỏ qua việc tìm kiếm trên tất cả tập thiết lập với thời gian mũ của s, Viterbi lưu lại xác suất có đường lên gần nhất tới thời tiểm t, đường mà có thời điểm t đầu tiên quan sát và kết thúc ở trạng thái . Chúng biểu thị xác suất này theo hàm (o < t < T-1) và là xác suất bắt đầu ở mỗi trạng thái . Hàm đệ quy cho bởi công thức như sau:
(2.9) Hàm đệ quy kết thúc khi thời điểm t = T-1 và xác suất không chuẩn hóa lớn nhất là
. Tại thời điểm này chúng ta có thể quay lại thông qua các thông tin được lưu lại để tìm chuỗi có khả năng nhất.
2.4. Các phƣơng pháp đánh giá nhận hệ thống dạng thực thể tên
Đánh giá kết quả của hệ thống nhận dạng thực thể tên thường dựa vào việc so sánh kết quả đầu ra của hệ thống nhận dạng thực thể tên với kết quả thực tế mà con người
đã gán nhãn đúng các thực thể tên trên cùng tập dữ liệu đầu vào. Trong trường hợp này kết quả đầu ra của mô hình được gọi là dự đoán (predictions) còn kết quả chú thích của con người được gọi là tiêu chuẩn (standard). Để đánh giá chất lượng cho hệ thống nhận dạng thực thể ta sử dụng 3 độ đo: độ chính xác (precision), độ hồi tưởng (recall) và độ đo F (F-mesure).
2.4.1 Độ chính xác, độ hồi tƣởng, độ đo F
Để tính độ chính xác, độ hồi tưởng dựa trên số lượng các phần tử được dự đoán đúng ở lớp dương (true positive), số lượng các phần tử bị đoán nhầm từ lớp dương sang âm (false positive) và số lượng các phần tử dự đoán nhầm từ lớp âm sang lớp dương (false negative) [1, tr. 284-285]. Đối với từng lớp cần đánh giá ta có công thức như sau:
Độ chính xác P (precision):
(2.10) Độ hồi tưởng R (recall):
(2.11) Độ đo F (F-measure):
(2.12)
2.4.2. Giá trị trung bình Macro, Micro và độ đo F
Trong trường hợp này bài toán nhận dạng thực thể tên chính là bài toán phân lớp với số lớp là K cũng được sử dụng độ đo trung bình gồm trung bình mịn (microaveraging) và trung bình thô (macroaveraging)
Độ chính xác trung bình thô (macro-averaging precision):
(2.13) Độ chính xác trung bình thô (macro-averaging recall):
(2.14) Độ chính xác trung bình mịn (micro-averaging precision):
(2.15) Độ chính xác trung bình mịn (micro-averaging recall):
(2.16) Trong đó Pc, Rc lần lượt là độ chính xác và hồi tưởng của lớp C.
2.4.3 Kiểm tra đánh giá chéo k – tập (k-fold cross-validation)
Thay vì chia dữ liệu gán nhãn thành 2 tập (một tập dành cho huấn luyện, một tập dành cho kiểm thử), tập dữ liệu huấn luyện ban đầu D sẽ được chia ngẫu nhiên thành k tập con (được gọi là fold) không giao nhau: D1, D2, …, Dn, kích thước của các tập này là xấp xỉ nhau. Quá trình huấn luyện và kiểm thử sẽ được thực hiện k lần. Tại mỗi lần lặp thứ i, dữ liệu Di sẽ được dùng làm tập dữ liệu kiểm thử và (k-1) tập dữ liệu còn lại sẽ được gộp lại làm tập dữ liệu huấn luyện.
2.5 Các phƣơng pháp lặp và tối ƣu số trong ƣớc lƣợng tham số mô hình
2.5.1 Thuật toán Generalized Iterative Scaling (GIS)
[27] Cho một tập hàm chỉ số gi và các giá trị liên kết mong đợi của hàm Ki, mỗi vòng lặp j của thuật toán này tạo ra một ước lượng tham số mới. Tham số này phải phù hợp với các điều kiện ràng buộc tốt nhất với các tham số ước lượng trước đó. Mỗi lập lặp gồm các bước như sau:
a. Tính tất cả các giá trị mong đợi của gi trên hàm ước lượng tham số hiện tại (2.17)
b. So sánh giá trị thực của Ki(j) với giá trị mới sinh ra Ki, sau đó cập nhật lại tham số theo công thức
(2.18) c. Định nghĩa hàm xác suất ước lượng tham số mới.
(2.19) Tiếp tục lặp cho tới khi tham số hội tụ hoặc gần hội tụ.
2.5.2 Thuật toán Improved Iterative Scaling (IIS)
Dựa trên phương pháp trường điều kiện ngẫu nhiên [13] và cực đại hóa Entropy [3] đã tạo ra một thuật toán mới tối ưu có tên “Cải tiến mở rộng chuyên sâu” (Improved Iterative Scaling). Đây là thuật toán có phần phức tạp hơn nhưng lại cho hiệu suất nhanh hơn.
Thuật toán này có các bước cơ bản giống thuật toán GIS nhưng khác ở điểm là giá trị kỳ vọng của mỗi thuộc tính được chia ra thành từng phần dựa trên số lượng các thuộc tính khác cùng xuất hiện trong cặp (h,f), số lượng các cặp thuộc tính này sẽ được tính toán tham số ước lượng tiếp theo gồm các bước sau:
a. Tính giá trị kỳ vọng của tất cả các điểm gi trên hàm ước lượng tham số hiện tại chia cho tổng số thuộc tính kỳ vọng sảy ra đồng thời với gi. Các cặp (h,f) trong dữ liệu huấn luyện sẽ được tính như sau:
(2.20) (2.21)
b. Tính giá trị cập nhật mong muốn βi cho mọi thuộc tính gi
Maxc = Giá trị cực đại của c(h,f) đạt được trong đoạn văn (2.22) Sử dụng công thức Newton hoặc vài kỹ thuật tương đương để giải quyết βi
(2.23)
c. Cập nhật lại cho tham số ước lượng λi cho lần lặp tiếp theo
(2.24) d. Định nghĩa hàm ước lượng của hàm xác suất tiếp theo được định nghĩa như
công thức 2.19
e. Tiếp tục lặp cho tới khi tham số hội tụ hoặc gần hội tụ.
Các kỹ thuật tối ưu số sử dụng véc tơ gradient của hàm log-likelihood để tìm cực trị. Hiện nay có hai kỹ thuật tối ưu gồm kỹ thuật tối ưu bậc một và kỹ thuật tối ưu bậc hai.
Các phương pháp quasi-Newton là các trường hợp đặc biệt của kĩ thuật tối ưu bậc hai, tương tự như các phương pháp Newton tuy nhiên chúng không tính toán trực tiếp ma trận Hessian mà thay vào đó chúng xây dựng một mô hình của ma trận Hessian tại mỗi bước lặp bằng cách đo độ thay đổi trong vector gradient.
Phương pháp Limited memory quasi-Newton (L-BFGs) [14] cải tiến của phương pháp quasi-Newton để thực hiện tính toán khi lượng bộ nhớ bị giới hạn. Những thực nghiệm gần đây cho thấy phương pháp Limited memory quasi-Newton vượt trội hơn hẳn so với các phương pháp khác bao gồm cả GIS, IIS, gradient liên hợp... trong việc tìm cực đại hàm log-likelihood.
2.6. Một số nghiên cứu liên quan với bài toán nhận dạng thực thể tên cho ngôn ngữ nói tiếng Việt tên cho ngôn ngữ nói tiếng Việt
2.6.1. Các nghiên cứu liên quan
Nhận dạng thực thể tên đã được nghiên cứu và phát triển từ lâu. Hầu hết các bài báo trước đây thường tập trung vào nhiệm vụ nhận dạng thực thể tên được công bố trong hội nghị MUC [6, 9] và hội nghị khai thác nội dung (Automatic Content Extraction – ACE). Có nhiều nghiên cứu về nhận dạng thực thể tên cho văn bản viết thông thường [4, 5, 7]. Tuy nhiên ở đây tôi chỉ mô tả những nghiên cứu về nhận dạng thực thể tên có liên quan nhất cho cả văn bản viết và văn bản ngôn ngữ nói với đề tài luận văn của tôi đang nghiên cứu.
Năm 2007, Nguyễn Cẩm Tú [16] cùng các cộng sự đã sử dụng mô hình trường điều kiện ngẫu nhiên (Conditional Random Fields – CRFs) thực hiện nhận dạng thực thể tên cho văn bản viết ngôn ngữ tiếng Việt, đạt kết quả độ đo F1 trung bình là 85.51 tại hội nghị ứng dụng xử lý ngôn ngữ tự nhiên và phát triển nguồn tài nguyên ngôn ngữ châu Á.
Cũng trong năm 2007, tại hội nghị công nghệ ngôn ngữ của Úc, để cái tiến hiệu năng hệ thống hỏi đáp, Molla cùng các cộng sự [15] đã thực hiện nhận dạng thực thể tên cho ngôn ngữ nói. Tuy nhiên họ mô tả rằng họ đã sử dụng rất nhiều loại thuộc tính khác nhau bao gồm cả chữ hoa, đây là một dấu hiệu không tồn tại trong văn bản ngôn ngữ nói mà tôi sẽ thực hiện trong phần nghiên cứu của mình.
Xa hơn nữa vào năm 2005, Pan cùng các cộng sự [18] đã đề xuất hai cách tiếp cận để nhận dạng thực thể tên cho văn bản ngôn ngữ nói tiếng Trung. Các tiếp cận thứ nhất, dựa trên quan sát để nhận dạng thực thể tên có thể dễ dàng nếu nó xuất nhiều lần với một kiểu tên thực thể trong các bối cảnh khác nhau của toàn bộ văn bản. Cách thứ hai, dựa trên kiến thức mở rộng từ Internet ví dụ như các trang Web để mở rộng các ngữ cảnh thông tin của mỗi thực thể.
Mới đây nhất vào năm 2013, Hatmi cùng các cộng sự [10] đã đề xuất một phương pháp đa cấp độ dựa trên mô hình trường điều kiện ngẫu nhiên (CRFs) để nhận dạng thực thể cho các văn bản ngôn ngữ nói. Dữ liệu có kích thước hơn 40 giờ lưu lại từ bài phát biểu khác nhau trên đài truyền hình và đài phát thanh của Pháp.
Hầu hết các nghiên cứu trên thường làm việc với các bản dịch của bài phát biểu hoặc các câu chuyện. Đây là điểm khác biệt nhất về các văn bản đầu ra bởi công nghệ nhận dạng tiếng nói tự động (Automatic Speech Recognition - ASR).
Trên cơ sở những nghiên cứu có liên quan tôi thấy mình rất hứng thú nghiên cứu về lĩnh vực hiểu ngôn ngữ nói. Để có kỹ thuật hiểu ngôn ngữ nói, tôi sẽ sử dụng kỹ thuật nhận dạng thực thể tên và một chút kiến thức về hiểu ý định của người dùng.
2.6.2. Tìm hiểu Google Now – một phần mềm có xử lý cho ngôn ngữ nói tiếng Việt trên các điện thoại thông minh tiếng Việt trên các điện thoại thông minh
Google mới đây đã cập nhật ứng dụng Google Now10 cũng như Google Voice11 để hỗ trợ nhận diện các lệnh bằng giọng nói bao gồm cho tiếng Việt trên các thiết bị thông minh. Thay đổi này áp dụng cho cả ứng dụng trên hệ điều hành Android lẫn ứng dụng tìm kiếm của Google là Google Voice Search12 trên hệ điều hành iOS của Apple. Người dùng có thể tận dụng tính năng này để tra cứu về tên, tuổi của một ai đó, xem thời tiết hôm nay ra sao, tìm địa chỉ của một địa danh cụ thể. Chưa hết, nếu người sử dụng đang dùng các thiết bị thông minh chạy hệ điều hành Android, người dùng còn có thể tương tác được nhiều tính năng hơn như: gọi hoặc nhắn tin cho một ai đó, tạo một nhắc nhở hoặc báo thức, ra lệnh bật tắt Wi-Fi, Bluetooth, tất cả chỉ cần thực hiện qua ngôn ngữ nói. Dưới đây là một số lệnh mà Google Now đã xử lý khá tốt với các câu nói được tuân theo cú pháp có cấu trúc, tuy nhiên một số câu lệnh tiếng Anh thì có vẻ như là chưa có xử lý cho bên tiếng Việt.
- Gọi + [Tên lưu trong danh bạ]
- Nhắn tin + [Nội dung tin nhắn] + [Tên lưu trong danh bạ (phải được đọc tên chính xác nhất)]
- Gửi email + [Tên lưu trong danh bạ] + [Nội dung email] (Nội dung có thể không chính xác lắm)
- Mở + [Tên ứng dụng]. Ví dụ: mở Facebook, mở Chrome - Chụp ảnh hoặc Quay phim
- Bật / Tắt + [Bluetooth / Wi-Fi]
- Nhắc nhở tôi + [Nội dung nhắc nhở] + [9 giờ tối tối nay / 9 giờ sáng mai / ngày mai / 8 giờ ngày 7 tháng 9]
- Báo thức lúc + [3 giờ sáng / 8 giờ tối / 7 giờ sáng mai]
- Chơi nhạc (chạy ứng dụng nhạc, chưa có cách để tạm dừng hay đổi bài)
10 https://www.google.com/landing/now/#whatisit
11 https://www.google.com/googlevoice/about.html
Tuy nhiên Google Now trên hệ điều hành Android ở một số thiết bị thông minh vẫn còn một số hạn chế như:
- Chưa đặt được lịch (một tính năng mà rất nhiều có thói quen ghi lại nhật ký hoặc lịch hẹn của mình giúp người dùng có thể theo dõi kế hoạch cá nhân). - Chưa hỗ trợ tra cứu danh bạ (tính năng này rất quan trọng bởi hiện nay những
người dùng, đặc biệt là các doanh nhân rất nhiều danh bạ có thể lên tới hàng trăm, hàng nghìn danh bạ được lưu trong máy).
- Gọi điện thoại mới chỉ gọi cho tên trong danh bạ chưa hỗ trợ gọi cho số điện thoại (số điện thoại mà người dùng có thể nói trực tiếp vào).
- Đối với phần thao tác với các cài đặt hệ thống của máy chỉ hỗ trợ cho 2 loại cài đặt cơ bản là: Bluetooth và Wi-Fi tuy nhiên chỉ mở được giao diện mà chưa thao tác được xâu hơn là bật tắt.
- Do Google Now đang xử lý theo cú pháp nên có phần cứng nhắc chưa xử lý được mềm dẻo linh hoạt trong khi người dùng tương tác bằng ngôn ngữ nói tiếng Việt ví dụ như:
o Nhắn tin cho Vũ sáng mai lên trường (với câu này Google Now thực hiện được)
o Gửi tin nhắn cho Vũ sáng mai lên trường (chỉ thay đổi một chút trong cách nói thì câu này chưa xử lý được, hiện tại câu này Google Now còn nhầm sang tính năng tìm kiếm Web – Web search)
o Tìm nhà hàng gần đây (câu này thực hiện được được nhưng thực chất vẫn là tìm kiếm trên trình duyệt và liệt kê các nhà hàng lên đầu danh sách tìm kiếm chứ không thực hiện mở ứng dụng bản đồ như người dùng mong muốn)
o Có nhà hàng nào gần đây không (tương tự với câu này Google Now hiện chưa xử lý được mà chuyển sang tính năng tìm kiếm Web)
o “Mở Zalo13” với lệnh này Google Now vẫn chưa thực hiện được nhưng khi người sử dụng đổi cách nói thành “Khởi động Zalo” thì Google Now lại thực hiện thành công.
Qua một số ví dụ ở trên, ta có thể thấy Google Now còn nhiều hạn chế khi gặp phải cách diễn đạt của mỗi người sử dụng. Cùng một vấn đề, cùng một mục tiêu nhưng người sử dụng có thể nói theo nhiều cách khác nhau nhưng Google Now xử lý còn hạn chế là do sử dụng cấu trúc cú pháp chưa linh hoạt. Bên cạnh một số hạn chế là cú pháp nói còn cứng nhắc, chưa mềm dẻo thì Google Now vẫn bị cho là xử lý còn chậm, và yêu cầu có phần khắt khe với người dùng như: người phát âm phải chuẩn…, về thông tin danh bạ thì người sử dụng muốn thực hiện được tốt cần phải lưu dưới dạng tiếng Việt có dấu (đúng chuẩn trong tiếng Việt). Tính năng mở các ứng dụng khác trong máy điện thoại thông minh thì có ứng dụng mở được, có ứng dụng chưa mở được.
13 https://zaloapp.com/
Chƣơng 3. Nhận dạng thực thể tên cho ngôn ngữ nói tiếng Việt sử dụng phƣơng pháp học máy
3.1. Hệ thống trợ lý ảo cho ngƣời Việt trên điện thoại thông minh
Mục tiêu trong luận văn của tôi là xây dựng được mô hình nhận dạng thực thể tên cho văn bản ngôn ngữ nói có hiệu suất tốt và có kích thước nhỏ gọn đáp ứng và chạy
được ngay trên ĐTTM. Mô hình có khả năng nhận biết thực thể tên hay các đối số