我试图使用官方OpenNLP网站手册示例来训练一个新模型,以下是示例:
Charset charset = Charset.forName("UTF-8");
ObjectStream lineStream = new PlainTextByLineStream(new FileInputStream("en-sent.train"), charset);
ObjectStream sampleStream = new SentenceSampleStream(lineStream);
SentenceModel model;
try {
model = SentenceDetectorME.train("en", sampleStream, true, null, TrainingParameters.defaultParams());
} finally {
sampleStream.close();
}
OutputStream modelOut = null;
try {
modelOut = new BufferedOutputStream(new FileOutputStream(modelFile));
model.serialize(modelOut);
} finally {
if (modelOut != null)
modelOut.close();
}
问题出在2º线上,
ObjectStream lineStream = new PlainTextByLineStream(new FileInputStream("en-sent.train"), charset);
帮我说:不赞成。改用PlainTextByLineStream(InputStreamFactory,Charset)。但是我不知道如何使用这个构造函数。我想举一个例子,使用同一个语料库文件使用这个未弃用的构造函数。
我已经编写了下一段代码,使用opennlp帮助和两种使用train方法的方法,不推荐的和建议的文档帮助:
Charset charset = Charset.forName("UTF-8");
InputStreamFactory inputStreamFactory=null;
ObjectStream<String> lineStream=null;
ObjectStream<SentenceSample> sampleStream=null;
SentenceModel model=null;
OutputStream modelOut = null;
try{
inputStreamFactory=InputStreamFactory.class.newInstance();
lineStream=new PlainTextByLineStream(inputStreamFactory,charset);
sampleStream = new SentenceSampleStream(lineStream);
//The deprecated:
model = SentenceDetectorME.train("en", sampleStream, true, null, TrainingParameters.defaultParams());
//The sugested:
model = SentenceDetectorME.train("en", sampleStream, new SentenceDetectorFactory(), new TrainingParameters());
} catch (InstantiationException e2){
e2.printStackTrace();
} catch (IllegalAccessException e2){
e2.printStackTrace();
} catch (IOException e){
e.printStackTrace();
}finally {
try{
sampleStream.close();
} catch (IOException e){
e.printStackTrace();
}
}
try {
modelOut = new BufferedOutputStream(new FileOutputStream(new File("modelFile")));
model.serialize(modelOut);
} catch (FileNotFoundException e){
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
} finally {
if (modelOut != null) try{
modelOut.close();
} catch (IOException e){
e.printStackTrace();
}
}
但是在这个新代码中,我不知道从哪里获取我的语料库数据文件。有什么想法吗?
您必须使用所需的数据文件初始化inputStreamFactory
,使用
inputStreamFactory = new MarkableFileInputStreamFactory(
new File("en-sent.train"));
大家已经提到了这个,这个,这个和这个,但是仍然发现很难建立一个自定义的名字查找器模型。。以下是代码: 我在尝试执行命令行时不断出现错误: 让我把论点1改为 然后我收到一个运行时错误,说你不能强制转换这个。这是我在线程“main”中强制转换 第二个问题是: 给出一个语法错误。不确定这里出了什么问题。如果有任何帮助,我将不胜感激,因为我已经尝试了上述链接上的所有代码片段。 祝好
我试图用下面的代码训练模型,但我一直在方法上收到错误,它告诉我将更改为。为什么?
我有文件及其非常大的文件说100MB文件。我想执行NER以提取组织名称。我使用OpenNLP进行了培训。 示例代码: 但是我得到了一个错误:。 有没有办法使用openNLP for NER来训练大型数据集?你能发布示例代码吗? 当我谷歌时,我发现Class GIS和DataIndexer界面可用于训练大型数据集,但我知道如何训练?你能发布示例代码吗?
我正在使用OpenNLP进行数据分类。我在这里找不到疾病的TokenNameFindModel。我知道我可以创建自己的模型,但我想知道是否有针对疾病的大样本训练数据?
我发现很难创建自己的openNLP模型。谁能告诉我,如何拥有自己的模型。培训应该如何进行。 输入应该是什么,输出模型文件将存储在哪里。
我正在尝试训练opennlp词性标记器,它会根据我的特定词汇在句子中标记单词。例如: 正常词性标注后: 句子:NodeManager/NNP失败/VBD to/TO start/VB the/DT server/NN 使用我的词性标注模型后: 句子:NodeManager/AGENT失败/其他到/其他启动/其他/其他服务器/对象 其中AGENT,OTHER,OBJECT是我定义的标签。 所以基本上