from copy import copy from operator import attrgetter from collections import deque from pydmrs._exceptions import PydmrsError, PydmrsValueError from pydmrs.core import Link, Pred, Dmrs, ListDmrs, DictDmrs from pydmrs.utils import load_config, get_config_option DEFAULT_CONFIG_FILE = 'default_simplification.conf' config = load_config(DEFAULT_CONFIG_FILE) REVERSE_ARG1 = frozenset(Pred.from_string(x) for x in get_config_option(config, 'Rooted Conversion', 'reverse_arg1', opt_type=list)) def reverse_link(dmrs, link): """ Reverse a Link in a Dmrs graph. The start and end nodeids are switched, and "_REV" is appended to the rargname (or removed if already present) """ if link.rargname[-4:] == "_REV": new_rargname = link.rargname[:-4] else: new_rargname = link.rargname + "_REV" new_link = Link(link.end, link.start, new_rargname, link.post) dmrs.remove_link(link) dmrs.add_link(new_link) return new_link def is_root(dmrs, nodeid): """
from copy import copy from operator import attrgetter from collections import deque from pydmrs._exceptions import PydmrsError, PydmrsValueError from pydmrs.core import Link, Pred, Dmrs, ListDmrs, DictDmrs from pydmrs.utils import load_config, get_config_option DEFAULT_CONFIG_FILE = 'default_simplification.conf' config = load_config(DEFAULT_CONFIG_FILE) REVERSE_ARG1 = frozenset( Pred.from_string(x) for x in get_config_option( config, 'Rooted Conversion', 'reverse_arg1', opt_type=list)) def reverse_link(dmrs, link): """ Reverse a Link in a Dmrs graph. The start and end nodeids are switched, and "_REV" is appended to the rargname (or removed if already present) """ if link.rargname[-4:] == "_REV": new_rargname = link.rargname[:-4] else: new_rargname = link.rargname + "_REV" new_link = Link(link.end, link.start, new_rargname, link.post) dmrs.remove_link(link) dmrs.add_link(new_link) return new_link
from pydmrs.utils import get_config_option, load_config, split_dmrs_string DEFAULT_CONFIG_FILE = 'default_simplification.conf' # If run from the command line, load the specified file # Otherwise, load the default file if __name__ == '__main__': parser = argparse.ArgumentParser(description='DMRS simplification tool') parser.add_argument('-c', '--config', default=None, help='Path to simplifaction configuration file. By default, configuration in __config__/default_simplification.conf is used.') parser.add_argument('input_dmrs', help='Specify input DMRS file') parser.add_argument('output_dmrs', help='Specify output dmrs file.') args = parser.parse_args() if args.config is not None: # Load the given file config = load_config(args.config, default=False) else: config = load_config(DEFAULT_CONFIG_FILE) else: config = load_config(DEFAULT_CONFIG_FILE) DEFAULT_FILTER = frozenset(GPred.from_string(x) for x in get_config_option(config, 'General Predicate Filtering', 'filter', opt_type=list)) DEFAULT_ALLOW_DISC = get_config_option(config, 'General Predicate Filtering', 'allow_disconnected_dmrs') def gpred_filtering(dmrs, gpred_filter=DEFAULT_FILTER, allow_disconnected_dmrs=DEFAULT_ALLOW_DISC): """ Remove general predicate nodes on the filter list from the DMRS. :param dmrs_xml: Input DMRS object :param gpred_filter: A list of general predicates to filter (as strings) :param allow_disconnected_dmrs: Remove gpred nodes even if their removal would result in a disconnected DMRS. If DMRS was already disconnected, gpred nodes are removed regardless.
# Otherwise, load the default file if __name__ == '__main__': parser = argparse.ArgumentParser(description='DMRS simplification tool') parser.add_argument( '-c', '--config', default=None, help= 'Path to simplifaction configuration file. By default, configuration in __config__/default_simplification.conf is used.' ) parser.add_argument('input_dmrs', help='Specify input DMRS file') parser.add_argument('output_dmrs', help='Specify output dmrs file.') args = parser.parse_args() if args.config is not None: # Load the given file config = load_config(args.config, default=False) else: config = load_config(DEFAULT_CONFIG_FILE) else: config = load_config(DEFAULT_CONFIG_FILE) DEFAULT_FILTER = frozenset( GPred.from_string(x) for x in get_config_option( config, 'General Predicate Filtering', 'filter', opt_type=list)) DEFAULT_ALLOW_DISC = get_config_option(config, 'General Predicate Filtering', 'allow_disconnected_dmrs') def gpred_filtering(dmrs, gpred_filter=DEFAULT_FILTER, allow_disconnected_dmrs=DEFAULT_ALLOW_DISC):