예제 #1
0
파일: rooted.py 프로젝트: delph-in/pydmrs
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):
    """
예제 #2
0
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
예제 #3
0
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.
예제 #4
0
# 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):