我正在使用opennlp的Parse模型来解析一行输入,我的代码:
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.toString显示(TOP(S(NP(DT-this))(VP(VBZ-is)(NP(DT-a)(NN-test)(NN-line k k)
,但p.toString显示这是一条测试线
我怎样才能让它和p.show一样?
正如格雷格所说,这个问题的解决方案失败了。它失败是因为这行内容不正确:
StringBuilder sb = new StringBuilder(input.length() * 4);
在OpenNLP工具包中,Parse类中的show()方法不能使用StringBuilder类型:
如果StringBuilder类型更改为StringBuffer类型,则发布的解决方案将起作用:
StringBuffer sb = new StringBuffer(input.length() * 4);
见:https://opennlp.apache.org/docs/1.9.0/apidocs/opennlp-tools/opennlp/tools/parser/Parse.html#show-爪哇。lang.StringBuffer-
show(StringBuffer sb)用该解析的字符串表示形式追加指定的字符串缓冲区。
您必须使用重载的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) {
}
}
}
}
有关于OpenNLP中解析器标记含义的文档吗?我知道POS标记类型遵循树库约定,但不幸的是,我没有找到任何关于解析器标记的信息,例如“SBAR”等。 这个留档是存在于某个地方还是我必须自己弄清楚?
我有一个NLP任务,我需要确保多个句子的一个段落至少包含一个结构良好的问题,我正在使用OpenNLP生成段落中的解析树。我的问题是: 1-有没有一种方法可以为一个结构合理的问题获取可能的解析树列表。 2.如何比较两个解析树 谢谢
我在文件中添加了一个翻译,因此现在我有2个文件,一个是希伯来文文件,一个是英文文件(原始文件)。在我这样做之后,突然在文件中,每次代码中出现时,它都以红色显示,并表示 我尝试了其他帖子中的所有答案,但没有任何帮助: 我尝试清理分级并同步它。 没有xml错误 添加后,错误消失,但现在对所有xml文件名显示相同的错误(例如,为红色,并显示此错误。 我尝试重新启动Android Studio 我尝试添加
问题内容: 我正在使用eclipse java ee执行Java编程。 我的其中一个功能中包含以下代码行: 我收到以下错误: 类型不匹配:无法从int转换为Long 我不太明白为什么当我在变量中添加数字时会出现此错误。 该问题如何解决?为什么首先发生? 问题答案: 对象之间没有转换,因此您需要从中进行转换。加a 使整数成为(): 但是,从进行了转换,因此可以使用: 因此,您也可以这样编写: 从一个