树型树分析器python

2024-04-26 14:21:50 发布

您现在位置:Python中文网/ 问答频道 /正文

最近我一直在尝试在python中解析由stanford parser返回的语法树。我一直在尝试用nltk tree = Tree.parse(result['sentences'][0]['parsetree'])来实现这一点,解析成功了,但是nltk的树类提供了很少的处理方法。我将需要像tree.isPrePreTerminal()这样的方法,这不是我所理解的。我找到了this替代方案,但它似乎不喜欢64位体系结构,即使我用-m64标志编译,它也会给我这个错误ImportError: InputTree/_InputTree.so: wrong ELF class: ELFCLASS32。 我在过去的2天里一直在研究这个问题,如果你知道如何使上述模块与64位系统或备用库一起工作,或者至少是一个好的nltk.树让我自己实现这些方法的文档请让我知道。在


Tags: 方法treeparserparse语法sentencesresultthis
1条回答
网友
1楼 · 发布于 2024-04-26 14:21:50

不幸的是,PyInputTree不再被维护。但是,Charniak解析器中的InputTree类以^{} class in BLLIP Parser的包装形式存在。它不实现isPrePreTerminal(),但有一种方法可以实现:

import bllipparser

def is_prepreterminal(node):
    """Returns True iff all children of this node are preterminals."""
    subtrees = node.subtrees()
    return len(subtrees) > 0 and \
        all(subtree.is_preterminal() for subtree in subtrees)

# testing code
tree = bllipparser.Tree('(S1 (S (NP (DT This)) (VP (VBZ is) (NP (DT a) (ADJP (RB fairly) (JJ simple)) (NN parse) (NN tree))) (. .)))')
for subtree in tree.all_subtrees():
    print subtree, is_prepreterminal(subtree)

有关详细信息,请参见PyPI上的^{}。在

相关问题 更多 >