如何使用Stanford Parser API在数字上找到单词?

时间:2011-07-16 07:22:40

标签: dependencies stanford-nlp

在类型依赖中,Stanford Parser还显示Word出现的地方,例如“爱2”。现在它在“2”的地方显示出“爱”。

nsubj(love-2, I-1)
poss(country-4, my-3)
dobj(love-2, country-4)

现在,如何使用Stanford解析器API以编程方式找到单词的位置? API中有任何功能吗?

3 个答案:

答案 0 :(得分:1)

如果你想获得一个句子中特定单词的索引,你可以选择直接将其标记化并作为indexOf(标记)获取位置+1
TypedDependency格式>>> abbreviated_form_reln(州长,附属)
如果要访问TypedDependency(或任何其他属性)中特定单词的索引,只需使用API​​例如:
比如,TypedDepency td代表nsubj(love-2,I-1)

    td.gov();    //gives the governer (of type TreeGraphNode)
    td.dep();    //gives the dependent (")
    td.reln();   //gives the relation (of type GrammaticalRelation)

然后您可以使用TreeGraphNode的方法来检索更多细节.Say,TreeGraphNode tgn = td.gov();

    tgn.index(); //yields the required index (for the above case, 2)

随意参考javadoc http://nlp.stanford.edu/nlp/javadoc/javanlp/

答案 1 :(得分:0)

你必须已经给它一个句子,所以我不确定你为什么不知道这个词的位置。

如果您试图理解为什么有多个依赖关系提到相同的单词,那么这是因为单词可以从一个依赖项传播到另一个依赖项。

答案 2 :(得分:0)

你做的事情如下。 wordIndex就是你想要的。

import edu.stanford.nlp.ling.CoreAnnotations.IndexAnnotation;

...

GrammaticalStructure gs = gsf.newGrammaticalStructure(parse);
List<TypedDependency> tdl = gs.typedDependenciesCCprocessed();
TypedDependency td = tdl.get(0);
CoreLabel cl = td.dep().label();
int wordIndex = cl.get(IndexAnnotation.class);