Stanford Parser:如何提取依赖关系?

saf*_*afé 7 parsing nlp stanford-nlp

我的工作在于在noun+verb句子中查找(可以)查询,然后提取对象.

例如:"coding is sometimes a tough work."我的查询是:"coding is".

我得到的类型依赖是:

nsubj(work-6, coding-1)   
cop(work-6, is-2)    
advmod(work-6, sometimes-3)
det(work-6, a-4)
amod(work-6, tough-5)
Run Code Online (Sandbox Code Playgroud)

我的程序应该提取nsubj依赖项,识别"coding"为查询并保存"work".

可能这看起来很简单,但直到现在,我还没有找到能够提取特定类型依赖关系的方法,我真的需要这个才能完成我的工作.

欢迎任何帮助,

Imr*_*ran 10

您可以通过以下代码找到依赖项:

Tree tree = sentence.get(TreeAnnotation.class);
// Get dependency tree
TreebankLanguagePack tlp = new PennTreebankLanguagePack();
GrammaticalStructureFactory gsf = tlp.grammaticalStructureFactory();
GrammaticalStructure gs = gsf.newGrammaticalStructure(tree);
Collection<TypedDependency> td = gs.typedDependenciesCollapsed();
System.out.println(td);

Object[] list = td.toArray();
System.out.println(list.length);
TypedDependency typedDependency;
for (Object object : list) {
typedDependency = (TypedDependency) object;
System.out.println("Depdency Name"typedDependency.dep().nodeString()+ " :: "+ "Node"+typedDependency.reln());
if (typedDependency.reln().getShortName().equals("something")) {
   //your code
}
Run Code Online (Sandbox Code Playgroud)


sil*_*asm 1

我认为没有办法告诉解析器提取给定单词的依赖关系。但是,您可以只运行每个句子的依赖关系列表,搜索查询词出现在关系中的所有实例nsubj

另外,你如何存储句子的解析?如果(正如我从你的问题中收集到的)它在一个文本文件中,你可以使用 2 个连续的 grep,一个用于查询单词,一个用于你想要的关系,以获得相关其他单词的列表。