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ề
địa chỉ như: ở, từ, đường đi đến, tôi muốn đến, gần đây có…. chiếm 1.61% trên tổng số các từ điển.
- Bộ từ điển day: gồm các cụm từ chỉ cách nói về ngày như: ngày hôm qua, ngày hôm kia, hôm tới, chủ nhật, nay, mai… chiếm 0.57% trên tổng số các từ điển. Bộ từ điển này giúp cho hệ thống có thể nhận biết tốt hơn với các cách nói ngắn gọn của người dùng, cách nói mà thường gần như không bao giờ tồn tại trong văn bản viết thông thường.
- Bộ từ điển frequency: đây là từ điển gồm các từ, cụm từ chỉ trạng thái tần xuất về mặt thời gian như: hàng ngày, hàng tuần, hàng tháng, mấy ngày nữa….chiếm 1.66% trên tổng số các từ điển.
- Bộ từ điển hascontactname: gồm các từ, cụm từ mang ý nghĩa liên quan tới việc thao tác với danh sách danh bạ điện thoại như: gọi cho, điện cho, nhắn cho, tin
nhắn của….chiếm 1.45% trên tổng số các từ điển. Bộ từ điển này làm cho việc nhận biết các dấu hiệu liên quan đến việc tương tác giữa người và danh bạ điện thoại.
- Bộ từ điển hascontactnumber: gồm các từ, cụm từ mang ý nghĩa liên quan tới việc thao tác với số điện thoại như: gọi số, nhắn tin tới số, call, call số, gửi đến số, thêm số…bộ từ điển này chiếm 1.61% trên tổng số các từ điển.
Dữ liệu cho những bộ từ điển này được thể hiện chi tiết theo biểu đồ dưới như sau:
Hình 3.4: Dữ liệu từ điển cho từng phục vụ tìm kiếm các thực thể tên 3.3. Xây dựng mô hình dựa trên phƣơng pháp tiếp cận học máy
Có rất nhiều phương pháp tiếp cận dựa trên mô hình học máy khác nhau như: Conditional Random Fields (CRFs), Maximum Entropy (MaxEnt), Support Vector Machines (SVMs), Hidden Markov Model (HMM), Maximum Entropy Markov Model (MEMM)…. Trong bài toán phân đoạn dữ liệu chuỗi, những mô hình đồ thị tuyến tính như Conditional Random Fields (CRFs) [13] đã được chứng minh rất hiệu quả. Một trong những thế mạnh của CRFs đó là có thể mã hóa các phụ thuộc tuần tự giữa các vị trí liên tiếp. Tuy nhiên trong luận văn này tôi đã quyết định sử dụng mô hình Maximum Entropy (MaxEnt) classification [3] để ứng dụng trên điện thoại thông minh bởi vì một vài lý do từ nghiên cứu cơ sở lý thuyết thực tiễn về mô hình MaxEnt và dữ liệu thực tế như sau:
Thứ nhất, MaxEnt phù hợp với kiểu dữ liệu thưa như ngôn ngữ tự nhiên [4, 5, 17, 20] điển hình như MaxEnt đã thành công với các nhiệm vụ như: thông tin từ loại ngữ pháp (part-of-speech), phân tích (parsing), thậm chí cả nhiệm vụ nhận dạng thực thể tên. Hơn nữa MaxEnt có hiệu suất tốt hơn cả SVMs và một số phương pháp khác trong một số trường hợp riêng như phân lớp dữ liệu thưa.
Thứ hai, giống như CRFs, MaxEnt cũng mã hóa được nhiều thuộc tính phong phú và chồng chéo ở các cấp độ khác nhau.
Thứ ba, MaxEnt rất nhanh trong huấn luyện và suy luận trong so với CRFs, MaxEnt cũng là mô hình nhỏ có thể tương thích và chạy tốt trên các thiết bị như ĐTTM.
Tuy nhiên để đảm bảo chăc chắn kết quả huấn luyện mô hình được khách quan tôi đã quyết định sử dụng thêm mô hình CRFs để đánh giá kết quả huấn luyện mô hình dựa trên cách trích chọn thuộc tính giống như sử dụng cho MaxEnt.
3.3.1. Xây dựng mô hình cực đại hóa Entropy
Nguyên lý MaxEnt là xây dựng một mô hình phân lớp dựa trên từ những gì đã biết từ dữ liệu giả sử không có gì khác về những gì chưa biết. Có nghĩa rằng mô hình MaxEnt là mô hình có Entropy cao nhất trong các ràng buộc đáp ứng quan sát được từ dữ liệu thực nghiệm. Năm 1996 Berger [3] cùng các cộng sự đã đưa ra mô hình MaxEnt theo công thức toán học như sau:
(3.1) Trong đó là đối tượng dữ liệu cần được phân loại, là các lớp nhãn đầu ra.
là các véc tơ trọng số liên quan với các véc tơ thuộc tính và là thừa số chuẩn hóa để đảm bảo rằng là một phân phối xác suất.
Các thuộc tính trong MaxEnt được định nghĩa như một hàm có hai đối số khi đó [e] trả về giá trị 1 nếu biểu thức logic e đúng, trả về 0 nếu ngược lại. Bằng trực giác ta có thể thấy chỉ ra mối tương quan giữa một thuộc tính hữu ích mà ở đây được gọi là mẫu ngữ cảnh (cp) của đối tượng dữ liệu và một lớp nhãn đầu ra .
Để xây dựng mô hình bằng MaxEnt tôi đã định nghĩa ra một tập lớp nhãn
. Trong đó b- <tên kiểu thực thể> với ý nghĩa là bắt đầu một thực thể tên, và i- <tên kiểu thực thể> với ý nghĩa là bên trong một thực thể tên hoặc từ cuối cùng trong thực thể tên, còn nhãn o với ý nghĩa là không phải thực thể tên. Tập hợp các nhãn này dùng để gán nhãn cho dữ liệu dạng chuỗi theo định dạng IOB2, một cách trình bày gán nhãn cho dữ liệu chuỗi phổ biến trong các bài toán phân đoạn câu, từ. Như vậy, khi gặp câu
đầu vào có kiểu thực thể, từ đầu tiên của thực thể tên đó được đánh dấu bằng cách gán nhãn b-<tên kiểu thực thể> các từ bên trong được đánh dấu bằng cách gán nhãn i-<tên kiểu thực thể> đến khi hết kiểu thực thể, còn nếu không phải thực thể thì được gán nhãn o.
Ví dụ gán các nhãn tương ứng cho câu “thời tiết vũng tàu ngày mai thế nào” theo định dạng IOB2 được mô tả chi tiết trong bảng 3.4 như sau:
Bảng 3.4: Ví dụ gán nhãn cho các câu theo định dạng IOB2 Chuỗi quan sát (Observation
sequence) Gán nhãn dữ liệu theo dạng IOB2
thời o tiết o vũng b-location tàu i-location ngày b-datetime mai i-datetime thế o nào o
Huấn luyện và ước lượng tham số trong mô hình MaxEnt là tìm kiếm một véc tơ trọng số tối ưu nhằm cực đại hóa entropy hoặc cực đại hóa hàm log-likehood đối với tập dữ liệu D. Bởi vì hàm log-likehood là hàm lồi