Feature Structures
Discussion of features [JM]:
Consider the situation with n features belonging to a grammar element:
[Feature1 Value1 ]
[Feature2 Value2 ]
:
[Featuren Valuen ]
For example, consider the features one might want to ascribe to a NP:
-- -- |Category NP | |Number SG | |Person 3 | -- --
There are any number of ways this might be achieved in Prolog:
entity(cat(np),number(sg),person(third))Ornp(number(sg),person(third))
The plural version of the given attribute structure would look like this:
-- -- |Category NP | |Number PL | |Person 3 | -- --
In general, higher order qualification of attributes wouild need to be considered:
-- -- |Category NP | | -- -- | | |Number SG | | |Agreement | | | | |Person 3 | | | -- -- | -- --
Graphically, as might be considered when view attributes hanging off of a parse tree:
attachment point
/ \
/ \
/ \
/ \
/ \
/ \
/ \
Category Agreement
/ / \
/ / \
NP / \
Number Person
/ \
/ \
/ \
SG 3
Prolog code might look like this:
np(category('NP'), agreement(number('SG'), person('3')) -->
Head/Subject Agreement:
-- -- |Category Sentence | | -- -- -- | | |Agreement _1_ |Number SG| | |Head | |Person 3 | | | | -- | | | -- -- | | |Subject |Agreement _1_| | | -- -- -- | -- --
In Prolog:
entity(cat(sentence),head(agreement(number(sg),person(third)), subject(agreement(number(sg),person(third)))))Orsentence(head(agreement(number(sg),person(third)), subject(agreement(number(sg),person(third)))))
This would have arisen as synthesized from something like:
sentence(head(agreement(number(NUM),person(PER)),
subject(agreement(number(NUM),person(PER))))) -->
np(head(agreement(number(NUM),person(PER)),
subject(agreement(number(NUM),person(PER))))).