为什么依赖与在线演示不同?

Why are the dependencies different from the online demo?

给出下面的句子:

My dog also likes eating sausage.

online demo 产生以下关系:

nmod:poss(dog-2, My-1)
nsubj(likes-4, dog-2)
advmod(likes-4, also-3)
root(ROOT-0, likes-4)
xcomp(likes-4, eating-5)
dobj(eating-5, sausage-6)

但是,我的代码也使用了通用依赖项 (UD),产生了一些不同的东西:

nmod:poss(dog-2, My-1)
nsubj(likes-4, dog-2)
advmod(likes-4, also-3)
root(ROOT-0, likes-4)
amod(sausage-6, eating-5)
dobj(likes-4, sausage-6)
punct(likes-4, .-7)

这是我的代码:

String sentence = "My dog also likes eating sausage.";
MaxentTagger tagger = new MaxentTagger("edu/stanford/nlp/models/pos-tagger/english-left3words/english-left3words-distsim.tagger");
DependencyParser parser = DependencyParser.loadFromModelFile("edu/stanford/nlp/models/parser/nndep/english_UD.gz");

DocumentPreprocessor preprocessor = new DocumentPreprocessor(new StringReader(sentence));
for (List<HasWord> s: preprocessor) {
    List<TaggedWord> taggedWords = tagger.tagSentence(s);
    GrammaticalStructure gs = parser.predict(taggedWords);
    for (TypedDependency d: gs.typedDependencies()) {
        System.out.println(d);
    }
}

使用typedDependenciesCCprocessedtypedDependenciesCollapsedtypedDependenciesCollapsedTree 将产生相同的结果。

如何获得与演示完全相同的关系?

在线演示使用选区解析器并将其转换为依赖项。您链接的代码正在使用神经网络依赖解析器。预计这些会有所不同。要获得演示的输出,您应该 运行 斯坦福解析器:http://nlp.stanford.edu/software/lex-parser.shtml。在 CoreNLP 中,这意味着 运行 个注释器 tokenize,ssplit,parse.