Transcript Document

CAS LX 502
8b. Formal semantics
A fragment of English
Infinite use, finite means
• A fundamental property of language is its
recursive nature—we can create unboundedly
many new sentences, and understand what they
mean.
• “Infinite use of finite means,” one of the main
reasons to suppose that our knowledge of
language is systematic, that language is not a
collection of habits and analogy, but must be
described by a grammar.
Infinite use, finite means
• In the domain of syntax, the task is
primarily to describe/explain why some
arrangements of words count as sentences
of English, others don’t, and more broadly,
how this system relates to those underlying
other languages, and how this system can
arise.
Syntax
• The generally accepted view of syntax breaks
sentences down into hierarchical parts. There are
nouns, there are verbs, there are units made of
verbs and nouns. New sentences can be created by
mixing and matching these components together.
• [S Pat [AuxP will [VP eat [NP the sandwich]]]]
• [S The students [AuxP have [VP risen [PP in protest]]]]
Semantics
• We’re not here to study syntax, we’re here to study
semantics, but we’re going to delve a bit into both.
• The syntactic system that defines what are “good
sentences of English” provides hierarchical structures,
but we know not only what sequences of words might
be classified as “English” but we know what those
sequences of words mean.
• Just as there must be a grammar that defines what
sequences of words are English, there must also be a
grammar that tells us how the meanings of the parts
contribute to the meaning of the whole.
F1
• To that end, we are going to create a “minigrammar of English”, a fragment. This
grammar will provide both the syntactic
structure of a small number of English
sentences and the rules by which we can
understand their meaning. By doing this, we
can start to understand what is involved in
the grammar of semantics more generally.
F1
• Rewrite rules (the syntax):
S  N VP
N  Pavarotti, Loren, Bond
S  S conj S
Vi  is boring, is hungry, is cute
S  neg S
Vt  likes
VP  Vt N
Conj  and, or
VP  Vi
Neg  it is not the case that
Using the syntax of F1
• We start with S (we are
building a sentence).
S
Using the syntax of F1
• We start with S (we are
building a sentence).
• Several different rules can
apply. We can either rewrite S
as N VP, or as S conj S, or as
neg S. Let’s pick N VP.
S
N
VP
Using the syntax of F1
• We start with S (we are
building a sentence).
• Several different rules can
apply. We can either rewrite S
as N VP, or as S conj S, or as
neg S. Let’s pick N VP.
• Now, N can be rewritten as
Pavarotti, Loren, or Bond.
S
N
Bond
VP
Using the syntax of F1
• We start with S (we are
building a sentence).
• Several different rules can
apply. We can either rewrite S
as N VP, or as S conj S, or as
neg S. Let’s pick N VP.
• Now, N can be rewritten as
Pavarotti, Loren, or Bond.
• And VP can be rewritten
either as Vt N or Vi.
S
N
Bond
VP
Vi
Using the syntax of F1
• We start with S (we are
•
•
•
•
building a sentence).
Several different rules can
apply. We can either rewrite S
as N VP, or as S conj S, or as
neg S. Let’s pick N VP.
Now, N can be rewritten as
Pavarotti, Loren, or Bond.
And VP can be rewritten
either as Vt N or Vi.
And Vi can be rewritten as is
boring, is hungry, or is cute.
S
N
Bond
VP
Vi
is hungry
Using the syntax of F1
• With this little grammar, we can already create an
unbounded number of sentences.
• It is not the case that Bond is boring or Loren is hungry.
Using the syntax of F1
• It is not the case that Bond is boring or Loren is hungry.
S
Neg
It is not
the case that
S
S
Conj
N
VP
Bond
Vi
is boring
or
S
N
VP
Loren
Vi
is hungry
Using the syntax of F1
• It is not the case that Bond is boring or Loren is hungry.
S
S
Conj
S
Neg
It is not
the case that
or
N
VP
Bond
Vi
is boring
S
N
VP
Loren
Vi
is hungry
Compositionality
• A fundamental assumption about how it is that we
can know what novel sentences mean is that
meaning is compositional.
• The meaning of the whole is derived from the
meaning of the parts and how the parts are
arranged.
• The syntax gives us the parts and how they are
arranged, now we must approach the question of
how the meaning is assigned to the parts and from
there to the whole.
Enter [
M
]
• Here, we turn to [ ]M, the evaluation function.
• We already talked about the first steps:
•
•
•
•
•
•
•
M=<U,F>
[Pavarotti]M = F(Pavarotti) = Pavarotti
[Loren]M = F(Loren) = Loren
[Bond]M = F(Bond) = Bond
[is boring]M = F(is boring) = {Loren, Pavarotti}
[is hungry]M = F(is hungry) = {Bond, Pavarotti}
[is cute]M = F(is cute) = {Loren, Bond}
[
M
]
S
• We can write the
denotation of the terminal
nodes using those rules.
N
Bond
VP
Vi
[Bond]M =
is hungry
F(Bond) =
[is hungry]M =
Bond
F(is hungry) =
{Bond, Pavarotti}
[
M
]
S
• We can write the
denotation of the terminal
nodes using those rules.
• And, on the principle of
compositionality, we can
assume the that nodes
above share the same
denotation (where there is
no combination involved)
N
Bond
VP
Vi
[Bond]M =
is hungry
F(Bond) =
[is hungry]M =
Bond
F(is hungry) =
{Bond, Pavarotti}
[
• Now, to determine the
M
]
S
meaning of the S as a
VP
N
whole, we want to
combine the denotation of
Bond
N and VP such that the S is
Vi
true just in case (here),
Bond is hungry.
[Bond]M =
is hungry
• That is, true just in case
F(Bond) =
[is hungry]M =
[N]M is in the set [VP]M.
Bond
F(is hungry) =
{Bond, Pavarotti}
[
M
]
S
• We can define a semantic
rule for interpretation that
says just that:
• [S N VP]M = true iff
[N]M  [VP]M,
otherwise false.
N
Bond
VP
Vi
[Bond]M =
is hungry
F(Bond) =
[is hungry]M =
Bond
F(is hungry) =
{Bond, Pavarotti}
[
M
]
S
• Thus, we end up with an
interpretation of this sentence
that goes like this:
• [S]M = true iff
F(Bond)  F(is hungry),
otherwise false.
• Given this particular model,
that boils down to
• [S]M = true iff Bond 
{Bond, Pavarotti},
otherwise false.
• (True in this situation)
N
Bond
VP
Vi
[Bond]M =
is hungry
F(Bond) =
[is hungry]M =
Bond
F(is hungry) =
{Bond, Pavarotti}
A semantic rule for every
structural rule
• Our goal is to design a semantics for F1 that
can provide an interpretation (truth
conditions) for any structure that the syntax
can provide.
• So, we also need rules for structures like S
conj S, neg S, Vt N.
Neg S
• As for Neg S, we want it to be false whenever S is
true, and true whenever S is false.
• [Neg S]M =
false if [S]M = true,
true if [S]M = false.
• However, this is not quite enough—we want to
have an interpretation for every node in the tree.
This gives us an interpretation of [S Neg S], but
what is the interpretation of Neg?
Neg
• What Neg does is takes the truth value of
the S it is next to and reverses it.
• It is a function—it takes the truth value of
the S it is next to as an argument, and
returns a truth value (the opposite one).
• [it is not the case that]M =
true  false
false  true
Neg S
• [S [Neg It is not the case that] [S´ Pavarotti is boring]].
• [Neg]M = [It is not the case that]M = true  false
false  true
• [S´]M = true iff [N]M  [VP]M, otherwise false
= true iff [Pavarotti]M  [Vi]M, otherwise false
= true iff [Pavarotti]M  [is boring]M, otherwise false
= F(Pavarotti)  F(is boring), otherwise false
Neg S
• [S [Neg It is not the case that] [S´ Pavarotti is boring]].
• And, so [S Neg S´]M = [Neg]M ( [S´]M ).
• Resulting in:
• [S]M = false if F(Pavarotti)  F(is boring),
otherwise true.
And
• For dealing with and and or, we also want to
define a function. We want S1 and S2 to be true
when S1 is true and S2 is true, and false under any
other circumstance.
• [S S1 Conj S2]M = [Conj]M ( < [S1]M, [S2]M > )
• [and]M =
< true, true >  true
< true, false >  false
< false, true >  false
< false, false >  false
Or
• For dealing with and and or, we also want to
define a function. We want S1 or S2 to be false
when S1 is false and S2 is false , and true under
any other circumstance.
• [S S1 Conj S2]M = [Conj]M ( < [S1]M, [S2]M > )
• [or]M =
< true, true >  true
< true, false >  true
< false, true >  true
< false, false >  false
Revisiting verbs
• Earlier, we defined a meaning for is boring by
explicitly listing the set of boring individuals. This
relies on a specific model/situation. We want to be
more general than that, so that our interpretation
rules work in any model.
• [is boring]M = {x: x is boring in M}
• [is boring]M = {x  U : x  F(is boring)}
Generalizing
• We also do not yet have a general statement
of how to evaluate [S N VP]M.
• [VP [Vi is boring]]M = {x : x is boring in M}
• [S N VP]M = true iff [N]M  [VP]M,
otherwise false
Transitive verbs
• The one piece of the model that we have not
addressed yet are transitive verbs, like likes.
• S  N VP
• VP  Vt N
• Vt  likes
• We want to be able to evaluate [S N VP]M the same
way whether VP is built from a transitive verb or
an intransitive verb. That is, we want [VP]M to be
a predicate, a set of individuals.
Transitive verbs
• Essentially, we want [likes Bond]M to be a
set of those individuals that like Bond in M.
• However, we need a definition for [likes]M
(we already have one for [Bond]M). It
should be something that creates a set of
individuals that depends on the individual
next to it in the structure. A function again.
Transitive verbs
• Like and, likes relates two things, although likes
relates two individuals, and and relates two sentences.
• So, we build a two-place predicate, in the same way:
• [likes]M = { <x,y> : x likes y in M }
• For example, if P likes L, L likes B and that’s all the liking in
this situation, then [likes]M = { <P,L>, <L,B> }
Transitive verbs
• And then, we define a rule that will interpret
the VP in a sentence with a transitive verb:
• [VP Vt N]M = {x : < x, [N]M >  [Vt]M }
• So if [N]M = Bond, then [VP Vt N]M is the set
containing those individuals who like Bond
in M.
S  N VP
[S N VP]M = true iff [N]M  [VP]M,
otherwise false
S  S Conj S
S  Neg S
VP  Vt N
VP  Vi
N  Pavarotti, …
Vi  is boring, …
Vt  likes
Conj  and, …
[S S1 Conj S2]M = [Conj]M ( < [S1]M, [S2]M > )
[S Neg S´]M = [Neg]M ( [S´]M ).
[VP Vt N]M = {x : < x, [N]M >  [Vt]M }
[Pavarotti]M = F(Pavarotti)
[is boring]M = {x: x is boring in M}
[likes]M = { <x,y> : x likes y in M }
[and]M = {<<true,true>,true>,
<true,false>,false>, …}
Neg  it is not the [iintct]M = {<true,false>, <false,true>}
case that
What we have
• We have created a little fragment describing a
(very small) subset of English, generating
structural descriptions of syntactically valid
sentences and providing the means to determine
the truth conditions of these sentences.
• We did this by formulating a set of syntactic
rewrite rules, each accompanied by a semantic
rule of interpretation, such that every syntactic
step can be interpreted compositionally.
One step more general
• Looking over the rules that we have, we can
actually go a step further in generalizing our
semantic rules (helpful as we expand our
fragment’s coverage).
• There are basically two kinds of rules we have:
Those that combine meanings of adjacent (sister)
nodes in the syntactic structure, and those that
define intrinsic (non-compositional) meanings.
Semantic type
• The entire semantics that we are creating here
depends on two types of things, individuals and
truth values.
• We can label individuals as being of type “e”
(traditional, think “entity”), and truth values as
being of type “t”.
• In these terms, names like Bond are of type <e>,
and sentences like Bond is hungry are of type <t>.
Characteristic functions
• For predicates like is hungry, we have considered these to
be sets of individuals (e.g., those that are hungry in the
model).
• We can look at those same individuals in a slightly different
way, using the characteristic function of the set.
• A characteristic function is a function that, given an
argument, will return true iff the argument was a member of
the set, and false otherwise. The same information content
as the set.
Predicates as functions
• So, without losing information, we can view
predicates from the perspective of their
characteristic functions and define is hungry to
instead be a function that, given an individual, will
return true if the individual is hungry in the model.
• [is hungry]M = x  true
x  false
if x is hungry in M
otherwise
Semantic type
• Predicates like is hungry can then be said to
have semantic type <e,t>. That is, a function
from individuals to truth values.
• Similarly, it is not the case that can be taken
to be of type <t,t>, a function from truth
values to truth values.
Transitive verbs
• For transitive verbs, what we want is a relation
between two individuals, resulting in a truth value.
The way we have it set up now, a verb like likes
will combine with the object to form a simpler
predicate like likes Bond, at which point it acts just
like is boring.
• So, here, we want likes to take an argument of
type <e> and return a predicate of type <e,t>. So,
we define it as a function of type <e,<e,t>>.
Transitive verbs
• That is, we can define [likes]M as something like this:
• [likes]M = x  f where f is a function from individuals
to truth values and f(y) = true iff y likes x in M,
otherwise false.
• That is, [likes]M is a function from individuals to
functions (from individuals to truth values): semantic
type <e,<e,t>>.
Why we’re doing this
• Once we have defined things in terms of semantic
type, and in terms of functions and arguments, we
can collapse a number of our semantic
interpretation rules into more general rules.
• Functional application:
[a b]M = [a]M ([b]M ) or [b]M ([a]M),
whichever is defined.
• Pass up:
[b a]M = [a]M









