TnT tagger

Một phần của tài liệu TIỂU LUẬN NGÔN NGỮ HỌC MÁY TÍNH PHÂN TÍCH CÚ PHÁP NGÔN NGỮ TỰ NHIÊN VỚI CÔNG CỤ NLTK (NATURAL LANGUAGE TOOLKIT) (Trang 31)

5. TÌM HIỂU MỘT SỐ CHỨC NĂNG TRONG NLTK

5.3.6.TnT tagger

TnT là từ viết tắc cho 3 bộ gán nhãn đầu trong Ngram mà chúng ta đã tìm hiểu. Nó là một bộ gán nhãn thống kê dựa trên mô hình Markov bật 2 để gán nhãn cho các

từ. tham khảo http://www.aclweb.org/anthology-new/A/A00/A00-1031.pdf

Ngoài ra còn có bộ gán nhãn viết lại Tnt có tên là HunposTagger tham khảo

http://code.google.com/p/hunpos/

TnT khác với các bộ gán nhãn khác về cách sử dụng, đó là bạn phải gọi tường minh phương thức train() sau khi khởi tạo nó.

>>> tnt_tagger = tnt.TnT()

>>> tnt_tagger.train(train_sents) >>> tnt_tagger.evaluate(test_sents) 0.87580401467731495

Cách làm việc của TnT dựa trên TrigGram khác hoàn toàn với cách liên kết xâu các backoff như trước theo thứ tự. Nó chọn bộ gán nhãn tốt nhất trong 3 bộ này để lấy làm bộ phân tích cho mỗi từ dựa trên nguyên tắc thống kê xác suất cao nhấtxác suât cao nhất có điều kiện. Nó cũng cố gắng đưa ra các ứng viên gán nhãn cho toàn bộ câu một lần cũng dựa vào thống kê.

Tương tự các phương pháp khác, bạn có thể bổ sung một bộ phân tích dự phòng (unknown) cho trường hợp các từ không thể tìm được nhãn với 3 bộ phân tích con ở trên. Lưu ý phải luôn truyền tham số Trained=true để nó thực hiện huấn luyện cho bộ dự phòng này. Nếu không bạn phải gọi tường minh trước khi truyền vô bằng phương thức unk.train(data).

>>> from nltk.tag import DefaultTagger >>> unk = DefaultTagger('NN')

>>> tnt_tagger = tnt.TnT(unk=unk, Trained=True) >>> tnt_tagger.train(train_sents)

>>> tnt_tagger.evaluate(test_sents) 0.89272609540254699

Trong quá trình phân tích nó có thể phân biệt kí tự Hoa và thường bằng tham số C=True. Thông thường độ chính xác của nó sẽ không tăng đáng kể, nếu có thì chủ yếu là do các danh từ riêng.

Một phần của tài liệu TIỂU LUẬN NGÔN NGỮ HỌC MÁY TÍNH PHÂN TÍCH CÚ PHÁP NGÔN NGỮ TỰ NHIÊN VỚI CÔNG CỤ NLTK (NATURAL LANGUAGE TOOLKIT) (Trang 31)