Ejemplo n.º 1
0
def var_pair16(arr):
    name_to_var = {}
    count = 0
    for i in arr:
        if i not in name_to_var:
            name_to_var[i] = 'p' + str(count)
            count = count + 1
    st = 'MS Dhoni'
    temp_strin1 = ''
    temp_strin1 += 'player => {'
    for i in name_to_var:
        temp_strin1 += name_to_var[i]
        temp_strin1 += ','
    temp_strin1 = temp_strin1[:-1]
    temp_strin1 += '} \n'
    if st not in name_to_var:
        name_to_var[st] = 'p' + str(count)
        count = count + 1
    s = name_to_var['MS Dhoni']

    v = temp_strin1
    query = 'player(s)'

    l = nltk.LogicParser()
    val = nltk.parse_valuation(v)

    dom = val.domain
    m = nltk.Model(dom, val)
    dom = m.domain
    g = nltk.Assignment(dom, [('s', name_to_var['MS Dhoni'])])
    print "******************************"
    print m.evaluate(query, g)
    print "******************************"
Ejemplo n.º 2
0
def make_model_and_answer9(v, query, dt):
    val = nltk.parse_valuation(v)
    dom = val.domain
    m = nltk.Model(dom, val)
    g = nltk.Assignment(dom, [])

    print m.evaluate(query, g)
Ejemplo n.º 3
0
def var_pair18(middle, count):

    string1 = 'Batsmen => {'
    for k in middle:
        string1 += k + ','
    string1 = string1[:-1]
    string1 += '}\n'

    v = string1

    query = 'Batsmen(x)'

    l = nltk.LogicParser()

    val = nltk.parse_valuation(v)

    dom = val.domain
    m = nltk.Model(dom, val)
    dom = m.domain
    g = nltk.Assignment(dom, [])

    fmla1 = l.parse(query)
    varnames = m.satisfiers(fmla1, 'x', g)

    le = len(varnames)
    le = le / count
    if le >= 0.8:
        print True
    else:
        print False
Ejemplo n.º 4
0
def make(v, query, parse, dt):
    l = nltk.LogicParser()

    var = """ 
	India => i
	New Zealand=> n
	Match1 => m1
	Match2 => m2
	Match3 => m3
	team => {i,n}
	match => {m1,m2,m3}
	pomteam => {(m1,i),(m2,n),(m3,i)}
	winteam => {(m1,i),(m2,n),(m3,i)}
	"""

    val = nltk.parse_valuation(v)
    #print val

    dom = val.domain
    m = nltk.Model(dom, val)
    dom = m.domain
    #print dom
    g = nltk.Assignment(dom, [])
    #print g
    print "************************"
    #print m.evaluate('all x.( (match(x) & exists y.(team(y) and (pomteam(x,y) and  winteam(x,y)))) | (-match(x)) )', g)
    print m.evaluate(query, g)
    print "************************"

    fmla1 = l.parse(parse)
    varnames = m.satisfiers(fmla1, 'x', g)
    for i in varnames:
        for p, q in dt.iteritems():
            if q == i:
                print p
Ejemplo n.º 5
0
    def __init__(self, domain, properties, binary_rels, valuation):
        self._domain = domain
        self._properties = properties
        self._binary_rels = binary_rels
        self._model = nltk.Model(set(domain), nltk.Valuation(valuation))
        self._valuation = valuation 

        self._preds = dict()
        self._pred_sats = dict()
        for (pred, sats) in valuation:
            self._preds[pred] = sats
            
            if pred in binary_rels:
                sat_map_0 = dict()
                sat_map_1 = dict()
                for sat in sats:
                    if sat[0] not in sat_map_0:
                        sat_map_0[sat[0]] = set([])
                    if sat[1] not in sat_map_1:
                        sat_map_1[sat[1]] = set([])
                    sat_map_1[sat[1]].add(sat[0])
                    sat_map_0[sat[0]].add(sat[1])
                self._pred_sats[pred] = (sat_map_0, sat_map_1)
            elif pred in properties:
                sat_set = set([])
                for sat in sats:
                    sat_set.add(sat)
                self._pred_sats[pred] = sat_set
