Uniqueness Principle

A rule not only identifies a dependency between two words, it also removes the dependent word from the current expression that is being analysed. The modified expression will be the input of the following rule. So, rules are applied sequencially and modify the input of the next rule to be applied. Such a modification is justified by the Uniqueness principle of Dependency Grammar.

Let's suppose that we build a simple grammar with the following two rules:

AdjunctLeft : ADJ NOUN

%

SpecLeft : DT NOUN

%

Let's analyse the expression “a beautiful mountain”. The input string of the parser would be like this:

a_DT_<...> beautiful_ADJ_<...> mountain_NOUN_<...>

The first rule is applied on this string and finds the “ADJ NOUN” pattern. This finding allows the rule to identify the adjunct dependency between “beautiful” and “mountain”. But the rule also removes the adjective (which is the dependent expression) from the string that will be the input the following rule. So, the second rule will be applied on this new input:

a_DT_<...> mountain_NOUN_<...>

It finds the “DT NOUN” pattern and then the dependency between “a” and “mountain”. In addition, it removes the determiner from the input string. The head “mountain” is the only expression to be analysed in further applications of rules.

According to the “Uniqueness principle”, a dependent word only has one head. So, if we identify a dependency relation containing a dependent word which is no more the head of any word, then it means that we have alredy found all dependencies associated to that word and it can be removed from the search space. The fact of removing one by one the dependents from the input string allows us to reduce in a systematic way the search space, which consists of a huge variety of possible patterns of tags.

Considering Uniqueness, the following constraint is required to write well-formed DepPattern grammars:

Constraint 1: The dependent tag of a rule musn't be involved in further rules. In other words, before writing a rule, we must write before all those rules containing heads instanciated by the dependent tag of the current rule.