2013-05-11 89 views

回答

3

取一个对应于名词短语的子树。获得此树的叶子:

List<Tree> leaves = tree.getLeaves(); 

然后在第一个叶(CharacterOffsetBeginAnnotation值)和最后一片叶子(CharacterOffsetEndAnnotation)的终点的起点。产生的时间间隔是NP的偏移量。

要获得偏移值,取叶的标签,并将其转换为HasOffset:

Label label = firstLeaf.label(); 
HasOffset ofs = (HasOffset) label; 
int start = ofs.beginPosition(); 

这适用于斯坦福CoreNLP 3.2.0。

0

我首先看看解析器使用的tokenizer/chunker。我会更容易找到块和原始文本之间的字符偏移映射(如果字符偏移量不在那里)。然后你可以遍历你的分析树寻找名词短语,然后从那里遍历左手分支,直到你到达一个假期,这将是你的分析树中的第一个标记;并从NP节点开始,遍历右手边的分支,直到你到达另一个假期,这将成为你的结束标记。您可以通过从树根开始计算树叶来获得第一个标记的偏移量。

相关问题