小编典典

使用Stanford Parser获得句子的K个最佳解析

java

我想拥有一个句子的K个最佳解析,我认为这可以通过ExhaustivePCFGParser类来完成,问题是我不知道如何使用该类,更确切地说,我可以实例化该类吗?(构造函数是:ExhaustivePCFGParser(BinaryGrammar
bg,UnaryGrammar ug,Lexicon lex,Options op,Index stateIndex,Index
wordIndex,Index tagIndex))但我不知道如何适合所有这些参数

有没有更简单的方法来获得K个最佳解析?


阅读 301

收藏
2020-11-26

共1个答案

小编典典

通常,您通过一个LexicalizedParser对象来执行操作,该对象是提供所有这些功能的“语法”(语法,词典,索引等)。

在命令行中,将执行以下操作:

java -mx500m -cp "*" edu.stanford.nlp.parser.lexparser.LexicalizedParser -printPCFGkBest 20 edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz data/testsent.txt

在API级别,您需要获取一个LexicalizedParserQuery对象。拥有时LexicalizedParser lp(如中的ParserDemo.java),您可以执行以下操作:

LexicalizedParser lp = ... // Load / train a model
LexicalizedParserQuery lpq = lp.parserQuery();
lpq.parse(sentence);
List<ScoredObject<Tree>> kBest = lpq.getKBestPCFGParses(20);

A
LexicalizedParserQuery相当于Java
regex Matcher

注意:目前,kBest解析仅适用于PCFG(未分解语法)。

2020-11-26