Công cụ CRF++

Một phần của tài liệu Lập trình song song trên nền đơn vị xử lý đồ họa và ứng dụng (Trang 38)

Tác giả của CRF++ là Taku Kudo [16], một chuyên gia ngƣời Nhật, chuyên về các lĩnh vực nhƣ:

 Xử lý ngôn ngữ tự nhiên

 Phân tích thống kê, phân tích phụ thuộc thống kê, chunking, phân tích hình thái học.

 Học máy (Support Vector Machines, Boosting, Maximal Margin Classifiers).

 Khai phá dữ liệu, khai phá văn bản.

CRF++ [9] là một phần mềm nguồn mở, có thể tùy chỉnh đƣợc, dùng cho việc phân đoạn, tách từ, gán nhãn dữ liệu tuần tự của mô hình trƣờng ngẫu nhiên có điều kiện (Conditional Random Fields – CRFs). CRF++ đƣợc thiết kế cho mục đích chung chung và đƣợc áp dụng cho một loạt các tác vụ xử lý ngôn ngữ tự nhiên (NLP) nhƣ nhận dạng thực thể tên (Named Entity Recognition), trích chọn thông tin (Information Extraction) và Text Chunking.

Đặc điểm của CRF++:

 Có thể định nghĩa lại tập thuộc tính.

 Viết bằng ngôn ngữ C++ theo STL (Standard Template Library).

 Huấn luyện nhanh dựa trên thuật toán LBFGS, là một thuận toán quasi- newton cho bài toán tối ƣu với dữ liệu lớn.

 Sử dụng ít bộ nhớ trong huấn luyện và kiểm thử.

 Mã hóa và giải mã trong thời gian thực.

 Có thể cho kết quả là n đầu ra tốt nhất.

 Có thể thực hiện huấn luyện MIRA (đơn tốt nhất).

 Có thể cho ra xác xuất biên cho tất cả ứng cử viên.

CRF++ có hai module độc lập, đó là module huấn luyện (crf_training) và module kiểm thử (crf_test).

Để chạy phần training và testing cần phải định nghĩa trƣớc tệp huấn luyện (training) và kiểm thử (test). Và các tệp tin này phải có định dạng riêng cho CRF++. Nói chung training và testing gồm nhiều thẻ (tokens). Mỗi thẻ gồm nhiều cột. Định nghĩa của thẻ phụ thuộc vào tác vụ cụ thể. Tuy nhiên, trong hầu hết các trƣờng hợp, chúng đơn giản tƣơng ứng với chữ. Mỗi thẻ phải đƣợc thể hiện trên một dòng, với các cột đƣợc phân cách với nhau bởi khoảng trắng. Một chuỗi các thẻ tạo thành một câu. Để xác định ranh giới giữa các câu, một dòng trống đƣợc đặt vào. Có thể có nhiều cột, tuy nhiên số lƣợng các cột trong các thẻ phải bằng nhau. Hơn nữa có một số ngữ nghĩa giữa tƣơng ứng với các cột. Ví dụ cột thứ nhất là từ (word), cột thứ hai là „POS tag‟, cột thứ ba là „sub-category of POS‟, v.v….Cột cuối cùng thể hiện một thẻ trả lời đúng sẽ đƣợc huấn luyện bởi CRF.

Ví dụ của file training

Hình 12: Ví dụ tệp tin huấn luyện

Trong ví dụ này, có ba cột trong một thẻ. Cột 1 là từ, cột 2 là từ loại, và cột 3 là tag trả lời thể hiện ở định dạng IOB2.

CRF++ là công cụ đƣợc thiết kế cho mục đích đa dụng. Phải định nghĩa file mẫu đặc điểm (feature template), và file này mô tả các đặc điểm đƣợc dùng trong training và testing.

Mỗi dòng trong file template biểu thị một template. Trong mỗi template, macro %x[row,col] sẽ đƣợc dùng để chỉ một token trong dữ liệu đầu vào. Row

The DT B-NP risks NNS I-NP for IN B-PP sterling NN B-NP of IN B-PP a DT B-NP bad JJ I-NP trade NN I-NP figure NN I-NP are VBP B-VP very RB B-ADVP heavily RB I-ADVP on IN B-PP the DT B-NP down JJ I-NP

thể hiện vị trí tƣơng đối từ tocken hiện thời và col xác định vị trí tuyệt đối của cột (column).

Có hai loại mẫu, là unigram (U) và bigram(B).

Unigram, đây là template miêu tả đặc tính Unigram. Khi đƣa ra một mẫu “U01:%x[0,1]”, CRF++ tự động sinh ra một tập các hàm đặc điểm (func1, func2, …functN):

Bigram, bắt đầu với ký tự B, thể hiện các đặc điểm bigram. Với template này, một kết hợp của tocken đầu ra hiện tại và token đầu ra trƣớc (bigram) đƣợc tạo ra. Đây là file định nghĩa ra các loại đặc trƣng đƣợc CRF++ tạo ra và sử dụng.

Ví dụ file template:

Một phần của tài liệu Lập trình song song trên nền đơn vị xử lý đồ họa và ứng dụng (Trang 38)