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)
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()
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)))
def vn(self, version="3.3"): if not self.vno: self.vno = verbnet.VerbNetParser(version=version) return self.vno
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
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"]: