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ố trong các câu lệnh giao tiếp bằng ngôn ngữ nói giữa người dùng và ĐTTM. Để đánh giá được kết quả thực tế của mô hình tôi đã tích hợp mô hình nhận dạng thực thể tên vào ứng dụng phần mềm trợ lý ảo cho người Việt trên ĐTTM có tên VAV (Virtual Assistant for Vietnamese). VAV14 như một trình thông dịch ngôn ngữ tự nhiên giữa người sử dụng và những chiếc ĐTTM thực hiện một số các câu lệnh của người dùng như: định vị vị trí, tìm chỉ dẫn đường đi từ điểm A tới điểm B trên bản đồ, chơi một bài hát hay một bản nhạc, thực hiện cuộc gọi cho một danh bạ dược lưu trong danh bạ của điện thoại hay một số điện thoại bất kỳ mà người dùng nhập vào điện thoại thông minh qua ngôn ngữ tự nhiên. Ngoài ra, người dùng có thể hỏi thông tin về thời tiết với thời gian và vị trí cụ thể, thiết lập lịch hẹn, gửi thư điện tử, chụp ảnh, quay video, đặt báo thức, hỏi ngày âm lịch và rất nhiều tính năng khác.
Một số mẫu câu lệnh khi sử dụng ngôn ngữ tự nhiên tương tác với ứng dụng VAV mà hệ thống VAV có thể hiểu và xử lý như sau:
Bảng 3.1: Một số mẫu câu lệnh ngôn ngữ nói mà ứng dụng phần mềm trợ lý ảo cho ngƣời Việt (VAV) có thể xử lý
Các câu lệnh mà ngƣời dùng sử dụng ngôn ngữ tự nhiên nói, ra lệnh cho điện thoại thông minh
Xử lý câu lệnh
ngã tư khuất duy tiến nguyễn trãi ở đâu
(where is khuat duy tien nguyen trai intersection)
Bản đồ - tìm kiếm vị trí
(Map – search a location)
đánh thức lúc 7 giờ kém 15 phút sáng
(wake up at quarter to 7 o’clock am) Báo thức – đặt báo thức (Alarm – set alarm)
tìm đường từ hà đông đến 88 láng hạ
(find direction from ha dong to 88 lang ha)
Bản đồ - tìm chỉ dẫn đường đi
(Map – find direction)
gọi số 0903206714
(call number 0903206714 )
Điện thoại – thực hiện cuộc gọi
(Phone – make a call)
đặt lịch họp với ibm 9 giờ 15 sáng thứ tư tuần sau
(arrange a meeting with ibm at quarter pass 9 Wednesday morning next week)
Lịch – thêm một sự kiên
(Calendar – add an event)
vào trang dân trí chấm com chấm vn
(open page dan tri dot com dot vn)
Trình duyệt – mở một trang web
(Browser – open a web page)
mở bài hạ trắng
(play song ha trang) Ca nhạc – chạy một bài hát
(Music – play a song)
thời tiết vũng tàu ngày kia
(the weather in vung tau the day after tomorrow) Thời tiết – Thông tin thời tiết
(Weather – weather infor)
hôm nay ngày bao nhiêu âm lịch
(what lunar date is today) Lịch – Lịch âm theo người Việt
(Calendar – lunar calendar)
gửi số điện thoại của yến cho dương vũ
(send the phone number of yen to duong vu)
Danh bạ - Chuyển thông tin danh bạ
(Contact – send contact infor)
bật bluetooth
(turn on bluetooth) Cài đặt hệ thống – Cài đặt Bluetooth
(Setting – turn on Bluetooth)
tăng độ sáng màn hình một chút
(increase the screen brightness a little bit)
Cài đặt hệ thống – Cài đặt độ sáng màn hình
(Setting – increase brightness)
Hệ thống hoạt động như sau: Ban đầu, người dùng sẽ ra lệnh hoặc hỏi ĐTTM thông qua hộp thoại (bước 1). Hộp thoại này sẽ có nhiệm vụ xử lý các tín hiệu âm thanh của các câu nói đầu vào gửi tới hệ thống nhận dạng tiếng nói tự động (Automatic Speech Recognition - ASR) của Google (trong VAV tôi sử dụng ứng dụng Google Voice15) để nhận dạng tiếng nói và chuyển sang dạng văn bản ngôn ngữ nói (bước 2).
Văn bản đầu ra cho bởi ASR sẽ được gửi tới module AIML16 Matcher – đây là nơi xử lý các câu trả lời thông minh (bước 3). Nếu người dùng đưa các câu đầu vào khớp với AIML thì module này sẽ gửi các thông tin trả lời về module thực thi ở thành phần thực hiện các tác vụ - Action Executor (bước 4). Trong trường hợp này module thực thi thường có thể sẽ trả lời ngay được những câu hỏi kiểu như “bạn có thể làm gì” bằng cách hiển thị một danh sách các chức năng mà hệ thống có thể thực hiện được tới màn hình hiển thị cho người dùng biết. Còn trong trường hợp module AIML không có dữ liệu khớp với câu đầu vào của người dùng thì hệ thống sẽ gửi tới thành phần phân loại lệnh – Company Type Identifier (bước 5).
Tại đây thành phần này sẽ có chức năng xác định những ứng dụng, tính năng của ĐTTM và hành động (action) nào có liên quan tới câu đầu vào của người dùng. Ví dụ như: “mở trang web vnexpress.net” như vậy thành phần phân loại lệnh của hệ thống sẽ phải nhận ra được thành phần ứng dụng là trình duyệt web có liên quan và hành động là mở cho địa chỉ liên kết là vnexpress.net hay trong câu “tìm đường từ ngã tư sở đến hồ tây” thì thành phần phân loại lệnh của hệ thống cần phải xác định được ứng dụng là
bản đồ (map) và hành động cần thực thi là chỉ dẫn (direction).
Câu dữ liệu đầu vào của người dùng tiếp tục được gửi tới một thành phần khác trong hệ thống đó là thành phần nhận dạng thực thể tên (đây là một trong những
15 https://www.google.com/googlevoice/about.html
thành phần chính của hệ thống cũng là nghiên cứu chính của mà tôi thực hiện cho luận văn của mình) để nhận dạng và trích chọn ra các đối số trong các câu dữ liệu đầu vào (bước 6). Các đối số này là các thành phần như: thời gian, địa chỉ, tên ứng dụng, kiểu số (gồm phần trăm, số nguyên, số thực), địa chỉ website, địa chỉ email… trong câu dữ liệu đầu vào. Để làm rõ hơn tôi và có cái nhìn trực quan hơn xin đưa ra một vài ví dụ như sau.
Ví dụ câu đầu vào của người dùng như: “mở trang web vnexpress.net” thành phần nhận dạng thực thể tên sẽ phải nhận dạng được thực thể của dữ liệu đầu vào như sau:
mở trang web <url>vnexpress.net</url>. Việc chú thích theo định dạng XML để người đọc có thể hình dung ra rõ hơn đối số trong câu thuộc về kiểu thực thể tên là URL, hoặc câu “tìm đường từ ngã tư sở đến hồ tây” thành phần nhận dạng thực thể tên sẽ nhận dạng được thực thể của câu dữ liệu: tìm đường từ <location>ngã tư sở</location>
đến <location>hồ tây</location>. Tương tự, 2 thực thể tên là: ngã tư sở và hồ tây được chú thích theo định dạng XML để minh họa đây là kiểu thực thể tên vị trí.
Bước này sẽ được thực hiện một số công việc như sau: tên của ứng dụng, các đối số mà mô hình nhận dạng được và hành động thực thi (đã xác định được ở bước 5) sẽ cùng được gửi tới module thực thi để thực hiện (bước 7). Đến đây, hệ thống sẽ giải quyết một số các thực thể tên hoặc đối số sao cho khớp nhất với tên hoặc đối số có trong ĐTTM của người dùng. Tuy nhiên trên thực tế không có nhiều sự khác biệt giữa các ĐTTM mà hầu hết chỉ có sự khác nhau ở phần danh bạ lưu danh sách liên lạc của mỗi người dùng. Bởi mỗi người dùng có riêng mỗi kiểu định dạng khác nhau như: có thể theo nhóm gia đình, nhóm công việc, bí danh, hay nick name thân thiện…. Đây cũng chính là một trong những khó khăn mà bài toán nhận dạng thực thể tên của tôi cần phải giải quyết thật tốt. Sau khi tìm được các đối số, tên các ứng dụng và hành động thì sẽ tới công việc của module thực thi. Tại đây module thực thi sẽ thực hiện các lệnh và gửi kết quả về cho hộp thoại để hiển thị cho người sử dụng.
Hình 3.1: Mô hình tổng thể hệ thống của VAV
Trong hình 3.1 ở trên gồm các thành phần:
- Dialogue Manager: là trình quản lý hộp thoại của hệ thống dùng để hiển thị yêu cầu và kết quả của người dùng.
- Speech Recognition (ASR): là bộ nhận dạng tiếng nói tự động chuyển thành văn bản ngôn ngữ nói.
- Lightweight AIML Matcher: là bộ phận xử lý các câu nói đơn giản (nếu có) trước khi đưa vào các bộ phận xử lý khác.
- Command Type Identifier: là bộ phận xác định loại câu lệnh gồm hai thành phàn chính:
o Application Classifier: phân loại ứng dụng
o Action/Aspect Identifier: xác định tác vụ hoặc khía cạnh cần tương tác
- Command Argument Recognizer: bộ phần nhận dạng thực thể tên cho câu lệnh đầu vào.
- Action Executor: là bộ phần thực hiện tác vụ gồm hai thành phần chính: o Task Template Matcher: thực hiện ghép các mẫu xử lý nhiệm vụ o Argument Name Resolver: chuẩn hóa lại tên đối số
3.2. Nhận dạng thực thể tên cho ngôn ngữ nói tiếng Việt
3.2.1. Mô hình hóa bài toán nhận dạng thực thể tên ngôn ngữ nói tiếng Việt ứng dụng trong tƣơng tác với điện thoại thông minh ứng dụng trong tƣơng tác với điện thoại thông minh
Nhận dạng thực thể tên là một nhiệm vụ xác định tên các thực thể trong các câu của văn bản. Đối với bài toán nhận dạng thực thể tên cho văn bản ngôn ngữ nói thì nhận dạng thực thể tên chính là nhiệm vụ xác định các đối số trong các câu văn nói của người dùng. Để thực hiện nhận dạng thực thể tên cho văn bản ngôn ngữ nói tiếng Việt có nội dung tương tác giữa người dùng và những chiếc ĐTTM. Tôi định nghĩa ra một danh sách các kiểu thực thể gồm 8 loại thực thể được mô tả chi tiết ở bảng 3.2 bên dưới như sau:
Bảng 3.2: Các loại thực thể tên áp dụng trong phạm vi tƣơng tác với điện thoại thông minh
Tên kiểu thực thể Mô tả
datetime Các biểu thức thể hiện về thời gian như: ngày, giờ, ngày tháng…
location Tên địa danh, địa chỉ như: tên các tỉnh, thành phố… url Địa chỉ website hoặc tên các trang web như: dân trí… cnumber Danh bạ điện thoại, số điện thoại, số fax như: 0912152965 cname Tên danh bạ, tên liên lạc được lưu trong danh bạ điện thoại
aname Tên của ứng dụng được cài trong ĐTTM như: skype,
facebook...
email Địa chỉ hòm thư điện tử
number Số (số thực, nguyên, phần trăm …)
Gọi là các câu nói tiếng Việt đầu vào.
Để nhận dạng thực thể tên cho ngôn ngữ nói tiếng Việt ứng dụng trong tương tác với ĐTTM tôi sẽ xây dựng mô hình thực hiện công việc nhận dạng thực thể tên cho các câu nói đầu vào được đề cập trong tập dữ liệu x (văn bản ngôn ngữ nói), Ex = {ei (li, ai, bi)} là tập các thực thể tên. Với mỗi ei (li, ai, bi) Ex, li L là thực thể cần tìm. Trong đó ai, bi là các chỉ số đầu tiên và cuối cùng các từ của ei trong x (1 ≤ ai ≤ bi ≤ n). Các thực thể tên là không được chồng chéo nhau, nếu tồn tại hai thực thể ei, ej Ex trong một câu đầu vào thì chỉ số đầu và cuối của hai thực thể phải đáp ứng yêu cầu như sau: bi < aj hoặc bj < ai. Cụ thể trong bảng 3.3 ở dưới thể hiện một số mẫu câu lệnh ngôn ngữ nói tự nhiên với việc gán nhãn thực thể, ở câu thứ 7 trong bảng 3.3, x = “thời tiết vũng tàu ngày kia” trong câu này có 2 thực thể tên: Ex = {e1 (location, 3, 4), e2 (datetime, 5, 6)}.
Dưới đây liệt kê một số ví dụ mẫu về các câu văn nói trong tiếng Việt có nội dung tương tác với ĐTTM sẽ được gán thực thể tên như bảng 3.3. Các thực thể tên trong câu được biểu thị trong dấu ngoặc vuông. Dữ liệu sẽ được gán nhãn cho toàn bộ các