The problem thus is that FUGs do not gracefully implement mutual exclusion and hierarchical relations. The system of nouns is a typical taxonomic relation. The deeper the taxonomy, the more problems we have expressing it using traditional FUGs.
We propose extracting hierarchical information from the FUG and expressing it as a constraint over the symbols used. The solution is to define a subsumption relation over the set of constants C. One way to define this order is to define types of symbols, as illustrated below:9
(define-feature-type noun (pronoun proper common))
(define-feature-type pronoun (personal-pronoun question-pronoun
demonstrative-pronoun quantified-pronoun))
(define-feature-type common (count-noun mass-noun))
|
The syntax of the new function define-feature-type will be presented in
section
. Once types and a subsumption relation are
defined, the unification algorithm must be modified. The atoms X and
Y can be unified if they are equal OR if one subsumes the other. The
result is the most specific of X and Y.
With this new definition of unification, taking advantage of the structure over constants, the grammar and the input become much smaller and more readable. There is no need to introduce artificial labels. The input FD describing a pronoun is a simple ((cat personal-pronoun)) instead of the redundant chain down the hierarchy ((cat noun) (noun pronoun) (pronoun personal)). Because values can now share the same label CAT, mutual exclusion is enforced without adding any pair [l: NONE].10 Note that it is now possible to have several pairs [a:vi] in an FD F, but that the phrase ``the a of F'' is still non-ambiguous: it refers to the most specific of the vi. Finally, the fact that there is a taxonomy is explicitly stated in the type definition section whereas it used to be buried in the code of the FUG. This taxonomy is used to document the grammar and to check the validity of input FDs.