我绝对不熟悉Java开发。

有人可以详细说明如何使用斯坦福大学的自然语言处理词法分析器-开源Java代码获取“语法关系”吗?

谢谢!

最佳答案

参见my code to run the Stanford Parser programmatically中第一个文件的第88行

GrammaticalStructureFactory gsf = tlp.grammaticalStructureFactory();
GrammaticalStructure gs = gsf.newGrammaticalStructure(parse);
Collection tdl = gs.typedDependenciesCollapsed();

System.out.println("words: "+words);
System.out.println("POStags: "+tags);
System.out.println("stemmedWordsAndTags: "+stems);
System.out.println("typedDependencies: "+tdl);


集合tdl是这些类型的依赖项的列表。如果查看javadoc for TypedDependency,您会发现使用.reln()方法可以使您获得语法关系。

我的代码中第三个文件的第311-318行显示了如何使用该类型的依赖关系列表。我碰巧得到该关系的名称,但是您可以得到该关系本身,该关系属于GrammaticalRelation类。

for( Iterator<TypedDependency> iter = tdl.iterator(); iter.hasNext(); ) {
    TypedDependency var = iter.next();

    TreeGraphNode dep = var.dep();
    TreeGraphNode gov = var.gov();

    // All useful information for a node in the tree
    String reln = var.reln().getShortName();


别难过,我花了一两天的时间试图弄清楚如何使用解析器。我不知道文档是否有所改进,但是当我使用它们时,它们简直太糟糕了。

08-08 00:25