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

AMi*_*sra 14 nlp stanford-nlp

我有一个复杂的句子,我需要将它分为主要和从属条款.例如
ABC 的一句话引用了许多国家禁止使用化学添加剂的事实,并认为它们也可能在这种状态下被禁止.
需要拆分

1)ABC cites the fact   
2)chemical additives are banned in many countries   
3)ABC feels they may be banned in this state too.    
Run Code Online (Sandbox Code Playgroud)

我想我可以使用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)   

Cht*_*ect 25

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

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

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

  1. 识别解析树中的非根分离节点
  2. 从主树中删除(但单独保留)以这些子句节点为根的子树.
  3. 在主树中(在删除第2步中的子树之后),删除任何悬挂介词,从属连词和副词.

在第3步中,我所说的"悬挂"是指任何介词等,其依赖性已在步骤2中被删除.例如,从"ABC引用事实",你需要删除介词/从属连接" "因为它的依赖节点"被禁止"在步骤2中被删除.因此,您将有三个独立的条款:

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

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

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

对于在线解析树可视化,您可能希望使用在线Berkeley解析器演示.它有助于形成更好的直觉.这是为您的例句生成的图像: 伯克利分析树

注意事项

  1. 即使最好的解析器也不会总是正确地解析句子,所以请记住这一点.
  2. 此外,许多复杂的句子涉及正确的节点提升,大多数解析器几乎从未正确解析过.
  3. 如果子句处于被动语态,则可能需要稍微修改算法.

除了这三个陷阱之外,上述算法应该非常准确.