Ejemplo n.º 6
0
def var_pair13(highrun):

    name_to_var = {}
    temp_strin3 = 'highrun => {'
    for k, v in highrun.iteritems():
        for j in v:
            temp_strin3 += '('
            temp_strin3 += k + ','
            temp_strin3 += j + '),'
    temp_strin3 = temp_strin3[:-1]
    temp_strin3 += '} \n'

    v = temp_strin3

    query = 'highrun(x,y)'
    #parse = 'highrun(Ryder,Southee)'
    #return  v,query,name_to_var,parse

    l = nltk.LogicParser()
    val = nltk.parse_valuation(v)

    dom = val.domain
    m = nltk.Model(dom, val)
    dom = m.domain
    g = nltk.Assignment(dom, [('x', 'Ryder'), ('y', 'Southee')])
    print "******************************"
    print m.evaluate(query, g)
    print "**************************"
Ejemplo n.º 7
0
def evaluate_sentences(sents_reps, world):
    """
    Evaluates representation of each sentences in the world model.
    It translates them to their values: True or False.
    
    Parameters:
    sents_reps: dictionary of sentences to list of semantic representations.
    world: string that represents entities and sets of relations.
    
    Returns:
    dict: a dictionary of sentences to dictionary of semantic representations to values.
    """
    val = nltk.Valuation.fromstring(world)
    g = nltk.Assignment(val.domain)
    m = nltk.Model(val.domain, val)

    sents_reps = {
        sent: {
            str(semrep): m.evaluate(str(semrep), g)
            for semrep in sents_reps[sent]
        }
        for sent in sents_reps
    }

    return sents_reps
Ejemplo n.º 8
0
def var_pair19(winteam, tossteam):
    name_to_var = {}
    count = 0
    #print winteam
    for i in winteam.values():
        if i not in name_to_var:
            name_to_var[i] = 't' + str(count)
            count += 1

    for i in tossteam.values():
        if i not in name_to_var:
            name_to_var[i] = 't' + str(count)
            count += 1

    name_to_var['Match1'] = 'm1'
    name_to_var['Match2'] = 'm2'
    name_to_var['Match3'] = 'm3'
    name_to_var['Match4'] = 'm4'
    name_to_var['Match5'] = 'm5'
    temp_strin1 = ''

    for i in name_to_var:
        temp_strin1 += i + ' => ' + name_to_var[i] + '\n'

    temp_strin4 = 'Match1 => m1\n'
    temp_strin4 += 'Match2 => m2\n'
    temp_strin4 += 'Match3 => m3\n'
    temp_strin4 += 'Match4 => m4\n'
    temp_strin4 += 'Match5 => m5\n'
    temp_strin4 += 'team => {t0,t1}\n'
    temp_strin4 += 'match => {m1,m2,m3,m4,m5}\n'

    temp_strin2 = 'winteam => {'
    for k, v in winteam.iteritems():
        temp_strin2 += '('
        temp_strin2 += k + ','
        temp_strin2 += name_to_var[v] + '),'
    temp_strin2 = temp_strin2[:-1]
    temp_strin2 += '} \n'

    temp_strin3 = 'tossteam => {'
    for k, v in tossteam.iteritems():
        temp_strin3 += '('
        temp_strin3 += k + ','
        temp_strin3 += name_to_var[v] + '),'
    temp_strin3 = temp_strin3[:-1]
    temp_strin3 += '}'

    v = temp_strin1 + temp_strin4 + temp_strin2 + temp_strin3
    query = 'all x.( (match(x) & exists y.(team(y) and (tossteam(x,y) and winteam(x,y)))) | (-match(x)) )'
    val = nltk.parse_valuation(v)
    #print val
    dom = val.domain
    m = nltk.Model(dom, val)
    dom = m.domain
    g = nltk.Assignment(dom, [])
    print "************************"
    print m.evaluate(query, g)
    print "************************"
