斯坦福NLP注释排名或分数

时间:2014-12-12 18:52:32

标签: nlp stanford-nlp

我正在使用Stanford CoreNLP管道,并从TreeAnnotation获得BasicDependenciesAnnotationSentencesAnnotation
我正在寻找一种方法来说明关于POS标签和依赖结构的解析器是多么确定。

我记得早些时候,当我在修补斯坦福NLP图书馆的时候,我看到了同一句话返回了多个不同排名的多棵树。 我找不到任何有关如何从解析器或管道获取此信息的信息。

DependencyScoring类似乎在TypedDependency上运行,而不是管道产生的东西作为注释过程的一部分,据我所知。

编辑:代码明细:

Annotation document = new Annotation("This is my sentence");
pipeline.annotate(document); 
List<CoreMap> sentences = document.get(SentencesAnnotation.class);
...
Tree tree = sentence1.get(TreeAnnotation.class);
SemanticGraph dependencies = sentence1.get(CollapsedCCProcessedDependenciesAnnotation.class);

1 个答案:

答案 0 :(得分:0)

如果您正在使用默认的CoreNLP管道(即使用parse注释器而不是depparse),那么您所看到的依赖关系解析来自选区解析的确定性转换这句话。最好的&#34;得分&#34;你可以到这里来查看候选人选区解析,最终会产生依赖性解析(转换后)。

但是,您需要打破CoreNLP管道来完成这项特定工作。如果您有LexicalizedParser个实例,则可以获得 k 最佳解析(附带分数),如下所示:

List<CoreLabel> mySentence = ...

LexicalizedParser parser = LexicalizedParser.loadModel("edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz");
ParserQuery pq = parser.parserQuery();
if (pq.parse(mySentence)) {
  // Get best parse and associated score
  Tree parse = pq.getBestPCFGParse();
  double score = pq.getPCFGScore();

  // Print parse
  parse.pennPrint();

  // ----
  // Get collection of best parses
  List<ScoredObject<Tree>> bestParses = pq.getBestPCFGParses();

  // ----
  // Convert a constituency parse to dependency representation
  GrammaticalStructure gs = parser.treebankLanguagePack()
      .grammaticalStructureFactory().newGrammaticalStructure(parse);
  List<TypedDependency> dependencies = gs.typedDependenciesCCprocessed();
  System.out.println(dependencies);
}

相关Javadoc:

(注意:未经测试的代码,但这应该有效..)