Впровадження CRF в python


32

Чи популярна реалізація умовних випадкових полів у Python ?

Я не можу знайти те, що широко використовується і популярне!


Подивіться на мою Github Repo ( ScikitCRF_NER ) для реалізації пітон scikitCRF
Manikandan Thangavelu

Відповіді:


13

CRF ++ є популярним вибором загалом і має зв'язки Python . CRFSuite також має прив'язки документовані тут , але , здається, не бачила , як багато широкого застосування в якості CRF ++. Станом на це написання, у структурах машинного навчання вищого рівня, таких як scikit-learn, немає підтримки CRF (див. Цей запит на тягу ).


15

CRF ++ має більше вхідних посилань, оскільки це старша бібліотека.
На мій погляд, CRFSuite перевершує.

  • Автор CRFSuite стверджує, що це в 20 разів швидше, ніж CRF ++ при навчанні моделі.
  • Менш жорсткі вимоги до вхідних даних.

Якщо ви шукаєте прив'язки Python, CRFSuite також краще, тому що ви можете тренувати модель в Python, тоді як в CRF ++ ви можете протестувати лише існуючі моделі в Python. (Це був для мене випадок угод.) CRFSuite також постачається з купою прикладу коду в Python, таких як NER, Chunking та POS-теги.


3
Чи можете ви детальніше розглянути, як використовувати NER та Chunking, що надаються CRFSuite? Схоже, він очікує даних тренувань іншого формату. Де я можу це знайти?
Легенда

14

Ось деякі інші обгортки / реалізації:

  • https://github.com/adsva/python-wapiti - обгортка Python для http://wapiti.limsi.fr/ . Вапіті швидко; Критерії crfsuite не справедливі до wapiti, тому що wapiti може паралелізувати навчання L-BFGS з декількома ядрами процесора, і ця функція не використовувалася в орієнтирах. Проблема Wapiti полягає в тому, що він не пишеться як бібліотека. Обгортка намагається це подолати, але ти все одно можеш отримати незримий exit(), і я бачив витоки пам’яті під час тренувань. Також wapiti обмежений типом функцій, які він може представляти, але CRFsuite також обмежений (по-іншому). Wapiti збирається в обгортку, не потрібно встановлювати її окремо.
  • https://github.com/jakevdp/pyCRFsuite - обгортка для crfsuite. Обгортка досить вдосконалена і дозволяє використовувати рідкі матриці scipy як вхідні дані, але, мабуть, є деякі невирішені проблеми, в деяких випадках можливо отримати сегментацію.
  • https://github.com/tpeng/python-crfsuite - чергова обмотка crfsuite. Цей досить простий; він комплектує crfsuite для легшого монтажу і може бути встановлений просто за допомогою "pip install python-crfsuite".
  • https://github.com/larsmans/seqlearn забезпечує структурований рецептор, який може бути заміною CRF у багатьох випадках. Структурована реацепція Perceptron дуже швидко в seqlearn. Існує піар (не об'єднаний на момент написання), який додає підтримку CRF до seqlearn; це виглядає солідно.
  • https://github.com/timvieira/crf - це досить просто і не має якихось істотних особливостей, але для цього потрібен лише нуд.

Я рекомендую використовувати seqlearn, якщо можете, python-crfsuite, якщо вам потрібні алгоритми тренувань CRFsuite та швидкість тренувань, pyCRFsuite, якщо вам потрібна більш просунута інтеграція CRFsuite і готові зіткнутися з деякими незручностями, python-wapiti, якщо вам потрібні алгоритми чи функції Wapiti недоступний у CRFsuite (як, наприклад, кондиціонування окремих спостережень за переходами) та CRF Timvieira, якщо немає можливості змусити компілятор C / C ++ працювати, але попередньо вбудований numpy доступний.


7

Я думаю, що ти шукаєш PyStruct .

PyStruct має на меті бути простою у використанні структурованою бібліотекою для навчання та прогнозування. В даний час він реалізує лише методи максимальної границі та перцептрон, але можуть слідувати інші алгоритми.

Мета PyStruct - забезпечити добре задокументований інструмент для дослідників, а також неекспертів для використання структурованих алгоритмів прогнозування. Дизайн намагається максимально наблизитись до інтерфейсу та конвенцій scikit-learn.

PyStructпостачається з хорошою документацією , і він активно розробляється на github .

Нижче наведена таблиця, що порівнює PyStructз CRFsuiteіншими пакунками, витягнуті з PyStruct - Структуроване прогнозування в Python :

Порівняння пакетів програмного забезпечення для структурованого прогнозування

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.