Java 插入和删除类型化依赖项的转换规则

Java 插入和删除类型化依赖项的转换规则,java,dependencies,stanford-nlp,Java,Dependencies,Stanford Nlp,使用StanfordCorenlp,我提取了被动语态句子的所有类型依赖项。现在我想让它成为主动语态。为此,我必须删除并在其中插入一些新规则。比如说,如果我们用这样的句子 “猫被狗追赶。”然后,类型化的依赖关系表示形式如下: det(第2类,第1类) nsubjpass(槽式-4,第2类) auxpass(追逐-4,was-3) det(狗-7,狗-6) 探员(追捕-4,追捕-7) 点(凹槽-4、-8) 将上述内容转换为活动语音的转换规则需要三次删除和两次插入: 1.匹配并删除: (a) nsub

使用StanfordCorenlp,我提取了被动语态句子的所有类型依赖项。现在我想让它成为主动语态。为此,我必须删除并在其中插入一些新规则。比如说,如果我们用这样的句子 “猫被狗追赶。”然后,类型化的依赖关系表示形式如下: det(第2类,第1类) nsubjpass(槽式-4,第2类) auxpass(追逐-4,was-3) det(狗-7,狗-6) 探员(追捕-4,追捕-7) 点(凹槽-4、-8)

将上述内容转换为活动语音的转换规则需要三次删除和两次插入: 1.匹配并删除: (a) nsubjpass(?X0,?X1) (b) auxpass(?X0,?X2) (c) 药剂(?X0,?X3)

  • 插入: (a) nsubj(?X0,?X3) (b) dobj(?X0,?X1)
  • 这里是X0(被追逐)、X1(猫)、X2(被追逐)和X3(狗)


    现在我的问题是,如何将这些规则实现到java代码中。

    所以您想更改以下句子:

    "The cat was chased by the dog."
    
    进入:

    ?

    如果我正在处理这个问题,我的第一反应就是使用规则生成新的句子字符串,然后用该文本重新生成一个新的注释对象

    因此,我不会去编辑图表或其他注释,我只需要创建我想要的新字符串,然后重建依赖关系图

    Annotation newSentenceAnnotation = new Annotation("The dog chased the cat.");
    pipeline.annotate(newSentenceAnnotation);
    
    所以你可以想象有这样一条规则:

    Pattern: X was VERB by Y --> Y <VERB> X
    Example: "The cat was chased by the dog." --> "The dog chased the cat."
    
    以下是一些使用语义图的链接:

    如果您查看我们最近发布的演示,会发现一个名为DependencyMatchFinder.java的类,它演示了如何从注释访问SemanticGraph:

    Annotation newSentenceAnnotation = new Annotation("The dog chased the cat.");
    pipeline.annotate(newSentenceAnnotation);