1. A method for analysing a string of characters, including canonical and non-canonical terms relating to a specific domain, to identify concepts in that domain, comprising the following steps: comparing the terms in the string with a lexicon containing canonical terms for sub-concepts in the domain, canonical groups of such terms, synonyms and lexical categories, so as to produce a sequence of annotations comprising terms from the lexicon; and identifying entities by chunking sequences of annotations according to a grammar.