- Viết hoa chữ cái đầu tiên của tên riêng, tên người, địa danh.
3 https://github.com/cjlin1/libsvm
3.3.2. Huấn luyện CRF
Bước 1: Xây dựng bộ dữ liệu huấn luyện
Các dữ liệu mẫu nguyên thủy (dữ liệu raw) là những câu văn Tiếng Việt có nội dung giống tin nhắn điện thoại, các câu mẫu được tập hợp vào cùng 1 file text có tên “sentence_3.txt”, mỗi câu được viết trên một dòng như sau:
Tiếp theo, từ file dữ liệu raw, ta tạo ra file dữ liệu huấn luyện thông qua một chương trình Java xử lý. File dữ liệu huấn luyện đc tạo ra có định dạng như sau:
[từ thứ 0] [từ loại] [thuộc danh sách] [hình thái] [nhãn phân loại] [từ thứ 1] [từ loại] [thuộc danh sách] [hình thái] [nhãn phân loại] [từ thứ 2] [từ loại] [thuộc danh sách] [hình thái] [nhãn phân loại] ...
[từ thứ n] [từ loại] [thuộc danh sách] [hình thái] [nhãn phân loại] Ví dụ:
Sáng_mai N false H B-RT
8h M false T B-CLK
ra R false T O
PTIT Np true H B-LOC
gặp V false T O
nhau N false T O
nhé I false T O
Trong đó, mỗi dòng xử lý cho một từ trong câu:
• [từ thứ i]: Nhận giá trị là nội dung text của từ thứ i trong câu đang xét, các từ này có thể là từ đơn hoặc từ ghép, được tách bởi thư viện vnTagger.
• [từ loại]: Xác định từ hiện tại đang xét là từ loại nào, nhận các giá trị: danh từ/ tính từ/ động từ/ trạng từ/ danh từ riêng,... Số lượng nhãn loại từ khá nhiều và chi tiết. Giá trị cột này cũng được tính toán bởi thư viện vnTagger.
• [thuộc danh sách]: Nhận giá trị “true” hoặc “false”. Trường này cho biết từ đang xét có thuộc danh sách địa danh, địa điểm có sẵn hay không, được lưu trữ và tìm kiếm bởi cây tiền tố Trie Tree (chương 2).
• [hình thái]: Nhận giá trị “H” hoặc “T”. Trường này cho biết từ có được viết hoa hay không, dựa trên cơ sở các danh từ riêng thường được viết hoa chữ cái đầu. • [nhãn phân loại]: Nhận 1 trong các giá trị output class được định nghĩa ở phần
3.3.1. Đây sẽ là kết quả phân loại cuối cùng mà ta nhận được. Sau tiền xử lý, ta thu được dữ liệu huấn luyện cho CRF như sau:
Hình 3.2. Kết quả tiền xử lý CRF
Mặt khác, dựa vào việc quan sát và phân tích mối liên hệ giữa các token, ta tạo ra các template và đưa vào trong file “template” để phục vụ huấn luyện CRF:
Sáng_mai N false H B- RT
8h M false T B-CLK ra R false T O PTIT Np true H B-LOC gặp V false T O nhau N false T O nhé I false T O ? ? false T O
Ví dụ:
U05: %x[-1,0]/ %x[0,0] : khả năng token hiện tại nhận output class X khi từ đứng trước 2 vị trí có giá trị là “8h” và từ đứng trước 1 vị trí là “ra”.
X nhận nhãn {B-LOC, B-CLK., I-RT, O,...}.
Bước 2: Tạo mô hình huấn luyện
Sau khi xây dựng được tập tin có chứa các mẫu huấn luyện và file template, việc tiếp theo là tạo một tập tin lưu lại mô hình của những bộ huấn luyện đó. Để thực hiện việc này, ta sử dụng lệnh trong công cụ CRF++:
crf_learn template train.txt model