Ejemplo n.º 9
0
def var_pair15(inn1, inn2):

    name_to_var = {}
    count = 0
    for i in inn1:
        if i not in name_to_var:
            name_to_var[i] = 'p' + str(count)
            count += 1
    for i in inn2:
        if i not in name_to_var:
            name_to_var[i] = 'p' + str(count)
            count += 1

    temp_strin1 = ''
    for i in name_to_var:
        temp_strin1 += i + ' => ' + name_to_var[i] + '\n'

    temp_strin4 = 'player =>{'
    for c in range(count):
        temp_strin4 += 'p' + str(c) + ','
    temp_strin4 = temp_strin4[:-1]
    temp_strin4 += '}\n'

    temp_strin2 = 'inn1 => {'
    for i in inn1:
        temp_strin2 += name_to_var[i] + ','
    temp_strin2 = temp_strin2[:-1]
    temp_strin2 += '}\n'

    temp_strin3 = 'inn2 => {'
    for i in inn2:
        temp_strin3 += name_to_var[i] + ','
    temp_strin3 = temp_strin3[:-1]
    temp_strin3 += '}\n'

    v = temp_strin1 + temp_strin4 + temp_strin2 + temp_strin3
    l = nltk.LogicParser()

    val = nltk.parse_valuation(v)
    #print val

    dom = val.domain
    m = nltk.Model(dom, val)
    dom = m.domain
    #print dom
    bowler = name_to_var['RA Jadeja']
    g = nltk.Assignment(dom, [('x', bowler)])
    #print g
    print "************************"
    #print m.evaluate('all x.( (match(x) & exists y.(team(y) and (pomteam(x,y) and  winteam(x,y)))) | (-match(x)) )', g)
    flag1 = m.evaluate(' player(x) and inn1(x) ', g)
    flag2 = m.evaluate(' player(x) and inn2(x) ', g)
    if (flag1 == True):
        print 'Inning 1'
    else:
        print ' Inning 2'

    print "************************"
Ejemplo n.º 10
0
def make_model_and_answer(v,query):
	global quantifier
	global quantified
	global predicate1
	global predicate2
	global connector

	l = nltk.LogicParser()

	val = nltk.parse_valuation(v)
	#print 'val:'
	#print val
	#print 'end val:'
	
	dom = val.domain
	#print 'dom:'
	#print dom
	#print 'end dom:'
	
	model = nltk.Model(dom, val)
	#print 'model:'
	#print m
	#print 'end m:'
	
	g = nltk.Assignment(dom, [])
	
	
	temp = l.parse('match(x)')
	m =  model.satisfiers(temp, 'x', g)
	temp = l.parse('match(x)')
	m1 =  model.satisfiers(temp, 'x', g)
	temp = l.parse('match(x)')
	m2 =  model.satisfiers(temp, 'x', g)
	#print match
	
	temp = l.parse('country(x)')
	c  =  model.satisfiers(temp, 'x', g)
	temp = l.parse('country(x)')
	c1 =  model.satisfiers(temp, 'x', g)
	temp = l.parse('country(x)')
	c2 =  model.satisfiers(temp, 'x', g)
	#print country

	temp = l.parse('player(x)')
	p =  model.satisfiers(temp, 'x', g)
	temp = l.parse('player(x)')
	p1 =  model.satisfiers(temp, 'x', g)
	temp = l.parse('player(x)')
	p2 =  model.satisfiers(temp, 'x', g)
	#print player
	
	#query formation
	#query = 'all m.exists c1.exists c2.exists p1.exists p2.(mom(m,c1,p1) => win(m,c2))'
	
	print "The anwer for the query is : ",
	print model.evaluate(query, g)
Ejemplo n.º 11
0
def check_condition(items, cont, quantity):
    g = nltk.Assignment(folval.domain)
    m = nltk.Model(folval.domain, folval)
    # Checking if a field has all/any(some) items in it
    sent = quantity + ' ' + items + ' are_in ' + cont
    results = nltk.evaluate_sents([sent], grammar_file, m, g)[0][0]
    if results[2]:
        return 'Yes.'
    else:
        return 'No.'
Ejemplo n.º 12
0
def check_for_car(input_arr):
    # check car locations
    input_arr = remove_spaces(input_arr)
    g = nltk.Assignment(fol_val.domain)
    m = nltk.Model(fol_val.domain, fol_val)
    sent = 'some ' + input_arr[1] + ' are_in ' + input_arr[2]
    answer = nltk.evaluate_sents([sent], grammar_file, m, g)[0][0]
    if answer[2]:
        print("Your", input_arr[1], "is in", input_arr[2])
    else:
        print("Your", input_arr[1], "is not in", input_arr[2])
Ejemplo n.º 13
0
 def is_all_cards_in_zone(self, location_input):
     g = nltk.Assignment(self.valuation.domain)
     m = nltk.Model(self.valuation.domain, self.valuation)
     location = self.translate_location(location_input)
     if location is None:
         print("That doesn't make sense :(")
         return
     sent = "all card are_in " + location
     results = nltk.evaluate_sents([sent], self.grammar_file, m, g)[0][0]
     if results[2] == True:
         print("Yes.")
     else:
         print("No.")
