def makesets(story): sets = entityextract(story) #print([(x[0],x[1].entity,x[1].num) for x in sets]) sets = containers(sets, story) #print([(x[0],x[1].entity,x[1].num) for x in sets]) #sets = circumscription(sets,story) sets = uc.main(sets) #print([(x[0],x[1].entity,x[1].num) for x in sets]) sets = fix_each(sets) #print([(x[0],x[1].entity,x[1].num) for x in sets]) #rewrite(sets,story) ''' THIS CODE PRODUCES ? ENTITIES WHICH ARE NOT O.W. CAPTURED BY PREVIOUS RULES ents = set([x[1].entity for x in sets]) idxs = [x[1].idx for x in sets] for j,s in enumerate(story): deps = s['indexeddependencies'] lemmas = [x[1]["Lemma"] for x in s['words']] for e in ents: for i,l in enumerate(lemmas): if l == e: eidx = j*1000+i if eidx in idxs: # this occurrence is already accounted for continue else: print(j*1000+i) surface = s['words'][i][0] edeprep = surface+'-'+str(i+1) edep = [x[2].split("-")[0] for x in deps if x[1] == edeprep and x[0] == 'det'] if edep: num = edep[0] else: num = "?" sets.append(((j*1000)+i,aset(num,l,surface,j*1000+i))) ''' i = 0 while i < len(sets): x = sets[i] i += 1 dups = [y for y in sets if y[0] == x[0]] if len(dups) > 1: for y in dups[1:]: sets.remove(y) #fix idx for idx, x in sets: x.idx = idx try: sets = sorted(sets) except: print(sets) exec(input()) return sets
def makesets(story): sets = extract_quantify(story) print([(x[0], x[1].num) for x in sets]) (sets, good) = question_entity(story, sets) sets = circumscription(story, sets) sets = assert_question_entity(story, sets, good) print([(x[0], x[1].num) for x in sets]) sets = sorted(sets) # print("ee") # print([(x[0],x[1].entity,x[1].num) for x in sets]) sets = fix_half(sets) sets = containers(sets, story) #sets = circumscription(sets,story) #sets = oneSet(sets,story) sets = add_bare_sets(sets, story) # print("units and bare sets") # print([(x[0],x[1].entity,x[1].num) for x in sets]) sets = fix_each(sets) sets = fix_times(sets) print([(x[0], x[1].num) for x in sets]) # print('eac') # print([(x[0],x[1].entity,x[1].num) for x in sets]) sets = move_x(sets, story) sets = coref(sets) # print('mov x') # print([(x[0],x[1].entity,x[1].num) for x in sets]) # print('target entity fix') #sets = oneEnt(sets) sets = xAdjFix(sets) sets = [x for x in sets if (floatcheck(x[1].num) or x[1].num == 'x')] (sets, conv) = uc.main(sets) if conv == 0: sets = oneSet(sets, story) print([(x[0], x[1].num) for x in sets]) # is there x? exes = [x for x in sets if x[1].num == 'x'] if not exes: sets.append( (1000 * (len(story) - 1), aset('x', 'UNKNOWN', 'UNKNOWN', 10000))) #sets = prune(sets) #print([(x[0],x[1].entity,x[1].num) for x in sets]) #rewrite(sets,story) #fix idx for idx, x in sets: x.idx = idx try: sets = sorted(sets) except: #print(sets) #exec(input()) pass return sets
def makesets(story): sets = extract_quantify(story) print([(x[0],x[1].num) for x in sets]) (sets, good) = question_entity(story, sets) sets = circumscription(story, sets) sets = assert_question_entity(story, sets, good) print([(x[0],x[1].num) for x in sets]) sets = sorted(sets) # print("ee") # print([(x[0],x[1].entity,x[1].num) for x in sets]) sets = fix_half(sets) sets = containers(sets,story) #sets = circumscription(sets,story) #sets = oneSet(sets,story) sets = add_bare_sets(sets,story) # print("units and bare sets") # print([(x[0],x[1].entity,x[1].num) for x in sets]) sets = fix_each(sets) sets = fix_times(sets) print([(x[0],x[1].num) for x in sets]) # print('eac') # print([(x[0],x[1].entity,x[1].num) for x in sets]) sets = move_x(sets,story) sets = coref(sets) # print('mov x') # print([(x[0],x[1].entity,x[1].num) for x in sets]) # print('target entity fix') #sets = oneEnt(sets) sets = xAdjFix(sets) sets = [x for x in sets if (floatcheck(x[1].num) or x[1].num=='x')] (sets, conv) = uc.main(sets) if conv == 0: sets = oneSet(sets, story) print([(x[0],x[1].num) for x in sets]) # is there x? exes = [x for x in sets if x[1].num=='x'] if not exes: sets.append((1000*(len(story)-1),aset('x','UNKNOWN','UNKNOWN',10000))) #sets = prune(sets) #print([(x[0],x[1].entity,x[1].num) for x in sets]) #rewrite(sets,story) #fix idx for idx,x in sets: x.idx = idx try: sets = sorted(sets) except: #print(sets) #exec(input()) pass return sets
def makesets(story): sets = extract_quantify(story) (sets, good) = question_entity(story, sets) sets = circumscription(story, sets) sets = assert_question_entity(story, sets, good) sets = sorted(sets) # print("ee") # print([(x[0],x[1].entity,x[1].num) for x in sets]) sets = fix_half(sets) sets = containers(sets, story) #sets = circumscription(sets,story) #sets = oneSet(sets,story) sets = uc.main(sets) sets = add_bare_sets(sets, story) # print("units and bare sets") # print([(x[0],x[1].entity,x[1].num) for x in sets]) sets = fix_each(sets) sets = fix_times(sets) # print('eac') # print([(x[0],x[1].entity,x[1].num) for x in sets]) sets = move_x(sets, story) sets = coref(sets) # print('mov x') # print([(x[0],x[1].entity,x[1].num) for x in sets]) # print('target entity fix') #sets = oneEnt(sets) sets = xAdjFix(sets) #sets = prune(sets) #print([(x[0],x[1].entity,x[1].num) for x in sets]) #rewrite(sets,story) i = 0 #print(sets) while i < len(sets): x = sets[i] if (not floatcheck(x[1].num)) and x[1].num != 'x': sets.remove(x) else: i += 1 #fix idx for idx, x in sets: x.idx = idx try: sets = sorted(sets) except: #print(sets) #exec(input()) pass return sets
def makesets(story): sets = entityextract(story) print("ee") print([(x[0], x[1].entity, x[1].num) for x in sets]) sets = fix_half(sets) print([(x[0], x[1].entity, x[1].num) for x in sets]) sets = containers(sets, story) print("c") print([(x[0], x[1].entity, x[1].num) for x in sets]) #sets = circumscription(sets,story) #sets = oneSet(sets,story) sets = uc.main(sets) sets = add_bare_sets(sets, story) print("units and bare sets") print([(x[0], x[1].entity, x[1].num) for x in sets]) sets = fix_each(sets) sets = fix_times(sets) print('eac') print([(x[0], x[1].entity, x[1].num) for x in sets]) sets = move_x(sets, story) sets = coref(sets) print('mov x') print([(x[0], x[1].entity, x[1].num) for x in sets]) print('target entity fix') sets = oneEnt(sets) sets = xAdjFix(sets) #sets = prune(sets) #print([(x[0],x[1].entity,x[1].num) for x in sets]) #rewrite(sets,story) ''' THIS CODE PRODUCES ? ENTITIES WHICH ARE NOT O.W. CAPTURED BY PREVIOUS RULES ents = set([x[1].entity for x in sets]) idxs = [x[1].idx for x in sets] for j,s in enumerate(story): deps = s['indexeddependencies'] lemmas = [x[1]["Lemma"] for x in s['words']] for e in ents: for i,l in enumerate(lemmas): if l == e: eidx = j*1000+i if eidx in idxs: # this occurrence is already accounted for continue else: print(j*1000+i) surface = s['words'][i][0] edeprep = surface+'-'+str(i+1) edep = [x[2].split("-")[0] for x in deps if x[1] == edeprep and x[0] == 'det'] if edep: num = edep[0] else: num = "?" sets.append(((j*1000)+i,aset(num,l,surface,j*1000+i))) ''' i = 0 #print(sets) while i < len(sets): x = sets[i] if (not floatcheck(x[1].num)) and x[1].num != 'x': sets.remove(x) else: i += 1 #print(sets) ''' i = 0 while i < len(sets): x = sets[i] dups = [y for y in sets if y[0]==x[0]] if len(dups)>1: #print("dups ",dups); exec(input());input() for y in dups[:-1]: sets.remove(y) i+=1 ''' #fix idx for idx, x in sets: x.idx = idx try: sets = sorted(sets) except: #print(sets) #exec(input()) pass return sets