我使用Stanford解析器进行实现。 我想使用句子的树来提取各种信息。
我使用了以下代码: Get certain nodes out of a Parse Tree:
我有我的CoreMap语句和相应的树:
Tree sentenceTree= sentence.get(TreeCoreAnnotations.TreeAnnotation.class);
for (Tree sentenceTree: t) {
String pos = sentenceTree.label().value();
String wd = sentenceTree.firstChild().label().value();
Integer wdIndex = ??
CoreLabel token = sentence.get(CoreAnnotations.TokensAnnotation.class).get(wdIndex);
}
我无法提取引理,是否有人知道该怎么做?
我尝试了下面的代码并且它可以工作,但它会产生一些警告并且也不是很干净:
Annotation a = new Annotation("geese");
ss.pipeline.annotate(a);
CoreMap se = a.get(CoreAnnotations.SentencesAnnotation.class).get(0);
CoreLabel token = se.get(CoreAnnotations.TokensAnnotation.class).get(0);
String lemma = token.get(CoreAnnotations.LemmaAnnotation.class);
System.out.println(lemma); // goose
有人有什么建议吗?
谢谢!
答案 0 :(得分:1)
我有同样的问题,但我用对叶子的HashMap和叶子的索引解决了它。此代码打印每个匹配的叶子的词形化版本,这是名词。
2^i*x1[i]
此解决方案仅在搜索节点为leaf之前的一个级别时才起作用。