Сколько строк и документов должно быть в классификаторе обучающих данных opennlp

Я следую документации для Apache open-nlp. Я смог понять определение предложений, токенизатор, поиск имен. Но я застрял на Categorizer. Причина, я не могу понять, как создать модель для категоризации.

Я понимаю, что мне нужно создать файл. Формат очень четкий, это должно быть пространство категории и документ в одной строке. Сохраните файл с расширением .train.

Поэтому я создал следующий файл:

Refund What is the refund status for my order #342 ?
NewOffers Are there any new offers for your products ?

Я дал эту команду-

opennlp DoccatTrainer -model en-doccat.bin -lang en -data en-doccat.train -encoding UTF-8

Он начинает что-то делать, а затем возвращается с ошибкой. Это содержимое командной строки:

Indexing events using cutoff of 5

    Computing event counts...  done. 2 events
    Indexing...  Dropped event Refund:[bow=What, bow=is, bow=the, bow=refund, bow=status, bow=for, bow=my, bow=order, bow=#342, bow=?]
Dropped event NewOffers:[bow=Are, bow=there, bow=any, bow=new, bow=offers, bow=for, bow=your, bow=products, bow=?]
done.
Sorting and merging events... Done indexing.
Incorporating indexed data for training...  
Exception in thread "main" java.lang.NullPointerException
    at opennlp.maxent.GISTrainer.trainModel(GISTrainer.java:263)
    at opennlp.maxent.GIS.trainModel(GIS.java:256)
    at opennlp.model.TrainUtil.train(TrainUtil.java:184)
    at opennlp.tools.doccat.DocumentCategorizerME.train(DocumentCategorizerME.java:162)
    at opennlp.tools.cmdline.doccat.DoccatTrainerTool.run(DoccatTrainerTool.java:61)
    at opennlp.tools.cmdline.CLI.main(CLI.java:222)

Я просто не могу понять, почему здесь возникает исключение нулевого указателя? Я также пытался увеличить еще две строки, но безрезультатно.

Refund What is the refund status for my order #342 ?
NewOffers Are there any new offers for your products ?
Refund Can I place a refund request for electronics ?
NewOffers Is there any new offer on buying worth 5000 ?  

Я нашел этот блог, но и здесь делается то же самое. При попытке его тренировочного файла он работает с шармом. Что не так в моем файле? Как устранить ошибку.

Когда я пробую opennlp DoccatTrainer, он открывает мне справку, так что путь не проблема. Любая помощь приветствуется.

EDIT: я изменил файл на

Refund What is the refund status for my order #342 ? Can I place a refund request for clothes ?
NewOffers Are there any new offers for your products ? what are the offers on new products or new offers on old products?
Refund Can I place a refund request for electronics ?
NewOffers Is there any new offer on buying worth 5000 ? 

и это работает, я подумал, что он должен что-то делать с документом (видимо, должно быть два предложения) и удалил последние две строки.

чтобы сделать это

Refund What is the refund status for my order #342 ? Can I place a refund request for clothes ?
NewOffers Are there any new offers for your products ? what are the offers on new products or new offers on old products? 

Но опять же, это терпит неудачу, теперь вопрос сводится к тому, какие данные/формат/документ ему нужны?

Спасибо


person inquisitive    schedule 11.05.2015    source источник


Ответы (2)


вы должны добавить более 5 образцов из каждой категории. поскольку размер отсечки по умолчанию равен 5,

Пожалуйста, обратитесь к этому сообщению в блоге http://madhawagunasekara.blogspot.com/2014/11/nlp-categorizer.html

person madhawa    schedule 13.05.2015
comment
Всего требуется 5 образцов (не 5 образцов на категорию). - person Mayank Raghav; 19.04.2016

Вы можете использовать флаг -cutoff в своей команде DoccatTrainer, чтобы изменить значение по умолчанию. В вашем случае вы должны добавить -cutoff 1, чтобы установить минимальное количество документов в категории равным 1.

person Lauren Molley    schedule 22.05.2015
comment
-cutoff не работает с DoccatTrainer от openNLP - person Mayank Raghav; 19.04.2016