给出以下句子:
我的狗也喜欢吃香肠。
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);
}
}
使用typedDependenciesCCprocessed
,typedDependenciesCollapsed
和typedDependenciesCollapsedTree
会产生相同的结果。
如何获得与演示完全相同的关系?
答案 0 :(得分:1)
在线演示使用选区解析器并将其转换为依赖关系。您链接的代码使用神经网络依赖解析器。预计这些会有所不同。要获得演示的输出,您应该运行Stanford Parser:http://nlp.stanford.edu/software/lex-parser.shtml。从CoreNLP,这意味着使用注释器tokenize,ssplit,parse
运行。