使用Stanford Parser获得K语句的最佳解析
我希望得到一个句子的K最好的解析,我想这可以用ExhaustivePCFGParser类来完成,问题是我不知道如何使用这个类,更确切地说,我可以实例化这个类吗? (构造函数是:ExhaustivePCFGParser(BinaryGrammar bg,UnaryGrammar ug,Lexicon lex,Options op,Index stateIndex,Index wordIndex,Index tagIndex))但我不知道如何拟合所有这些参数
有没有更简单的方法来进行K最佳解析?
通常,您通过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> kBest = lpq.getKBestPCFGParses(20);
LexicalizedParserQuery
等同于java正则表达式Matcher
。
注意:目前,kBest解析仅适用于PCFG非因式语法。