Пользовательская функция в CRF++
Я попытался добавить больше возможностей в шаблон CRF++.
Согласно Как я могу сказать классификатору CRF++, что слово x захвачено или понимает знаки препинания?
учебный образец
The DT 0 1 0 1 B-MISC
Oxford NNP 0 1 0 1 I-MISC
Companion NNP 0 1 0 1 I-MISC
to TO 0 0 0 0 I-MISC
Philosophy NNP 0 1 0 1 I-MISC
шаблон функции
# Unigram
U00:%x[-2,0]
U01:%x[-1,0]
U02:%x[0,0]
U03:%x[1,0]
U04:%x[2,0]
U05:%x[-1,0]/%x[0,0]
U06:%x[0,0]/%x[1,0]
U07:%x[-2,0]/%x[-1,0]/%x[0,0]
#shape feature
U08:%x[-2,2]
U09:%x[-1,2]
U10:%x[0,2]
U11:%x[1,2]
U12:%x[2,2]
B
Фаза обучения в порядке. Но я не получаю выход с crf_test
tilney@ubuntu:/data/wikipedia/en$ crf_test -m validation_model test.data
tilney@ubuntu:/data/wikipedia/en$
Все работает хорошо, если игнорировать форму выше. Где я неправ?
1 ответ
Решение
Я понял это. Это проблема с моими данными испытаний. Я думал, что каждая функция должна быть взята из обученной модели, поэтому у меня есть только два столбца в моих тестовых данных: тег слова, который, как выясняется, должен иметь тот же формат, что и тренировочные данные!