Esempio n. 1
0
def constructTree(tree):
    ## 1. ini tree node
    index2node = {}
    for i in tree:
        node = BU_RvNN.Node_tweet(idx=i)
        index2node[i] = node
    ## 2. construct tree
    for j in tree:
        indexC = j
        indexP = tree[j]['parent']
        nodeC = index2node[indexC]
        wordFreq, wordIndex = str2matrix(tree[j]['vec'], tree[j]['maxL'])
        nodeC.index = wordIndex
        nodeC.word = wordFreq
        ## not root node ##
        if not indexP == 'None':
            nodeP = index2node[int(indexP)]
            nodeC.parent = nodeP
            nodeP.children.append(nodeC)
        ## root node ##
        else:
            root = nodeC
    ## 3. convert tree to DNN input
    degree = tree[j]['max_degree']
    x_word, x_index, tree = BU_RvNN.gen_nn_inputs(root, max_degree=degree, only_leaves_have_vals=False)
    return x_word, x_index, tree
Esempio n. 2
0
def construct_tree(tree):
    # tree: {index1:{'parent':, 'maxL':, 'vec':}

    # 1. ini tree node
    index2node = {}
    for i in tree:
        node = BU_RvNN.NodeTweet(idx=i)
        index2node[i] = node

    # 2. construct tree
    _j = 0
    root = None
    for _j in tree:
        index_c = _j
        index_p = tree[_j]['parent']
        node_c = index2node[index_c]
        word_freq, word_index = str2matrix(tree[_j]['vec'], tree[_j]['maxL'])
        node_c.index = word_index
        node_c.word = word_freq

        # not root node
        if not index_p == 'None':
            node_p = index2node[int(index_p)]
            node_c.parent = node_p
            node_p.children.append(node_c)
        # root node
        else:
            root = node_c

    # 3. convert tree to DNN input
    degree = tree[_j]['max_degree']
    x_word, x_index, tree = BU_RvNN.gen_nn_inputs(root, max_degree=degree, only_leaves_have_vals=False)
    return x_word, x_index, tree