Я пытаюсь использовать CRF ++ для анализа строк продукта в различных классах атрибутов, чтобы я мог выполнять сопоставление продуктов, аналогичное this question.CRF ++ Template File and Sentence Синтаксис
Однако, когда я сталкиваюсь с проблемой, CRF не точно прогнозирует теги, когда порядок слов в строке продукта еще не был замечен в файле тренировки.
В качестве примера, я просто используя мешок из-слов файл шаблона:
#Unigrams
U00:%x[-1,0]
U00:%x[0,0]
U00:%x[1,0]
#Bigrams
B
И я бегу crf_learn
в том числе следующие данные Пример обучения:
panasonic NOUN B-BRAND
digital ADJ B-PRODUCT
monitor NOUN I-PRODUCT
17 # B-SIZE
inch # I-SIZE
При использовании этой подготовки данных, модель правильно анализирует тестовую строку «panasonic digital monitor 17 inch» в правильные выходные теги. Однако, когда я использую модель на такой строке, как «panasonic monitor digital 17 inch», модель не распознает правильную маркировку и вместо этого изменяет теги для «цифровых» и «мониторов» на следующее:
panasonic NOUN B-BRAND
monitor NOUN B-PRODUCT
digital ADJ I-PRODUCT
17 # B-SIZE
inch # I-SIZE
Что мне нужно, однако, заключается в следующем:
panasonic NOUN B-BRAND
monitor NOUN I-PRODUCT
digital ADJ B-PRODUCT
17 # B-SIZE
inch # I-SIZE
является ли это проблема с моим файлом шаблона, или CRF неотъемлемо синтаксис ограничен? Или я могу каким-то образом изменить файлы шаблонов или обучающих данных, чтобы фиксировать/игнорировать порядок слов в строке продукта?