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 câu nếu trong câu có đối số.
Bảng 3.3: Một số mẫu câu lệnh ngôn ngữ nói tự nhiên với gán nhãn thực thể tên
[ngã tư sở] ở đâu
(where is [so intersection])
đánh thức lúc [7 giờ kém 15 phút sáng]
(wake up at [quarter to 7 o’clock am])
gọi số [0903206714]
(call number [0903206714])
vào trang [dân trí chấm com chấm vn]
(open page [dan tri dot com dot vn])
đặt lịch họp với ibm lúc [9 giờ 15 sáng thứ tư tuần sau]
(arrange a meeting with ibm at [quarter pass 9 wednesday morning next week])
tìm đường từ [ga hà nội] đến [88 láng hạ]
(find direction from [ha noi station] to [88 lang ha])
thời tiết [vũng tàu] [ngày kia]
(weather in [vung tau] [the day after tomorrow])
âm lịch [hôm nay] ngày bao nhiêu
(what lunar date is [today])
gửi email cho [anh nam]
(send email to [anh nam])
mở [skype]
(open [skype])
gửi số điện thoại của [yến] cho [dương vũ]
(send the phone number of [yen] to [duong vu])
Nhận dạng thực thể tên được xem như là vấn đề phân đoạn dữ liệu chuỗi. Trong hầu hết các nghiên cứu trước, một số mô hình học máy được huấn luyện để nhận ra
các thực thể tên gồm từ hoặc các cụm từ của câu trong văn bản [4, 5]. Hơn nữa các mô hình đó còn sử dụng nhiều thông tin khác như: thông tin của từ, thông tin từ loại ngữ pháp (part-of-speech), tách từ. Đặc biệt, đối với các ngôn ngữ như tiếng Việt ranh giới của từ cần phải được xác định trước. Do đó các mô hình sẽ thường sử dụng 3 loại thông tin gồm: từ, giới từ, và các thông tin từ loại ngữ pháp để tạo ra các thuộc tính phong phú giúp huấn luyện ra mô hình có thể nhận dạng thực thể tên được tốt nhất. Trong nghiên cứu của tôi, với mô hình mà tôi xây dựng thì ngược lại hoàn toàn với các nghiên cứu trước đó. Tôi không sử dụng tách từ và các thông tin của từ như: ranh giới từ, hay thông tin từ loại ngữ pháp cho mô hình của mình. Bởi một vài lý do như sau:
Thứ nhất, về hiệu năng của việc phân tách từ và gán nhãn thông tin từ loại ngữ pháp là một khó khăn cho văn bản ngôn ngữ nói.
Thứ hai, nếu tôi thử làm như vậy thì dữ liệu mẫu của tôi phải chú thích rất nhiều do vậy rất tốn thời gian để xử lý.
Và lý do cuối cùng đó là tôi muốn mô hình của mình phải thật nhỏ gọn, có thể thích hợp và chạy tốt ngay trên ĐTTM mà không cần tới máy chủ.
Như vậy bài toán của tôi chính là một bài toán gán nhãn với 8 loại thực thể tên như định nghĩa ở bảng 3.2. Về bản chất gán nhãn cho dữ liệu là chính là một trường hợp đặc biệt của bài toán phân lớp trong văn bản, ở đây các lớp thực thể chính là các nhãn cần gán cho dữ liệu.
3.2.2. Xây dựng tập dữ liệu huấn luyện
Dữ liệu được xây dựng dựa trên các tính năng của điện thoại thông minh, các tính năng chủ yếu là của ĐTTM chạy hệ điều hành Andoird. Các tính năng này chính là các chức năng thực hiện của ĐTTM. Để xây dựng dữ liệu được tốt tôi chỉ làm dữ liệu cho 16 tính năng của ĐTTM mặc dù ĐTTM có rất nhiều tính năng tuy nhiên tôi chỉ giới hạn số tính năng là 16 để xác định phạm vi tương tác xử lý cho tốt. Dữ liệu được xây dựng gồm 4409 câu văn nói như: đặt chuông báo thức, ghi chú, thực hiện các cuộc gọi, kiểm tra thư điện tử, gửi tin nhắn, chơi nhạc, quay video, mở máy ảnh, hỏi ngày âm lịch, tìm đường đi, tìm vị trí trên bản đồ, hỏi giá vàng, hỏi thông tin thời tiết, thiết lập lịch hẹn, ghi chú…. Tập dữ liệu này tôi tự xây dựng theo cách dùng ứng dụng Google Now của Google nói vào các câu lệnh để yêu cầu ĐTTM thực hiện (ví dụ như các câu được minh họa chi tiết ở bảng 3.3).
Dưới đây tôi trình bày một vài thống kê về mặt dữ liệu như sau. Thứ nhất, thống kê số lượng các loại nhãn thực thể tên được gắn nhãn trong toàn bộ dữ liệu với 8 kiểu thực thể tên như định nghĩa ở bảng 3.2.
Hình 3.2: Số lớp thực thể đƣợc chú thích trên toàn bộ tập dữ liệu đầu vào
Trong đó, các câu được chú thích với kiểu thực thể tên ứng dụng “aname” cao nhất chiếm 30% trên tập dữ liệu đầu vào. Bởi kiểu thực thể tên này được nằm lẫn trong các tính năng khác của ĐTTM như: thời tiết, mở máy ảnh, đặt báo thức…Ngoài ra, kiểu thực thể “aname” được liệt kê chủ yếu ở tính năng mở các ứng dụng. Đây cũng chính là tính năng cho phép người dùng yêu cầu ĐTTM mở các ứng dụng của ĐTTM nên cần một số lượng lớn dữ liệu về những tên các ứng dụng phổ biến như skype, zalo, viber, yahoo, facebook, trò chơi clash of clan…
Đứng thứ 2 là kiểu thực thể tên địa chỉ, vị trí “location” chiếm 22%, kiểu thực thể này thường được sử dụng trong các tính năng như: tra bản đồ, chỉ đường, tìm đường đi từ vị trí A tới vị trí B, hỏi địa điểm... Bên cạnh đó tên vị trí địa lý rất đa dạng và phong phú cho nên dữ liệu chỉ đứng sau dữ liệu cho aname.
Tiếp theo là dữ liệu về kiểu thực thể thời gian “datetime” chiếm tới 15% trên toàn tập dữ liệu, dữ liệu thời gian gần như có mặt ở mọi tính năng như: đặt báo thức, xem thời tiết, hay thiết lập lịch hẹn, lên kế hoạch cho cho người dùng, thậm chí ngay trong các ghi chú cá nhân…. Hơn nữa, dữ liệu cho kiểu thực thể tên thời gian rất đa dạng và phong phú gồm cả các câu văn nói ngắn gọn và cả những câu văn viết đầy đủ.
Kiểu thực thể tên biểu thức số, tỉ lệ phần trăm “number” chiếm 11% trên toàn tập dữ liệu mẫu. Dữ liệu kiểu này đa phần nằm trong phần tính năng thiết lập hệ thống như tăng giảm độ sáng màn hình, giảm loa hay âm lượng của ĐTTM.
Các kiểu thực thể tên danh bạ “cname” chiếm 9%, địa chỉ website, tên trang web “url” chỉ chiếm 6% trên toàn tập dữ liệu mẫu. Do tên danh bạ mỗi người có cách lưu khác nhau nên tôi chỉ làm đại diện một số kiểu mà mình gặp trong quá trình nghiên cứu. Còn kiểu thực thể url thì thực hiện trên một số địa chỉ website phổ biến tại Việt Nam.
Cuối cùng là kiểu thực thể số điện thoại liên lạc “cnumber” và địa chỉ “email” lần lượt chiếm 5% và 2% do các kiểu thực thể này khá đồng đều và đủ tốt để cho huấn luyện mô hình.
Tuy nhiên trong toàn bộ tập dữ liệu mẫu không phải tất cả các câu dữ liệu đều có đối số (hay thực thể tên cần tìm) mà đôi khi có những câu không có đối số do đó tôi cũng có một thống kê về mặt số lượng các câu trong tổng số 4409 câu dữ liệu dựa vào tổng số 16 tính năng khác nhau của ĐTTM như: cài đặt hệ thống, nghe nhạc, quay phim chụp ảnh, mở ứng dụng, gọi điện, tìm kiếm danh bạ, nhắn tin, mở email, thiết lập lịch, đặt báo thức, ghi chú, nhắc nhở…
Trong số các câu dữ liệu mẫu thì dữ liệu cho tính năng bản đồ được tạo ra nhiều nhất với 1000 câu. Do vị trí địa lý, vùng miền, tên các thành phố, tỉnh là rất nhiều và đa dạng phong phú vì thế tôi đã cố gắng đưa vào các tên vị trí, địa chỉ nhiều nhất có thể để tăng khả năng nhận dạng cho mô hình.
Tiếp đến là các câu dữ liệu cho tính năng cài đặt hệ thống của ĐTTM là 523 câu. Với phần cài đặt hệ thống của ĐTTM này có rất nhiều phần cài đặt con khác nhau như: cài đặt độ sáng màn hình, cài đặt tăng giảm âm thanh, cài đặt dịch vụ định vị vị trí, cài đặt 3G, cài đặt wifi, cài đặt bluetooth, cài đặt font, cài đặt chế độ máy bay, cài đặt chế độ xoay màn hình. Với 10 tính năng con trong tính năng cài đặt như vậy cho nên dữ liệu mẫu cho phần này cũng tương đối nhiều. Đó là lý do vì sao dữ liệu cho tính năng này đứng thứ 2 chỉ sau dữ liệu của tính năng bản đồ.
Dữ liệu cho tính năng mở các ứng dụng đứng thứ 3 với 358 câu dữ liệu. Đây chính là dữ liệu mẫu cho tính năng mở các ứng dụng trên ĐTTM khi người dùng đưa ra các yêu cầu. Do người Việt khi đọc các tên ứng dụng trên ĐTTM có thể nói tiếng Anh hoặc phiên âm sang tiếng Việt. Do vậy để bao phủ được các trường hợp này dữ liệu cho tính năng này cũng được làm phong phú hơn.
Các dữ liệu cho các tính năng gồm: trình duyệt, lịch, gọi điện, thời tiết, tin nhắn lần lượt là 306, 242, 442, 244 và 237 câu, riêng dữ liệu về gọi điện và tin nhắn cho số điện thoại dữ liệu được làm phong phú với các mẫu dữ liệu khác nhau như có khoảng trắng, dấu gạch ngang hoặc dấu chấm ngăn cách giữa các số của điện thoại, mục đích để làm cho dữ liệu phong phú không chỉ giúp người dùng có thể tương tác bằng ngôn ngữ nói mà có thể giúp người dùng nhập bằng tay khi cần thiết.
Dữ liệu cho tính năng kiểm tra email gồm 182 câu, tính năng ghi chú gồm 57 câu, tính năng nghe nhạc gồm 123 câu, tính năng mở camera, chụp hình là 112 câu và tính năng tìm kiếm web là 65 câu. Dữ liệu các tính năng khác và toàn tập dữ liệu được thể hiện trực quan bằng đồ thị dưới sau:
Hình 3.3: Dữ liệu cho từng nhóm tính năng
Để tăng khả năng nhận dạng các thực thể tên và tạo ra các thuộc tính có giá trị cao giúp huấn luyện mô hình tốt hơn, tôi đã xây dựng những bộ từ điển với nhiều kiểu dữ liệu khác nhau giúp cho việc tìm kiếm các thuộc tính được chính xác hơn.
- Bộ từ điển streetname: gồm dữ liệu về tên các con phố, tên các con đường phổ biến ở hà nội và tên các đường phố của một số tỉnh thành của Việt Nam như: lương thế vinh, vương thừa vũ, xuân thủy, phạm văn đồng…. từ điển này được tạo ra nhiều nhất với 738 câu chiếm 38.24% trên toàn bộ các bộ từ điển được tạo ra.
- Bộ từ điển url: gồm dữ liệu về các địa chỉ website phổ biến ở Việt Nam, do ASR nhận dạng tên các địa chỉ url này là không liền mạch mà tách rời thành các từ rời rạc như: dân trí chấm com chấm vn hay vnexpress chấm net…v.v. Do vậy để có thể bắt được hết các trường hợp tôi đã thử sử dụng chương trình tìm kiếm
bằng giọng nói của Google (Google Voice Search) đọc vào các địa chỉ website để làm ra bộ từ điển này với 424 câu khác nhau chiếm 21.97%.
- Bộ từ điển aname: đây là dữ liệu về tên các ứng dụng được cài trên ĐTTM từ các kho phần mềm của nhà cung cấp, đa phần các tên ứng dụng này người Việt cũng quen thường đọc theo tên tiếng Anh, đôi khi cũng đọc tiếng Việt ví dụ như: mở camera hoặc mở chương trình chụp ảnh…. Do vậy bộ từ điển này được tạo ra đảm bảo chắc chắn rằng người dùng nói theo cách nào hệ thống cũng có thể nhận được. Đây cũng là lý do bộ từ điển này được làm nhiều lên với 173 câu chiếm 8.96%.
- Bộ từ điển province: đây là từ điển lưu giữ tên các tỉnh, thành phố của Việt Nam như: phú thọ, hà nội, vĩnh long, hậu giang….với 114 câu chiếm 5.91% trên tổng các từ điển.
- Bộ từ điển organizationname: đây là từ điển về tên các tổ chức, công ty, địa điểm công cộng như: chi nhánh, công ty, cửa hàng, khách sạn, khu công nghiệp, cao đẳng, bệnh viện, tòa án, thành ủy, ga tàu… với 128 câu chiếm 6.63%. Đây là từ điển chỉ những nơi chốn mà người dùng có thể hỏi hoặc tìm đường đi đến. - Bộ từ điển addressword: đây là từ điển gồm các từ liên quan đến địa chỉ như:
quán ăn, ngã rẽ, ngã 3, 4, 5, khu đô thị, làng, xã, tổ dân phố…với 82 câu khác nhau chiếm 4.25% trên tổng số các từ điển.
- Bộ từ điển otherapp: là từ điển cho các tên ứng dụng ngoài các tên ứng dụng trong aname thì còn rất nhiều các tên ứng dụng khác trên store như: camera 360, từ điển oxford, office suit…với 78 câu chiếm 4.04% trên tổng số các từ điển. - Bộ từ điển time: là từ điển chỉ thời gian theo cách nói của người Việt như: nửa
đêm, rạng sáng, ngày tới, chiều ngày mai, sáng ngày kia…từ điển này chiếm 2.02% trên tổng số các từ điển.
- Bộ từ điển partofurl: gồm các phần mở rộng của tên miền website như: chấm com, chấm vn, chấm com chấm vn… chiếm 1.09% trên tổng số các từ điển. - Bộ từ điển haslocation: gồm các từ hoặc cụm từ mang ý định có xu hướng về