- Viết hoa chữ cái đầu tiên của tên riêng, tên người, địa danh.
2.3.3. Máy vectơ hỗ trợ (SVM)
Mô hình máy vector hỗ trợ SVM (Support Vector Machine) được giới thiệu lần đầu tiên vào năm 1995 bởi Vapnik, mặc dù những nền móng cơ bản của SVM đã có từ năm 1960 (bao gồm các công trình được thực hiện rất sớm bởi Vapnik và Alexey trong lý thuyết học thống kê). SVM ra đời để giải quyết nhận dạng mẫu hai lớp sử dụng nguyên lý Cực tiểu hóa Rủi ro Cấu trúc (Structural Risk minimization).
Ý tưởng của thuật toán này là cho trước một tập huấn luyện được biểu diễn trong không gian vector, trong đó, mỗi văn bản tương ứng với một điểm. Phương pháp này tìm ra một siêu phẳng (hyperplane) quyết định tốt nhất có thể chia các điểm trên không gian này thành hai lớp riêng biệt tương ứng lớp +1 và lớp -1. Chất lượng của siêu phẳng này được quyết định bởi khoảng cách biên (margin) của điểm dữ liệu gần nhất của mỗi lớp (điểm support vector) đến siêu phẳng này. Khoảng cách biên càng lớn thì siêu phẳng quyết định càng tốt, đồng thời việc phân loại (classify) càng chính xác. Mục đích của thuật toán SVM là tìm ra được khoảng cách biên lớn nhất để tạo kết quả phân lớp tốt.
Hình 2.5. Hình minh họa siêu phẳng phân lớp.
Siêu phẳng phân chia dữ liệu huấn luyện thành 2 lớp +1 và -1 với khoảng cách biên lớn nhất. Hai đường kẻ nét đứt song song là biên của mỗi phân lớp tới siêu phẳng, hay còn gọi là lề (margin).Các điểm gần siêu phẳng nhất là các điểm vectơ hỗ trợ (nằm trên đường kẻ nét đứt).
Thuật toán SVM:
Xét bài toán phân lớp đơn giản nhất – phân thành 2 lớp (phân lớp nhị phân) với tập dữ liệu mẫu:
(2.1) Trong đó,
• xi là vectơ đặc trưng của mẫu huấn luyện thứ i, biểu diễn 1 điểm trong không gian n chiều.
• yi là nhãn của mẫu huấn luyện thứ i.
• l là tổng số mẫu huấn luyện được cho trước.
Các mẫu được phân lớp thành các mẫu dương và mẫu âm như hình 2.2: • Các mẫu dương thuộc lĩnh vực cần quan tâm, được gán nhãn yi = 1. • Các mẫu âm không thuộc lĩnh vực cần quan tâm, gán nhãn yi = -1. Các siêu phẳng trong không gian có phương trình:
Với . là ký hiệu cho tích vô hướng và là một vectơ pháp tuyến của siêu phẳng. Tham số xác định khoảng cách giữa gốc tọa độ và siêu phẳng theo hướng vectơ pháp tuyến (trong đó ||w|| là độ dài của vectơ w).
SVM biên cứng
SVM biên cứng được áp dụng đối với dữ liệu khả tách tuyến tính và nó cho kết quả phân lớp một cách chính xác với tất cả các dữ liệu dạng này. Trong phương trình (2.2), ta cần tính toán và để các biên đạt cực đại, hay khoảng cách giữa hai siêu phẳng ranh giới song song ở xa nhau nhất có thể trong khi vẫn phân chia được dữ liệu. Các ranh giới ấy được xác định bằng
và (2.3)
Khi này, khoảng cách từ mỗi siêu phẳng tới ranh giới (2.3) sẽ là 1 / ||w|| và khoảng cách giữa hai siêu phẳng ranh giới là M = . Vì vậy ta muốn M cực đại thì phải cực tiểu hóa giá trị . Để đảm bảo không có điểm dữ liệu nào trong lề, ta thêm vào các điều kiện sau, với mỗi :
thuộc lĩnh vực cần quan tâm hoặc
không thuộc lĩnh vực quan tâm Có thể viết gọn lại như sau với mọi :
(2.4) Tóm lại, ta có bài toán tối ưu hóa sau:
Các ràng buộc là để đảm bảo sự phân lớp chính xác, và cực tiểu , tương đương với biên cực đại.
SVM biên mềm
Tuy nhiên, trong thực tế, ta không thể đảm bảo việc tách biệt dữ liệu là hoàn toàn tuyến tính và phải chấp nhận một vài phân lớp sai sót vì một số trường hợp đặc biệt (như hình 2.6).
Hình 2.6. Minh họa SVM biên mềm với tham số C
Dữ liệu có thể được thay đổi bằng cách di chuyển điểm bóng mờ xám đến một vị trí mới theo mũi tên, điều đó làm giảm biên đáng kể mà một SVM biên cứng khó có thể phân tách dữ liệu. Hình 2.6A, biên quyết định cho SVM với một giá trị rất cao của C mà bắt chước hành vi của SVM biên cứng, do đó dẫn tới lỗi huấn luyện. Một giá trị C nhỏ hơn (hình 2.6B) cho phép bỏ qua điểm gần ranh giới và làm tăng biên. Ranh giới quyết định giữa các điểm dương và các điểm âm được thể hiện bằng đường kẻ đậm. Các đường kẻ nhạt hơn là ranh giới (giá trị bằng -1 hoặc +1).
Kết quả lý thuyết và thực nghiệm cho thấy với biên lớn hơn thì SVM biên mềm sẽ cho hiệu quả tốt hơn so với SVM biên cứng. Để chấp nhận một số lỗi, người ta đưa vào một tham số biên độ C là độ dịch sai số cho phép giữa lỗi và độ rộng của biên. Bất đẳng thức (2.4) được thay thế bằng:
Trong đó, là các biến phụ không âm. được thêm vào hàm tối ưu hóa:
Hằng số đại diện cho mức chấp nhận lỗi, thiết lập mức độ quan trọng của việc cực đại biên và giảm số lượng biến phụ . Công thức này được gọi là SVM mềm.
Ảnh hưởng của sự lựa chọn C được minh họa trong hình 2.6.Với một giá trị C lớn (minh họa hình 2.6A), hai điểm gần siêu phẳng nhất bị ảnh hưởng lớn hơn các
điểm dữ liệu khác. Khi C giảm (Hình 2.6B), những điểm chuyển động bên trong lề, và hướng của siêu phẳng được thay đổi, dẫn đến một biên lớn hơn cho dữ liệu.
2.4. Cây Trie
Cấu trúc dữ liệu Trie tree được sử dụng trong đồ án nhằm lưu trữ và hỗ trợ tìm kiếm các dữ liệu về địa điểm trong nội dung tin nhắn. Cụ thể, trie tree chứa danh sách hơn 18800 địa danh, địa điểm, tên phố, hàng quán, khách sạn... phần lớn thuộc phạm vi thành phố Hà Nội. Mỗi token trong tin nhắn sẽ được kiểm tra có tồn tại trong danh sách này hay không và kết quả trả ra sẽ tạo thành một đặc trưng của token.
2.4.1.Cấu trúc
Trong khoa học máy tính, trie, hay cây tiền tố, là một cấu trúc dữ liệu sử dụng cây có thứ tự, dùng để lưu trữ một mảng liên kết các xâu ký tự. Mỗi nút trong cây liên kết với một xâu kí tự sao cho các xâu kí tự của tất cả các nút con của một nút đều có chung một tiền tố, chính là xâu kí tự của nút đó.
Trong cây tiền tố, mỗi nút (Trie node) có thể có một hoặc nhiều nút con, tương ứng với nhiều nhánh. Nút con cuối cùng không có rẽ nhánh gọi là nút lá (Leaf). Nút gốc tương ứng với xâu kí tự rỗng. Khóa trong trie không nhất thiết phải là xâu kí tự mà có thể là một danh sách có thứ tự của bất kì đối tượng nào, chẳng hạn như chữ số, hay hình dạng.
Hình 2.7 Ví dụ về cây tiền tố Trie tree
Cây tiền tố thể hiện các giá trị: "A", "to", "tea", "ted", "ten", "i", "in", and "inn". Nút gốc nhận giá trị rỗng. Các từ “tea”,”ted”,”ten” đều có tiền tố “te” nên nhận nút “te” làm nút cha.