【发布时间】:2014-10-07 10:38:09
【问题描述】:
我的原句是
海啸地震也与薄层的存在有关 沿地壳最上部的俯冲沉积岩层 板界面,被认为存在于重要区域 海洋地壳顶部的地形,以及传播的地方 朝上倾方向,可能到达海底。
我将句子传递给斯坦福 NLP 并得到了漂亮的解析树:
(ROOT (S (NP (NN Tsunami) (NNS地震)) (VP (VBP)) (ADVP (RB 也))(VP(VBN被)(VP(VBN联)(PP(TO))(NP(NP(DT)) (NN 存在)) (PP (IN of) (NP (NP (DT a) (JJ 薄) (NN 层)) (PP (IN 的) (S (VP (VBN 俯冲) (NP (NP (JJ 沉积) (NN 岩石)) (PP) (IN沿)(NP(NP(NP(DT))(JJS最上)(NN部分))(PP(IN) (NP (DT) (NN 板) (NN 接口))) (, ,) (UCP (RB as) (S (VP (VBZ 是) (VP (VBN 认为) (S (VP (TO 到) (VP (VB 是) (ADJP (JJ) 当前) (PP (IN in) (NP (NP (NNS 地区)) (PP (IN)) (NP (JJ 显着) (NN 地形)))))) (PP (IN at) (NP (NP (DT the)) (NN 顶部))(PP(IN)(NP(DT)(JJ海洋)(NN地壳))))))))))(,,) (CC 和) (SBAR (WHADVP (WRB where)) (S (NP (NN 传播)) (VP (VBD) 是) (PP (IN in) (NP (DT an) (JJ 上倾) (NN 方向))) (, ,) (ADVP (RB可能)))))))))(S(VP(VBG到达)(NP(DT))(NN 海底)))))))))))))))))(..)))
然后我将上面的字符串提供给 NLTK.Tree:
pasrsd_tree = NLTK.Tree.fromstring(parsetree_string)
结果还不错:
Tree('ROOT', [Tree('S', [Tree('NP', [Tree('NN', ['Tsunami']), Tree('NNS', ['earthquakes'])]), Tree('VP', [Tree('VBP', ['have']), 树('ADVP', [Tree('RB', ['also'])]), Tree('VP', [Tree('VBN', ['been']), Tree('VP', [Tree('VBN', ['linked']), Tree('PP', [Tree('TO', ['to']), Tree('NP', [Tree('NP', [Tree('DT', ['the']), Tree('NN', ['presence'])]), Tree('PP', [Tree('IN', ['of']), Tree('NP', [树('NP',[树('DT',['a']),树('JJ',['瘦']),树('NN', ['layer'])]), Tree('PP', [Tree('IN', ['of']), Tree('S', [Tree('VP', [Tree('VBN', ['subducted']), Tree('NP', [Tree('NP', [Tree('JJ', ['sedimentary']), Tree('NN', ['rock'])]), Tree('PP', [Tree('IN', ['沿']), 树('NP', [Tree('NP', [Tree('NP', [Tree('DT', ['the']), Tree('JJS', ['uppermost']), Tree('NN', ['part'])]), Tree('PP', [Tree('IN', ['of']), Tree('NP', [Tree('DT', ['the']), Tree('NN', ['plate']), Tree('NN', ['interface'])])])]), Tree(',', [',']), 树('UCP',[树('RB',['as']),树('S',[树('VP',[树('VBZ', ['is']), Tree('VP', [Tree('VBN', ['thought']), Tree('S', [Tree('VP', [Tree('TO', ['to']), Tree('VP', [Tree('VB', ['be']), Tree('ADJP', [Tree('JJ', ['present']), Tree('PP', [Tree('IN', ['in']), Tree('NP', [Tree('NP', [Tree('NNS', ['areas'])]), Tree('PP', [Tree('IN', ['of']), 树('NP',[树('JJ',['显着']),树('NN', ['topography'])])])])])]), Tree('PP', [Tree('IN', ['at']), Tree('NP', [Tree('NP', [Tree('DT', ['the']), Tree('NN', ['top'])]), Tree('PP', [Tree('IN', ['of']), Tree('NP', [Tree('DT', ['the']), Tree('JJ', ['oceanic']), Tree('NN', ['crust'])])])])])])])])])])]), Tree(',', [',']), Tree('CC', ['and']), Tree('SBAR', [Tree('WHADVP', [Tree('WRB', ['where'])]), Tree('S', [Tree('NP', [Tree('NN', ['propagation'])]), 树('VP',[树('VBD',['was']),树('PP',[树('IN',['in']), Tree('NP', [Tree('DT', ['an']), Tree('JJ', ['up-dip']), Tree('NN', ['direction'])])]), Tree(',', [',']), Tree('ADVP', [Tree('RB', ['可能'])])])])])])])])]), Tree('S', [Tree('VP', [Tree('VBG', ['reaching']), Tree('NP', [Tree('DT', ['the']), Tree('NN', ['海底'])])])])])])])])])])])])])]), Tree('.', ['.'])])])
我的问题是,给定 pared_tree,我怎样才能获得像 top of the oceanic crust、a thin layer 这样的左级实体?
我在想解析树的层次可能有用,但是当我看树层次时我真的迷路了,不知道该怎么做。
我主要基于 Python,斯坦福 NLP 结果是使用 Python 包装器获得的 (https://bitbucket.org/torotoki/corenlp-python)。
谁能帮助我,也许可以指出一些方向?
【问题讨论】: