J'essaie d'ajouter des données d'entraînement supplémentaires à mon fichier nl-personTest.bin
avec OpenNLP
. Maintenant, mon problème est que lorsque je cours mon code pour ajouter les données de formation supplémentaires, il supprime les données déjà existantes et ajoute seulement mes nouvelles données.Ajouter des données d'entraînement au modèle existant (fichier bin)
Comment puis-je simplement ajouter des données de formation supplémentaires au lieu de les remplacer?
J'ai utilisé le code suivant, (il a obtenu de Open NLP NER is not properly trained)
public class TrainNames
{
public static void main(String[] args)
{
train("nl", "person", "namen.txt", "nl-ner-personTest.bin");
}
public static String train(String lang, String entity,InputStreamFactory inputStream, FileOutputStream modelStream) {
Charset charset = Charset.forName("UTF-8");
TokenNameFinderModel model = null;
ObjectStream<NameSample> sampleStream = null;
try {
ObjectStream<String> lineStream = new PlainTextByLineStream(inputStream, charset);
sampleStream = new NameSampleDataStream(lineStream);
TokenNameFinderFactory nameFinderFactory = new TokenNameFinderFactory();
model = NameFinderME.train("nl", "person", sampleStream, TrainingParameters.defaultParams(),
nameFinderFactory);
} catch (FileNotFoundException fio) {
} catch (IOException io) {
} finally {
try {
sampleStream.close();
} catch (IOException io) {
}
}
BufferedOutputStream modelOut = null;
try {
modelOut = new BufferedOutputStream(modelStream);
model.serialize(modelOut);
} catch (IOException io) {
} finally {
if (modelOut != null) {
try {
modelOut.close();
} catch (IOException io) {
}
}
}
return "Something goes wrong with training module.";
}
public static String train(String lang, String entity, String taggedCoprusFile,
String modelFile) {
try {
InputStreamFactory inputStream = new InputStreamFactory() {
FileInputStream fileInputStream = new FileInputStream("namen.txt");
public InputStream createInputStream() throws IOException {
return fileInputStream;
}
};
return train(lang, entity, inputStream,
new FileOutputStream(modelFile));
} catch (Exception e) {
e.printStackTrace();
}
return "Something goes wrong with training module.";
} }
Toute personne des idées pour résoudre ce problème? Parce que si je veux avoir un trainingset précis, je dois avoir au moins 15K phrases dit la documentation.
Merci @Schrieveslaach – Patrick
@Patrick, pour votre information: Je développe un ensemble d'outils qui vous permet de créer des modèles de la PNL à partir de corpus annoté. S'il vous plaît, jetez un oeil [ici] (https://git.noc.fh-aachen.de/marc.schreiber/Towards-Effective-NLP-Application-Development) et si vous avez des questions, faites le moi savoir. ;-) – Schrieveslaach
Merci, je vais y jeter un coup d'œil. @ Schrieveslaach – Patrick