- There are many
extensions of the semantic interpretation-db system - we list some of
these projects here. Note that #3 was an acdtual project done last year
- it's listed here so you can think about doing it in another domain,
perhaps. (I will post a link to its write-up on the main web
page.) Note that this code is available in python and lisp form.
- 3-D parsing and semantic
interpretation. If linear precedence is not fixed by parsing,
then that allows various free order in the scope of quantifiers,
prepositional phrases, etc. This can be used to get the ambiguous
interpretations of sentences such as "Every guy likes some
ice-cream". Implement this using a 'set-based' right-hand side
for Earley context-free rules, and use this to extend the existing
semantic db system.
- Add quantification
(every, some, all, the, a, etc.) to the questions the semantic
interpreter can currentl handle, making sure that you
can return different answers in the case of scoping ambiguities, e.g
Did every guy sit on a park bench?'. This requires the lambda calculus
interpretation of quantifiers discussed in class. Doing the
scoping properly is very challening in general - I can give you examples
- Modify the db-semantic
system so that it actually uses SQL as sketched in lecture. In
addition - add one or two new semantic extensions, e.g., the difference
between intersective adjectives (like 'big book' means big AND
book), vs. non-intersective adjectives (like "fake book", which does
not mean "fake" AND book).
- Add relative
clauses to the semantic interpreter, along with rightward
movement in the
syntax, so the system can answer questions like Which guy with red hair
sat on a park bench or Which book was published yesterday
about nuclear war.
- Add conjunctions.
Note that the scope of conjunctions interacts with quantification and
you should take this into account:
John walks and talks is logically equivalent to John walks and John
talks, but 'some guy walks and talks'
is not equivalent to 'some guy walks and some guy talks' (because we
could be talking about two different guys in the second
- Extend our
implementation such that it covers negated sentences like "it is not the case that Mary walks.''
- Find a suitable -expression for the determiner 'no',
and add it to our implementation. Test your
solution with sentences like 'No man walks.'
- Add a treatment of
ditransitive verbs such as 'offer'. Hint:
Move along the lines of transitive verbs. Test your solution with
sentences like 'Mary offers John a siamese cat.'
- Add a
treatment such that it covers negated sentences like 'It is not the case that Mary walks.' (It is helpful to
start with 'if-then' sentences such as, 'If Mary talks, then Mary
'be' verbs, as in 'Mary is a student" and "Mary is not a lawyer'.
- Localize the system
we've implemented. That is, take it to a language
of your choice by adapting the lexicon and grammar accordingly.
- Add all the
verbs and prepositions in lambda form in the file of verbs in
- Add a representation of
time so that the system can answer when something happened as well as
whether it happened before
or after some other event. (One could simply add a new TIME
field to the event representation, to start, but I want you do more.)
You should add the Reichenbach representation of time - I can get you
this reference - as a minimum. For a bigger challenge, add
a reasoning component' that would represent the temporal contiguity and
continguity of events, so deducing the order in which events occur.
- Add discourse processing
like that suggested under the blocks world program below - that keeps
track of pronouns like 'it', 'she', etc. across sentences.
a blocks world or other 'miniworld' scenario with new actions and
thematic role frames. At least four or five new, semantically
different actions should be added. For example, one should be able to
talk about putting a block beside another one, or pushing a block
towards another, or deflating the ball. (See the examples under
lexical semantics below as well.)
- Add an ability to answer
why and how questions, by adding a record of the goal structures used
to move objects.
- Add a way to answer
questions about comparatives and size, as in Move the biggest
block or Is the ball smaller than the
block. Note that this implies a facility to parse
- Add an ability to
process multiple sentences, correctly handling backwards anaphora (it,
pronouns, and definite Noun Phrases), as
well as changes in focus. For example, in the sequence:
Pick up the red block.
Put it on the table 'It' refers to the red block.
Thus the system should save the NP referent when it tries to carry out
the next command. Add a data structure that can accomplish
this. Note the following dialog:
Put the blue block on the table.
Put it on the red block. ('it' means block, not table)
Move the ball onto it.
Clear it. (still the blue block, not the ball)
Put the ball on the blue block.
Put it back on the table. (now 'it' is the ball) [See Brady and
Berwick, Computational Models of Discourse, for more detail]
- Lexical semantics.
Look at the verbs in http://www.mit.edu/~niyogi/evca.scm and compare
them to Wordnet. Then add a significant chunk of new verbs, taken
from Wordnet, in the style of the lambda forms in the web file.
Demonstrate your system
- Add a 'meaning
postulate' system based on Wordnet 'synonym sets' to a set of
basic verbs, to arrive at a reasoning component for semantic