Ejemplo n.º 14
0
 def get_cards_in_zone(self, location):
     g = nltk.Assignment(self.valuation.domain)
     m = nltk.Model(self.valuation.domain, self.valuation)
     e = nltk.Expression.fromstring("be_in(x," + location + ")")
     card_names = m.satisfiers(e, "x", g)
     cards = {}
     # find satisfying objects in the valuation dictionary
     for card in card_names:
         card_name = self.decode_card_name(card)
         if card_name not in cards:
             cards[card_name] = 1
         else:
             cards[card_name] += 1
     return cards
Ejemplo n.º 15
0
def logic_parser():
    lp = nltk.LogicParser()
    SnF = lp.parse('SnF')
    NotFnS = lp.parse('-FnS')
    R = lp.parse('SnF -> -FnS')
    #  prover = nltk.Prover9()
    #  print prover.prove(NotFnS, [SnF, R])
    val = nltk.Valuation([('P', True), ('Q', True), ('R', False)])
    dom = set([])
    g = nltk.Assignment(dom)
    m = nltk.Model(dom, val)
    print "eval(P&Q)=", m.evaluate('(P & Q)', g)
    print "eval -(P&Q)=", m.evaluate('-(P & Q)', g)
    print "eval(P&R)=", m.evaluate('(P & R)', g)
    print "eval(-(P|R))=", m.evaluate('-(P | R)', g)
Ejemplo n.º 16
0
def personToLocation(person):
    try:
        g = nltk.Assignment(folval.domain)
        m = nltk.Model(folval.domain, folval)
        e = nltk.Expression.fromstring("be_in(" + person + ",x)")
        sat = m.satisfiers(e, "x", g)
        if len(sat) != 0:
            sol = folval.items()
            for i in sol:
                if i[1] in sat and i[0].isalpha():
                    return (i[0])
        else:
            return person
    except:
        return person
    def __init__(self, table, grammar_file_path):
        (entities, events, beatat,
         tournament_matches_metadata) = self.__parse_table(table)

        self.tournament_matches_metadata = tournament_matches_metadata

        domain_string = self.__constructDomainString(entities, events, beatat)
        grammar_string = self.__constructGrammarString(grammar_file_path,
                                                       entities, events)

        val = nltk.Valuation.fromstring(domain_string)

        self.assignment = nltk.Assignment(val.domain)
        self.model = nltk.Model(val.domain, val)

        self.grammar = nltk.grammar.FeatureGrammar.fromstring(grammar_string)
Ejemplo n.º 18
0
def var_pair17(bowlplayer):
    string4 = 'bowlplayer => {'
    for k, v in bowlplayer.iteritems():
        for i in v:
            string4 += '(' + k + ',' + i + '),'
    string4 = string4[:-1]
    string4 += '}\n'
    v = string4

    val = nltk.parse_valuation(v)
    dom = val.domain
    m = nltk.Model(dom, val)
    dom = m.domain
    g = nltk.Assignment(dom, [('x', 'RA Jadeja'), ('y', 'I Sharma')])
    print "***********************************************"
    print m.evaluate('bowlplayer(x,y)', g)
    print "***********************************************"
Ejemplo n.º 19
0
def truth_model():
    domain = set(['b', 'o', 'c'])
    v = """
  bertie => b
  olive => o
  cyril => c
  boy => {b}
  girl => {o}
  dog => {c}
  walk => {o, c}
  see => {(b,o), (c,b), (o,c)}
  """
    val = nltk.parse_valuation(v)
    print val
    print('o', 'c') in val["see"]
    print('b', ) in val["boy"]
    g = nltk.Assignment(domain, [('x', 'o'), ('y', 'c')])
    model = nltk.Model(domain, val)
    print "model.evaluate=", model.evaluate("see(olive,y)", g)
Ejemplo n.º 20
0
def get_all_values(key):
    try:
        # Creating the nltk expression and inserting the given key in it
        g = nltk.Assignment(folval.domain)
        m = nltk.Model(folval.domain, folval)
        e = nltk.Expression.fromstring("be_in(x," + key + ")")
        # Checking if the data satisfies the given expression
        sat = m.satisfiers(e, "x", g)
        res = ''
        if len(sat) == 0:
            res = 'None'
        else:
            # If there are results, add them 1 by 1 to a string
            # and separate them with commas
            for i in sat:
                res += i + ', '
        res = res[:-2]
        return res.capitalize()
    except:
        print(error_msg)
Ejemplo n.º 21
0
def check_garage(input_arr):
    # check garage
    input_arr = remove_spaces(input_arr)
    g = nltk.Assignment(fol_val.domain)
    m = nltk.Model(fol_val.domain, fol_val)
    e = nltk.Expression.fromstring("be_in(x," + input_arr[1] + ")")
    sat = m.satisfiers(e, "x", g)
    if len(sat) == 0:
        print("There is nothing parked here.")
    else:
        # find satisfying objects in the valuation dictionary,
        # and print their type names
        sol = fol_val.values()
        for so in sat:
            for k, v in fol_val.items():
                if len(v) > 0:
                    vl = list(v)
                    if len(vl[0]) == 1:
                        for i in vl:
                            if i[0] == so:
                                print("There is a", k, "parked here")
                                break
Ejemplo n.º 22
0
def var_pair11(match1):
    string1 = 'play1 => {'
    for i in match1['play1']:
        string1 += i + ','
    string1 = string1[:-1]
    string1 += '}\n'
    string1 += 'play2 => {'
    for i in match1['play2']:
        string1 += i + ','
    string1 = string1[:-1]
    string1 += '}\n'
    string1 += 'play3 => {'
    for i in match1['play3']:
        string1 += i + ','
    string1 = string1[:-1]
    string1 += '}\n'
    string1 += 'play4 => {'
    for i in match1['play4']:
        string1 += i + ','
    string1 = string1[:-1]
    string1 += '}\n'
    string1 += 'play5 => {'
    for i in match1['play5']:
        string1 += i + ','
    string1 = string1[:-1]
    string1 += '}\n'

    query = 'play1(x) and play2(x) and play3(x) and play4(x) and play5(x)'
    l = nltk.LogicParser()
    val = nltk.parse_valuation(string1)
    dom = val.domain
    m = nltk.Model(dom, val)
    dom = m.domain
    g = nltk.Assignment(dom, [])

    fmla1 = l.parse(query)
    print m.satisfiers(fmla1, 'x', g)
Ejemplo n.º 23
0
def var_pair14(mop):
    name_to_var = {}
    string2 = 'player => {'
    for i in mop.values():
        string2 += i + ','
    string2 = string2[:-1]
    string2 += '}\n'

    name_to_var['Match1'] = 'm1'
    name_to_var['Match2'] = 'm2'
    name_to_var['Match3'] = 'm3'
    name_to_var['Match4'] = 'm4'
    name_to_var['Match5'] = 'm5'

    string3 = 'Match1 => m1\nMatch2 => m2\nMatch3 => m3\nMatch4 => m4\nMatch5 => m5\n'
    string3 += 'match => {m1,m2,m3,m4,m5}\n'
    string3 += 'equal => {(m1,m1),(m2,m2),(m3,m3),(m4,m4),(m5,m5)}\n'

    string4 = 'mop => {'
    for i in mop:
        string4 += '(' + i + ',' + mop[i] + '),'
    string4 = string4[:-1]
    string4 += '}\n'
    v = ''
    v = string2 + string3 + string4

    query = 'exists x. exists y. exists z.(match(x) and match(y) and player(z) and mop(x,z) and mop(y,z) and -equal(x,y))'

    val = nltk.parse_valuation(v)
    #print val
    dom = val.domain
    m = nltk.Model(dom, val)
    dom = m.domain
    g = nltk.Assignment(dom, [])
    print "************************"
    print m.evaluate(query, g)
    print "************************"
Ejemplo n.º 24
0
def var_pair12(wideplayer):
    string4 = 'wideplayer => {'
    for k, v in wideplayer.iteritems():
        for i in v:
            string4 += '('
            string4 += k + ','
            string4 += i + '),'
    string4 = string4[:-1]
    string4 += '}'

    v = ''
    v = string4
    #print v
    #query='wideplayer(I Sharma,RA Jadeja)'
    parse = ''
    val = nltk.parse_valuation(v)
    #print val
    dom = val.domain
    m = nltk.Model(dom, val)
    dom = m.domain
    g = nltk.Assignment(dom, [('x', 'I Sharma'), ('y', 'RA Jadeja')])
    print "************************"
    print m.evaluate('wideplayer(x,y)', g)
    print "************************"
