1. A lossless method of storing characters, words and phrases including the words, in real-time in a data structure for providing real-time predictive output of characters, words and/or phrases in response to user input text data, the method comprising: receiving user input text data comprising at least one of characters, words and phrases, one entity at a time in sequence; storing a plurality of phrases in a memory, one entity at a time in sequence, each in a phrase data structure, each phrase in said phrase data structure having a unique phrase identifier identifying an instance of a phrase and comprising a sequence of words of the phrase, wherein some of said phrase data structures further comprise subphrase identifier data, said subphrase identifier data comprising a phrase identifier identifying a portion of a phrase of a phrase data structure which corresponds to some or all of another phrase stored in a said phase data structure one or more records, each phrase comprising a record for each neighbouring pair of words in said phrase, each record defining data for neighbouring words in said phrase, each record comprising: said phrase identifier, a first neighbouring word in said phrase, a subsequent neighbouring word in said phrase and data indicating a relationship between said first and subsequent neighbouring words in said record; identifying, via a processor, a previous use of a subphrase in said user input text data, a said previous use of said subphrase corresponding to some or all of a phrase stored in said phrase data structure, and retrieving said phrase identifier for said previous use of said subphrase in response to said identification; and storing data for a subsequently input phrase in the memory, said phrase including said subphrase from said user input text data including said subphrase in said data structure as a combination of one or more said records and a subphrase record, said subphrase record comprising said phrase identifier identifying for said phrase containing said subphrase, a start word of said subphrase, an end word of said subphrase, a remainder of said subsequently input phrase after removal of said subphrase, and data indicating a relationship between said reminder of said subsequently input phrase and said subphrase start and end words of said subphrase, and subphrase identifier data, said subphrase identifier data comprising said phrase identifier identifying said phrase containing said previous use of said subphrase.