使用斯坦福解析器进行子句提取

时间:2014-09-27 00:54:11

标签: nlp stanford-nlp

我有一个复杂的句子,我需要把它分成main和dependent子句。 例如对于句子
美国广播公司引用了许多国家禁止使用化学添加剂这一事实,并认为它们在这种状态下也可能被禁止使用 需要拆分

1)ABC cites the fact   
2)chemical additives are banned in many countries   
3)ABC feels they may be banned in this state too.    

我想我可以使用Stanford Parser树或依赖项,但我不知道如何从这里开始。

(ROOT
  (S
    (NP (NNP ABC))
    (VP (VBZ cites)
      (NP (DT the) (NN fact))
      (SBAR (IN that)
        (S
          (NP (NN chemical) (NNS additives))
          (VP
            (VP (VBP are)
              (VP (VBN banned)
                (PP (IN in)
                  (NP (JJ many) (NNS countries)))))
            (CC and)
            (VP (VBZ feels)
              (SBAR
                (S
                  (NP (PRP they))
                  (VP (MD may)
                    (VP (VB be)
                      (VP (VBN banned)
                        (PP (IN in)
                          (NP (DT this) (NN state)))
                        (ADVP (RB too))))))))))))
    (. .)))

和折叠的依赖关系解析

nsubj(cites-2, ABC-1)  
root(ROOT-0, cites-2)  
det(fact-4, the-3)   
dobj(cites-2, fact-4)  
mark(banned-9, that-5)  
nn(additives-7, chemical-6)  
nsubjpass(banned-9, additives-7)   
nsubj(feels-14, additives-7)   
auxpass(banned-9, are-8)   
ccomp(cites-2, banned-9)   
amod(countries-12, many-11)  
prep_in(banned-9, countries-12)   
ccomp(cites-2, feels-14)    
conj_and(banned-9, feels-14)    
nsubjpass(banned-18, they-15)   
aux(banned-18, may-16)    
auxpass(banned-18, be-17)    
ccomp(feels-14, banned-18)   
det(state-21, this-20)    
prep_in(banned-18, state-21)    
advmod(banned-18, too-22)   

1 个答案:

答案 0 :(得分:24)

如果主要使用基于constaenty的解析树而不是依赖关系,那可能会更好。依赖项将有所帮助,但只有在主要工作完成后!我将在答案结束时解释这一点。

这是因为选区解析基于短语结构语法,如果您试图从句子中提取条款,则该语法最相关。它也可以使用依赖关系来完成,但在这种情况下,您将基本上重构短语结构 - 从根开始并查看依赖节点(例如ABCfacts是名义主题和动词cites的直接对象,等等......)。

然而,可视化解析树是有帮助的。在您的示例中,子句由 SBAR 标记指示,该标记是由(可能为空的)从属连接引入的子句。您需要做的就是:

  1. 识别解析树中的非根分离节点
  2. 从主树中删除(但单独保留)以这些句法节点为根的子树。
  3. 在主树中(删除第2步中的子树后),删除所有悬挂介词,从属连词和副词。
  4. 在第3步,我的意思是"挂"是指任何介词等,其依赖性已在步骤2中被删除。例如,来自" ABC引用了这样一个事实:",你需要删除介词/从属连接""因为它的依赖节点"被禁止"在第2步中删除了。因此,您将有三个独立的条款:

    • 许多国家禁止使用化学添加剂(步骤2中去除SBAR)
    • 他们也可能在此状态下被禁止(步骤2中删除SBAR)
    • ABC引用了这一事实(第3步)

    此处唯一的问题是连接 ABC - 感觉。为此,请注意"禁止"并且"感觉"是动词" cites"的补充,因此,有相同的主题,这是" ABC"!而且你已经完成了。完成后,您将获得第四个条款," ABC感觉",这可能是您可能想要或不想包含在您的最终结果中。

    有关所有clausal标记的列表(事实上,所有Penn Treebank标记),请参阅此列表:http://www.surdeanu.info/mihai/teaching/ista555-fall13/readings/PennTreebankConstituents.html

    对于在线解析树可视化,您可能希望使用online Berkeley parser demo。它有助于形成更好的直觉。这是为您的例句生成的图像: Berkeley Parser Tree

    <强>注意事项

    1. 即使是最好的解析器也不会总是正确解析句子,所以请记住这一点。
    2. 此外,许多复杂的句子涉及right node raising,大多数解析器几乎从未正确解析过。
    3. 如果条款是被动语态,您可能需要稍微修改算法。
    4. 除了这三个陷阱之外,上述算法应该非常准确。