2017-01-19 6 views
0

Я пытаюсь использовать 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 неотъемлемо синтаксис ограничен? Или я могу каким-то образом изменить файлы шаблонов или обучающих данных, чтобы фиксировать/игнорировать порядок слов в строке продукта?

ответ

0

Во-первых, определения параметров неверны в файле шаблона.

Все шаблоны функций обозначены как U00. Это означает, что по существу только одна особенность, а не 3.

Во-вторых, я думаю, вы должны попробовать несколько шаблонов функций, пример:

#context of 3 words 
U00:%x[-1,0] 
U01:%x[0,0] 
U02:%x[1,0] 

#for POS Tag 
U03:%x[0,1] 

Надежда это помогает в улучшении производительности :)

PS: Вы можете увидеть https://youtu.be/GJHeTvDkIaE для понимания файлов шаблонов CRF ++.