You are on page 1of 15

Semantic nets

Devised

by Quillian in 1968, as a model


of human memory.
The technique offered the possibility
that computers might be made to use
words in something like the way humans
did, following the failure of early
machine-translators.
Organisation of semantic nets. Example:

Semantic nets
knowledge

is represented as a collection
of concepts, represented by nodes
(shown as boxes in the diagram),
connected together by relationships,
represented by arcs (shown as arrows in
the diagram).

flying

animal

travels_by

covered_by

skin

isa

isa

bird
feathers

fish

travels_by

covered_by

isa

ostrich

swimming

isa

penguin

isa

isa

canary

robin

travels_by

walking

colour

colour

yellow

travels_by

red
instance_of

Opus

instance_of

Tweety
colour

white

Semantic nets
certain

arcs - particularly isa arcs - allow


inheritance of properties.
This permits the system to "know" that
a Ford Escort has four wheels because it
is a type of car, and cars have four
wheels.

Semantic nets
inheritance

provides cognitive economy,


but there is a storage-space /
processing-time trade-off.
This means that, if you adopt this
technique, you will use less storage
space than if you don't, but your system
will take longer to find the answers to
questions.

Semantic nets

a semantic net should make a distinction


between types and tokens. This is why the
diagram above uses instance_of arcs as
well as isa arcs.

Individual instances of objects have a token


node.
Categories of objects have a type node.
There is always at least one type node above
a token node. The information needed to
define an item is (normally) found attached to
the type nodes above it.

Semantic nets
So

far, this is just a diagram - not a


knowledgebase. But it can be converted
into a knowledgebase.

A semantic net program


written in Prolog
::::::::::::-

op(500, xfx, isa).


op(500,xfx, instance_of).
op(500,xfx, covered_by).
op(500,xfx, travels_by).
op(500,xfx, colour).
op(500,xfx, travels).
op(500,fx, is).
op(600,xfx, a).
op(600,xfx, an).
op(700, xf, ?).
op(500,fx, what).
op(600, xfx, is).

Semantic nets
This

is a program, written in Prolog,


which contains all the knowledge
represented in the diagram above,
together with a mechanism for finding
information by inheritance, and a
rudimentary natural language interface.

It

Semantic nets

can answer questions like

is tweety an animal ? (it answers yes)


what colour is tweety ? (it answers white)
opus is covered_by what ? (it answers feathers) and
so on.

Semantic nets
It

could have been written in C++ or


Java (although it would have been much
harder), or any other present-day highlevel language.

Semantic nets
Note

that I do NOT expect you to


understand the details of this program,
or to memorise it, or to be able to quote
it. It is simply there to indicate that it is
possible to store common-sense
knowledge like this, and it may even on
occasions be quite easy.

Semantic nets

Problems with semantic nets


logical inadequacy - vagueness about what
types and tokens really mean.
heuristic inadequacy finding a specific piece
of information could be chronically inefficient.
trying to establish negation is likely to lead to
a combinatorial explosion.
"spreading activation" search is very
inefficient, because it is not knowledgeguided.

Semantic nets
Attempted

improvements

building

search heuristics into the


network.
more sophisticated logical
structure, involving partitioning.
these improvements meant that
the formalisms original simplicity
was lost.

Semantic nets

Developments of the semantic nets idea:

psychological research into whether human


memory really was organised in this way.
used in the knowledge bases in certain
expert systems: e.g. PROSPECTOR.
special-purpose languages have been
written to express knowledge in semantic
nets.

You might also like