OpenNLP是一个关于自然语言处理的Apache项目。NLP程序的目的之一是解析一个句子,给出其语法结构的树。例如,句子“天空是蓝色的”可能被解析为
S
/ \
NP VP
/ \ | \
The sky is blue.
其中S
是句子,NP
是名词短语,VP
是动词短语。等效地,上面的树可以写成一个带括号的字符串,如下所示:S(NP(The sky)VP(是蓝色的。))
我试图使用OpenNLP从句子中获取带括号的字符串,但我无法让示例代码正常工作。
特别是,我正在遵循本教程的最后一部分,我的代码在初始化ParserModel
时卡住了。
我已经从这里下载了相应的二进制文件,并添加了opennlp-tools-1.5.3。jar
(包括以下所有对象的类)作为IntelliJ项目的库。此外,我移动了en解析器分块。bin
到我的“user.dir”
下面的代码应该给我一个解析树,但它在创建ParserModel
对象时无限期运行。
InputStream is = new FileInputStream("en-parser-chunking.bin");
ParserModel model = new ParserModel(is);
Parser parser = ParserFactory.create(model);
String sentence = "The sky is blue.";
Parse topParses[] = ParserTool.parseLine(sentence, parser, 1);
for (Parse p : topParses)
p.show();
is.close();
这是我使用OpenNLP的第一天,但我甚至不能让这个简单的例子工作。
您的模型可能已损坏。请重新下载并使用该模型。如果没有帮助,请调用kill-QUIT
public static void Parse() throws InvalidFormatException, IOException {
// http://sourceforge.net/apps/mediawiki/opennlp/index.php?title=Parser#Training_Tool
InputStream is = new FileInputStream("en-parser-chunking.bin");
ParserModel model = new ParserModel(is);
Parser parser = ParserFactory.create(model);
String sentence = "Programcreek is a very huge and useful website.";
Parse topParses[] = ParserTool.parseLine(sentence, parser, 1);
for (Parse p : topParses)
p.show();
is.close();
/*
* (TOP (S (NP (NN Programcreek) ) (VP (VBZ is) (NP (DT a) (ADJP (RB
* very) (JJ huge) (CC and) (JJ useful) ) ) ) (. website.) ) )
*/
}
试试这个
我有一个NLP任务,我需要确保多个句子的一个段落至少包含一个结构良好的问题,我正在使用OpenNLP生成段落中的解析树。我的问题是: 1-有没有一种方法可以为一个结构合理的问题获取可能的解析树列表。 2.如何比较两个解析树 谢谢
我试图使用官方OpenNLP网站手册示例来训练一个新模型,以下是示例: 问题出在2º线上, 帮我说:不赞成。改用PlainTextByLineStream(InputStreamFactory,Charset)。但是我不知道如何使用这个构造函数。我想举一个例子,使用同一个语料库文件使用这个未弃用的构造函数。 我已经编写了下一段代码,使用opennlp帮助和两种使用train方法的方法,不推荐的和建
我正在试用OpenNLP句子检测工具。文本在一个文件-para3中。txt。内容: 我使用以下命令运行此命令: 我得到如下输出: 理想情况下,我会看到三句话作为输出: 现在,如果我尝试其他句子,其中“句号”或“句号”出现,句子检测就会发生。一个人可能会猜到文本中有3个句子,但是如何通过OpenNLP完成呢?NLP的哪些工具可以在这里提供帮助???句子检测的下一个层次是什么?
假设解析树中存在连接两个名词的动词,那么找出它的好策略是什么?例如,在这个句子中: 这名男子在回家前给妻子打了电话。 考虑到“男人”和“妻子”的输入,我想得到动词“called”。OpenNLP给了我一个解析树: (前)(前)(后)(后)(前)(后)(后)(后)(后)(后)(前)(前)(后)(后)(后)(前)(后)(后)(后)(后)(后)(前)(后)(后)(前)(后)(后)(后)(前)(后)(后)
问题内容: 我想拥有一个句子的K个最佳解析,我认为这可以通过ExhaustivePCFGParser类来完成,问题是我不知道如何使用该类,更确切地说,我可以实例化该类吗?(构造函数是:ExhaustivePCFGParser(BinaryGrammar bg,UnaryGrammar ug,Lexicon lex,Options op,Index stateIndex,Index wordInde
我正在寻找优化斯坦福大学CoreNLP情绪管道性能的方法。因此,a希望获得句子的情感,但只希望获得那些包含特定关键字作为输入的句子。 我尝试了两种方法: 方法1:StanfordCoreNLP管道用情感注释整个文本 我定义了一个注释器管道:标记化、ssplit、解析和情感。我在整篇文章中运行了它,然后在每个句子中查找关键字,如果它们存在,运行一个返回关键字值的方法。虽然处理过程需要几秒钟,但我并不