1. A method comprising: a) receiving, at a computer, a first set of input data comprising a set of website data; b) defining a grammar, wherein: i) the grammar comprises a plurality of sub-grammars organized according to a hierarchy comprising a plurality of levels; ii) the grammar is defined based on data comprising: 1) the first set of input data; 2) a second set of input data; and 3) a third set of input data; iii) the statements |A B|−|A∩B|≠0 and B C=A C are true where 1) A is a first set of levels from the hierarchy in which at least one sub-grammar is defined based on the first set of input data; 2) B is a second set of levels from the hierarchy in which at least one sub-grammar is defined based on the second set of input data; and 3) C is a third set of levels from the hierarchy in which at least one sub-grammar is defined based on the third set of input data; and c) storing the grammar on a non-transitory computer readable medium.