コード例 #1
0
    def _find_special_nodes(self, node: ParentedTree):

        #IMP assumption: dealing with a tree
        #as such dont have to keep track of visited nodes
        #since each node has only one parent

        if not type(node) is str:

            #print(node.treeposition())
            if (node.label() not in self.look_for) and (node.label()
                                                        not in self.avoid):

                res = {self._find_special_nodes(n) for n in node}
                if 0 in res:

                    return 0

                else:

                    return 2

            elif node.label() in self.avoid:

                {self._find_special_nodes(n) for n in node}
                return 0

            elif node.label() in self.look_for:

                res = {self._find_special_nodes(n) for n in node}
                if 0 in res:

                    return 0

                else:

                    self.special_labels.add(node.treeposition())
                    return 1
        else:

            return 2
コード例 #2
0

def getTag(senArr, root):
    return senArr[int(root.label())][3]


if __name__ == "__main__":
    senArr_eg = [
        "1	I	_	NN	NN	_	2	_	_	_", "2	love	_	VB	VB	_	0	_	_	_",
        "3	to	_	TO	TO	_	4	_	_	_", "4	eat	_	VB	VB	_	2	_	_	_",
        "5	cabbage	_	NN	NN	_	4	_	_	_"
    ]

    print "****input_example:"
    print "\n".join(senArr_eg)

    senArr_eg = [line.split("\t") for line in senArr_eg]
    root = conll2tree(senArr_eg)
    print "****tree", root
    print "****height", root.height()
    print "root.label", root.label()

    print root[0]
    children_of_root = getChildren(root)
    for child in children_of_root:
        print "*** child of root", child.label()
        print "tree position", ParentedTree.treeposition(child)
        print "parent", ParentedTree.parent(child)
        print "parent_idx", ParentedTree.parent_index(child)
        print root[ParentedTree.parent_index(child)]
コード例 #3
0
ファイル: conll2tree.py プロジェクト: qolina/Scripts
def getTag(senArr, root):
    return senArr[int(root.label())][3]


if __name__ == "__main__":
    senArr_eg = ["1	I	_	NN	NN	_	2	_	_	_", 
                "2	love	_	VB	VB	_	0	_	_	_", 
                "3	to	_	TO	TO	_	4	_	_	_", 
                "4	eat	_	VB	VB	_	2	_	_	_", 
                "5	cabbage	_	NN	NN	_	4	_	_	_"]

    print "****input_example:"
    print "\n".join(senArr_eg)

    senArr_eg = [line.split("\t") for line in senArr_eg]
    root = conll2tree(senArr_eg)
    print "****tree", root
    print "****height", root.height()
    print "root.label", root.label()

    print root[0]
    children_of_root = getChildren(root)
    for child in children_of_root:
        print "*** child of root", child.label()
        print "tree position", ParentedTree.treeposition(child)
        print "parent", ParentedTree.parent(child)
        print "parent_idx", ParentedTree.parent_index(child)
        print root[ParentedTree.parent_index(child)]