Nội dung bài viết trình bày công cụ gán nhãn từ loại tiếng Việt dựa trên Conditional Random Fields và Maximum Entropy. Để hiểu rõ hơn, mời các bạn tham khảo chi tiết nội dung bài viết.
JVnTagger: Công cụ gán nhãn từ loại tiếng Việt dựa Conditional Random Fields Maximum Entropy Sản phẩm nhánh 8.3 Phụ trách: Phan Xuân Hiếu 1 Giới thiệu JVnTagger công cụ gán nhãn từ loại tiếng Việt dựa Conditional Random Fields (Lafferty et al., 2001) Maximum Entropy (Nigam et al., 1999) JVnTagger xây dựng khuôn khổ đề tài cấp nhà nước VLSP với liệu huấn luyện khoảng 10.000 câu Viet Treebank Thử nghiệm với phương pháp 5-fold cross validation cho thấy kết gán nhãn với CRFs đạt giá trị F1 lớn 90.40% Maxent đạt giá trị F1 lớn 91.03% Mô tả JVnTagger Công cụ cài đặt ngôn ngữ Java (phiên 1.6) Để thực thi cơng cụ, cần cài đặt Java Runtime Environment 2.1 Cấu trúc thư mục của JVnTagger: bin (lưu các file .classes đã được biên dịch) inputdir (lưu các file văn bản để thử nghiệm gán nhãn từ loại với JVnTagger) lib (lưu các thư viện cần dùng cho JVnTagger) lbfgs.jar (thư viện cần dung để tối ưu hóa hàm likelihood cho CRFs Maxent) model (thư mục lưu các mơ hình đã được huấn luyện CRFs Maxent Mơ hình CRFs sinh nhờ huấn luyện với cơng cụ FlexCRFs++ Mơ hình Maxent sinh nhờ huấn luyện dùng jmaxent.Trainer JVnTagger) src (thư mục lưu mã nguồn công cụ) 2.2 Các packages trong JVnTagger Packages Mô tả jflexcrfs Lưu mã nguồn CRFs cho gán nhãn liệu với mơ hình huấn luyện lưu trong model/crfs. Lưu ý định dạng mơ hình phù hợp với định dạng mơ tả FlexCRFs++1 Xem thêm phần để biết thêm cơ sở lý thuyết CRFs flexcrfs.Labeling gán nhãn câu với CRFs jmaxent Lưu mã nguồn Maximum Entropy Xem thêm phần http://flexcrfs.sourceforge.net/ để biết thêm sở lý thuyết Maxent jmaxent.Trainer huấn luyện mơ hình Maximum Entropy jmaxent.Classification phân lớp với Maximum Entropy jvntagger.data (mã nguồn cho phép thao tác, xử lý liệu) jvntagger.data TWord lưu từ vựng nhãn từ loại tương ứng Nhãn nhận giá trị null (trong trường hợp từ chưa được gán nhãn) jvntagger.data Sentence tập từ vựng nhãn tương ứng (tập TWord) jvntagger.data DataReader lớp trừu tượng, thừa kết lớp để đọc liệu với liệu với định dạng khác jvntagger.data DataWriter lớp trừu tượng, thừa kế lớp để lưu dữ liệu đầu với định dạng khác jvntagger.data.ContextGenerator lớp trừu tượng, thừa kế lớp để thực chiến lược trích chọn thơng tin ngữ cảnh từ liệu khác jvntagger.data TaggingData lựa chọn đặc trưng từ liệu theo ContextGenerator xác định jvntagger Package cho gán nhãn từ vựng tiếng Việt jvntagger.BasicContextGenerator thực thi ContextGenerator với đặc trưng lựa chọn như mô tả phần 3.3 jvntagger.POSTagger interface định nghĩa hàm cơ bản cho gán nhãn từ loại jvntagger.POSDataReader jvntagger.POSDataWriter jvntagger.CRFTagger jvntagger.MaxentTagger jvntagger.POSTagging đọc liệu tách từ theo định dạng câu lưu trên một dòng ghi liệu sau gán nhãn định dạng câu dòng từ câu gán thêm nhãn từ loại Ví dụ “Mãi_mãi/R tuổi/N 20/M /.” câu sau gán nhãn từ loại thực thi POSTagger với CRFs thực thi POSTagger với phương pháp Maximum Entropy giao diện dòng lệnh cho gán nhãn từ loại tiếng Việt Cơ sở lý thuyết 3.1 Giới thiệu Maximum Entropy Tư tưởng Maximum Entropy “ngồi việc thỏa mãn số rang buộc mơ hình đồng tốt” Để rõ hơn về vấn đề này, ta xem xét toán phân lớp gồm có lớp Ràng buộc mà biết trung bình 40% tài liệu chứa từ “professor” nằm lớp faculty Trực quan cho thấy có tài liệu chứa từ “professor” nói có 40% khả tài liệu thuộc lớp faculty, 20% khả cho khả lại (thuộc lớp lại) Mặc dù maximum entropy dùng để ượng lượng phân phối xác suất nào, xem xét khả maximum entropy cho việc gán nhãn liệu chuỗi Nói cách khác, ta tập trung vào việc học phân phối điều kiện chuỗi nhãn tương ứng với chuỗi (xâu) đầu vào cho trước 3.1.1 Các Ràng buộc và Đặc trưng Trong maximum entropy, người ta dùng liệu huấn luyện để xác định ràng buộc phân phối điều kiện Mỗi ràng buộc thể đặc trưng nào đó của liệu huấn luyện Mọi hàm thực quan sát đầu vào nhãn đầu xem như là đặc trưng f i (o, s ) Maximum Entropy cho phép giới hạn phân phối mơ hình lý thuyết gần giống giá trị kì vọng cho đặc trưng này trong liệu huấn luyện D Vì người ta mơ hình hóa xác suất P (o | s ) như sau (ở đây, o quan sát đầu vào s quan sát đầu ra) P (o | s ) = ⎛ ⎞ exp⎜⎜ ∑ λi f i (o, s )⎟⎟ Z (o ) ⎝ i ⎠ (2.1) Ở f i (o, s ) đặc trưng, λi tham số cần phải ướng lượng Z (o ) thừa số chuẩn hóa đơn giản nhằm đảm bảo tính đắn định nghĩa xác suất (tổng xác suất tồn khơng gian 1) Z (o ) = ∑ exp ∑ λ f (o, s ) i c i c Lưu ý, mỗi hàm đặc trưng f i (o, s ) ánh xạ từ Ỉ[0,1] Một ví dụ hàm đặc trưng là f(từ “học_sinh”, nhãn danh từ N) = Một số phương pháp huấn luyện mô hình từ liệu học bao gồm: IIS (improved iterative scaling), GIS, L-BFGS, v.v 3.2 Giới thiệu Conditional Random Fields CRFs mơ hình trạng thái tuyến tính vơ hướng (máy trạng thái hữu hạn huấn luyện có điều kiên) tuân theo tính chất Markov thứ CRFs chứng minh thành cơng cho tốn gán nhãn cho chuỗi như tách từ, gán nhãn cụm từ, xác định thực thể, gán nhãn cụm danh từ, etc Gọi o = (o1, o2, …, oT) chuỗi liệu quan sát cần gán nhãn Gọi S tập trạng thái, trạng thái liên kết với nhãn l∈L Đặt s = (s1, s2,…, sT) chuỗi trạng thái đó, CRFs xác định xác suất điều kiện chuỗi trạng thái biết chuỗi quan sát như sau: pθ (s | o) = ⎡T ⎤ exp ⎢∑∑ λ k f k ( st −1 , s t , o, t )⎥ Z (o) ⎣ t =1 k ⎦ (1) ⎛ ⎞ T Gọi Z (o) = ∑ s ' exp⎜ ∑∑ λ k f k ( s 't −1 , s ' t , o, t ) ⎟ thừa số chuẩn hóa tồn chuỗi nhãn có ⎝ t =1 ⎠ k thể fk xác định hàm đặc trưng và λ k trọng số liên kết với đặc trưng fk Mục đích việc học máy với CRFs ước lượng trọng số Ở đây, ta có hai loại đặc trưng fk : đặc trưng trạng thái (perstate) đặc trưng chuyển (transition) fk fk ( st , o, t ) = δ ( st , l ) x k (o, t ) (2) ( st −1 , st , t ) = δ ( st −1 , l )δ ( st , l ) (3) ( per − state ) ( transition ) Ở δ Kronecker- δ Mỗi đặc trưng trạng thái (2) kết hợp nhãn l trạng thái st vị từ ngữ cảnh - hàm nhị phân xk(o,t) xác định ngữ cảnh quan trọng quan sát o vị trí t Một đặc trưng chuyển (3) biểu diễn phụ thuộc chuỗi cách kết hợp nhãn l’ trạng thái trước st-1 nhãn l trạng thái st Người ta thường huấn luyện CRFs cách làm cực đại hóa hàm likelihood theo liệu huấn luyện sử dụng kĩ thuật tối ưu như L‐BFGS. Việc lập luận (dựa mơ hình học) tìm chuỗi nhãn tương ứng chuỗi quan sát đầu vào Đối với CRFs, người ta thường sử dụng thuật tốn qui hoạch động điển hình Viterbi để thực lập luận với liệu 3.3 Lựa chọn đặc trưng t-2 V Dứt t-1 N t0 N tiếng w-2 máy_bay w-1 , N , w0 bầu trời w1 C R V vút V lên A cao w2 Hình Cửa sổ trượt với kích cỡ size = chuyển động dọc theo liệu Các mẫu ngữ cảnh cho việc lựa chọn đặc trưng với Maximum Entropy Conditional Random Fields cho bảng sau: Loại Ngữ cảnh Mẫu ngữ cảnh cho Maxent CRFs Mẫu ngữ cảnh cơ w:-2; w:-1; w:0; w:1; w:2 (loại 1) w:0:1; w:1:2; w:-1:1 is_all_capitalized, is_initial_capitalized, is_number, contain_numbers, Giải thích w:i cho biết từ vị trí thứ i chuỗi đầu vào (nằm cửa sổ trượt với kích cỡ 5) w:i:j kết hợp từ thứ i từ thứ j chuỗi đầu vào Kiểm tra số thuộc tính từ như: từ có phải tồn chữ viết hoa hay có kí tự contain_hyphen, contain_comma, is_marks tags_in_dictionary đầu viết hoa hay khơng, có chứa số, v.v Các từ loại gán cho từ (V, N, A, ) Kiểm tra xem từ có phải từ láy tồn hay phần không Mẫu ngữ cảnh từ điển (loại 2) Mẫu ngữ cảnh is_full_repretative, is_partial_repretative đặc trưng tiếng Việt (loại 3) Mẫu cho đặc trưng cạnh CRFs t-1 t0 Nhãn từ trước nhãn từ Đặc trưng này được trích chọn trực tiếp từ liệu FlexCrfs Gọi JVnTagger từ dòng lệnh Câu lệnh: java –mx512M –cp [classpath] jvntagger.POSTagging -tagger [tagger] –modeldir [model dir] – inputfile/-inputdir [input file/input dir] Nếu thư mục JVnTagger, thiết lập tùy chọn để phân loại từ vựng như sau: [classpath] = bin:lib\lbfgs.jar [tagger] = crfs maxent [model dir] = thư mục chứa mơ hình crfs maxent thư mục model [inputfile/inputdir] : đường dẫn đến file (thư mục) cần xử lý chọn tùy chọn phân loại từ cho file – inputfile (cho thư mục –inputdir) Ví dụ: Chúng ta thực gán nhãn từ vựng cho file thư mục inputdir theo câu lệnh như sau. (giả sử thư mục JVnTagger Java –mx512M –cp bin:lib/lbfgs.jar jvntagger.POSTagging –tagger maxent –modeldir model/maxent –inputdir inputdir Lập trình với JVnTagger JVnTagger dùng để tích hợp vào hệ thống lớn hơn. JVnTagger nhận vào chuỗi liệu trả chuỗi gán nhãn Để gán nhãn từ loại cho chuỗi đầu vào, trước hết cần khai báo đối tượng lớp POSTagger khởi tạo với hai gán nhãn CRFTagger MaxentTagger Lưu ý, việc khởi tạo đối tượng như vậy khoảng thời gian để tải mơ hình vào nhớ, nên khởi tạo đối tượng lần dùng cho nhiều xử lý sau modelDir = “model\maxent” POSTagger tagger = null; tagger = new MaxentTagger(modelDir); Gán nhãn với JVnTagger String inputStr = ““Mãi_mãi tuổi 20.” String resultStr = tagger.tagging(inputStr); Kết phân loại từ vựng tiếng Việt với JVnTagger cho xâu kết (resultStr) ““Mãi_mãi/R tuổi/N 20/M /.” ...1 Giới thiệu JVnTagger công cụ gán nhãn từ loại tiếng Việt dựa Conditional Random Fields (Lafferty et al., 2001) Maximum Entropy (Nigam et al., 1999) JVnTagger xây dựng... sau gán nhãn định dạng câu dòng từ câu gán thêm nhãn từ loại Ví dụ “Mãi_mãi/R tuổi/N 20/M /.” câu sau gán nhãn từ loại thực thi POSTagger với CRFs thực thi POSTagger với phương pháp Maximum Entropy. .. chuỗi như tách từ, gán nhãn cụm từ, xác định thực thể, gán nhãn cụm danh từ, etc Gọi o = (o1, o2, …, oT) chuỗi liệu quan sát cần gán nhãn Gọi S tập trạng thái, trạng thái liên kết với nhãn l∈L Đặt