Triển khai CRF trên python


Câu trả lời:



15

CRF ++ có nhiều liên kết đến hơn vì đây là thư viện cũ hơn.
CRFSuite là vượt trội theo ý kiến ​​của tôi.

  • Tác giả của CRFSuite tuyên bố rằng nó nhanh hơn 20 lần so với CRF ++ khi đào tạo một người mẫu.
  • Yêu cầu ít cứng nhắc hơn cho dữ liệu đầu vào.

Nếu bạn đang tìm kiếm các ràng buộc Python thì CRFSuite cũng tốt hơn vì bạn có thể huấn luyện một mô hình bằng Python, trong khi ở CRF ++, bạn chỉ có thể kiểm tra các mô hình hiện có trong Python. (Đó là công cụ giảm giá đối với tôi.) CRFSuite cũng đi kèm với một loạt mã ví dụ trong Python, chẳng hạn như NER, Chunking và gắn thẻ POS.


3
Bạn có thể giải thích cách sử dụng NER và Chunking do CRFSuite cung cấp không? Có vẻ như nó mong đợi dữ liệu đào tạo của một định dạng khác nhau. Tôi có thể tìm thấy cái này ở đâu?
Truyền thuyết

14

Dưới đây là một số trình bao bọc / triển khai khác:

  • https://github.com/adsva/python-wapiti - Trình bao bọc Python cho http://wapiti.limsi.fr/ . Wapiti rất nhanh; Điểm chuẩn crfsuite không công bằng với wapiti vì wapiti có thể song song đào tạo L-BFGS với nhiều lõi CPU và tính năng này không được sử dụng trong điểm chuẩn. Vấn đề với Wapiti là nó không được viết dưới dạng thư viện. Trình bao bọc cố gắng hết sức để khắc phục điều đó, nhưng bạn vẫn có thể nhận được một kết quả không thể so sánh được exit()và tôi đã thấy rò rỉ bộ nhớ trong quá trình đào tạo. Ngoài ra, wapiti bị giới hạn trong một loại tính năng mà nó có thể đại diện, nhưng CRFsuite cũng bị hạn chế (theo một cách khác). Wapiti được gói trong một trình bao bọc, không cần phải cài đặt riêng.
  • https://github.com/jakevdp/pyCRFsuite - một trình bao bọc cho crfsuite. Trình bao bọc khá tiên tiến và cho phép sử dụng ma trận thưa thớt như một đầu vào, nhưng có vẻ như có một số vấn đề chưa được giải quyết, có thể nhận được một segfault trong một số trường hợp.
  • https://github.com/tpeng/python-crfsuite - một trình bao bọc crfsuite khác. Điều này là khá đơn giản; nó gói crfsuite để cài đặt dễ dàng hơn và có thể được cài đặt chỉ với 'pip install python-crfsuite'.
  • https://github.com/larsmans/seqlearn cung cấp Perceptron có cấu trúc có thể thay thế cho CRF trong nhiều trường hợp. Cấu trúc thực hiện Perceptron rất nhanh trong seqlearn. Có một PR (không được hợp nhất tại thời điểm viết) có thêm hỗ trợ CRF cho seqlearn; nó trông rắn chắc
  • https://github.com/timvieira/crf - nó khá cơ bản và không có một số tính năng thiết yếu, nhưng nó chỉ yêu cầu numpy.

Tôi khuyên bạn nên sử dụng seqlearn nếu bạn có thể, python-crfsuite nếu bạn cần thuật toán đào tạo CRFsuite và tốc độ đào tạo, pyCRFsuite nếu bạn cần tích hợp CRFsuite nâng cao hơn và sẵn sàng đối mặt với một số bất tiện, thuật toán python-wapiti nếu bạn cần thuật toán đào tạo Wapiti không có sẵn trong CRFsuite (như điều chỉnh các quan sát riêng lẻ về chuyển tiếp) và crf của timvieira nếu không có cách nào để trình biên dịch C / C ++ hoạt động, nhưng có sẵn numpy.


7

Tôi nghĩ những gì bạn đang tìm kiếm là PySturation .

PySturation nhằm mục đích trở thành một thư viện học tập và dự đoán có cấu trúc dễ sử dụng. Hiện tại, nó chỉ thực hiện các phương thức lề tối đa và một tri giác, nhưng các thuật toán khác có thể theo sau.

Mục tiêu của PySturation là cung cấp một công cụ tài liệu tốt cho các nhà nghiên cứu cũng như những người không phải là chuyên gia để sử dụng các thuật toán dự đoán có cấu trúc. Thiết kế cố gắng ở gần nhất có thể với giao diện và quy ước của scikit-learn.

PyStructđi kèm với tài liệu tốt và được phát triển tích cực trên github .

Dưới đây là bảng so sánh PyStructvới CRFsuitevà các gói khác, được trích xuất từ PySturation - Dự đoán có cấu trúc trong Python :

So sánh các gói phần mềm dự đoán có cấu trúc

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.