Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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
Exemplo n.º 6
0
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