Ejemplo n.º 1
0
def extract_relations():
    vn = verbnet.VerbNetParser(directory=verbnet_folder)
    members = vn.get_members()
    members2classes = {}
    classes2members = {}

    for m in members:
        members2classes.setdefault(m.name, []).append(m.class_id(subclasses=False))
        classes2members.setdefault(m.class_id(subclasses=False), []).append(m.name)

    return (members2classes, classes2members)
Ejemplo n.º 2
0
    def __init__(self):
        vn = verbnet.VerbNetParser(version="3.3")
        self.parse_frames(vn, load=False, secondary_information=True)
        self.generate_samples()

        for key, parse_key, parse in self.samples:
            for word in parse:
                if len(word) == 4:
                    if word[0].lower() not in self.words:
                        self.words.append(word[0].lower())
                    if word[1] not in self.poss:
                        self.poss.append(word[1])
                    if word[3] not in self.rels:
                        self.rels.append(word[3])

        self.model = self.train_model()
Ejemplo n.º 3
0
def extract_class_relations():
    """
    We define a class relation as a shared sel_res

    The output is a list of r tuples of (class_1_ID, class_2_ID)
    where r is the number of relations.
    """
    class2selres = {}
    vn = verbnet.VerbNetParser(directory=verbnet_folder)
    for vc in vn.get_verb_classes():
        class2selres[vc.ID] = []
        for themrole in vc.themroles:
            if themrole.soup.SELRESTRS.SELRESTR is not None:
                for sr in themrole.soup.SELRESTRS.find_all("SELRESTR"):
                    if sr.get("Value") == "+":
                        if sr.get("type") not in class2selres[vc.ID]:
                            class2selres[vc.ID].append(sr.get("type"))


    rel_tuples = []
    for class_id1, selres1 in class2selres.items():
        for class_id2, selres2 in class2selres.items():
            if class_id1 != class_id2:
                len(set(selres1).intersection(set(selres2)))
Ejemplo n.º 4
0
 def vn(self, version="3.3"):
     if not self.vno:
         self.vno = verbnet.VerbNetParser(version=version)
     return self.vno
Ejemplo n.º 5
0
from nltk.corpus import framenet
from lxml import etree
import datetime
import sys

local_verbnet_api_path = "C:/Users/Kevin/PycharmProjects/verbnet/api/"
sys.path.append(local_verbnet_api_path)
import verbnet

VN_LOC = "C:/Users/Kevin/PycharmProjects/lexical_resources/verbnet3.3/"

vn = verbnet.VerbNetParser(directory=VN_LOC)
possible_classes = {
    "-".join(c.split("-")[1:]):
    [m.name for m in vn.verb_classes_dict[c].members]
    for c in vn.verb_classes_dict
}

possible_frames = {}
for lu in framenet.lus():
    if lu.frame.name not in possible_frames:
        possible_frames[lu.frame.name] = [lu.lexemes[0].name]
    else:
        possible_frames[lu.frame.name].append(lu.lexemes[0].name)


class Mapping():
    def __init__(self, member, vn_class, fn_frame):
        self.member = member
        self.vn_class = vn_class
        self.fn_frame = fn_frame
Ejemplo n.º 6
0
        logs_dir = args.get("logs_dir")
    else:
        logs_dir = "./logs_%s" % new_vn_version
    if args.get("new_anns_dir"):
        new_anns_dir = args.get("new_anns_dir")
    else:
        new_anns_dir = "./new_anns_%s" % new_vn_version

    if args.get("mode") == "simulate":
        simulate = True
    else:
        simulate = False

    ##write a wrapper for testing versions
    try:
        new_vn = verbnet.VerbNetParser(version=new_vn_version)
    except Exception:
        new_vn = verbnet.VerbNetParser(directory=new_vn_version)
    except Exception:
        print('input version is bad : ' + new_vn)
        sys.exit(2)

    # Make sure the these dirs exist, or create them
    os.makedirs(logs_dir, exist_ok=True)
    os.makedirs(new_anns_dir, exist_ok=True)
    os.makedirs(new_anns_dir + "FAILED", exist_ok=True)

    # Old versions of VN to look through,
    # just hard coding 3.2 for now, can add others as needed
    old_vns = []
    for version in ["3.2"]: