def dplptree2dgparentedtree(self):
        """Convert the tree from DPLP's format into a conventional binary tree,
        which can be easily converted into output formats like RS3.
        """
        def transform(dplp_tree):
            """Transform a DPLP parse tree into a more conventional parse tree."""
            if isinstance(dplp_tree, basestring) or not hasattr(dplp_tree, 'label'):
                return dplp_tree
            assert len(dplp_tree) == 2, "We can only handle binary trees."

            match = DPLP_REL_RE.match(dplp_tree.label())
            assert match, "Relation '{}' does not match regex '{}'".format(dplp_tree.label(), DPLP_REL_RE)
            left_child_nuc, right_child_nuc, relname = match.groups()
            dplp_tree._label = relname

            for i, child_nuclearity in enumerate([left_child_nuc, right_child_nuc]):
                child = dplp_tree[i]
                dplp_tree[i] = Tree(child_nuclearity, [transform(child)])
            return dplp_tree

        tree = transform(self.parsetree)
        return DGParentedTree.convert(tree)
Convert the tree from DPLP's format into a conventional binary tree,
        which can be easily converted into output formats like RS3.