Ejemplo n.º 25
0
                         folval[params[1]].clear()
                 folval[params[1]].add((o,)) #insert type of ingredient information
                 if len(folval["be_in"]) == 1: #clean up if necessary
                     if ('',) in folval["be_in"]:
                         folval["be_in"].clear()
                 folval["be_in"].add((o, folval[recipe])) #insert location
                 print("Bot: Added!")
 elif cmd == 5: #Are there any x in y
     if folval.__contains__(params[1]) == False:
         print("Bot: Sorry but the ingredient does not exist")
     else:
         if params[2] not in recipeList:
             print("Bot: The recipe does not exist")
         else:
             g = nltk.Assignment(folval.domain)
             m = nltk.Model(folval.domain, folval)
             recipe = "recipe" + str(recipeList.index(params[2]))
             sent = 'some ' + params[1] + ' are_in ' + recipe
             results = nltk.evaluate_sents([sent], grammar_file, m, g)[0][0]
             if results[2] == True:
                 print("Yes.")
             else:
                 print("No.")
 elif cmd == 6: # Are all x in y
     if folval.__contains__(params[1]) == False:
         print("Bot: Sorry but the ingredient does not exist")
     else:
         if params[2] not in recipeList:
             print("Bot: The recipe does not exist")
         else:
             g = nltk.Assignment(folval.domain)
lp = nltk.sem.Expression.fromstring
SnF = read_expr('SnF')
NotFnS = read_expr('-FnS')
R = read_expr('SnF -> -FnS')
prover = nltk.Prover9()
prover.config_prover9(r'D:\Program Files\LADR1007B-win\bin')
prover.prove(NotFnS, [SnF, R])

val = nltk.Valuation([('P', True), ('Q', True), ('R', False)])
val['P']

dom = set()
g = nltk.Assignment(dom)

m = nltk.Model(dom, val)

print(m.evaluate('(P & Q)', g))
print(m.evaluate('-(P & Q)', g))
print(m.evaluate('(P & R)', g))
print(m.evaluate('(P | R)', g))

##一阶逻辑
read_expr = nltk.sem.Expression.fromstring
expr = read_expr('walk(angus)', type_check=True)
expr.argument

expr.argument.type

expr.function
Ejemplo n.º 27
0
    one person => 1
    like => {(a, s), (s, j), (c, a), (c, j), (c, d), (c, n), (c, p), (c, s), (c, b), (c, m), (c, c), (c, i), (c, 1) }
    love => {(a, d), (d, a), (m, p), (b, s)}
    smile => {(n, p)}
    cough_sneeze => {s}
    coughed_sneezed => {n}
    sleep => {1}
