def main(): parser = argparse.ArgumentParser( description= "Split a synset - delete the synset and add two (or more) new synsets") parser.add_argument('synset', metavar='SYNSET_ID', type=str, nargs="?", help="The ID of the synset to change") parser.add_argument( '--definition', type=str, action='append', help="The definition of the new synsets (repeat for each synset)") parser.add_argument( '--reason', type=str, nargs="?", help="The reason for this change including issue number") args = parser.parse_args() wn = change_manager.load_wordnet() if not args.synset: args.synset = "ewn-" + input("Enter synset ID: ewn-") synset = wn.synset_by_id(args.synset) if not synset: print("Cannot find synset") exit(-1) if not args.definition: args.definition = [] print("Enter definitions (empty line to finish)") while True: d1 = input("Definition: ") if d1: args.definition.append(d1) else: break if not args.definition: print("No new definitions") exit(-1) if not args.reason: args.reason = input("Reason for deletion (#IssueNo): ") new_ids = [] for definition in args.definition: new_ids.append( change_manager.add_synset(wn, definition, synset.lexfile, synset.pos)) change_manager.delete_synset( wn, synset, [wn.synset_for_id(new_id) for new_id in new_ids], args.reason) change_manager.save_all_xml(wn)
def main(): print("") print(" ,ww ") print(" wWWWWWWW_) Welcome to EWE ") print(" `WWWWWW' - English WordNet Editor ") print(" II II ") print("") wn = change_manager.load_wordnet() while main_menu(wn): pass
def main(): parser = argparse.ArgumentParser( description="Add or remove an entry from a synset") parser.add_argument('synset', metavar='SYNSET_ID', type=str, help="The ID of the synset to change") parser.add_argument('lemma', metavar='LEMMA', type=str, help="The lemma to change") parser.add_argument('--add', action='store_true', help="Add this relation as a new relation") parser.add_argument('--delete', action='store_true', help="Remove this relation (do not replace or change)") parser.add_argument( '-n', metavar='N', type=int, default=-1, help= "The position of this synset within the list of senses for the entry") parser.add_argument('-i', metavar='IDX', type=int, default=-1, help="The position of this lemma in the synset") args = parser.parse_args() wn = change_manager.load_wordnet() synset = wn.synset_by_id(args.synset) if not synset: print("Could not find synset") sys.exit(-1) if args.add: change_manager.add_entry(wn, synset, args.lemma, args.i, args.n) elif args.delete: change_manager.delete_entry( wn, synset, "ewn-%s-%s" % (change_manager.escape_lemma( args.lemma), synset.part_of_speech.value)) else: print("No action chosen") sys.exit(-1)
def main(): parser = argparse.ArgumentParser(description="Add or remove a synset") parser.add_argument('synset', metavar='SYNSET_ID', type=str, help="The ID of the synset to change") parser.add_argument('--add', action='store_true', help="Add this relation as a new relation") parser.add_argument('--delete', action='store_true', help="Remove this relation (do not replace or change)") parser.add_argument('--reason', type=str, help="The reason for a deletion or merge") args = parser.parse_args() wn = change_manager.load_wordnet() synset = wn.synset_by_id(args.synset) if not synset: print("Could not find synset") sys.exit(-1) if args.add: change_manager.add_synset(wn, synset, args.defintion) elif args.delete: if not args.reason: print("Please give a reason for deletion") sys.exit(-1) change_manager.delete_synset(wn, synset) with open("src/deprecations.csv", 'a') as f: writer = csv.writer(f) writer.writerow([synset.id, synset.ili, '', '', args.reason]) else: print("No action chosen") sys.exit(-1)
return entry_id, "99" print("Failed to find target for satellite synset") exit(-1) def assign_keys(wn, wn_file): swn = parse_wordnet(wn_file) for e in swn.entries: for s in e.senses: if not s.sense_key: lemma = e.lemma.written_form.replace(" ", "_").replace( "&apos", "'").lower() ss_type = ss_types[e.lemma.part_of_speech] lex_filenum = lex_filenums[wn_file] lex_id = gen_lex_id(swn, e, s) if e.lemma.part_of_speech == PartOfSpeech.ADJECTIVE_SATELLITE: head_word, head_id = get_head_word(wn, s) else: head_word = "" head_id = "" s.sense_key = "%s%%%d:%02d:%02d:%s:%s" % ( lemma, ss_type, lex_filenum, lex_id, head_word, head_id) with open(wn_file, "w") as outp: swn.to_xml(outp, True) if __name__ == "__main__": wn = change_manager.load_wordnet() for f in glob("src/wn-*.xml"): assign_keys(wn, f)
def main(): parser = argparse.ArgumentParser( description= "Merge a synset - delete one or more synset and merge all properties. This may create weird or contradictory results so should be used with care" ) parser.add_argument('synsets', metavar='SYNSET_ID', type=str, nargs="*", help="The ID of the synset to change") parser.add_argument( '--reason', type=str, nargs="?", help="The reason for this change including issue number") parser.add_argument('--lex_file', type=str, help="The lex file to write the new synset to") args = parser.parse_args() wn = change_manager.load_wordnet() if not args.synsets: args.synsets = [] print("Enter synsets (empty line to finish)") while True: id1 = input("Enter synset ID: ewn-") if id1: args.synsets.append("ewn-" + id1) else: break if not args.synsets: print("Need at least one synset to merge") exit(-1) synsets = [wn.synset_by_id(ss) for ss in args.synsets] if any(s == None for s in synsets): print("Cannot find synset") exit(-1) if any(s.part_of_speech != synsets[0].part_of_speech for s in synsets): print("Merging across parts of speech is not correct!") exit(-1) if not args.lex_file and any(s.lex_name != synsets[0].lex_name for s in synsets): print("Merging across lex files: " + ", ".join(s.lex_name for s in synsets)) args.lex_file = input("Lex file : ") elif not args.lex_file: args.lex_file = synsets[0].lex_name if not args.reason: args.reason = input("Reason for deletion (#IssueNo): ") new_id = change_manager.merge_synset(wn, synsets, args.reason, args.lex_file) for synset in synsets: change_manager.delete_synset(wn, synset, [new_id], args.reason)
def main(): parser = argparse.ArgumentParser( description="Add or remove an entry from a synset") parser.add_argument('synset', metavar='SYNSET_ID', type=str, nargs="?", help="The ID of the synset to change") parser.add_argument('lemma', metavar='LEMMA', type=str, nargs="?", help="The lemma to change") parser.add_argument('--add', action='store_true', help="Add this relation as a new relation") parser.add_argument('--delete', action='store_true', help="Remove this relation (do not replace or change)") parser.add_argument( '-n', metavar='N', type=int, default=-1, help= "The position of this synset within the list of senses for the entry") parser.add_argument('-i', metavar='IDX', type=int, default=-1, help="The position of this lemma in the synset") args = parser.parse_args() if args.add: action = "A" elif args.delete: action = "D" else: action = input("[A]dd/[D]elete? ").upper() if action != "A" and action != "D": print("Bad action") sys.exit(-1) wn = change_manager.load_wordnet() if not args.synset: synset_id = "ewn-" + input("Enter synset ID : ewn-") else: synset_id = args.synset synset = wn.synset_by_id(synset_id) entries = wn.members_by_id(synset_id) if entries: print("Entries: " + ", ".join(entries)) else: print("No entries") if not args.lemma: if action == "A": lemma = input("New entry: ") elif action == "D": lemma = input("Entry to remove: ") else: lemma = args.lemma if not synset: print("Could not find synset") sys.exit(-1) if action == "A": change_manager.add_entry(wn, synset, lemma, args.i, args.n) elif action == "D": change_manager.delete_entry( wn, synset, "ewn-%s-%s" % (change_manager.escape_lemma(lemma), synset.part_of_speech.value))
def main(): parser = argparse.ArgumentParser( description="Change a relationship within the wordnet") parser.add_argument( 'source_id', metavar='SOURCE_ID', type=str, nargs="?", help="The ID of the source synset (sense) for the relationship") parser.add_argument( 'target_id', metavar='TARGET_ID', type=str, nargs="?", help="The ID of the target synset (sense) for the relationship") parser.add_argument('--new-source', type=str, help="The ID of the new source synset") parser.add_argument('--new-target', type=str, help="The ID of the new target synset") parser.add_argument('--new-relation', type=str, help="The type of the new relationship") parser.add_argument('--add', action='store_true', help="Add this relation as a new relation") parser.add_argument('--delete', action='store_true', help="Remove this relation (do not replace or change)") parser.add_argument('--reverse', action='store_true', help="Reverse this relation (swap source and target)") args = parser.parse_args() # Slightly speeds up the loading of WordNet wn = change_manager.load_wordnet() if not args.source_id: args.source_id = "ewn-" + input("Enter source synset ID: ewn-") if change_manager.sense_id_re.match(args.source_id): (source_id, source_entry_id) = change_manager.decompose_sense_id(args.source_id) else: source_id = args.source_id source_entry_id = None source_synset = wn.synset_by_id(source_id) if not source_synset: print("Could not find the source synset %s" % source_id) sys.exit(-1) if not args.target_id: args.target_id = "ewn-" + input("Enter target synset ID: ewn-") if change_manager.sense_id_re.match(args.target_id): (target_id, target_entry_id) = change_manager.decompose_sense_id(args.target_id) else: target_id = args.target_id target_entry_id = None target_synset = wn.synset_by_id(target_id) if not target_synset: print("Could not find the target synset %s" % target_id) sys.exit(-1) if not args.new_source and not args.new_target and not args.new_relation and not args.delete: mode = input( "[A]dd new relation/[D]elete existing relation/[R]everse relation/[C]hange relation: " ).lower() if mode == "a": args.add = True if not args.new_relation: args.new_relation = input("Enter new relation: ") elif mode == "c": mode = input("Change [S]ubject/[T]arget/[R]elation: ").lower() if mode == "s": args.new_source = with_ewn( input("Enter new source (or blank for no change): ewn-")) elif mode == "t": args.new_target = with_ewn( input("Enter new target (or blank for no change): ewn-")) elif mode == "r": args.new_relation = input( "Enter new relation (or blank for no change): ewn-") else: print("Bad choice") sys.exit(-1) elif mode == "d": args.delete = True elif mode == "r": args.reverse = True else: print("Bad mode") sys.exit(-1) if args.new_source: if args.new_target or args.new_relation: print("Please perform a single change at a time") sys.exit(-1) if args.add or args.delete: print( "Specifying new source when adding or deleting does not make sense" ) sys.exit(-1) if source_entry_id or target_entry_id: if not change_manager.sense_exists(wn, args.source_id): print("Source sense %d does not exist" % args.source_id) sys.exit(-1) if not change_manager.sense_exists(wn, args.target_id): print("Target sense %d does not exist" % args.target_id) sys.exit(-1) if not change_manager.sense_exists(wn, args.new_source): print("New source sense %d does not exist" % args.new_source) sys.exit(-1) change_manager.update_source_sense(wn, args.source_id, args.target_id, args.new_source) else: new_source = wn.synset_by_id(args.new_source) if not new_source: print("Could not find the new source synset %s" % args.new_source) sys.exit(-1) change_manager.update_source(wn, source_synset, target_synset, new_source) elif args.new_target: if args.new_source or args.new_relation: print("Please perform a single change at a time") sys.exit(-1) if args.add or args.delete: print( "Specifying new source when adding or deleting does not make sense" ) sys.exit(-1) if source_entry_id or target_entry_id: if not change_manager.sense_exists(wn, args.source_id): print("Source sense %d does not exist" % args.source_id) sys.exit(-1) if not change_manager.sense_exists(wn, args.target_id): print("Target sense %d does not exist" % args.target_id) sys.exit(-1) if not change_manager.sense_exists(wn, args.new_target): print("New target sense %d does not exist" % args.new_target) sys.exit(-1) change_manager.update_target_sense(wn, args.source_id, args.target_id, args.new_target) else: new_target = wn.synset_by_id(args.new_target) if not new_target: print("Could not find the new target synset %s" % args.new_target) sys.exit(-1) change_manager.update_target(wn, source_synset, target_synset, new_target) elif args.new_relation: if args.new_source or args.new_target: print("Please perform a single change at a time") sys.exit(-1) if source_entry_id: if args.new_relation not in wordnet.SenseRelType._value2member_map_: print("Not a valid relation type %s" % args.new_relation) sys.exit(-1) else: if args.new_relation not in wordnet.SynsetRelType._value2member_map_: print("Not a valid relation type %s" % args.new_relation) sys.exit(-1) if args.add: if args.delete: print("Cannot both add and delete a relation") sys.exit(-1) if source_entry_id or target_entry_id: if not change_manager.sense_exists(wn, args.source_id): print("Source sense %d does not exist" % args.source_id) sys.exit(-1) if not change_manager.sense_exists(wn, args.target_id): print("Target sense %d does not exist" % args.target_id) sys.exit(-1) change_manager.add_sense_relation( wn, args.source_id, args.target_id, wordnet.SenseRelType(args.new_relation)) else: change_manager.add_relation( wn, source_synset, target_synset, wordnet.SynsetRelType(args.new_relation)) elif args.delete: if source_entry_id or target_entry_id: if not change_manager.sense_exists(wn, args.source_id): print("Source sense %d does not exist" % args.source_id) sys.exit(-1) if not change_manager.sense_exists(wn, args.target_id): print("Target sense %d does not exist" % args.target_id) sys.exit(-1) change_manager.delete_sense_relation(wn, args.source_id, args.target_id) else: change_manager.delete_relation(wn, source_synset, target_synset) else: if source_entry_id or target_entry_id: if not change_manager.sense_exists(wn, args.source_id): print("Source sense %d does not exist" % args.source_id) sys.exit(-1) if not change_manager.sense_exists(wn, args.target_id): print("Target sense %d does not exist" % args.target_id) sys.exit(-1) change_manager.update_sense_relation( wn, args.source_id, args.target_id, wordnet.SenseRelType(args.new_relation)) else: change_manager.update_relation( wn, source_synset, target_synset, wordnet.SynsetRelType(args.new_relation)) elif args.delete: if args.add: print("Cannot both add and delete a relation") sys.exit(-1) if source_entry_id or target_entry_id: if not change_manager.sense_exists(wn, args.source_id): print("Source sense %d does not exist" % args.source_id) sys.exit(-1) if not change_manager.sense_exists(wn, args.target_id): print("Target sense %d does not exist" % args.target_id) sys.exit(-1) change_manager.delete_sense_relation(wn, args.source_id, args.target_id) else: change_manager.delete_relation(wn, source_synset, target_synset) elif args.reverse: if source_entry_id or target_entry_id: if not change_manager.sense_exists(wn, args.source_id): print("Source sense %d does not exist" % args.source_id) sys.exit(-1) if not change_manager.sense_exists(wn, args.target_id): print("Target sense %d does not exist" % args.target_id) sys.exit(-1) change_manager.reverse_sense_rel(wn, args.source_id, args.target_id) else: change_manager.reverse_rel(wn, source_synset, target_synset) else: print("No change specified")
def main(): parser = argparse.ArgumentParser(description="Add or remove a synset") parser.add_argument('synset', metavar='SYNSET_ID', type=str, nargs="?", help="The ID of the synset to change") parser.add_argument('--add', action='store_true', help="Add this synset") parser.add_argument('--delete', action='store_true', help="Remove this synset") parser.add_argument( '--reason', type=str, help="The reason for a deletion or merge (required for deletion)") parser.add_argument('--definition', type=str, help="The definition of the new synset") parser.add_argument('--lexfile', type=str, help="The lexicographer file to write the synset to") parser.add_argument('--pos', type=str, help="The part of speech (n|v|a|r|s)") parser.add_argument( '--supersededby', type=str, help="The ID of the superseding synset (required for deletion)") args = parser.parse_args() wn = change_manager.load_wordnet() if not args.delete and not args.add: mode = input("(A)dd synset/(d)elete synset: ").lower() if mode == "a": args.add = True elif mode == "d": args.delete = True else: print("Bad mode: " + mode) sys.exit(-1) if args.delete: if not args.synset: args.synset = "ewn-" + input("Enter synset ID: ewn-") synset = wn.synset_by_id(args.synset) if not synset: print("Could not find synset") sys.exit(-1) if not args.reason: args.reason = input("Reason for deletion with (#IssueNo): ") if not args.supersededby: args.supersededby = "ewn-" + \ input("Enter superseding synset ID: ewn-") supersede_synset = wn.synset_by_id(args.supersededby) if not supersede_synset: print("Could not find synset") sys.exit(-1) if args.add: if not args.definition: args.definition = input("Definition: ") if not args.lexfile: args.lexfile = input("Lexicographer file: ") if not args.pos: args.pos = input( "Part of speech (n)oun/(v)erb/(a)djective/adve(r)b/(s)atellite: ").lower() if args.add: new_id = change_manager.add_synset( wn, args.definition, args.lexfile, args.pos) print( "New synset created with ID %s. Please use change-entry and change-relation scripts to add entries and relations" % new_id) elif args.delete: if not args.reason: print("Please give a reason for deletion") sys.exit(-1) change_manager.delete_synset(wn, synset, supersede_synset, args.reason) else: print("No action chosen") sys.exit(-1) change_manager.save_all_xml(wn)
def main(): parser = argparse.ArgumentParser( description="Add or remove an entry from a synset") parser.add_argument('synset', metavar='SYNSET_ID', type=str, nargs="?", help="The ID of the synset to change") parser.add_argument('lemma', metavar='LEMMA', type=str, nargs="?", help="The lemma to change") parser.add_argument('--add', action='store_true', help="Add this entry to a synset") parser.add_argument('--delete', action='store_true', help="Remove this entry from a synset") parser.add_argument('--move', action='store_true', help="Change this entry to another synset") parser.add_argument('--target', type=str, help="The target for a change") parser.add_argument( '-n', metavar='N', type=int, default=-1, help= "The position of this synset within the list of senses for the entry") parser.add_argument('-i', metavar='IDX', type=int, default=-1, help="The position of this lemma in the synset") args = parser.parse_args() if args.add: action = "A" elif args.delete: action = "D" elif args.move: action = "M" else: action = input("[A]dd/[D]elete/[M]ove? ").upper() if action != "A" and action != "D" and action != "M": print("Bad action") sys.exit(-1) wn = change_manager.load_wordnet() if not args.synset: synset_id = "oewn-" + input("Enter synset ID : oewn-") else: synset_id = args.synset synset = wn.synset_by_id(synset_id) entries = wn.members_by_id(synset_id) if entries: print("Entries: " + ", ".join(entries)) else: print("No entries") if not args.lemma: if action == "A": lemma = input("New entry: ") elif action == "D": lemma = input("Entry to remove: ") elif action == "M": lemma = input("Entry to move: ") else: lemma = args.lemma if not synset: print("Could not find synset") sys.exit(-1) if action == "M" and not args.target: args.target = "oewn-" + input("Target synset: oewn-") if action == "A": change_manager.add_entry(wn, synset, lemma, args.i, args.n) elif action == "D": change_manager.delete_entry( wn, synset, "oewn-%s-%s" % (wordnet.escape_lemma(lemma), synset.part_of_speech.value)) elif action == "M": target_synset = wn.synset_by_id(args.target) if not target_synset: print("Could not find synset") sys.exit(-1) if synset.lex_name == target_synset.lex_name: change_manager.change_entry(wn, synset, target_synset, lemma) else: print( "Moving across lexicographer files so implementing change as delete then add" ) change_manager.delete_entry( wn, synset, "oewn-%s-%s" % (wordnet.escape_lemma(lemma), synset.part_of_speech.value)) change_manager.add_entry(wn, target_synset, lemma, args.i, args.n) change_manager.save_all_xml(wn)