2016-12-29 10 views
0

Я сделал модель CRF. У моего набора данных есть 24 класса, и в это время я начинаю, поэтому мои данные обучения имеют всего 1200 токенов/корпусов. Я тренирую модель. В моих данных по обучению я использовал множественное число маркеров, таких как адреса, фотографии, штаты, страны и т. Д.Модель CRF, обученная на множественном числе, не работает на сингулярном

Теперь, когда я тестирую, если я даю множественное число токенов в форме предложения для этой модели, тогда он работает хорошо, но если я введите мое предложение в единственном числе, как фото, состояние и т. д., тогда он не присваивает ему никаких тегов.

Такое поведение crf выглядит очень странно. Я исследовал NER Feature Factory и использовал некоторые функции леммы, но он также не работал. Разделите мой austen.prop для формирования модели.

# location of the training file 
trainFile = training_data_for_ner.txt 
# location where you would like to save (serialize) your 
# classifier; adding .gz at the end automatically gzips the file, 
# making it smaller, and faster to load 
serializeTo = ner-model.ser.gz 

# structure of your training file; this tells the classifier that 
# the word is in column 0 and the correct answer is in column 1 
map = word=0,answer=1,pos=2,lemma=3 

# This specifies the order of the CRF: order 1 means that features 
# apply at most to a class pair of previous class and current class 
# or current class and next class. 
maxLeft=1 

# these are the features we'd like to train with 
# some are discussed below, the rest can be 
# understood by looking at NERFeatureFactory 
useClassFeature=true 
useWord=true 
# word character ngrams will be included up to length 6 as prefixes 
# and suffixes only 
useNGrams=true 
noMidNGrams=true 
maxNGramLeng=6 
usePrev=true 
useNext=true 
useDisjunctive=true 
useSequences=true 
usePrevSequences=true 
# the last 4 properties deal with word shape features 
useTypeSeqs=true 
useTypeSeqs2=true 
useTypeySequences=true 
wordShape=chris2useLC 
# newly added features. 
useLemmas=true 
usePrevNextLemmas=true 
useLemmaAsWord=true 
useTags=true 

Последние четыре функции были добавлены, ознакомившись с этой NER Feature Factory. Если кто-нибудь поможет мне решить эту проблему, я буду благодарен вам.

ответ

0

Вы должны перепрограммировать его с помощью жетонов. См. Например, https://github.com/stanfordnlp/CoreNLP/blob/master/src/edu/stanford/nlp/process/Stemmer.java (main).

+0

И могу ли я одновременно сохранить как лемм, так и токен? Будет ли хорошо для формирования модели crf? –

+0

Это зависит от вашего набора данных. Я бы предположил, что вы не должны этого делать. Обратите внимание, что вы всегда можете проверить качество (оценка F1 или подобное) с перекрестной проверкой и выбрать наиболее подходящие варианты. – dveim

+0

Как я укажу на свою карту, что этот столбец содержит исходный токен? Пусть говорят, что 5-й столбец в файле тренировки содержит строковый токен, то как мне написать свою карту в austen.prop. map = ...... stem = 4 или stemmer = 4? –

 Смежные вопросы

  • Нет связанных вопросов^_^