Constituent to Dependency Conversion
目的:已经处理好的短语句法分析树转成依存句法分析树
短语句法分析的例子:
(ROOT (IP-HLN (NP-SBJ (NP-PN (NR 中国)) (ADJP (JJ 最大)) (NP (NN 氨纶丝) (NN 生产) (NN 基地))) (VP (PP-LOC (P 在) (NP-PN (NR 连云港))) (VP (VV 建成)))))
依存句法分析的例子:
[nn(基地-5, 中国-1), amod(基地-5, 最大-2), nn(基地-5, 氨纶丝-3), nn(基地-5, 生产-4), nsubj(建成-8, 基地-5), prep(建成-8, 在-6), pobj(在-6, 连云港-7), root(ROOT-0, 建成-8)]
或者
1 中国 _ NR NR _ 5 nn _ _
2 最大 _ ADJ JJ _ 5 amod _ _
3 氨纶丝 _ NOUN NN _ 5 nn _ _
4 生产 _ NOUN NN _ 5 nn _ _
5 基地 _ NOUN NN _ 8 nsubj _ _
6 在 _ P P _ 7 case _ _
7 连云港 _ NR NR _ 8 prep _ _
8 建成 _ VV VV _ 0 root _ _
具体代码
这里需要导入https://nlp.stanford.edu/software/lex-parser.shtml#Download最新的包
TreebankLanguagePack ctlp = new ChineseTreebankLanguagePack();
//ctlp.setGenerateOriginalDependencies(true);
Predicate<String> predicate = (v1) -> {
return true;
};
GrammaticalStructureFactory gsf = ctlp.grammaticalStructureFactory(predicate);
String str = "(ROOT (IP-HLN (NP-SBJ (NP-PN (NR 中国)) (ADJP (JJ 最大)) (NP (NN 氨纶丝) (NN 生产) (NN 基地))) (VP (PP-LOC (P 在) (NP-PN (NR 连云港))) (VP (VV 建成)))))";
Tree parseTree = Tree.valueOf(str);
GrammaticalStructure gs = gsf.newGrammaticalStructure(parseTree);
Collection<TypedDependency> tdl = gs.typedDependencies();
System.out.println(tdl);
如果需要保留标点符号,或者生成更加Conll格式,最好使用老版本的jar包。