【发布时间】:2026-01-06 08:15:01
【问题描述】:
我想从给定的文本行打印解析树和通用依赖项,如http://nlp.stanford.edu:8080/parser/index.jsp 的演示中所示。
这是我的代码
public class ParseDoc {
private final static String PCG_MODEL = "edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz";
private final TokenizerFactory<CoreLabel> tokenizerFactory = PTBTokenizer.factory(new CoreLabelTokenFactory(), "invertible=true");
private static final LexicalizedParser parser = LexicalizedParser.loadModel(PCG_MODEL);
public Tree parse(String str) {
List<CoreLabel> tokens = tokenize(str);
Tree tree = parser.apply(tokens);
return tree;
}
private List<CoreLabel> tokenize(String str) {
Tokenizer<CoreLabel> tokenizer =
tokenizerFactory.getTokenizer(
new StringReader(str));
return tokenizer.tokenize();
}
public static void main(String[] args) {
String str = "My dog also likes eating sausage.";
// Parser parser = new Parser();
Tree tree = parser.parse(str);
List<Tree> leaves = tree.getLeaves();
// Print words and Pos Tags
for (Tree leaf : leaves) {
Tree parent = leaf.parent(tree);
System.out.print(leaf.label().value() + "-" + parent.label().value() + " ");
}
System.out.println();
}
}
不幸的是我只能得到标签
My-PRP$ dog-NN also-RB likes-VBZ eating-VBG sausage-NN .-.
这对我没有任何用处。
我想打印树:
(ROOT
(S
(NP (PRP$ My) (NN dog))
(ADVP (RB also))
(VP (VBZ likes)
(S
(VP (VBG eating)
(NP (NN sausage)))))
(. .)))
以及通用依赖:
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)
我怎样才能做到这一点?
【问题讨论】:
标签: java parsing stanford-nlp