Java 无法转换opennlp分析的结果
Im使用opennlp的解析模型解析一行输入,我的代码:Java 无法转换opennlp分析的结果,java,parsing,stanford-nlp,opennlp,Java,Parsing,Stanford Nlp,Opennlp,Im使用opennlp的解析模型解析一行输入,我的代码: public void parse(String input){ InputStream modelIn = null; try { modelIn = new FileInputStream("en-parser-chunking.bin"); ParserModel model = new ParserModel(modelIn); opennlp.tools.parser.Parser parser = Pars
public void parse(String input){
InputStream modelIn = null;
try {
modelIn = new FileInputStream("en-parser-chunking.bin");
ParserModel model = new ParserModel(modelIn);
opennlp.tools.parser.Parser parser = ParserFactory.create(model);
opennlp.tools.parser.Parse topParses[] = ParserTool.parseLine(input, parser, 1);
for (opennlp.tools.parser.Parse p : topParses){
p.show();
}
}catch (IOException e) {
e.printStackTrace();
}finally {
if (modelIn != null) {
try {
modelIn.close();
}
catch (IOException e) {
}
}
}
}
如果我的输入是,这是一条测试线
p、 显示显示<代码>(顶部(NP(DT)此))(VP(VBZ为)(NP(DT a)(NN测试)(NN行е)'))
但是p.toString显示这是一条测试线
我怎样才能使它与p.show相同?这对我来说很有用。。。您必须使用重载的show,它在内部更新传入的StringBuffer引用
public void parse(String input){
InputStream modelIn = null;
try {
modelIn = new FileInputStream("en-parser-chunking.bin");
ParserModel model = new ParserModel(modelIn);
opennlp.tools.parser.Parser parser = ParserFactory.create(model);
opennlp.tools.parser.Parse topParses[] = ParserTool.parseLine(input, parser, 1);
for (opennlp.tools.parser.Parse p : topParses){
StringBuilder sb = new StringBuilder(input.length() * 4);
p.show(sb);
//sb now contains all the tags
System.out.println(sb);
}
}catch (IOException e) {
e.printStackTrace();
}finally {
if (modelIn != null) {
try {
modelIn.close();
}
catch (IOException e) {
}
}
}
}
谢谢你的回复,迟做总比不做好:)虽然它对我来说仍然不起作用,但我已经开始使用斯坦福nlp解析器,它更适合我的需要