"""

val = nltk.Valuation.fromstring(v)
print(val)

print("quick check 1: ", ('a', 's') in val['like'])
print("quick check 2: ", ('j', 'd') not in val['like'])

m = nltk.Model(dom, val)


def assign_g(g_variables):
    return nltk.Assignment(dom, g_variables)


# print("angus, dog: ", m.evaluate('love(angus, dog)', g))

# smile = m.evaluate('exists x.(coughed_sneezed(x) & smile(x, y) & -love(x, y) )', g)
# print("smile:", smile)

# a
ga = assign_g([('x', 'a'), ('y', 'j')])  # angus and julia
ex_a = m.evaluate('exists z.(like(x, z)) & exists z.(like(z, y))', ga)
print("(a): ", ex_a)
Ejemplo n.º 28
0
# 有效的论证:所有的前提为真时,结论都为真的论证
read_expr = nltk.sem.Expression.fromstring
SnF = read_expr('SnF')
NotFns = read_expr('-FnS')
R = read_expr('SnF-> -FnS')
prover = nltk.Prover9()
prover.prove(NotFns, [SnF, R])

# 为每个命题符号分配一个值,通过查询确定布尔运算符的含义,并用它们替代这些公式的组成成分的值,来计算合成公式的值
# 配对的链表初始化估值,每个配对由语义符号和语义值组成。
val = nltk.Valuation([('P', True), ('Q', True), ('R', False)])
val['P']
# dom和g参数都被忽略了,后面会用于更加复杂的模型
dom = set()
grammar1 = nltk.Assignment(dom)
model1 = nltk.Model(dom, val)
print(model1.evaluate('(P&Q)', grammar1))
print(model1.evaluate('-(P&Q)', grammar1))
print(model1.evaluate('(P&R)', grammar1))
print(model1.evaluate('(P|R)', grammar1))

# 3. 一阶逻辑
# 通过翻译自然语言表达式成为一阶逻辑是计算语义的不错的选择
# 3.1 语法
# 一阶逻辑保留了所有命题逻辑的布尔运算符。
# 命题被分析成谓词和参数,接近于自然语言的结构的距离
# 一阶逻辑的标准构造规则的术语:独立变量、独立常量、带不同数量的参数的谓词(一元谓词、二元谓词)
# 表达式被称为非逻辑常量;逻辑觉得在一阶逻辑的每个模型中的解释总是相同的。
# 通过为表达式指定类型可以检查一阶逻辑表达式的语法结构。基本类型:e是实体类型;t是公式类型,即有真值的表达式类型。
# 给定两种基本类型,可以形成函数表达式的复杂类型。
# 信号,作为字典实现与非逻辑变量类型之间的关联。
Ejemplo n.º 29
0
def var_pair20(winteam):

    name_to_var = {}
    name_to_var['Match1'] = 'm1'
    name_to_var['Match2'] = 'm2'
    name_to_var['Match3'] = 'm3'
    name_to_var['Match4'] = 'm4'
    name_to_var['Match5'] = 'm5'
    temp_strin2 = ''
    for i in name_to_var:
        temp_strin2 += i + ' => ' + name_to_var[i] + '\n'

    temp_strin3 = 'winteam => {'
    for k, v in winteam.iteritems():
        temp_strin3 += '('
        temp_strin3 += k + ','
        temp_strin3 += v + '),'
    temp_strin3 = temp_strin3[:-1]
    temp_strin3 += '} \n'

    temp_strin4 = 'Match1 => m1\n'
    temp_strin4 += 'Match2 => m2\n'
    temp_strin4 += 'Match3 => m3\n'
    temp_strin4 += 'Match4 => m4\n'
    temp_strin4 += 'Match5 => m5\n'
    temp_strin4 += 'match => {m1,m2,m3,m4,m5}\n'

    v = temp_strin3 + temp_strin4 + temp_strin2

    parse1 = 'match(x) & winteam(x,i)'
    parse2 = 'match(x) & winteam(x,n) | -match(x)'
    #return  v,query,name_to_var,parse

    l = nltk.LogicParser()
    val = nltk.parse_valuation(v)

    dom = val.domain
    m = nltk.Model(dom, val)
    dom = m.domain
    g = nltk.Assignment(dom, [('i', 'India'), ('n', 'New Zealand')])
    print "******************************"
    fmla1 = l.parse(parse1)
    varnames1 = m.satisfiers(fmla1, 'x', g)
    fmla2 = l.parse(parse2)
    varnames2 = m.satisfiers(fmla2, 'x', g)
    #print varnames1
    #print varnames2
    count1 = 0
    count2 = 0
    for i in varnames1:
        for p, q in winteam.iteritems():
            if p == i:
                count1 = count1 + 1
    for i in varnames2:
        for p, q in winteam.iteritems():
            if p == i:
                count2 = count2 + 1
    if count1 > count2:
        print 'India'
    else:
        print 'New Zealand'
    print "**************************"
Ejemplo n.º 30
0
female => {f}
detective => {b}
bar => {c}
arrest => {(b,a)}
interview => {(b,c,a)}
male => {a}
waiter => {a,f}
in => {(a,c)}
"""

# Load model valuations
val = nltk.Valuation.fromstring(V)
# Initialize assignment g
g = nltk.Assignment(val.domain)
# Create model
m = nltk.Model(val.domain, val)
parser = nltk.parse.FeatureChartParser(grammar_exam)

def nltk_tag_to_wordnet_tag(nltk_tag):
    if nltk_tag.startswith('J'):
        return wordnet.ADJ
    elif nltk_tag.startswith('V'):
        return wordnet.VERB
    elif nltk_tag.startswith('N'):
        return wordnet.NOUN
    elif nltk_tag.startswith('R'):
        return wordnet.ADV
    else:          
        return None

def preprocess_sentence(sentence):