NLTK将复杂列表解析为树

时间:2014-06-16 09:14:23

标签: python nltk

我正在尝试将从max entropy syntactic parser返回的列表解析为nltk树,但是从我看到here通过初始化每个节点创建树,是否有更简单的方法来实现? 这是一个列表示例。

[u'SBAR', [u'WHADVP+WRB', 'how'], [u'S', [u'VP', [u'VBD', 'did'], [u'VP', [u'VB', 'serfdom'], [u'VP', [u'VB', 'develop'], [u'SBAR', [u'IN', 'in'], [u'S', [u'CC', 'and'], [u'S', [u'ADVP+RB', 'then'], [u'VP', [u'VB', 'leave'], [u'NP+NNP', 'Russia']]]]]]]], [u'.', '?']]]

1 个答案:

答案 0 :(得分:0)

我为上面的递归解决方案做了以下函数。

def List_To_Tree(lst):
    if(not isinstance(lst, basestring)):
        if(len(lst) == 2 and isinstance(lst[0], basestring) and isinstance(lst[1], basestring)):                
            lst = Tree(str(lst[0]).split('+')[0],[str(lst[1])])
        elif(isinstance(lst[0], basestring) and not isinstance(lst[1], basestring)):
            lst = Tree(str(lst[0]).split('+')[0],map(List_To_Tree, lst[1: len(lst) ]))
    return lst