First, initialize the system and run the sentence "Those zebras hypnotize gnus."
The semantic structure that is created when an utterance is run in the NL-Soar system is called a Lexical-Conceptual Structure (LCS). The basic idea behind an LCS is that there are relationships which exist between the argument(s) and predicate of an utterance. In an LCS, there are typically three components that make up the structure. These components include the predicate of the utterance (the verb), and the argument(s) that the predicate takes. The arguments are divided into external and internal arguments. The external argument generally refers to the subject of the sentence and it is called external because it is outside the scope of the verb phrase. On the other hand, an internal argument is one that occurs within the scope of the verb phrase, usually an object.
If you have the ability to display x-windows on your system, you will notice that after you run the previous sentence, two windows appear on the console. These windows are Interactive Tree Grapher Displays and will output the syntactic and semantic information graphically. As the utterance is being processed, an LCS is being constructed in the semantics window. In the sentence you just ran ("Those zebras hypnotize gnus."), you will notice that after the sentence has been processed, the predicate "hypnotize" has been labeled with "v-body" and the arguments have been labeled with "n-animal." These represent the semantic class of the word and are available to the NL-Soar system through Wordnet. So for example, "hypnotize" is a verb that belongs to the semantic class "body". The arguments "gnus" and "zebras" belong to the semantic class "animal." By running other sentences, you will be able to see the different semantic classes of the words defining the LCS of the utterance you entered.
An easy way to look at the different semantic classes that Wordnet uses is by looking at the top state of the agent after it has processed a sentence. You can do this by typing "p s1." You will notice that about two-thirds of the way into that output, you come across the following:
^semassigners S2 ^semreceivers S3
The Wordnet semantic classes are located here. Typing either "p S2" or "p S3" will give you a list of the possible semantic classes a word can fit into. By typing in the letter-number combination which occurs after the semantic classes used in the original utterance, you will be able to see the word. So in our original example, after typing "p S2", you will see the following:
(S2 ^j-pertainy P10 ^n-act A19 ^n-animal A20 ^n-artifact A21 ^n-attribute A22 ^n-body B1 ^n-cognition C9 ^n-communic C10 ^n-event E1 ^n-feeling F3 ^n-food F4 ^n-group G1 ^n-location L3 ^n-motive M1 ^n-object O3 ^n-person P11 ^n-phenom P12 ^n-plant P13 ^n-possession P14 ^n-process P15 ^n-quantity Q1 ^n-relation R2 ^n-shape S4 ^n-state S5 ^n-substance S6 ^n-time T1 ^p-rel P18 ^v-body B2 ^v-change C11 ^v-cognition C12 ^v-communic C13 ^v-competition C14 ^v-consumpt C15 ^v-contact C16 ^v-creation C17 ^v-emotion E2 ^v-motion M2 ^v-perception P16 ^v-possession P17 ^v-social S7 ^v-stative S8 ^v-weather W1)You will notice that ^v-body B2 is almost halfway down the output. After typing "p B2" you will see the value associated with that semantic class, in this form:
(B2 ^hypnotize P138)
You can also do this for the arguments of the LCS.
We can look at the semantic processing by printing the highest level of processing or s1.
% p s1
This is what you will see on the screen. As you look at the bottom of the s1 information, you will see several ^sentence attributes followed by w and a number. These refer to each of the words in the sentence, with the sequence of numbers following 'w' (smallest # to largest #) referring to the order in which the words appear (smallest coming first). So in the sentence, "Those zebras hypnotize gnus.", the words in the sentence are referenced by the following:
^sentence w5 = those
^sentence w11 = zebras
^sentence w28 = hypnotize
^sentence w130 = gnus
^sentence w294 = .
(S1 ^adjacency-info A1 ^annotation stop ^annotation dump ^annotation running-completion ^annotation empty-op-applied-nlg ^assigners A2 ^attended-auditory-input F8 ^attended-auditory-input F15 ^attended-auditory-input F36 ^attended-auditory-input F43 ^attended-auditory-input F27 ^attended-speaker user ^attended-speaker radio-100 ^build-semantics yes ^conversational-record C27 ^dialogue-planning-model D9 ^for-formatting F1 ^for-sem-formatting F2 ^io I1 ^io-state S1 ^language-flag english ^language-ops-allowed yes ^lexical-access-allowed yes ^linkable L2 ^ll-blippability-selection blippable-ll-operator ^name initial-state ^new-lang-info N9 ^nl-radio radio-100 ^operator O175 + ^operator O5 ^operator O174 + ^operator O5 + ^ordering-info O2 ^private P28 ^problem-space P1 ^receivers R1 ^segment segment7 ^sem-receivers-ids F27 ^semassigners S2 ^semlinkable L1 ^semreceivers S3 ^sentence W5 ^sentence W11 ^sentence W28 ^sentence W130 ^sentence W294 ^shared-nl-state-owner yes ^superstate nil ^tasking-annotation u-model-constructor ^top-state S1 ^type state ^xval 1100)So if we want to look at the verb 'hypnotize' we would type
% p w28
This is what we would see.
(W28 ^annotation processed ^annotation s-model-success ^annotation u-model-success ^profiles P135 ^profiles P136 ^semprofile S78 ^wnetdata W29 ^word-id F27 ^zero-head S78 ^zero-nodes C144 ^zero-nodes I42 ^zero-nodes I47 ^zero-nodes P136 ^zero-nodes P135 ^zero-nodes C145)This means that the semantic profile is in s78, the WordNet information is in w29, and the information identifying the word is in f27. Let's look at what the word-id says.
% p f27 (F27 ^loc-x 410 ^loc-y unknown ^loc-z unknown ^marked yes ^previous-words F8 ^previous-words F15 ^relpos c ^type shape ^value hypnotize ^word-name hypnotize)Next let's look at the WordNet information for 'hypnotize.'
% p w29 (W29 ^bfcount 1 ^bfcurr 1 ^vals V36)
% p v36
This tells us that the WordNet information for 'hypnotize' has been loaded, and the lemma or base form of 'hypnotize' is hypnotize. Also, we see that 'hypnotize' is the second word in the sentence. ^scount refers to how many word senses are in the WordNet database for 'hypnotize,' and ^scurr gets incremented as NL-Soar loads word senses from WordNet. Note that 'hypnotize' has only one WordNet sense. You can see more about the sense information for this word by typing in p s77.
(V36 ^done-wnload yes ^lemma hypnotize ^offset |2780321| ^pos 2 ^scount 1 ^scurr 1 ^sense S77)Now let's look at the semantic profile for 'hypnotize.'
% p s78
This tells us that 'hypnotize' is a verb, and, furthermore, a body verb (^category v-body). It also indicates that 'hypnotize' has an external and internal argument.
(S78 ^annotation verbclass ^annotation active ^category v-body ^external S35 ^internal S125 ^language english ^left-edge F15 ^old-args O76 ^ordering-info O2 ^psense hypnotize ^right-edge F36 ^syn-linked X8 ^syn-linked I48 ^syn-linked P136 ^syntax P135 ^word-id F27 ^word-name hypnotize ^zero-head S78)Let's see what the external argument is.
% p s35
So the external argument for 'hypnotize' is 'zebras,' which is a noun, and an animal.
(S35 ^annotation nounclass ^annotation external ^annotation active ^category n-animal ^language english ^left-edge F15 ^old-args O32 ^psense zebras ^right-edge F15 ^syn-linked X2 ^syntax P64 ^word-id F15 ^word-name zebras ^zero-head S35)Here's the internal argument.
% p s125
The internal argument is 'gnus,' which is also a noun, and an animal.
(S125 ^annotation nounclass ^annotation internal ^annotation active ^category n-animal ^language english ^left-edge F36 ^old-args O132 ^psense gnus ^right-edge F36 ^syn-linked X5 ^syntax P209 ^word-id F36 ^word-name gnus ^zero-head S125)