The first problem is how to determine the root from any given form. Basically the approach is to look for an English suffix at the end of the word and assume that the rest of the word is the root. This then has to be adjusted to the rules of English orthography. (This will be the topic of the report on morphological analysis.)
The second problem is how to link the syntactic information to the morphological information. We need to derive syntactic features of specific inflected word forms from the lexical entry.
-> WFC (Word Form Clause)
DAG Word <------ WFC------> DAG Lexeme
(stem, suffix) (syn, sem, mor)
The WFC is an extension to the DAG of the word, this means it gives further information. As the word DAG does not subsume the lexeme DAG, because it contains information which the lexeme DAG does not contain, we have to look for a unification of these DAGs. The WFC states the rules for this unification.
This is a WFC for the third person singular, present tense class of English verbs:
WFC third_sing:
<word mor form> = <lexeme mor form3>
<word syn> = <lexeme syn>
<word syn cat> = V
<word syn arg0 per> = 3
<word syn arg0 num> = sing
<word syn tense> =pres
<word sem> = <lexeme sem>.
This is how a WFC would be used in a language analysis program:
The morphological analyzer (which still has to be implemented) outputs this:
Word loves:
<mor form stem> = love
<mor form suffix> = s.
From the stem of the morphological form the lexical entry "love" is deduced. As a relation (WFC) third_sing is assumed. The "loves" DAG plays the role of the word and the DAG for the lexeme plays the role of the lexeme. Prolog tries to find extensions to both DAGs in a manner which satisfies the demands of the third_sing WFC. In this case the unification is succesful. If it hadn't been successful Prolog would have to try another WFC or another lexical entry.
This is the result:
Word loves:
<mor form stem> = love
<mor form suffix> = s
<syn cat> = V
<syn tense> = pres
<syn arg0 cat> = NP
<syn arg0 case> = nom
<syn arg0 per> = 3
<syn arg0 num> = sing
<syn arg1 cat> = NP
<syn arg1 case> = acc
<sem> = love2a.