Ошибка OPENNLP
Я пытаюсь обучить модель сущности Name с использованием OpenNLP, но, получая эту ошибку, не знаю, чего не хватает. Я новичок в этом OPENNLP, любой, пожалуйста, помогите, может предоставить файл Train.txt, если это необходимо
lineStream = opennlp.tools.util.PlainTextByLineStream@b52598
Indexing events using cutoff of 0
Computing event counts... done. 514 events
Indexing... done.
Sorting and merging events... done. Reduced 514 events to 492.
Done indexing.
Incorporating indexed data for training...
done.
Number of Event Tokens: 492
Number of Outcomes: 1
Number of Predicates: 3741
...done.
Computing model parameters ...
Performing 1 iterations.
1: ... loglikelihood=0.0 1.0
Exception in thread "main" java.lang.IllegalArgumentException: Model not compatible with name finder!
at opennlp.tools.namefind.TokenNameFinderModel.<init>(TokenNameFinderModel.java:81)
at opennlp.tools.namefind.TokenNameFinderModel.<init>(TokenNameFinderModel.java:106)
at opennlp.tools.namefind.NameFinderME.train(NameFinderME.java:374)
at opennlp.tools.namefind.NameFinderME.train(NameFinderME.java:432)
at opennlp.tools.namefind.NameFinderME.train(NameFinderME.java:443)
at Train2.main(Train2.java:36)
Java Result: 1
BUILD SUCCESSFUL (total time: 2 seconds)
Мой код это
File fileTrainer=new File("/home/ashfaq/Documents/Train.txt");
File output=new File("/home/ashfaq/Documents/trainedModel.bin");
ObjectStream<String> lineStream = new PlainTextByLineStream(new FileInputStream(fileTrainer), "UTF-8");
ObjectStream<NameSample> sampleStream = new NameSampleDataStream(lineStream);
System.out.println("lineStream = " + lineStream);
TokenNameFinderModel model = NameFinderME.train("en", "location", sampleStream, Collections.<String, Object>emptyMap(), 1, 0);
BufferedOutputStream modelOut = null;
try {
modelOut = new BufferedOutputStream(new FileOutputStream(output));
model.serialize(modelOut);
} finally {
if (modelOut != null)
modelOut.close();
}
2 ответа
Я знаю, что об этом спрашивали много лет назад, я столкнулся с аналогичной проблемой, связанной с установкой категоризации, и соответствующая отсечка решила мою проблему. Поэтому, если вы укажете значение 1, это может помочь (отказ от ответственности:- Я не проверял это)
Если вы хотите сохранить отсечение по умолчанию (то есть 5), то вам нужно обучить его как минимум 5 раз, чтобы он распознал
Обычно это происходит из-за отсутствия пробелов после тегов в ваших данных обучения. Например,
<START:person>bob<END>
will fail but
<START:person> bob <END>
will succeed.
Опубликуйте часть своих тренировочных данных, если это не решит проблему. Также убедитесь, что каждое предложение в обучающем файле находится на одной строке. Другими словами, все предложения не должны содержать \n и должны заканчиваться \n