Я пытаюсь создать пользовательский NER, используя Apache OpenNLP 1.7. Из имеющейся документации Here, я разработал следующий кодApache OpenNLP: java.io.FileInputStream нельзя отнести к opennlp.tools.util.InputStreamFactory
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.Charset;
import opennlp.tools.namefind.NameFinderME;
import opennlp.tools.namefind.NameSample;
import opennlp.tools.namefind.NameSampleDataStream;
import opennlp.tools.namefind.TokenNameFinderFactory;
import opennlp.tools.namefind.TokenNameFinderModel;
import opennlp.tools.util.ObjectStream;
import opennlp.tools.util.PlainTextByLineStream;
import opennlp.tools.util.TrainingParameters;
public class PersonClassifierTrainer {
static String modelFile = "/opt/NLP/data/en-ner-customperson.bin";
public static void main(String[] args) throws IOException {
Charset charset = Charset.forName("UTF-8");
**ObjectStream<String> lineStream = new PlainTextByLineStream(new FileInputStream("/opt/NLP/data/person.train"), charset);**
ObjectStream<NameSample> sampleStream = new NameSampleDataStream(lineStream);
TokenNameFinderModel model;
TokenNameFinderFactory nameFinderFactory = null;
try {
model = NameFinderME.train("en", "person", sampleStream, TrainingParameters.defaultParams(),
nameFinderFactory);
} finally {
sampleStream.close();
}
BufferedOutputStream modelOut = null;
try {
modelOut = new BufferedOutputStream(new FileOutputStream(modelFile));
model.serialize(modelOut);
} finally {
if (modelOut != null)
modelOut.close();
}
}
}
код выделенного выше, показывает - файл «Литой аргумент„“к„insputstreamfactory“
Я вынужден бросить это, потому что он показывает ошибку в противном случае.
Теперь, когда я запускаю мой код, я получаю следующую ошибку
java.io.FileInputStream cannot be cast to opennlp.tools.util.InputStreamFactory
Есть ли что-нибудь не хватает?
Edit 1: Person.train файл имеет эти данные
<START:person> Hardik <END> is a software Professional.<START:person> Hardik works at company<END> and <START:person> is part of development team<END>. <START:person> Hardik<END> lives in New York
<START:person> Hardik<END> loves R statistical software
<START:person> Hardik<END> is a student at ISB
<START:person> Hardik<END> loves nature
Edit2: Я теперь получаю исключения нулевого указателя, любая помощь?
это работает, но теперь я получаю исключения нулевого указателя, вы можете попробовать один раз, чтобы запустить на вашем конце, прикреплял мой person.train содержимое файла –
'TokenNameFinderFactory' не должно быть нулевым. См. Обновленный код. – Schrieveslaach
Schrieveslaach, я думаю, для Apache важно обновить это в официальной документации, удивив, как никто не сталкивался с этой проблемой до сих пор. –